Enter "about: credits" in the chrome address bar to view the open source project used by Chrome. There is also an article about the open source project of chrome: code reuse in Google Chrome browser. You can refer to it.
David M. Gay's floating point routines Homepage
FP is part of netlib. It is mainly used for floating-point calculation, binary and decimal conversion of numbers, and conversion between strings and floating-point numbers. This kind of library is very important when the program is transplanted to an embedded device. If the library is not transplanted well, it may cause a floating point operation error or the floating point operation may be very slow. The most important functions implemented in this library include strtodd, dtoa, pow5mult, diff, CMP, and lshift. This library of David M. Gay is widely used, such as Apple libc. If the problem of calling dtoa to enter the endless loop occurs when porting the browser, pay special attention to the macro definition when compiling the FP library. One reason chrome uses this library is that the number in JS is double type, so the JS engine must be able to process floating point numbers correctly and quickly. Chromde V8 also implements fastdtoa for faster conversion between strings and floating-point numbers.
Dynamic annotations Homepage
This library is mainly used to detect deadlocks. Another function of this library is to make code detection tools (such as valgrind) smarter and give fewer warnings. For example, the following code implements the multi-threaded secure Singleton mode in chrome:
// 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<:subtle::atomicword>(newval)); if (Traits::kRegisterAtExit) base::AtExitManager::RegisterCallback(OnExit, NULL);
Netscape Portable Runtime (NSPR) Homepage
NSPR is a cross-platform library developed by Mozilla. It provides APIs for data type definition, thread, thread synchronization, file, network, time processing, and memory management, an obvious feature of the nspr api is that it starts with PR, such as print32, prthread, and pr_createthread. The relationship between the program and the system is as follows:
NSPR is used by many cross-platform applications. For example, the thread security of spidermonkey depends on NSPR implementation. NSPR is also mentioned in the C ++ cross-platform development technical guide. Chrome only uses the NSPR type definition (prtypes. h) and time processing (prtime. CC). In Chrome, NSPR is mainly used because NSS and npapi depend on it.
Network Security Services (NSS) Homepage
NSS is mainly used to support network security, such as SSL protocol, S/MIME, and some encryption algorithms (such as SSL, TLS, and PKCS ). NSS is similar to OpenSSL. It is larger than OpenSSL and relies more on OpenSSL. However, NSS supports PKCS #11 and can be used for Smart Card encryption. Since NSS is used, Chrome does not need to use OpenSSL.
Purify headers Homepage
Rational purify is an IBM automated testing tool mainly used to detect memory-related errors.
Google-glog's symbolization Library homepage
Google-glog is mainly used for logging. Similar projects include log4cpp, which corresponds to log4j in Java. Google-glog is widely used in Google projects, such as Google-breakpad (a project for crash reporting, with a http://code.google.com/p/socorro/ on the server side), when chrome displays the following dialog box, it was detected by Google-breakpad.
Valgrind is a software development tool for memory debugging, memory leak detection, and performance analysis. Google is doing a good job in testing. Not only are there many testing tools, but most CC files have corresponding test code. Generally, it is in the same directory as the CC file and its name is xxxxx_unittest.cc.
Xdg-Mime is a tool used to determine the file type (MIME information) based on the file name and file.
Xdg-user-dirs is a tool used on Linux to manage desktop folders, my music, my images, and other folders. Chrome uses this function when setting the chrome download folder on Linux.
Bsdiff is a binary comparison tool with bspatch. Tools such as SVN diff can only compare files such as text, rather than binary files.
What does chrome do with bsdiff? For chrome automatic upgrade, see: Software Updates: courgette. extract one of them to see the effect.
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
There are also some other binary algorithms, such as rsync, which is very useful when Synchronizing files. The Dropbox synchronization algorithm is also rsync. Automatic Upgrade is actually a synchronization operation.
Xz utils Homepage
Xz utils is a compression tool that relies on lzma SDK (7z also uses this. Chrome uses xz utils to compress the chrome installer.
Google-jstemplate is a JS template processing library and is suitable for Ajax programs, a bit like struts. There is an introduction PPT at http://google-jstemplate.googlecode.com/svn/slides/jstemplate.html.
Launchpad translations Homepage
Launchpad translations are files supported by chrome in multiple languages. Chrome mainly uses grit (Google resource and internationalization tool) to compile xtb and GRB files into H files and then put them in the resource file (. Rc. For more details about language support, refer to NLP.
Mozilla personal security manager Homepage
Mozilla personal security manager is mainly used for Certificate Management in Linux. For more information, see http://www.mozilla.org/projects/security/pki/psm/arch.html. Windows is similar to the following:
Gssapi is short for generic security services application program interface. It provides application interfaces that allow applications to access security services. Its related technologies include radius, SASL, TLS, and sspi. For Security Authentication Authorization negotiation, chrome on Windows uses the sspi (Security Support Provider Interface) provided by secur32.dll, while gssapi on Linux. For more information about HTTP authentication, see: http://www.chromium.org/developers/design-documents/http-authentication
Google toolbox for Mac Homepage
It is mainly used for chrome implementation on Mac. Of course, Google toolbox for Mac is not just for chrome, but also for Google's other products on iPhone and Mac.
WebKit is the core of chrome.
ActiveX Scripting SDK Homepage
It is not clear what Chrome does with ActiveX Scripting SDK, nor does it find the relevant code in chrome. It may be related to plug-ins and is used to support object tags.
Almost native graphics layer engine Homepage
Angle. Chrome uses angle to implement webgl with DirectX 9. Why does chrome not use OpenGL? The reason is that Windows OpenGL versions are not Binary compatible. Microsoft's explanation is at http://support.microsoft.com/kb/124034/zh-cn, and the handler is incompatible with the OpenGL program binary level, but is compatible with the source code level. That is to say, an OpenGL program must be able to run on a specific version of Windows, it must be re-compiled on that platform. In addition, the degree to which OpenGL is supported by different graphics card drivers is not nearly the same. The real standard for 3D programming on Windows is DirectX, which means Chrome must use webgl to implement weebgl (as does Safari ). The war between DirectX and OpenGL is a battle between IE and Netscape. For details, refer to http://www.cppblog.com/xczhang/archive/2007/12/09/38105.html. OpenGL is the main 3D API on Linux and Mac OS, so there is no problem.
Apple sample code Homepage
There are many documents and examples in Apple's Developer Center, which is equivalent to Microsoft's msdn website. For programming on Mac and iPhone, refer to. HTML5 developers can also take a look at http://www.apple.com/html5/. there are many HTML5 demos for Apple. Apple's open source project is also in it (http://developer.apple.com/opensource/,http://opensource.apple.com/source ). In addition, many people complain that WebKit has no documentation. In fact, Apple has written many documents about WebKit, such as WebKit objective-C Programming Guide.
Darwin is an open-source operating system of Apple Computer. The relationship between Apple and open-source is interesting. You can refer to "Apple's other side: Open-Source Software Town" written by Liu Jiang.
The previously mentioned bsdiff algorithm implemented by Mozilla.
The bspatch algorithm previously mentioned by Mozilla.
Another compression algorithm has a higher compression ratio than gzip. Bzip2 is mainly used to support content codings in HTTP. Content codings supported by chrome are often changing. For details, refer to Google Chrome's support for Bzip2 compression and Chrome's support for SDCh compression, bzip2 compression is no longer supported. In chrome 13, chrome supports gzip, deflate, and SDCh, but does not support Bzip2 compression.
Google cache invalidation API Homepage
Used for chrome Cache Management. Chrome uses disk cache to implement cache. You must use tools such as chrome cache viewer to view files generated by disk cache.
Compact language detection Homepage
It is mainly used to detect the language used for chrome spelling checks. For more details, see http://www.chromium.org/developers/design-documents/advancedspellchecker.
Another code detection tool, Mozilla's. The document is at https://wiki.mozilla.org/codesighs. The main component is the size of the detection code.
An XML parsing library is similar to libxml, but it is lightweight than libxml.
It is mainly used for audio and video processing, such as recording and conversion. Some software has the ability to convert videos from PCs to videos on mobile phones. Many of them use FFMPEG. For example, this is what the pods do. Chome uses this library to support HTML video and audio.
OpenGL ES 2.0 programming guide Homepage
OpenGL teaching material.
OpenGL ES 2.0 conformance tests Homepage
OpenGL compatibility test.
A gps service is mainly used to obtain geographical locations. HTML5 has an API for obtaining the address location (geolocation). For details, refer to http://dev.w3.org/geo/api/spec-source.htmland http://dive?html5.org/geolocation.html. GPSD is used to implement HTML5 geolocation on Linux.
Used for text rendering, not familiar. I found several good articles when searching for harfbuzz related technologies: chatting about the recent development of text rendering technology, how browsers render texts, and the geometric center of Chinese characters.
A spelling check library. Many software use this library for spelling checks, such as libreoffice, OpenOffice, and Firefox.
Hunspell dictionaries Homepage
It is mainly used to process the concatenation in hunspell spelling detection.
Iaccessible2 com interfaces for accessibility Homepage
Some features for disabled users on Windows.
It is used to process JPEG images.
I18n processing. ICU is the largest one with a size of about 12 Mb. If you only need to support several specific languages, you can use http://developer.icu-project.org/datacustom/to generate a small icu.
Chinese and Japanese word list Homepage
Text and text, part of ICU.
Isimpledom com interfaces for accessibility Homepage
It is used for persons with disabilities and detailed descriptions are provided in the link.
A malloc implementation is mainly used on Firefox, which is faster than the malloc in libc.
The following figure shows the code coverage test tool:
Libevent is an asynchronous event processing software library. You should be familiar with Server programming. Many servers use libevent to solve the c10k problem. Chrome uses the flip server, which can be used to implement the spdy protocol. Spdy is a new protocol developed by Google. It is more efficient than HTTP and can be used for Google.
Library for implementing video chat and P2P functions in Gtalk. Gtalk uses the XMPP protocol, but XMPP does not support file transfer and video chat. Google developed one by itself and has now become a recommended extension of the XMPP Standard. What Should chrome do with this? Used to synchronize bookmarks. The P2P API that Chrome is currently working on is also based on this library.
JPEG processing Library
Use MMX, SSE, and sse2 SIMD commands to accelerate JPEG processing.
PNG Image Processing Library
Libsrtp is a library that implements the SRTP protocol (secure real-time transport protocol, secure real-time transmission protocol. Chrome's WebRTC is implemented based on the SRTP protocol, and libjingle also uses libsrtp.
Libvpx is an open-source webm (Vp8) decoder. webm is a project funded by Google to build an open, copyright-free video file format. This video file format can provide high-quality video compression for HTML 5.
In contrast to webm, webp is a new image format developed by Google. It is lossy compression, and the image file size is reduced by 39% on average compared with the JPEG format.
XML parsing library, which must be used by WebKit.
Used for XSLT processing and WebKit.
Lzma SDK Homepage
7z SDK, used to compress the installation package.
3D graphics library, an implementation of OpenGL.
Modp base64 decoder Homepage
Used for base64 decoding. It is useful when processing data protocols.
Nsbezierpath additions from Sean Patrick O 'Brien Homepage
It is used for processing rounded rectangle and shadow on Mac OS.
A Web server.
Cocoa extension code from Camino Homepage
Camino is an open-source browser on Mac OS X. For more information about chrome extension on Mac, see Camino.
WebKit and Firefox plug-in APIs.
Mock object library is used for testing on Mac.
Openmax il Homepage
Framework Standards for multimedia applications.
Software packages that implement SSL and related encryption technologies.
OTs (OpenType sanitizer) Homepage
OpenType is a scalable font that replaces TrueType. OTS is used to process OpenType fonts.
PDF File Processing on MAC system.
The new plug-in API has been improved much better than the npapi.
A serialization protocol, which is described on the Internet.
Python FTP server library.
Python-based websocket server is used to test websocket.
Qcms Library homepage
For more information about color management, see http://muizel).blogspot.com/2009/06/qcms-color-management-for-web.html.
Google safe browsing Homepage
For Google safe browsing, you can see the following figure for what security browsing is:
Skia is used for Android and chrome.
It is used to compress the voice and has a high compression rate for the human voice.
A local database is used to implement the database API in HTML5.
It is mainly used to call C/C ++ in Perl, PHP, Python, Java, and other languages. swig can generate Perl, PHP, and python for C/C ++ code, java and other language wrapper code. This is more advanced than how Java generates JNI code.
The implementation of malloc is extremely fast.
Python library for implementing SSL 3.0, TLS 1.0, and TLS 1.1
GTK + extension, used to support undo and highlight of invalid number of text edit boxes.
Web application testing tool.
Wtl 8.0 Homepage
Windows template library and chrome UI controls on windows are developed on this basis, that is, chrome UI = skia + wtl on Windows.
Xdgutils is a series of tools on Linux, including the xdg-mime mentioned above.
XUL runner SDK Homepage
It is mainly used for development of XPCOM.
Compress and decompress the database.