Chromium源码分析(一)

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  页面渲染三级树

  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

步基

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值