为了对庞大的源码项目进行分析,先对源码目录树作一个简单的介绍,粗略的了解一下各个模块的功能分布情况,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. 2014 ecb,_it’s_easy_as_123(修改bmp文件头) 攻防世界;
  2. oracle 多个实例互相切换实例
  3. Python递归调用
  4. nginx log记录请求响应日志及日志分割
  5. 修复Mysql主从不同步shell
  6. 马化腾又要发红包!648亿港元,最多腾讯2%股份,我酸了...
  7. Linux日志管理五大命令详解
  8. left+right /2_在C / C ++中使用Left Shift和Right Shift运算符
  9. linux vim常用快捷键
  10. bat批处理命令详解
  11. 网络工程师--网络规划和设计案例分析(4)
  12. oracle数据库连接时报12514_Oracle数据库之Oracle ORA12514 监听程序当前无法识别连接描述符中请求的服务...
  13. hdu2028java-Lowest Common Multiple Plus
  14. uniapp基本语法/组件使用
  15. pythontrun什么意思_python 新手笔记一
  16. 好用又免费的手机投屏到电脑软件
  17. 腾讯2017秋招笔试编程题--游戏任务标记
  18. 五年级下学期班主任工作计划
  19. 计算机网络(一)——计算机网络基础
  20. 2016年12月12日学习总结----各类链表操作

热门文章

  1. 深度学习模型的训练(大总结)
  2. outlook 禁用不安全_在Outlook 2007中禁用即时搜索
  3. Everything快捷打开搜索,电脑everything软件怎么设置快捷键
  4. IPFS系列 - 默克有向无环图(Merkle DAG)
  5. 图像处理--特征匹配
  6. 前端开发框架:Ajax的基本入门和使用。
  7. JavaWeb技术内幕八:JVM内存管理
  8. Linux Shell操作json工具jq
  9. TSINGSEE车载监控平台的城市渣土车监管解决方案
  10. 机械指令 对应 汇编指令