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

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强大的可视化调试,我们只要掌握好粒度,从粗到细,从整体到局部逐渐深入,带着问题去跟踪调试,很快就会上手进入状态。

chrome源代码目录结构简介(版本4.1.249.1059)的更多相关文章

  1. Android 工程目录结构简介

    一般来说,一个Android工程的目录结构如下图所示. 1:src JAVA源代码都放在这里面. 2:gen 编译器自动生成的一些JAVA代码 3:Android 4.2 Android平台(本工程用 ...

  2. Contiki 源代码目录结构

    最近要在烧写contiki的CC2650上做一些简单的实验,需要对contiki的目录结构有一个简单的了解.本文使用的是contiki 3.0版本,并且参考了百度文库上的一篇文档:https://we ...

  3. Android系统源代码目录结构 “Android源代码”“目录结构”

    在讲述Android源码编译的三个步骤之前,将先介绍Android源码目录结构,以便读者理清Android编译系统核心代码在Android源代码的位置. Android源代码顶层目录结构如下所示: ├ ...

  4. Android源代码目录结构(转)

    https://android.googlesource.com/ Android 2.2 |-- Makefile |-- bionic               (bionic C库) |-- ...

  5. angular源码分析:angular的源代码目录结构说明

    一.读源码,是选择"编译合并后"的呢还是"编译前的"呢? 有朋友说,读angular源码,直接看编译后的,多好,不用管模块间的关系,从上往下读就好了.但是在我看 ...

  6. Android开发学习之路--Android Studio项目目录结构简介

    既然已经搭建好环境了,那就对Android Studio中项目目录结构做个简单的了解了,这里以最简单的Hello工程为例子,新建好工程后看如下三个工程视图: 1.Android工程 manifests ...

  7. linux 源代码目录结构

    Linux源代码目录树结构 (2008-04-21 09:14) 分类: Linux/Unix Linux用来支持各种体系结构的源代码包含大约4500个C语言程序,存放在270个左右的子目录下,总共大 ...

  8. cept源代码目录结构详解_知识树(转)

    1 简介该代码架构基于版本10.0.5整理,先整理根目录里的代码,再整理出src目录的架构. 2 代码架构2.1 Ceph源码根目录Ceph的根目录下包含了一些文件夹和若干编译.代码格式相关的文件. ...

  9. 摘抄 - linux 目录结构简介

    /   根目录 |—–/bin   软连接,指向 /usr/bin.存储一些命令,一般为用户命令 |—-/boot  系统启动相关的文件;包括启动时内核的一些配置,grub配置等等:一般为之分配300 ...

随机推荐

  1. [Swift通天遁地]一、超级工具-(12)使用Toaster制作简短提示语的吐司窗口

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  2. js 事件循环机制 EventLoop

    js 的非阻塞I/O  就是由事件循环机制实现的 众所周知  js是单线程的 也就是上一个任务完成后才能开始新的任务 那js碰到ajxa和定时器.promise这些异步任务怎么办那?这时候就出现了事件 ...

  3. [APIO2007]动物园

    题目描述 新建的圆形动物园是亚太地区的骄傲.圆形动物园坐落于太平洋的一个小岛上,包含一大圈围栏,每个围栏里有一种动物. 你是动物园的公共主管.你要做的是,让每个来动物园的人都尽可能高兴.今天有一群小朋 ...

  4. daily_journal_2 神奇的一天

    写博客日记的第二天,第一天立的flag开始有点松动啦,继续坚持啊!坚持就是胜利. 今天真是神奇的一天,上午的计划是照常进行的,但是前天淋雨赶上风寒,又吃了新疆室友的大补特产,龙体开始感觉到不适,于是上 ...

  5. BFS POJ 3126 Prime Path

    题目传送门 /* 题意:从一个数到另外一个数,每次改变一个数字,且每次是素数 BFS:先预处理1000到9999的素数,简单BFS一下.我没输出Impossible都AC,数据有点弱 */ /**** ...

  6. Java compiler level does not match the version of the installed Java project facet问题处理

    从SVN上下载应用后在Problems面板中提示以下错误信息: Java compiler level does not match the version of the installed Java ...

  7. 一行python能做什么!

    主要收集了平常遇到的代码和网上的简单题目,然后尝试将代码压缩到一行,仅仅是娱乐一下~~~ −−−−−(1)−−−−−−−−−−−(1)−−−−−− 用一行python写出一个嵌套的字符串. def p ...

  8. ADB Usage Complete / ADB 用法大全

    ADB,即 Android Debug Bridge,它是 Android 开发/测试人员不可替代的强大工具,也是 Android 设备玩家的好玩具. 持续更新中,欢迎提 PR 和 Issue 补充指 ...

  9. window下编写python脚本在linux下运行出错 usr/bin/python^M: bad interpreter: No such file or directory

    今天在windows下使用notepad++写了个python脚本,传到linux服务器执行后提示:-bash: ./logger.py: usr/bin/python^M: bad interpre ...

  10. 安卓app测试之启动时间和电量监控

    一.启动时间监控 通过adb命令获取 adb shell am start -W /<packageName> /<activityName> 案例: adb shell am ...