熟悉chromium代码目录结构

很多项目结构都已发生了改变,可能与最新的项目结构不一致。

高层次概述

chromium可以分为三大部分:浏览器,渲染器,webkit。浏览器是主进程,代表着所有的UI和I/O。渲染器(通常)是每个标签对应一个子进程,被浏览器驱动着。它嵌入webkit用来布局和渲染。

sln文件的快速入门

chrome.sln

  • 启动代码在 app/chrome_dll和 app/chrome 工程里面。
  • 通用的共享库代码在Libraries/base工程。这些代码被所有工程共享,所以尽可能的保持它小和必要。
  • 通用的针对特定浏览器代码在Browser/common工程,它在browser和renderer中共享。
  • webkit代码在webkit工程(只读)。
  • Browser/browser工程提供了用户界面、存储、网络回应,等等。

顶级项目

当你签出chromium代码,你会发现数个顶级目录。这些工程如下:

  • base:通用的代码在所有的子工程里共享。包涵了字符串操作、通用工具包。
  • breakpad:google开源的崩溃报告工程。
  • build:编译相关的配置在这里。
  • content:多进程沙箱浏览器所需的核心代码。
  • chrome:chromium浏览器。
  • googleurl:google开源的URL解析和规范化库。
  • net:网络开发库。
  • sandbox:沙箱工程,试图防止renderer崩溃后会修改系统。
  • skia:google为android开发的图形库。
  • testing:单元测试代码。
  • third_party:第三方库。
  • ui/gfx:共享的图形类。是chromium UI的基础。
  • ui/views:一个简单UI开发框架,提供渲染,布局和事件处理。还有一些代码在browser/ui/views。
  • v8:V8 javascript引擎。
  • webkit:chromium中webkit相关。
    • build:工程和配置相关的。
    • data:单元测试相关的数据。
    • glue:chromium与webkit之间转换层。
    • tools
      • layout_tests:测试webcore布局的脚本。
      • test_shell:一个简单独立的浏览器。用于测试glue、port。

下面的图表是它们之间的依赖关系。低级的模块不能直接包含高级模块的代码。
diagram_of_the_dependencies_content

content目录树下快速参考

  • browser:在程序的后端处理I/O和与子进程之间的通信。它通过告诉renderer来管理网页。
  • common:多进程共享的文件。
  • gpu:GPU进程的代码。
  • plugin:在另外进程中运行插件的代码。
  • ppapi_plugin:Pepper 插件的代码。
  • renderer:每个标签的代码,嵌入了WebKit和浏览器交流。
  • utility:运行在沙箱中随机操作的代码。
  • worker:运行HTML5 Web Worker的代码。

chrome目录下的快速参考

  • app:是基本的程序代码,它执行启动。包含了chrome.exe和chrome.dll工程。最好不用修改这里面,除了资源文件和字符串。
    • locales:本地化的dll工程。
    • resources:图标和光标。
    • theme:windows主题的图片。
  • browser:前端包括主窗口,UI。后端包括I/O和存储。与render交流来管理网页。
    • ui:UI modle,view,controller特性与功能。
  • common:browser与renderer共享的代码。
    • gfx:图形与渲染相关的helper代码。
    • net:net相关模块。
  • installer:制止安装包的代码和工程。
  • renderer:运行renderer进程的代码。包含了自动完成,翻译等等模块。

发表评论

电子邮件地址不会被公开。 必填项已用*标注