赞
踩
Chromium源码目录结构依然很清晰,主要有三个部分(不包括其他的库):浏览器,渲染器,webkit。浏览器是主要的进程,代表所有的UI和I / O。渲染通常是每个tab页的子过程,是由浏览器驱动。Webkit做布局和渲染。解决方案文件是src/chrome/chrome.sln。
启动流程
\chrome\app\chrome_exe_main_win.cc
\chrome\app\main_dll_loader.cc
\chrome\app\chrome_main.cc
\content\app\content_main.cc
\services\service_manager\embedder\main.cc
图1 源码目录
android_webview:适合集成在Android平台,但不适合单个apk使用。
Apps:chrome打包的应用。
base:所有子项目之间共享的通用代码。它包含像字符串操作,通用程序等。只有当超过一个顶级项目之间共享的代码才能放到这里。
breakpad:谷歌的开源崩溃报告的项目。直接从谷歌代码版本库拉取。
build:构建相关的配置,由所有项目共享。
cc:chromium合成器实现。
chrome:chromium浏览器主程序模块实现代码,核心代码。
chrome/test/data:运行某些测试的数据文件。
components:浏览器依赖的组件目录。
content:一个多进程沙箱浏览器渲染页面的核心代码。
device: 常见的底层硬件API的跨平台抽象
net:为chromium开发的网络功能库。
sandbox:沙箱项目,阻止渲染器修改系统。
Skia:为Android开发谷歌的Skia的图形库
SQL: sqlite的封装。
testing:用来单元测试的代码。
third_party:200多个第三方库,如图像解码器和压缩库等。
.../blink/renderer: 负责将HTML,CSS和脚本转换为绘画命令和其他状态更改的Web引擎。
tool : 工具
UI/GFX:共享图形类。这些是Chromium的图形用户界面的基础。
UI/view:UI开发的简单框架,提供渲染,布局和事件处理一个简单的框架。大部分的浏览器的用户界面的在该系统中实现。该目录包含了基本对象。
url:谷歌的开源URL解析和标准化库。
V8:V8 JavaScript库。
webkit(小写):现在只有一小部分留在这里了。common/gpu/
依赖关系图:
一个低层模块不能直接include更高的模块的代码(例如:content不能include chrome中的头文件),但可以使用嵌入的API和它通信。
图2 调用示意图
content目录
browser:应用程序的后端,用来处理所有的I/O以及和子进程通信。它与渲染器对话来管理web页面。
common: 在多个进程(即浏览器和渲染器,渲染器和插件等)之间共享的文件。 这是特定于Chromium的代码(不适用于基本代码)。
gpu:GPU进程
puguin: 在其他进程中运行浏览器插件的代码。
ppapi_plugin: Pepper插件过程的代码。
renderer: 每个选项卡中的子流程代码。 这将嵌入WebKit并与浏览器进行I / O对话。
utility: 用于在沙盒流程中运行随机操作的代码。 当浏览器进程要对不受信任的数据运行操作时,将使用它。
worker: 用于运行HTML5 Web Workers的代码。
chrome目录
app: “应用”是程序的最基本级别。 它在启动时运行,并根据当前进程所具有的功能调度到浏览器或渲染器代码。它包含chrome.exe和chrome.dll的项目。 除了图像和字符串之类的资源外,您通常不需要更改这些内容。
locales:用于构建本地化DLL的项目。
resources: 图标和光标
theme: 窗口主题的图像。
browser: 前端包括主窗口,UI和用于处理所有I / O和存储的应用程序的后端。 这与渲染器进行对话以管理网页。
ui: ui特性和功能相关的 模型,视图和控制器代码
common:在浏览器和渲染器之间共享的文件,这些文件特定于Chrome模块。
net: 网络顶层模块一些具体的工作
installer:用于制作安装程序的源文件和项目(MSI软件包)。
renderer: Chrome在渲染器进程中运行的特定代码。 这会将Chrome功能(例如自动填充,翻译等)添加到内容模块。
third_party: Chromium使用的第三方库.一些其他的第三方库在顶层的 third_party目录中 .
tools:
build:与构建相关的工具和随机资料
buildbot:Buildbot配置。 Buildbot管理我们的自动化构建系统。 请参阅third_pary/buildbot。
win: Windows构建内容,包括一些用于项目属性和脚本的.vsprops文件。
memory: 内存工具。 当前包含用于设置页面堆选项的gflag。
perf/dashborad:用于将性能日志(例如test / startup_test)转换为数据和图形的代码。
profiles:随机历史数据的生成器。 用于制作测试配置文件。
图3 Chromium架构图
图4-1 进程模型
图 4-2 进程模型
图 5 浏览器进程和渲染进程交互图
图6 页面渲染三级树
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。