`
cppmule
  • 浏览: 446430 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

chrome源代码目录结构简介(版本4.1.249.1059)

 
阅读更多



为了对庞大的源码项目进行分析,先对源码目录树作一个简单的介绍,粗略的了解一下各个模块的功能分布情况,chrome源代码src目录下的结构如下图:

image

app:该目录下的代码主要是和各个操作系统平台相关的应用上层代码的提炼。不同操作系统可能对应不同的c++实现文件。比如裁剪板操作、操作系统数据交换接口、资源管理等。代码量不大。

base:基础设施代码,该目录下的代码对理解chrome的基础架构设计是必不可少的,这里面是大量的工具性、框架性代码实现,比如对进程、线程、消息循环的统一封装,对字符串处理、c++对象生命周期管理、json解析、路径服务、日期时间、日志框架等。

breakpad:崩溃服务框架库,在程序发生异常时,对异常进行捕获后可以将崩溃现场数据发送给google进行分析。

build:编译构建相关的工具支持。

chrome:浏览器主程序实现代码,包括了UI实现和Render部分两大部分,当然这两部分又是以大量的其他基础设施代码为基础的,比如Render部分是对webkit的封装。这部分代码量很大,google自产代码,频繁的改动代码主要集中在这里。

chrome_frame:这是google针对IE开发的一个插件,使得IE可以使用chrome的渲染引擎来显示网页。

courgette:小胡瓜,这个项目是一个针对升级使用的,目的是减少升级过程中数据下载的大小。比如版本升级可能需要更新某个DLL文件,而这个文件可能有10M大小,而新版本可能只是对该DLL改动了一行代码。通过courgette可以找出这两个DLL之间的差异部分,使得不需要下载10M大小,而可能只需要下载几十K的差异描述数据即可完成升级。

gears:是一个用来开发离线网络应用的工具,是一个JavaScript应用编程接口,通过GoogleGears可以允许多种Web应用程序脱机运行,可以让用户在上线或者离线状态下运行网络程序。离线就需要作本地存储,而在html5中就有本地存储相关的接口规范,因此google将放弃gears而采用html5的方式。

google_update:google更新,用于自动升级。

googleurl:google实现的URL解析辅助工具库。

ipc:非常重要的进程通信基础设施库。chrome是多进程架构,而进程间的通信就是以ipc库作为基础支持的。具体在windows下的实现方式是命名管道、异步IO(完成端口)、共享内存来实现进程间高效的数据传输。ipc不仅封装了IO机制,而且还定义了统一的消息传输格式。

media:多媒体音频视频解码相关的内容。

native_client:在浏览器中运行native代码的技术,是一个插件。native_client项目被视为微软ActiveX技术的继任者。项目具体细节可参考native client官网

net:网络协议实现基础库,包括ftp、http等客户端协议栈的实现代码。

o3d:一个插件,可在浏览器中创建丰富的交互式三维应用程序,以后在浏览器中玩3D游戏将不再遥远。具体细节参考o3d项目官网

printing:打印方面的内容。

rlz:用户行为追踪,这个没有源码,这个库的目的就是将用户行为收集报告给google。虽然这对产品的改善有很大的帮助,但也存在隐私问题。

sandbox:沙盒安全技术,在浏览网页的时候,保护计算机不被恶意代码侵入。

sdch:一种新的压缩技术。浏览器在http请求时可以写成Accept-Encoding: sdch, gzip。服务器如果支持的话,就可以返回sdch格式的压缩数据给浏览器。

site_scons:一个工具,里面是一个python脚本文件,具体用处还未深入了解。

skia:google收购的一家公司提供的2D图形渲染库,图形库的优劣决定了浏览器的显示效果。据说IE9将采用GPU显卡渲染,估计浏览器采用GPU渲染将很快普及。

testing:c++单元测试框架库。

third_party:该目录下是大量的第三方开源支持库,最重要的当然是webkit内核了。

v8:google开发的高效的javascript引擎,是chrome的重要内核库。

views:界面控件元素库,对不同操作系统平台的UI事件交互机制、各种控件如按钮、菜单、树、checkbox等进行了统一的封装。界面绘制采用skia来实现。

webkit:google对webkit内核的封装层,其目的是在webkit内核和上层调用之间提供一个中间层。该目录下有一个重要的glue工程。是名副其实的‘胶水’层。

整个源码工程虽然庞大,但其结构是非常清晰的,代码风格很统一,就象是一个人写的一样。借助vs2008强大的可视化调试,我们只要掌握好粒度,从粗到细,从整体到局部逐渐深入,带着问题去跟踪调试,很快就会上手进入状态。

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    OCX控件V4.1.0.5.rar

    标题中的"OCX控件V4.1.0.5.rar"指的是这个版本号为4.1.0.5的特定OCX控件的压缩包文件。 在描述中提到,这个OCX控件是用于iDR210读卡器的WEB控件,这意味着它设计用于在Web环境中与iDR210读卡器交互。iDR210读卡器是...

    google chrome浏览器最新版本,版本 105.0.5195.127(正式版本) (64 位)

    chrome浏览器最新版本,版本 105.0.5195.127(正式版本) (64 位) chrome浏览器最新版本,版本 105.0.5195.127(正式版本) (64 位) chrome浏览器最新版本,版本 105.0.5195.127(正式版本) (64 位) chrome...

    labuladong的算法秘籍V4.1.pdf

    labuladong 的算法秘籍 V4.1.pdf 这本 PDF 是 labuladong 的刷题全家桶中的《labuladong 的算法秘籍》,旨在为读者提供最丝滑的刷题体验。下面是这本 PDF 中的知识点摘要: 1.刷题全家桶介绍 labuladong 的刷题...

    PHP 谷歌浏览器调试方法及插件 ChromePHP 4.1.zip

    为了提高开发效率和代码质量,调试是必不可少的环节。谷歌浏览器(Chrome)作为最受欢迎的浏览器之一,提供了丰富的开发者工具来支持前端和后端的调试工作。其中,ChromePHP是一款专门用于PHP调试的插件,它使开发者...

    LastPass-Chrome 4.1.63密码管理工具

    它的Chrome扩展程序版本4.1.63是针对谷歌浏览器的优化版,提供了诸多便利功能,旨在提升用户的在线安全体验。 1. **密码安全**:LastPass的核心功能是自动记住和填充用户的用户名和密码。它使用强大的加密技术,如...

    HttpWatch_4.1.26

    在给定的压缩包文件中,"软件升级.exe"可能是HttpWatch的更新程序,用于将现有版本升级至4.1.26。而"HttpWatch"可能是主程序的可执行文件,安装后可以在IE中使用该工具。 不过,需要注意的是,HttpWatch并不支持...

    CefSharp.x86.84.4.1包.zip

    CefSharp是基于Chromium Embedded Framework (CEF) 的,而CEF本身是Google Chrome浏览器的核心——Chromium的一个轻量级版本。CEF允许开发者在自己的应用程序中嵌入一个全功能的Web渲染引擎,提供与现代Web标准兼容...

    maxthon_portable_4.1.3.1200-beta.

    Maxthon Portable是一款便携式版本的Maxthon浏览器,它的版本号是4.1.3.1200-beta。这个浏览器以其高效的性能、多功能性和跨平台兼容性而受到用户的欢迎。Maxthon是一款基于Webkit和IE双核引擎的浏览器,它提供了一...

    centbrowser_4.1.6.137_x64

    "CentBrowser 4.1.6.137_x64"是一款专为64位操作系统设计的浏览器软件。这款浏览器基于Chromium内核,它继承了Chromium的高速浏览特性,同时也添加了一些独特的功能和优化,以提供更为便捷和个性化的上网体验。 1. ...

    Chrome版本102.0.5005.61+chrome chromedriver

    在macOS系统上,Chrome浏览器的安装文件通常以`.pkg`结尾,如`GoogleChrome.pkg`。这是一个苹果打包工具创建的安装包,用户可以通过双击运行来安装Chrome。安装过程中,系统会引导用户完成一系列步骤,包括许可协议...

    Postman_v4.1.3

    9. **CRX文件**:在提供的压缩包中,"Postman_v4.1.3.crx"是一个Chrome浏览器扩展文件,表明这个版本的Postman是设计为在Chrome浏览器上使用的插件。 Postman的易用性和强大的功能使其成为API开发流程中的不可或缺...

    AppiumForWindows-1.3.4.1.

    它支持 2.3 及更高版本的 Android 系统。Appium利用WebDriver界面运行测试。它支持许多编程语言,如 Java、 C#、Ruby和其他的WebDriver数据库。它可以在移动设备上控制 Safari 和Chrome。但是,一些自动化的测试...

    kindeditor-4.1.

    KindEditor 是一款开源的...在"kindeditor-4.1.10"目录中,你将找到所有这些文件和资源,通过解压并按照官方文档或示例代码进行引用和配置,就可以在自己的网页中轻松集成KindEditor,为用户提供便捷的富文本编辑体验。

    Chrome Standalone Setup 版本 76.0.3809.87(正式版本) (64 位)

    Chrome Standalone Setup 版本 76.0.3809.87(正式版本) (64 位) Download from Google。

    Wimpy MP3 Player v4.1.zip

    Wimpy MP3 Player是一款专门针对网络环境设计的MP3播放器软件,其v4.1版本为用户带来了更为稳定和丰富的功能体验。这款播放器以其小巧、易用且高度可定制的特点,深受网页设计师和音乐爱好者的喜爱。 1. **界面与...

    Google Chrome浏览器ChromeDriver驱动下载(Chrome版本:128.0.6613.138)win64

    对应chrome版本:128.0.6613.138【理论上大版本匹配即可,即是128.0.xxxx.xx的浏览器,只需下载128版的chromedriver】 系统环境:win64 内容概述:ChromeDriver.exe是一款实用的Chrome浏览器驱动工具,能够用于自动...

    Ext 4.1.x 严格测试 DateTime 控件

    目录结构不要变,如果变了,请自己修改相关代码。 没有 extall.js 及 css 图片的等资源,请您按照目录自己放吧。 请在 apache 或 tomcat 下测试 如果觉得给你解决了大问题,希望评论。 另外,这个也是从网上下载并且...

    Ali Insider- AliExpress Product-4.1.zip

    版本:4.1 作者:https://aliinsider.com 分类:商业购物 ---------------------------------------- 概述:全球速卖通产品研究工具针对 Dropshipping 进行了优化 在速卖通搜索页面上的产品图片上方获取即时分析,...

    chrome版本116.0.5845.180 chromedriver-win32

    `chrome.exe`是Chrome浏览器的可执行文件,它是浏览器的核心部分,负责解析网页、渲染内容以及处理用户交互。在Windows系统中,`.exe`扩展名标识了这是一个可执行程序。当你双击这个文件时,Chrome浏览器就会启动。 ...

    chrome浏览器稳定安装版,版本100.0.4896.

    Chrome浏览器是全球最受欢迎的网页浏览器之一,以其快速、安全和用户友好的界面著称。版本100.0.4896是一个重要的更新,它包含了一系列改进和新功能,旨在提升用户的浏览体验。 首先,关于Chrome的稳定安装版,这指...

Global site tag (gtag.js) - Google Analytics