为了对庞大的源码项目进行分析,先对源码目录树作一个简单的介绍,粗略的了解一下各个模块的功能分布情况,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应用编程接口,通过Google Gears可以允许多种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. chrome源代码目录结构简介

    为了对庞大的源码项目进行分析,先对源码目录树作一个简单的介绍,粗略的了解一下各个模块的功能分布情况,chrome源代码src目录下的结构如下图: app:该目录下的代码主要是和各个操作系统平台相关的应 ...

  2. php源码目录在哪,PHP源代码目录结构简介(原创)

    PHP源代码目录结构简介(原创) 余超  yuchao86@gmail.com 基于PHP-5.3.8源代码给大家分享一下PHP的内核结构,以便更好的理解PHP脚本的执行过程和写出高效率的脚本. 目录 ...

  3. Chromium源码目录结构简介

    Chromium源码目录结构简介入门必备. High-level overview 高级概述 Chromium is separated into two main parts (excluding ...

  4. java获取tomcat目录结构_tomcat目录结构简介_动力节点Java学院整理

    tomcat目录结构简介 如果我们有一个web应用,名称为"mail"(同时也是web应用所在目录的名称),那么其目录内不同类型的文件应该服从如下放置的规则: 一般来讲: 对于ht ...

  5. Linux文件系统以及目录结构简介

    Linux和Windows操作系统中的文件系统些不同,在学习使用Linux之前,能够了解这个不同之处助于后续的学习.本文先对Windows和Linux上面文件系统的一些概念进行区分,然后介绍一些Lin ...

  6. ACE源代码目录结构

    ACE(ADAPTIVE Communication Environment),中文的意思就是自适配通讯环境,ACE是一个用于开发网络程序的优秀的C++的框架,在国外有很广泛的使用,在国内一些大的开发 ...

  7. android adbd代码在哪个目录下,Android源代码目录结构

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

  8. nodeBB项目的目录结构简介(nodeBB系列三)

    nodeBB项目的目录结构做一个简要讲解 项目基于目前最新的nodeBB 1.7.4的基础进行讲解 第一层级目录讲解 ├── app.js ├── build ├── config.json ├── ...

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

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

最新文章

  1. 为什么使用hibernate
  2. lucene3.5学习笔记02--创建索引和建立搜索
  3. sql输出带颜色的字段_带你走进MySQL数据库(MySQL入门详细总结一)
  4. Java连续获取两个输入,java 获取控制台的输入的两个方法
  5. 百度地图切割算法讲解
  6. JDK1.8的新特性详解
  7. 【linux(1),八年Java开发心路历程
  8. Django框架(二)---- 常用命令
  9. 阶段3 1.Mybatis_09.Mybatis的多表操作_3 完成account的一对一操作-通过写account的子类方式查询...
  10. 【Esri联邦大会】看点13: “NOAA National Hurricane Center”:应急应用
  11. 《duilib入门到精通》- duilib下载与编译(duilib视频教程)
  12. 红蜘蛛5屏幕测试软件,红蜘蛛5校色仪怎么用?显示器校色及测试色域和色彩精准度详细教程(2)...
  13. 测试用例设计—场景分析法
  14. URL ASCII编码解码
  15. onedrive免费扩容10G
  16. win10蓝屏自动修复解决方案
  17. 板鸭豆子红辣椒袋鼠的世界杯
  18. Windows 纤程详解
  19. 2022秋招蚂蚁金服面试
  20. cocos creator 做一个涂鸦跳跃

热门文章

  1. MAC系统免驱显卡汇总
  2. Oracle中设置定时任务--执行sql
  3. android九宫格隐藏,android九宫格锁屏控件
  4. 例题5-10 UVA 207 PGA Tour Prize Money PGA巡回赛的奖金
  5. linux I2c设备注册
  6. Sql Server 时间格式转换
  7. android手机的文件格式,安卓手机如何打开.apk文件?
  8. python中iloc切片_Dataframe选择行列loc,iloc,切片,布尔索引,条件判断等
  9. Vue3 - props
  10. 【C++】Clang-Format:代码自动格式化(看这一篇就够了)