为了对庞大的源码项目进行分析,先对源码目录树作一个简单的介绍,粗略的了解一下各个模块的功能分布情况,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. webapp填坑记录

    网上也有许多的 webapp 填坑记录了,这几个月,我在公司正好也做了2个,碰到了一些问题,所以我在这里记录一下我所碰到的问题: meta 头部声明在开发的时候,刚刚创建 HTML 文件,再使用浏览器 ...

  2. PostgreSQL逻辑复制之pglogical篇

    PostgreSQL逻辑复制之slony篇 一.pglogical介绍 pglogical 是 PostgreSQL 的拓展模块, 为 PostgreSQL 数据库提供了逻辑流复制发布和订阅的功能. ...

  3. hdu1166 敌兵布阵(树状数组)

    敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  4. c语言数据读入---sscanf、fscanf

    #include <iostream> #include <cstdio> #include <cstring> #include <stdlib.h> ...

  5. 面向过程与面向对象引入三大特性&&事务

    1.面向过程 int a = 10;int b =5;int c = a+b; int r1 = 10;int r2 = 5;double c = r1*r1*3.14 - r2*r2*3.14 缺点 ...

  6. 论tab切换的几种实现方法

    tab切换在网页中很常见,故最近总结了4种实现方法. 首先,写出tab的框架,加上最简单的样式,代码如下: <!DOCTYPE html> <html> <head> ...

  7. Git学习笔记(2)-创建仓库

    一.Git简介 1.Git是什么 Git是分布式版本控制系统 2.Git有什么特点 (1)Git是分布式的SCM,SVN是集中式的 (2)Git每个历史版本存储完整的文件,SVN存储文件差异 (3)G ...

  8. 两个input可能会用到的小方法

    1.一个普通的input元素,在不被 form包裹的时候,如何跳转或搜索 var oInput = document.getElementsByTagName('input')[0]; oInput. ...

  9. 部署bugzilla(bugzilla+apache+mysql+linux)

    工作原因,需要部署bugzilla.在此,容我新造个轮子.官方轮子:https://bugzilla.readthedocs.org/en/latest/installing/quick-start. ...

  10. (转)淘淘商城系列——Solr的安装

    http://blog.csdn.net/yerenyuan_pku/article/details/72874134 Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service ...