`
1025250620
  • 浏览: 229982 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

chrome开源工程(转)

 
阅读更多

chrome地址栏输入about:credits就可以看到chrome使用的开源工程了,之前也有一篇介绍chrome开源工程的文章:Code Reuse in Google Chrome Browser,大家可以参考一下。

David M. Gay's floating point routines homepage

fpnetlib的一部分,主要用于浮点数运算,数的二进制与十进制的转换以及字符串和浮点数之间的转换等。这种库在程序移植到嵌入式设备时非常重要,如果移植的不好,可能出现浮点运算错误,或者在进行浮点运算时非常慢的问题。这个库里面实现的比较重要的函数有:strtod,dtoa,pow5mult,diff,cmp,lshift等。David M. Gay的这个库被广泛使用,例如Apple Libc也是使用的这个。如果在移植浏览器时出现调用dtoa进入死循环的问题,就需要特别注意编译fp库时的宏定义了。chrome用这个库的一个原因是js里面的Number都是double类型的,所以js引擎必须能够正确和快速的处理浮点数。chromdeV8还实现了FastDtoa用来更快速地处理字符串和浮点数之间的转换。

dynamic annotationshomepage

这个库主要用来检测死锁的。这个库的另外一个作用是来让代码检测工具(例如valgrind)智能点,并少报一些警告。例如下面是chrome里面实现多线程安全singleton模式的一段代码:

// This annotation helps race detectors recognize correct lock-less

// synchronization between different threads calling get().

// See the corresponding HAPPENS_AFTER below and above.

ANNOTATE_HAPPENS_BEFORE(&instance_);

base::subtle::Release_Store(

&instance_, reinterpret_cast(newval));

 

if (Traits::kRegisterAtExit)

base::AtExitManager::RegisterCallback(OnExit, NULL);

Netscape Portable Runtime (NSPR)homepage

NSPRMozilla开发的一个跨平台库,它主要提供了类型定义,线程,线程同步,文件,网络,时间处理,内存管理等的APINSPR API比较明显的一个特征是以PR开头,例如PRInt32PRThread,PR_CreateThread。它在程序和系统之间的关系如下图:

chrome使用的开源工程介绍 - lanhy2000 - 不当老板

NSPR被很多跨平台应用使用着,例如SpiderMonkey的线程安全就是依赖NSPR实现的,《C++跨平台开发技术指南》这本书里面也提到了NSPRchrome只是用到了NSPR的类型定义(prtypes.h)和时间处理(prtime.cc),chrome里面用NSPR主要是因为NSSNPAPI依赖其的缘故。

Network Security Services (NSS)homepage

NSS主要用来支持网络安全,例如SSL协议,S/MIME,一些加密算法(SSLTLS,PKCS等)。NSS是和OpenSSL差不多的东西,它比OpenSSL大,依赖的也比OpenSSL多,但是它支持PKCS #11,可以用于智能卡的加密。既然用了NSSChrome也就没必要用OpenSSL了。

purify headershomepage

Rational Purify是一个IBM出的自动化测试工具,主要用来检测内存相关的错误。

google-glog's symbolization libraryhomepage

google-glog主要用于日志记录,类似的工程有log4cpp,java中对应的叫做log4jgoogle-gloggoogle的工程中被广泛使用,例如google-breakpad(一个用于崩溃报告的项目,对应的服务端有http://code.google.com/p/socorro/),当chrome出现下面的对话框时,就是google-breakpad检测出来的。

chrome使用的开源工程介绍 - lanhy2000 - 不当老板

valgrindhomepage

Valgrind是一款用于内存调试、内存泄漏检测以及性能分析的软件开发工具。google的测试工作做的挺好的,不但测试工具多,而且大部分cc文件都有对应的测试代码,一般和cc文件处于同级目录,名字叫做xxxxx_unittest.cc

xdg-mime homepage

xdg-mime是一个根据文件名和文件内来判断文件类型(mime信息)的工具。

xdg-user-dirshomepage

xdg-user-dirs是一个用于linux平台上管理桌面文件夹,我的音乐,我的图片等文件夹的工具。chromelinux上设置chrome下载文件夹时用到了此功能。

BSDiff homepage

BSDiff是一个二进制比较工具,对应的还有bspatch。像svn diff这种工具只能比较文本等文件,而不能比较二进制文件。

chromeBSDiff干什么呢?用来chrome的自动升级,具体请参考:Software Updates: Courgette,摘取其中一段来看看效果

Here are the sizes in bytes for the recent 190.1->190.4 update on the developer channel:

Full update 10,385,920

bsdiff update 704,512

Courgette update 78,848

二进制比较还有一些其它的算法,例如rsync,这个在同步文件时非常有用,Dropbox同步采用的算法也是rsync。自动升级其实就是一个同步操作。

XZ Utilshomepage

XZ Utils是一种依赖于LZMA SDK7z也是采用这个)的压缩工具。chromeXZ Utilschrome安装程序的压缩。

google-jstemplatehomepage

google-jstemplate是一个js模板处理库,比较适合ajax程序,有点像struts。有一份介绍的ppthttp://google-jstemplate.googlecode.com/svn/slides/jstemplate.html

Launchpad Translationshomepage

Launchpad Translations是用于chrome多语言支持的文件。chrome主要是通过GRIT (Google Resource and Internationalization Tool) xtbgrb文件编译成h文件,然后放到资源文件(.rc)里面。更多多语言支持的细节请参考http://www.chromium.org/developers/design-documents/ui-localizationChromium本地化的方法chromium之国际化

Mozilla Personal Security Managerhomepage

Mozilla Personal Security Manager主要用于linux系统的证书管理,文档可以参考:http://www.mozilla.org/projects/security/pki/psm/arch.htmlwindows上与此相似的就是如下东西了:

chrome使用的开源工程介绍 - lanhy2000 - 不当老板

gssapihomepage

gssapi的全称是Generic Security Services Application Program Interface,它提供让程序能够访问安全服务的应用程序接口,与它相关的技术有RADIUSSASLTLSSSPI等。对于安全认证时的授权协商,在windowschrome使用的是secur32.dll提供的SSPISecurity Support Provider Interface),而linux上则是使用gssapi。更多HTTP认证的信息可以参考:http://www.chromium.org/developers/design-documents/http-authentication

Google Toolbox for Machomepage

主要用于chromemac上的实现。当然Google Toolbox for Mac并不只是为了chrome,还用于googleiphonemac上的其他产品。

WebKithomepage

webkit是什么就不说了,chrome的核心就是WebKit

ActiveX Scripting SDKhomepage

还不清楚chromeActiveX Scripting SDK做什么,也没在chrome里面找到相关代码。可能和插件相关,用于支持object标签。

Almost Native Graphics Layer Enginehomepage

简称叫做ANGLEchromeANGLE主要是为了用DirectX 9实现WebGL功能。chrome为什么不用opengl实现了?原因是windows opengl的各个版本是二进制不兼容的。微软的相关解释在http://support.microsoft.com/kb/124034/zh-cn也就 OpenGL 程序二进制级别不兼容,但在源代码级别都兼容,也就是说一个opengl程序要能够在特定版本的windows上运行,必须在那个平台上重新编译。另外,各个显卡的驱动对opengl的支持程度也不近相同。windows3D编程的真正标准是DirectX,导致chrome也必须用WebGl来实现weebglsafari也是如此)。DirectXOpenGl之间的战争与IEnetscape的战争有得一拼,可以参考http://www.cppblog.com/xczhang/archive/2007/12/09/38105.htmllinuxmac osopengl就是其的主要3D API,所以不存在问题。

Apple sample codehomepage

苹果的开发者中心,里面有很多文档和例子,相当于微软的msdn网站。在maciphone上编程可以参考一下html5的开发者也可以看一下http://www.apple.com/html5/里面有很多苹果的html5 demo。苹果的开源工程也在里面(http://developer.apple.com/opensource/http://opensource.apple.com/source/)。另外,很多人抱怨webkit没有文档,其实苹果写了很多关于webkit的文档,例如WebKit Objective-C Programming Guide

Darwinhomepage

Darwin是由苹果电脑的一个开放源代码操作系统. 苹果和开源的关系很有趣,可以参考刘江写的《苹果的另一面:开源软件重镇》。

bsdiffhomepage

Mozilla实现的前面提到过的BSDiff算法。

bspatchhomepage

Mozilla实现的前面提到过的BSPatch算法。

bzip2homepage

又一个压缩算法,比gzip压缩率更高。bzip2主要用来支持HTTP里面的内容编码格式(Content Codings)chrome支持的Content Codings经常在变化,可以参考Google Chrome支持bzip2压缩chrome支持sdch压缩,另外不再支持bzip2压缩。从我使用的chrome 13版本看,chrome支持gzip,deflate,sdch,而不支持bzip2压缩。

chrome使用的开源工程介绍 - lanhy2000 - 不当老板

Google Cache Invalidation API homepage

用于chrome的缓存管理。chrome使用的是disk cache来实现缓存的,需要用Chrome Cache Viewer等工具才能看disk cache生成的文件。

Compact Language Detectionhomepage

主要用来检测是什么语言,用于chrome的拼写检查,更详细的请参考http://www.chromium.org/developers/design-documents/advancedspellchecker

codesighshomepage

又一个代码检测工具,Mozilla的,文档在https://wiki.mozilla.org/Codesighs,主要作用是检测代码的大小。

expathomepage

一个xml解析库,和libxml是一类的,不过要比libxml轻量。

ffmpeghomepage

主要用来音频和视频的处理,例如录制和转换。一些软件具备将pc上的视频转换到手机上视频的能力,很多用的就是ffmpeg,例如豌豆荚就是这么干的。chome用这个库主要用来支持htmlvideoaudio

OpenGL ES 2.0 Programming Guidehomepage

OpenGL教材。

OpenGL ES 2.0 Conformance Tests homepage

OpenGL兼容性测试。

gpsdhomepage

一个GPS服务,主要用来获取地理位置。html5有获取地址位置(geolocation)的API,可以参考http://dev.w3.org/geo/api/spec-source.htmlhttp://diveintohtml5.org/geolocation.htmlgpsd就是用来在linux上实现html5 geolocation的。

Harfbuzzhomepage

用于文本渲染,不太熟。在搜索Harfbuzz相关技术时找到了几篇不错的文章:闲聊文本渲染技术的近期发展浏览器如何渲染文本汉字的几何中心

hunspellhomepage

一个拼写检测的库。很多软件都是用这个库做拼写检测,例如LibreOffice, OpenOfficeFirefox

hunspell dictionarieshomepage

hunspell的词典。

hyphen-2.6homepage

主要用于hunspell拼写检测里面的连字处理。

IAccessible2 COM interfaces for accessibilityhomepage

Windows上用于残疾人士的一些功能。

iccjpeghomepage

用于jpeg图片的处理。

ICUhomepage

国际化(I18N)的处理。ICU是最大的一块,有12MB左右,如果只需要支持几种特定的语言,可以用http://apps.icu-project.org/datacustom/来生成小尺寸的ICU

Chinese and Japanese Word Listhomepage

中文字和日文字,ICU的一部分。

ISimpleDOM COM interfaces for accessibilityhomepage

用于残疾人士,对于链接里面有详细的介绍。

jemallochomepage

一个malloc实现,主要用在firefox上,比libc里面的malloc快。

lcovhomepage

代码覆盖率测试工具,下面的图片应该熟吧:

libeventhomepage

libevent是一个异步事件处理软件函式库,对于服务器编程的人应该熟吧,很多服务器端就是用libevent来解决C10K问题的。chrome用这个好像是用于里面的flip server,通过flip server可以实现spdy协议。spdygoogle研究的新协议,比HTTP协议更高效,可以用来干什么自己google

libjingle homepage

GTalk里面实现视频聊天和P2P功能的库。GTalk使用的XMPP协议,但XMPP对文件传输和视频聊天支持都不行,Google就自己开发了一个,现在已成了XMPP标准的推荐扩展。chrome用这个干什么呢?用来同步书签等。chrome最近还在做的P2P API也是基于这个库。

libjpeghomepage

处理jpeg的库

libjpeg-turbohomepage

MMX, SSE,SSE2 SIMD指令加速处理JPEG的库。

libpnghomepage

处理png图片的库

libsrtphomepage

libsrtp是一个实现SRTP协议(Secure Real-time Transport Protocol,安全实时传输协议)的库。chromeWebRTC就是基于SRTP协议实现的,libjingle也使用了libsrtp

libvpxhomepage

libvpx 是一个开源的WebM(VP8)编码解码器.WebM是一个由Google资助的项目,目标是构建一个开放的、免版权费用的视频文件格式。该视频文件格式能提供高质量的视频压缩以配合HTML 5使用。

libwebpdecodehomepage

WebM对应,WebPGoogle开发的一种新的图片格式,属于有损压缩,图像文件大均比JPEG格式缩小39%

libxmlhomepage

xml解析库,webkit要用。

libxslthomepage

用于xslt处理,webkit要用。

LZMA SDKhomepage

7zsdk,用于安装包的压缩。

MesaLibhomepage

3D图形库,OpenGL的一份实现。

modp base64 decoderhomepage

用于Base64解码。在处理data协议时有用。

NSBezierPath additions from Sean Patrick O'Brienhomepage

用于mac os上的圆角矩形,阴影等的处理。

Mongoosehomepage

一个web server

Cocoa extension code from Caminohomepage

CaminoMac OS X上的一个开源浏览器,chromemac上的扩展实现参考了Camino

npapihomepage

webkitfirefox的插件API

OCMockhomepage

Mac上实现模拟对象(Mock Object)的库,主要用于测试。

OpenMAX ILhomepage

多媒体应用程序的框架标准.

opensslhomepage

实现了SSL及相关加密技术的软件包.

OTS (OpenType Sanitizer)homepage

OpenType是一种可缩放字型,用来替代TrueTypeOTS用于OpenType字体的处理。

pdfsqueezehomepage

mac系统上pdf文件处理。

ppapihomepage

新的插件API,比NPAPI有很多地方做了改进。

protobufhomepage

一种序列化协议,网上有很多介绍。

pyftpdlibhomepage

python版的ftp server库。

pywebsockethomepage

python版得websocket server服务端,用于测试websocket

qcms libraryhomepage

用于颜色管理,更详细的介绍可以参考http://muizelaar.blogspot.com/2009/06/qcms-color-management-for-web.html

 

Google Safe Browsinghomepage

用于Google的安全浏览(Google Safe Browsing),至于安全浏览是什么看下面的图就清楚了:

simplejsonhomepage

用于JSON处理。

skiahomepage

skia是什么就不说了,androidchrome都在用。

speexhomepage

用于压缩声音,对人的声音压缩率比较高。

SQLitehomepage

本地数据库,用于实现html5里面的database api

swighomepage

主要是为了方便Perl, PHP, PythonJava等语言调用C/C++,swig可以生成c/C++代码的Perl, PHP, PythonJava等语言wrapper代码。比Java生成JNI代码的做法更高级。

tallochomepage

内存池。

tcmallochomepage

malloc的实现,速度超快。

tlslitehomepage

实现SSL 3.0, TLS 1.0, TLS 1.1python

undoviewhomepage

gtk+扩展,用于支持文本编辑框的无效次数的undo,高亮等。

Webdriverhomepage

Web应用程序测试工具。

WTL 8.0homepage

Windows Template Library,chromewindows上的UI控件是在此基础上开发的,也就是windowschrome ui = skia+WTL.

xdg-utilshomepage

XdgUtilslinux上一系列工具,包括前面提到过的xdg-mime

XUL Runner SDKhomepage

主要用于XPCOM开发。

yasmhomepage

NASM汇编器。

zlibhomepage

压缩和解压库。

Strongtalkhomepage

StrongTalkSmallTalk的变种,用了优化的类型系统。StrongTalk的优点是用类型反馈技术来加快运行速度,相关介绍可以参考http://blog.csdn.net/g9yuayon/archive/2006/09/13/1217364.aspxchrome里面的v8使用了Strongtalk assembler,可以参考V8 Javascript engine之所以快

分享到:
评论

相关推荐

    Chrome获取书签插件工程文件(提取)

    在这个主题中,我们关注的是一个与Chrome相关的压缩包文件,标题为“Chrome获取书签插件工程文件(提取)”。这个文件包包含了开发Chrome插件所需的必要元素,尽管它不能直接导入Chrome,但它是对开源书签插件的精简...

    chrome 浏览器离线安装包 v101.0.4951.54 64位版本

    不过,需要注意的是,虽然Chromium是开源的,但Google Chrome浏览器还包括了一些专有组件,如内置的Flash Player和某些更新机制。 “前端”标签表明这个离线安装包对前端开发者尤为重要。Chrome浏览器的开发者工具...

    google chrome代码分析

    谷歌浏览器(Chrome)是一款基于开源项目Chromium的高效浏览器,以其快速、稳定和安全的特点受到用户的广泛欢迎。Chrome的设计理念是让浏览器作为一个平台,能够随着网络技术的发展而不断进化,满足用户对应用程序和...

    chrome 浏览器离线安装包 91.0.4472.77(正式版本) (64 位)

    Chrome基于开源项目Chromium,允许开发者查看和修改其源代码,促进了浏览器技术的发展和创新。 6. **前端**:在IT领域,前端通常指与用户交互的部分,包括网页设计、HTML、CSS、JavaScript等技术。Chrome浏览器因其...

    chrome核心部分源码

    Chrome是一款由Google开发的开源网页浏览器,其核心部分的源码是许多开发者和技术爱好者研究的对象。这个压缩包文件包含了Chrome的核心组件,让我们深入探讨一下这些关键的源代码及其背后的原理。 1. **Blink渲染...

    chrome中剥出的基础库

    我从chrome开源项目中剥出的windows可用的基础库,vs2008工程,基于chrome14,代码做了少许的修改。基本包含了常用的字符串操作,编码,线程框架(极其重要),单例管理,智能指针,引用计数,类成员函数回调模板,锁...

    chrome源码学习文档

    Chrome浏览器是基于开源项目Chromium构建的,它的源码提供了关于网络请求处理、渲染引擎Blink、JavaScript引擎V8、多进程架构以及安全性等多方面的知识。以下是一些主要的知识点: 1. **多进程架构**:Chrome采用多...

    chrome 源代码

    Chrome是一款由Google开发的开源网页浏览器,其源代码是广大开发者和研究者探索现代网络技术、浏览器架构以及软件工程实践的重要资源。"chrome 源代码"这一主题涵盖了丰富的技术领域,包括但不限于C++编程、多线程...

    chromeTabs,google浏览器的标签delphi安装包

    首先,ChromeTabs 基于 Chromium Embedded Framework (CEF),这是一个开源项目,允许开发者将 Google Chrome 的渲染引擎集成到他们的应用程序中。CEF 支持多种编程语言,包括 Delphi,为开发者提供了丰富的 Web 功能...

    Chrome-V8.pdf

    Google Chrome是一款全新的开源浏览器,其特点包括: - **简单直观的用户体验**:旨在提供简洁明了的操作界面。 - **基于WebKit开源项目**:利用成熟的渲染引擎技术。 - **多进程架构**:每个标签页独立运行在一个...

    chrome v8 vs2010编译指导及 helloworld测试工程

    在IT领域,Google V8引擎是一款著名的开源JavaScript虚拟机,被广泛应用于Chrome浏览器以及Node.js等项目中。本文将详细阐述如何使用Visual Studio 2010(VS2010)来编译V8引擎,并创建一个"Hello, World!"测试工程...

    chrome-pak-customizer-2.0.tar.gz

    通过研究Chrome Pak Customizer 2.0的源代码,开发者不仅可以学习如何操作pak文件,还能深入理解Chromium项目的工作原理,以及如何利用开源工具解决实际问题。同时,这个工具也可以作为软件工程实践的案例,展示如何...

    java cef 调用chrome浏览器

    CEF是一个开源框架,它封装了Google Chrome的渲染引擎Blink和JavaScript引擎V8,使得开发者可以将现代Web浏览器的功能嵌入到各种应用中,包括JavaFX应用。 JavaFX是Java的一种图形用户界面(GUI)工具包,用于创建...

    Chrome源代码结构.doc

    简单来说,Chrome是Google的官方浏览器,基于Chromium开源项目。Chromium是一个开放源代码的项目,允许开发者参与开发,新特性和技术经过验证后会被引入到Chrome的正式版本中。由于这个原因,Chromium的更新频率远...

    selenium chrome driver 100.0.4896.60

    Selenium 是一个开源的Web应用程序自动化测试框架,支持多种编程语言,如Java、Python、C#等。它提供了一个强大的API,使开发者能够编写脚本来模拟用户在浏览器上的各种操作,包括点击、输入、导航、表单填充等。这...

    chrome浏览器吸引我的地方

    Blink是由Google开发的开源渲染引擎,它基于WebKit,但在优化和更新方面更加积极,使得Chrome能够快速加载页面,提供流畅的浏览体验。Blink不断进行技术迭代,确保了对最新Web标准的支持,如HTML5、CSS3和JavaScript...

    开源项目-maxpert-raspchat.zip

    Node.js是建立在Chrome V8引擎上的JavaScript运行时,它允许开发者使用JavaScript进行服务器端编程。Node.js以其非阻塞I/O模型和事件驱动的架构而闻名,这使得它在处理大量并发连接时表现优秀,特别适合实时通信应用...

    GreenChrome完整开源代码.zip

    GreenChrome是来自耍下的绿化Chrome实用小工具,目前作者已将该程序开源,工具不大,所以代码不是太讲究,见谅。 工具介绍: GreenChrome通过winmm.dll劫持的方式,本程序会随着Chrome启动。如果检测到外部程序...

    JokerChrome, Chrome 生成和 Chrome".zip

    JokerChrome, Chrome 生成和 Chrome" 作为一个前端工程师你了解你的小伙伴么--chromeabout:version - 显示当前版本 也可以是chrome-resource://about/chrome://history2 - 浏览历史 History2

Global site tag (gtag.js) - Google Analytics