Chromium 源代码目录结构

Chromium 源代码目录结构

本文翻译自 官方文档

概述

Chromium 主要分为三个部分: browser, renderer, WebKit. browser 是主进程,负责所有 UI 和 I/O 操作; renderer (通常)是每个页面的渲染进程,它是 browser 的子进程; WebKit 内嵌在 renderer 中,负责页面的布局和渲染。

你可以参考 multi-process architecturehow Chromium displays web pages 这两篇文章

解决方案文件

解决方案文件的路径是: src/chrome/chrome.sln

  • 启动代码在 src/chrome/app/chrome_dllsrc/chrome/app/chrome 文件夹中;
  • 公共共享库代码在 src/base 文件夹中,这部分代码被所有项目共享,我们尽可能让它更小;
  • browser 共享代码在 src/chrome/common 目录中,这部分代码被 browser 和 renderer 共享;
  • WebKit 代码在 src/third_party/WebKit 目录中,它是只读的。
  • src/chrome/renderer 项目代表运行每个 tab 的子进程;
  • src/chrome/browser 项目提供了用户界面、存储、网络请求等功能;

顶层目录

  • src -- 顶层目录
    • apps : Chrome packaged apps
    • base : 被所有项目共享的代码。例如字符串操作等,这个文件夹下只能添加那些必须被多个顶层项目共享的代码。
    • breakpad : 谷歌开源的崩溃上报项目。它直接从谷歌的 svn 仓库中拉取。
    • build : 编译相关的配置,由所有项目共享。
    • cc : chromium compositor(合成器) 实现。
    • chrome : Chromium browser。
    • chrome/test/data : 测试用数据。
    • content : 包含建立 多进程浏览器 所需要的核心代码。这篇文档描述了为什么要把这块代码独立出来。
    • device : 对底层硬件接口进行抽象,使其可以跨平台调用。
    • net : 网络库。
    • sandbox : 沙箱项目。其目的是防止 renderer 进程被 hack 之后攻击系统。
    • skia : 谷歌的 skia 图形库。这块项目是给 Android 使用的。ui/gfx 中对它进行了封装。
    • sql : 对 sqlite 的封装。
    • testing : 谷歌开源的测试工具 GTest。用于进行单元测试。
    • third_party : 一系列第三方库,例如 图片解码,解压缩库。chrome/third_party 里包含了一些专门给 chrome 用的第三方库。
    • ui/gix : 共享绘图类,基于 Chromium 的 UI 绘图库。
    • ui/views : 进行 ui 开发的简单框架,提供了渲染、布局、事件处理机制。大部分的浏览器 ui 都基于这个框架来实现。这个目录下包含了基本对象,另外一些跟 浏览器 相关的对象包含在 chrome/browser/ui/views 目录中。
    • url : 谷歌开源的 url 解析和标准化库。
    • v8 : V8 JavaScript 库。它直接从谷歌的 svn 仓库中拉取。

以下是上面各个模块之间的依赖图:

content/ 目录

  • browser : 程序后台。负责所有 I/O 操作,及与子进程的通信。它跟 renderer 通信来管理 网页。
  • common : 由 content 模块中不同进程共享的文件(browser, renderer, plugin 等)。
  • gpu : GPU 进程的代码,用于 3D 合成和 3D API。
  • plugin : 用于在其他进程中运行插件的代码。
  • ppapi_plugin : Pepper 插件进程的代码。
  • renderer : 每个 tab 子进程的代码。它内嵌了 WebKit, 并通过 browser 进行 I/O 操作。
  • utility : 沙箱进程中执行随机操作所需要的代码。当 browser 进程需要对不受信任的数据做操作时,会调用它。
  • worker : 运行 HTML5 Web Worker 的代码。

chrome/ 目录

  • app : 程序最基础的部分。程序启动后会执行这个目录中的代码,它会根据当前进程启动的类型,将操作分发给 browser 和 renderer 进程去处理。它包含了生成 chrome.exe 和 chrome.dll 的工程。一般情况下这部分不需要更改,除非你想替换一些资源文件。
    • locales : 用于生成本地化的 DLL;
    • resources : 图标和光标;
    • theme : 主题图片;
  • browser : 程序前台。包括主窗口、UI、及用于处理 I/O 操作的程序后台部分。它跟 renderer 通信来管理 网页。
    • ui : 用于实现 UI 特性的 model, view, controller 代码。
  • common : 由 chrome 模块中的 browser, renderer 模块所共享的代码。
  • installer : 安装包代码;
  • renderer : 运行在 renderer 进程中的代码。它在 content 模块的基础上增加了自动完成、翻译等特性。
  • third_party : 专门给 Chrome 用的第三方库。

学习计划

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容