SlideShare a Scribd company logo
Chromium 
Source Tree Overview
Chang W. Doh 
<hi> </hi> 
GDG Korea WebTech Organizer 
HTML5Rocks/KO Contributor/Coordinator
CAUTION! 
Many documents being mentioned from this 
slide are outdated. Don’t believe everything. =)
Overall Top-Projects
Simplified top-projects 
Project Description 
android_webview Integration of /content into android. 
base Common code shared between all sub-projects. 
build Build Configurations shared by all projects 
cc chrome Compositor implementations 
components components for Content Module layer 
content Core code for multi-process sandboxed browser 
net Network libraries for Chromium 
sandbox Sandbox for preventing hacked renderer from modified system. 
skia skia Graphics library, some classes in ui/gfx wrap skia 
third_party External libaries such as blink, decoders, compression, ... 
ui ● /gfx: Shared graphics lib, base of Chromium UI grp. 
● /views: frameworks for UI; rendering, layout, event 
handling. 
○ ALSO CHECK! chrome/browser/ui/view 
v8 V8 JavaScript Engine 
webkit WebKit glues & some web features
Historical changes of 
Chromium Dependency Diagram
Dependency diagram: V1 
/chrome 
/net 
/webkit WebKit API 
/base /third_party//webkit 
/V8
Dependency diagram: V2 
/chrome 
/content 
/net /webkit 
Content API 
/base /third_party//webkit 
/V8 
WebKit API
Dependency diagram: V3 
/chrome OR /android_webview OR ... 
/components 
/content 
/net /webkit 
Content API 
/base /third_party//webkit 
/V8 
WebKit API
Dependency diagram: V3 
/chrome OR /android_webview OR ... 
/components 
/content 
/net /webkit 
Chromium browser 
implementation 
Content API 
/base /third_party//webkit 
/V8 
WebKit 
API 
Network libraries for 
Chromium 
Common code to be 
shared between all 
sub-projects 
WebKit glue. 
NEED RESEARCH 
SOMEMORE 
Shared codes between 
browser 
implemetations 
Blink PART 
All the web platform 
features, HW acc. except 
Chrome features
Overview of Top-level projects
/android_webview 
● Facades over src/content to integrate into 
Android 
○ References 
■ Java Resource on Android 
● http://www.chromium.org/developers/design-documents/java-resources- 
on-android 
■ JNI on Chromium for Android 
● http://www.chromium.org/developers/design-documents/ 
android-jni 
● WARNING! Use jar_file_jni_generator.gypi for generating 
JNI of system classes instead of 
system_classes_jni_generator.gypi 
■ Organization of code for Android WebView
/base 
● Common code shared betweeen sub-projects 
○ e.g. String manipulations, file, … 
● Guideline 
○ Adding things under /base, only if that code must be 
shared between more than 1 other top-level project.
● Build-related configuration shared by all 
projects 
○ NOTE: 
■ gyp_chromium 
● Wrapper of gyp for chromium build 
■ all.gyp 
● Everything starts at here!!! 
■ android 
● jni_generator.gypi 
○ JNI generator for user-defined class 
● jar_file_jni_generator.gypi 
○ JNI generator for system class 
/build
/cc 
● Chrome compositor implementations 
○ References: 
■ GPU Accelerated Compositing in Chrome 
● http://www.chromium.org/developers/design-documents/gpu-accelerated- 
compositing-in-chrome 
■ Compositing in Blink/Webcore [slide] 
● https://docs.google. 
com/presentation/d/1dDE5u76ZBIKmsqkWi2apx3BqV8HOcN 
f4xxBdyNywZR8/edit#slide=id.gccb6cccc_0709 
■ Compositor Thread Architecture 
● http://www.chromium.org/developers/design-documents/ 
compositor-thread-architecture 
NOTE: Implementations in ‘cc’ don’t have whole part in above references.
/chrome 
● Chromium browser implementations 
○ e.g. Extensions, NaCl, ChromeFrame, SpellCheck, 
Autofill, Sync, Prerendering, Safe Browsing, 
Translate, ... 
● See also: 
○ chrome.gyp 
○ chrome_browser.gypi 
○ chrome_browser_ui.gypi 
○ chrome_browser_ui_views.gypi 
○ chrome_android.gypi
/components 
● Features for reusing across # of targets 
○ for browser features, NOT the web! 
■ e.g. Bookmarks, autofill, autocomplete, search 
engine, history, … 
● Guidelines 
○ By default, depend only on the lower layers of the 
Chromium codebase( /base, /net, etc) 
■ Individually, allow additional dependencies on the 
content API and IPC
/components 
● Guidelines 
○ Directory & Subdirectories 
■ Directory could have 
● DEPS : Dependencies such as rules, include_dir, ... 
● OWNERS 
● {DIR}.gypi 
■ subdirectories 
● Components need to live in different processes should 
separate the code into different subdirectories. 
components/foo DEPS, OWNERS, foo.gypi 
components/foo/browser Code that needs the browser process 
components/foo/renderer IPC constants, ... 
components/foo/common Code that needs renderer process
/components 
● Guidelines 
○ Directory & Subdirectories (cont’d) 
■ Subdirectory should have DEPS file 
● with the relevant restrictions in place 
○ i.e. only components/*/browser should be allowed to 
#include from content/public/browser. 
○ Naming conventions 
■ namespace = the name of the component. 
● e.g. //components/foo 
○ code should be in the foo:: namespace
/components 
● Guidelines 
○ Android 
■ 'android' subdirectory with a Java source 
● SHOULD BE: code structure = package name 
components/foo/android/OWNERS 
components/foo/android/DEPS 
components/foo/android/java/src/org/chromium/components/foo/browser/ 
components/foo/android/javatests/src/org/chromium/components/foo/browser/ 
● Reference 
○ http://www.chromium.org/developers/design-documents/ 
structure-of-layered-components-within-the- 
chromium-codebase
/components 
● References 
○ Structure of layered components 
■ http://www.chromium.org/developers/design-documents/ 
structure-of-layered-components-within- 
the-chromium-codebase 
○ Life of a browser component 
■ https://docs.google.com/viewer? 
a=v&pid=sites&srcid=Y2hyb21pdW0ub3JnfGRld 
nxneDoxNzgxYjJjMTI0YjBkNTk1
/content 
● Core code for multi-process sandboxed 
browser. 
○ The core code needed to render a page using a 
multi-process sandboxed browser. 
○ Includes all the web platform features and GPU 
acceleration except Chrome features. 
● The goal 
○ Being able to build a browser by starting with 
content, and then pick and choose Chrome features.
/content 
● Historical motivation 
○ Consensus was reached to move the core 
Chrome code into srccontent. 
■ Hard to figure out what the "best" way, because 
the APIs and features were together in the same 
directory. 
■ To add a clear separation between the core 
pieces of the code that render a page using a 
multi-process browser 
■ Not chrome features!!
/ipc 
● IPC(Inter-Process Communication) module 
for communcation between chromium 
processes. 
● Reference 
○ Multi-process architecture 
■ http://www.chromium.org/developers/design-documents/ 
multi-process-architecture
/mojo 
● New project for isolating components of 
chromium multi-process architecture that are 
concerned with ‘Process management’, 
‘Sandboxing’, ‘IPC’. 
○ 3Q 2013, started & in progress 
○ Similar with ‘IDL’ based generating & binding 
system. 
● Currently, out of our focus :)
/net 
● The neworking library developed for 
Chromium 
○ can be used seperately from Chromium. 
■ see also: chrome/common/net 
○ Mostly single-threaded cross-platform library 
primarily for resource fetching 
http://www.chromium.org/developers/design-documents/network-stack
/net 
● Code layout 
Directory Descriptions 
base net utilities. e.g. host resolution, cookies, network change detection, SSL. 
disk_cache Cache for web resources. 
websockets WebSockets implementation. 
url_request URLRequest, URLRequestContext, URLRequestJob implementations. 
spdy SPDY implementation. 
socket_stream socket streams for WebSockets 
socket Cross-platform implementations of TCP sockets, "SSL sockets", and socket pools. 
proxy Proxy (SOCKS and HTTP) configuration, resolution, script fetching, etc.
/sandbox 
● To prevent a hacked renderer from 
modifying system 
○ C++ library for the creation of sandboxed processes 
■ processes that execute within a very restrictive 
environment. 
■ The only resources sandboxed processes can 
freely use are CPU cycles and memory. 
● e.g. Chromium renderers are sandboxed processes. 
http://www.chromium.org/developers/design-documents/sandbox
/skia 
● Google’s skia graphics library 
○ /skia has configurations only. 
■ Skia implemetation is located in 
● /third_party/skia 
○ https://code.google.com/p/skia/ 
○ See also: some wrappers in /ui/gfx
/third_party 
● All third-party libraries that Chrome used. 
○ /third_party/webkit 
■ webkit fork, known as ‘blink’ 
○ /third_party/webrtc 
○ /third_party/webgl 
○ /third_party/libc++ 
○ /third_party/flac 
○ … 
● Not only C/C++, Java libraries 
○ You can find js project or python tools in this 
directories. :)
/ui 
● Contains discrete components used to build 
Chromium’s user interfaces 
○ each subdir has to have isolated component. 
■ ui/gfx 
● Shared graphics classes. 
● These form the base of Chromium’s UI Graphics 
■ ui/views 
● A simple framework for doing UI development, providing 
rendering, layout and event handling. 
○ Most of the browser UI is implemented in this. 
○ Contains the base objects. 
● See also: 
○ /chrome/browser/ui/views.
/v8 
● Google JavaScript Engine 
○ except Chrome for iOS 
■ The iOS security model does not allow an app to 
execute native code from writeable memory. 
■ Memory is either writeable or executable (but 
read-only). 
■ However, V8 is a pure compiler, and doesn't 
have an interpreter. 
○ Project Home: 
■ https://code.google.com/p/v8/
/webkit 
● All of Chromium's Webkit related stuff 
○ But, currently there’re quite many actions are that 
moving to out of ‘/webkit’ 
■ e.g. /content, /chrome, … 
○ Will be deprecated? Maybe?!
Ad

More Related Content

What's hot (20)

Embedded Android : System Development - Part IV
Embedded Android : System Development - Part IVEmbedded Android : System Development - Part IV
Embedded Android : System Development - Part IV
Emertxe Information Technologies Pvt Ltd
 
Embedded Android : System Development - Part II (HAL)
Embedded Android : System Development - Part II (HAL)Embedded Android : System Development - Part II (HAL)
Embedded Android : System Development - Part II (HAL)
Emertxe Information Technologies Pvt Ltd
 
Using and Customizing the Android Framework / part 4 of Embedded Android Work...
Using and Customizing the Android Framework / part 4 of Embedded Android Work...Using and Customizing the Android Framework / part 4 of Embedded Android Work...
Using and Customizing the Android Framework / part 4 of Embedded Android Work...
Opersys inc.
 
OVS v OVS-DPDK
OVS v OVS-DPDKOVS v OVS-DPDK
OVS v OVS-DPDK
Md Safiyat Reza
 
Embedded Android Workshop with Pie
Embedded Android Workshop with PieEmbedded Android Workshop with Pie
Embedded Android Workshop with Pie
Opersys inc.
 
The WebKit project
The WebKit projectThe WebKit project
The WebKit project
juanjosanchezpenas
 
Brief introduction to kselftest
Brief introduction to kselftestBrief introduction to kselftest
Brief introduction to kselftest
SeongJae Park
 
Android Internals
Android InternalsAndroid Internals
Android Internals
Opersys inc.
 
Stop the Guessing: Performance Methodologies for Production Systems
Stop the Guessing: Performance Methodologies for Production SystemsStop the Guessing: Performance Methodologies for Production Systems
Stop the Guessing: Performance Methodologies for Production Systems
Brendan Gregg
 
Android Storage - Vold
Android Storage - VoldAndroid Storage - Vold
Android Storage - Vold
William Lee
 
Android IPC Mechanism
Android IPC MechanismAndroid IPC Mechanism
Android IPC Mechanism
National Cheng Kung University
 
Understanding the Android System Server
Understanding the Android System ServerUnderstanding the Android System Server
Understanding the Android System Server
Opersys inc.
 
Automated Malware Analysis and Cyber Security Intelligence
Automated Malware Analysis and Cyber Security IntelligenceAutomated Malware Analysis and Cyber Security Intelligence
Automated Malware Analysis and Cyber Security Intelligence
Jason Choi
 
Hardware Accelerated 2D Rendering for Android
Hardware Accelerated 2D Rendering for AndroidHardware Accelerated 2D Rendering for Android
Hardware Accelerated 2D Rendering for Android
National Cheng Kung University
 
Embedded Android : System Development - Part III (Audio / Video HAL)
Embedded Android : System Development - Part III (Audio / Video HAL)Embedded Android : System Development - Part III (Audio / Video HAL)
Embedded Android : System Development - Part III (Audio / Video HAL)
Emertxe Information Technologies Pvt Ltd
 
Embedded Android : System Development - Part III
Embedded Android : System Development - Part IIIEmbedded Android : System Development - Part III
Embedded Android : System Development - Part III
Emertxe Information Technologies Pvt Ltd
 
High-Performance Networking Using eBPF, XDP, and io_uring
High-Performance Networking Using eBPF, XDP, and io_uringHigh-Performance Networking Using eBPF, XDP, and io_uring
High-Performance Networking Using eBPF, XDP, and io_uring
ScyllaDB
 
Study of Chromium OS
Study of Chromium OSStudy of Chromium OS
Study of Chromium OS
William Lee
 
Hardware Acceleration in WebKit
Hardware Acceleration in WebKitHardware Acceleration in WebKit
Hardware Acceleration in WebKit
Joone Hur
 
Google chrome sandbox
Google chrome sandboxGoogle chrome sandbox
Google chrome sandbox
Nephi Johnson
 
Using and Customizing the Android Framework / part 4 of Embedded Android Work...
Using and Customizing the Android Framework / part 4 of Embedded Android Work...Using and Customizing the Android Framework / part 4 of Embedded Android Work...
Using and Customizing the Android Framework / part 4 of Embedded Android Work...
Opersys inc.
 
Embedded Android Workshop with Pie
Embedded Android Workshop with PieEmbedded Android Workshop with Pie
Embedded Android Workshop with Pie
Opersys inc.
 
Brief introduction to kselftest
Brief introduction to kselftestBrief introduction to kselftest
Brief introduction to kselftest
SeongJae Park
 
Stop the Guessing: Performance Methodologies for Production Systems
Stop the Guessing: Performance Methodologies for Production SystemsStop the Guessing: Performance Methodologies for Production Systems
Stop the Guessing: Performance Methodologies for Production Systems
Brendan Gregg
 
Android Storage - Vold
Android Storage - VoldAndroid Storage - Vold
Android Storage - Vold
William Lee
 
Understanding the Android System Server
Understanding the Android System ServerUnderstanding the Android System Server
Understanding the Android System Server
Opersys inc.
 
Automated Malware Analysis and Cyber Security Intelligence
Automated Malware Analysis and Cyber Security IntelligenceAutomated Malware Analysis and Cyber Security Intelligence
Automated Malware Analysis and Cyber Security Intelligence
Jason Choi
 
High-Performance Networking Using eBPF, XDP, and io_uring
High-Performance Networking Using eBPF, XDP, and io_uringHigh-Performance Networking Using eBPF, XDP, and io_uring
High-Performance Networking Using eBPF, XDP, and io_uring
ScyllaDB
 
Study of Chromium OS
Study of Chromium OSStudy of Chromium OS
Study of Chromium OS
William Lee
 
Hardware Acceleration in WebKit
Hardware Acceleration in WebKitHardware Acceleration in WebKit
Hardware Acceleration in WebKit
Joone Hur
 
Google chrome sandbox
Google chrome sandboxGoogle chrome sandbox
Google chrome sandbox
Nephi Johnson
 

Viewers also liked (19)

Chromium ui framework(shared)
Chromium ui framework(shared)Chromium ui framework(shared)
Chromium ui framework(shared)
gnomekr
 
Android Chromium Rendering Pipeline
Android Chromium Rendering PipelineAndroid Chromium Rendering Pipeline
Android Chromium Rendering Pipeline
Hyungwook Lee
 
Chrome & Webkit overview
Chrome & Webkit overviewChrome & Webkit overview
Chrome & Webkit overview
Bin Chen
 
Deview 2013 mobile browser internals and trends_20131022
Deview 2013 mobile browser internals and trends_20131022Deview 2013 mobile browser internals and trends_20131022
Deview 2013 mobile browser internals and trends_20131022
NAVER D2
 
Accelerating performance on Qt and WebKit for the MIPS architecture
Accelerating performance on Qt and WebKit for the MIPS architectureAccelerating performance on Qt and WebKit for the MIPS architecture
Accelerating performance on Qt and WebKit for the MIPS architecture
account inactive
 
Designing and Building (Your Own) UI Frameworks For the Enterprise
Designing and Building (Your Own) UI Frameworks For the EnterpriseDesigning and Building (Your Own) UI Frameworks For the Enterprise
Designing and Building (Your Own) UI Frameworks For the Enterprise
ExoLeaders.com
 
03 - Qt UI Development
03 - Qt UI Development03 - Qt UI Development
03 - Qt UI Development
Andreas Jakl
 
了解 Qt
了解 Qt了解 Qt
了解 Qt
Chi Zhang
 
Maemo 6 UI Framework
Maemo 6 UI FrameworkMaemo 6 UI Framework
Maemo 6 UI Framework
Peter Schneider
 
Charity apprentice logo-blue-6675
Charity apprentice logo-blue-6675Charity apprentice logo-blue-6675
Charity apprentice logo-blue-6675
FITC
 
Qt5 embedded
Qt5 embeddedQt5 embedded
Qt5 embedded
embedded-linux-bdx
 
Android chromium web view
Android chromium web viewAndroid chromium web view
Android chromium web view
朋 王
 
Advanced Chrome extension exploitation
Advanced Chrome extension exploitationAdvanced Chrome extension exploitation
Advanced Chrome extension exploitation
Krzysztof Kotowicz
 
Ketan seminar ppt
Ketan seminar pptKetan seminar ppt
Ketan seminar ppt
Ketan Wadodkar
 
Chemistry of Chromium
Chemistry of ChromiumChemistry of Chromium
Chemistry of Chromium
wewwchemistry
 
Mobile Browser Internal (Blink Rendering Engine)
Mobile Browser Internal (Blink Rendering Engine)Mobile Browser Internal (Blink Rendering Engine)
Mobile Browser Internal (Blink Rendering Engine)
Hyungwook Lee
 
Chromium ppt
Chromium pptChromium ppt
Chromium ppt
Kundan samal
 
Removal of chromium
Removal of chromiumRemoval of chromium
Removal of chromium
Amr Elshikh
 
Chromium problems
Chromium problemsChromium problems
Chromium problems
crazyaxe
 
Chromium ui framework(shared)
Chromium ui framework(shared)Chromium ui framework(shared)
Chromium ui framework(shared)
gnomekr
 
Android Chromium Rendering Pipeline
Android Chromium Rendering PipelineAndroid Chromium Rendering Pipeline
Android Chromium Rendering Pipeline
Hyungwook Lee
 
Chrome & Webkit overview
Chrome & Webkit overviewChrome & Webkit overview
Chrome & Webkit overview
Bin Chen
 
Deview 2013 mobile browser internals and trends_20131022
Deview 2013 mobile browser internals and trends_20131022Deview 2013 mobile browser internals and trends_20131022
Deview 2013 mobile browser internals and trends_20131022
NAVER D2
 
Accelerating performance on Qt and WebKit for the MIPS architecture
Accelerating performance on Qt and WebKit for the MIPS architectureAccelerating performance on Qt and WebKit for the MIPS architecture
Accelerating performance on Qt and WebKit for the MIPS architecture
account inactive
 
Designing and Building (Your Own) UI Frameworks For the Enterprise
Designing and Building (Your Own) UI Frameworks For the EnterpriseDesigning and Building (Your Own) UI Frameworks For the Enterprise
Designing and Building (Your Own) UI Frameworks For the Enterprise
ExoLeaders.com
 
03 - Qt UI Development
03 - Qt UI Development03 - Qt UI Development
03 - Qt UI Development
Andreas Jakl
 
Charity apprentice logo-blue-6675
Charity apprentice logo-blue-6675Charity apprentice logo-blue-6675
Charity apprentice logo-blue-6675
FITC
 
Android chromium web view
Android chromium web viewAndroid chromium web view
Android chromium web view
朋 王
 
Advanced Chrome extension exploitation
Advanced Chrome extension exploitationAdvanced Chrome extension exploitation
Advanced Chrome extension exploitation
Krzysztof Kotowicz
 
Chemistry of Chromium
Chemistry of ChromiumChemistry of Chromium
Chemistry of Chromium
wewwchemistry
 
Mobile Browser Internal (Blink Rendering Engine)
Mobile Browser Internal (Blink Rendering Engine)Mobile Browser Internal (Blink Rendering Engine)
Mobile Browser Internal (Blink Rendering Engine)
Hyungwook Lee
 
Removal of chromium
Removal of chromiumRemoval of chromium
Removal of chromium
Amr Elshikh
 
Chromium problems
Chromium problemsChromium problems
Chromium problems
crazyaxe
 
Ad

Similar to OVERVIEW: Chromium Source Tree (20)

Leveraging Android's Linux Heritage at AnDevCon VI
Leveraging Android's Linux Heritage at AnDevCon VILeveraging Android's Linux Heritage at AnDevCon VI
Leveraging Android's Linux Heritage at AnDevCon VI
Opersys inc.
 
Code-Hub
Code-HubCode-Hub
Code-Hub
Curran Kelleher
 
Electron JS | Build cross-platform desktop applications with web technologies
Electron JS | Build cross-platform desktop applications with web technologiesElectron JS | Build cross-platform desktop applications with web technologies
Electron JS | Build cross-platform desktop applications with web technologies
Bethmi Gunasekara
 
Leveraging Android's Linux Heritage at AnDevCon V
Leveraging Android's Linux Heritage at AnDevCon VLeveraging Android's Linux Heritage at AnDevCon V
Leveraging Android's Linux Heritage at AnDevCon V
Opersys inc.
 
Voxxed days Vilnius 2015 - Android Reverse Engineering Lab
Voxxed days Vilnius 2015 - Android Reverse Engineering LabVoxxed days Vilnius 2015 - Android Reverse Engineering Lab
Voxxed days Vilnius 2015 - Android Reverse Engineering Lab
Ron Munitz
 
Leveraging Android's Linux Heritage at AnDevCon IV
Leveraging Android's Linux Heritage at AnDevCon IVLeveraging Android's Linux Heritage at AnDevCon IV
Leveraging Android's Linux Heritage at AnDevCon IV
Opersys inc.
 
[scala.by] Launching new application fast
[scala.by] Launching new application fast[scala.by] Launching new application fast
[scala.by] Launching new application fast
Denis Karpenko
 
Android Things Internals
Android Things InternalsAndroid Things Internals
Android Things Internals
Opersys inc.
 
Android Things: Android for IoT
Android Things: Android for IoTAndroid Things: Android for IoT
Android Things: Android for IoT
Opersys inc.
 
HKG18-203 - Overview of Linaro DRM
HKG18-203 - Overview of Linaro DRMHKG18-203 - Overview of Linaro DRM
HKG18-203 - Overview of Linaro DRM
Linaro
 
CodeMotion tel aviv 2015 - android reverse engineering lab
CodeMotion tel aviv 2015 - android reverse engineering labCodeMotion tel aviv 2015 - android reverse engineering lab
CodeMotion tel aviv 2015 - android reverse engineering lab
Ron Munitz
 
You Can Work on the Web Patform! (GOSIM 2023)
You Can Work on the Web Patform! (GOSIM 2023)You Can Work on the Web Patform! (GOSIM 2023)
You Can Work on the Web Patform! (GOSIM 2023)
Igalia
 
ENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScript
ENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScriptENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScript
ENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScript
Horacio Gonzalez
 
Android Things Internals
Android Things InternalsAndroid Things Internals
Android Things Internals
Opersys inc.
 
Brillo / Weave Internals
Brillo / Weave InternalsBrillo / Weave Internals
Brillo / Weave Internals
Opersys inc.
 
Is Android the New Embedded Linux? at AnDevCon VI
Is Android the New Embedded Linux? at AnDevCon VIIs Android the New Embedded Linux? at AnDevCon VI
Is Android the New Embedded Linux? at AnDevCon VI
Opersys inc.
 
Extending Android's Platform Toolsuite
Extending Android's Platform ToolsuiteExtending Android's Platform Toolsuite
Extending Android's Platform Toolsuite
Opersys inc.
 
Is Android the New Embedded Linux? at AnDevCon V
Is Android the New Embedded Linux? at AnDevCon VIs Android the New Embedded Linux? at AnDevCon V
Is Android the New Embedded Linux? at AnDevCon V
Opersys inc.
 
Polymer 101
Polymer 101Polymer 101
Polymer 101
Alea Soluciones, S.L.
 
Keep calm and write reusable code in Android
Keep calm and write reusable code in AndroidKeep calm and write reusable code in Android
Keep calm and write reusable code in Android
Juan Camilo Sacanamboy
 
Leveraging Android's Linux Heritage at AnDevCon VI
Leveraging Android's Linux Heritage at AnDevCon VILeveraging Android's Linux Heritage at AnDevCon VI
Leveraging Android's Linux Heritage at AnDevCon VI
Opersys inc.
 
Electron JS | Build cross-platform desktop applications with web technologies
Electron JS | Build cross-platform desktop applications with web technologiesElectron JS | Build cross-platform desktop applications with web technologies
Electron JS | Build cross-platform desktop applications with web technologies
Bethmi Gunasekara
 
Leveraging Android's Linux Heritage at AnDevCon V
Leveraging Android's Linux Heritage at AnDevCon VLeveraging Android's Linux Heritage at AnDevCon V
Leveraging Android's Linux Heritage at AnDevCon V
Opersys inc.
 
Voxxed days Vilnius 2015 - Android Reverse Engineering Lab
Voxxed days Vilnius 2015 - Android Reverse Engineering LabVoxxed days Vilnius 2015 - Android Reverse Engineering Lab
Voxxed days Vilnius 2015 - Android Reverse Engineering Lab
Ron Munitz
 
Leveraging Android's Linux Heritage at AnDevCon IV
Leveraging Android's Linux Heritage at AnDevCon IVLeveraging Android's Linux Heritage at AnDevCon IV
Leveraging Android's Linux Heritage at AnDevCon IV
Opersys inc.
 
[scala.by] Launching new application fast
[scala.by] Launching new application fast[scala.by] Launching new application fast
[scala.by] Launching new application fast
Denis Karpenko
 
Android Things Internals
Android Things InternalsAndroid Things Internals
Android Things Internals
Opersys inc.
 
Android Things: Android for IoT
Android Things: Android for IoTAndroid Things: Android for IoT
Android Things: Android for IoT
Opersys inc.
 
HKG18-203 - Overview of Linaro DRM
HKG18-203 - Overview of Linaro DRMHKG18-203 - Overview of Linaro DRM
HKG18-203 - Overview of Linaro DRM
Linaro
 
CodeMotion tel aviv 2015 - android reverse engineering lab
CodeMotion tel aviv 2015 - android reverse engineering labCodeMotion tel aviv 2015 - android reverse engineering lab
CodeMotion tel aviv 2015 - android reverse engineering lab
Ron Munitz
 
You Can Work on the Web Patform! (GOSIM 2023)
You Can Work on the Web Patform! (GOSIM 2023)You Can Work on the Web Patform! (GOSIM 2023)
You Can Work on the Web Patform! (GOSIM 2023)
Igalia
 
ENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScript
ENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScriptENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScript
ENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScript
Horacio Gonzalez
 
Android Things Internals
Android Things InternalsAndroid Things Internals
Android Things Internals
Opersys inc.
 
Brillo / Weave Internals
Brillo / Weave InternalsBrillo / Weave Internals
Brillo / Weave Internals
Opersys inc.
 
Is Android the New Embedded Linux? at AnDevCon VI
Is Android the New Embedded Linux? at AnDevCon VIIs Android the New Embedded Linux? at AnDevCon VI
Is Android the New Embedded Linux? at AnDevCon VI
Opersys inc.
 
Extending Android's Platform Toolsuite
Extending Android's Platform ToolsuiteExtending Android's Platform Toolsuite
Extending Android's Platform Toolsuite
Opersys inc.
 
Is Android the New Embedded Linux? at AnDevCon V
Is Android the New Embedded Linux? at AnDevCon VIs Android the New Embedded Linux? at AnDevCon V
Is Android the New Embedded Linux? at AnDevCon V
Opersys inc.
 
Keep calm and write reusable code in Android
Keep calm and write reusable code in AndroidKeep calm and write reusable code in Android
Keep calm and write reusable code in Android
Juan Camilo Sacanamboy
 
Ad

More from Chang W. Doh (20)

Exploring what're new in Web for the Natively app
Exploring what're new in Web for the Natively appExploring what're new in Web for the Natively app
Exploring what're new in Web for the Natively app
Chang W. Doh
 
Kotlin의 코루틴은 어떻게 동작하는가
Kotlin의 코루틴은 어떻게 동작하는가Kotlin의 코루틴은 어떻게 동작하는가
Kotlin의 코루틴은 어떻게 동작하는가
Chang W. Doh
 
Hey Kotlin, How it works?
Hey Kotlin, How it works?Hey Kotlin, How it works?
Hey Kotlin, How it works?
Chang W. Doh
 
Kotlin, 어떻게 동작하나요
Kotlin, 어떻게 동작하나요Kotlin, 어떻게 동작하나요
Kotlin, 어떻게 동작하나요
Chang W. Doh
 
introduction to Web Assembly
introduction to Web Assembly introduction to Web Assembly
introduction to Web Assembly
Chang W. Doh
 
PWA Roadshow Seoul - Keynote
PWA Roadshow Seoul - KeynotePWA Roadshow Seoul - Keynote
PWA Roadshow Seoul - Keynote
Chang W. Doh
 
PWA Roadshow Seoul - HTTPS
PWA Roadshow Seoul - HTTPSPWA Roadshow Seoul - HTTPS
PWA Roadshow Seoul - HTTPS
Chang W. Doh
 
CSS 다시 파서 어디에 쓰나
CSS 다시 파서 어디에 쓰나CSS 다시 파서 어디에 쓰나
CSS 다시 파서 어디에 쓰나
Chang W. Doh
 
Natively Web App & Service Worker
Natively Web App & Service WorkerNatively Web App & Service Worker
Natively Web App & Service Worker
Chang W. Doh
 
초보 개발자를 위한 웹 프론트엔드 개발 101
초보 개발자를 위한 웹 프론트엔드 개발 101초보 개발자를 위한 웹 프론트엔드 개발 101
초보 개발자를 위한 웹 프론트엔드 개발 101
Chang W. Doh
 
Service Worker 201 (한국어)
Service Worker 201 (한국어)Service Worker 201 (한국어)
Service Worker 201 (한국어)
Chang W. Doh
 
Service Worker 201 (en)
Service Worker 201 (en)Service Worker 201 (en)
Service Worker 201 (en)
Chang W. Doh
 
Service Worker 101 (en)
Service Worker 101 (en)Service Worker 101 (en)
Service Worker 101 (en)
Chang W. Doh
 
Service Worker 101 (한국어)
Service Worker 101 (한국어)Service Worker 101 (한국어)
Service Worker 101 (한국어)
Chang W. Doh
 
What is next for the web
What is next for the webWhat is next for the web
What is next for the web
Chang W. Doh
 
Instant and offline apps with Service Worker
Instant and offline apps with Service WorkerInstant and offline apps with Service Worker
Instant and offline apps with Service Worker
Chang W. Doh
 
Chrome enchanted 2015
Chrome enchanted 2015Chrome enchanted 2015
Chrome enchanted 2015
Chang W. Doh
 
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
Chang W. Doh
 
Polymer Codelab: Before diving into polymer
Polymer Codelab: Before diving into polymerPolymer Codelab: Before diving into polymer
Polymer Codelab: Before diving into polymer
Chang W. Doh
 
알아봅시다, Polymer: Web Components & Web Animations
알아봅시다, Polymer: Web Components & Web Animations알아봅시다, Polymer: Web Components & Web Animations
알아봅시다, Polymer: Web Components & Web Animations
Chang W. Doh
 
Exploring what're new in Web for the Natively app
Exploring what're new in Web for the Natively appExploring what're new in Web for the Natively app
Exploring what're new in Web for the Natively app
Chang W. Doh
 
Kotlin의 코루틴은 어떻게 동작하는가
Kotlin의 코루틴은 어떻게 동작하는가Kotlin의 코루틴은 어떻게 동작하는가
Kotlin의 코루틴은 어떻게 동작하는가
Chang W. Doh
 
Hey Kotlin, How it works?
Hey Kotlin, How it works?Hey Kotlin, How it works?
Hey Kotlin, How it works?
Chang W. Doh
 
Kotlin, 어떻게 동작하나요
Kotlin, 어떻게 동작하나요Kotlin, 어떻게 동작하나요
Kotlin, 어떻게 동작하나요
Chang W. Doh
 
introduction to Web Assembly
introduction to Web Assembly introduction to Web Assembly
introduction to Web Assembly
Chang W. Doh
 
PWA Roadshow Seoul - Keynote
PWA Roadshow Seoul - KeynotePWA Roadshow Seoul - Keynote
PWA Roadshow Seoul - Keynote
Chang W. Doh
 
PWA Roadshow Seoul - HTTPS
PWA Roadshow Seoul - HTTPSPWA Roadshow Seoul - HTTPS
PWA Roadshow Seoul - HTTPS
Chang W. Doh
 
CSS 다시 파서 어디에 쓰나
CSS 다시 파서 어디에 쓰나CSS 다시 파서 어디에 쓰나
CSS 다시 파서 어디에 쓰나
Chang W. Doh
 
Natively Web App & Service Worker
Natively Web App & Service WorkerNatively Web App & Service Worker
Natively Web App & Service Worker
Chang W. Doh
 
초보 개발자를 위한 웹 프론트엔드 개발 101
초보 개발자를 위한 웹 프론트엔드 개발 101초보 개발자를 위한 웹 프론트엔드 개발 101
초보 개발자를 위한 웹 프론트엔드 개발 101
Chang W. Doh
 
Service Worker 201 (한국어)
Service Worker 201 (한국어)Service Worker 201 (한국어)
Service Worker 201 (한국어)
Chang W. Doh
 
Service Worker 201 (en)
Service Worker 201 (en)Service Worker 201 (en)
Service Worker 201 (en)
Chang W. Doh
 
Service Worker 101 (en)
Service Worker 101 (en)Service Worker 101 (en)
Service Worker 101 (en)
Chang W. Doh
 
Service Worker 101 (한국어)
Service Worker 101 (한국어)Service Worker 101 (한국어)
Service Worker 101 (한국어)
Chang W. Doh
 
What is next for the web
What is next for the webWhat is next for the web
What is next for the web
Chang W. Doh
 
Instant and offline apps with Service Worker
Instant and offline apps with Service WorkerInstant and offline apps with Service Worker
Instant and offline apps with Service Worker
Chang W. Doh
 
Chrome enchanted 2015
Chrome enchanted 2015Chrome enchanted 2015
Chrome enchanted 2015
Chang W. Doh
 
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
Chang W. Doh
 
Polymer Codelab: Before diving into polymer
Polymer Codelab: Before diving into polymerPolymer Codelab: Before diving into polymer
Polymer Codelab: Before diving into polymer
Chang W. Doh
 
알아봅시다, Polymer: Web Components & Web Animations
알아봅시다, Polymer: Web Components & Web Animations알아봅시다, Polymer: Web Components & Web Animations
알아봅시다, Polymer: Web Components & Web Animations
Chang W. Doh
 

Recently uploaded (20)

Automation Dreamin' 2022: Sharing Some Gratitude with Your Users
Automation Dreamin' 2022: Sharing Some Gratitude with Your UsersAutomation Dreamin' 2022: Sharing Some Gratitude with Your Users
Automation Dreamin' 2022: Sharing Some Gratitude with Your Users
Lynda Kane
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfThe Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
Abi john
 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Learn the Basics of Agile Development: Your Step-by-Step Guide
Learn the Basics of Agile Development: Your Step-by-Step GuideLearn the Basics of Agile Development: Your Step-by-Step Guide
Learn the Basics of Agile Development: Your Step-by-Step Guide
Marcel David
 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
 
"Client Partnership — the Path to Exponential Growth for Companies Sized 50-5...
"Client Partnership — the Path to Exponential Growth for Companies Sized 50-5..."Client Partnership — the Path to Exponential Growth for Companies Sized 50-5...
"Client Partnership — the Path to Exponential Growth for Companies Sized 50-5...
Fwdays
 
Salesforce AI Associate 2 of 2 Certification.docx
Salesforce AI Associate 2 of 2 Certification.docxSalesforce AI Associate 2 of 2 Certification.docx
Salesforce AI Associate 2 of 2 Certification.docx
José Enrique López Rivera
 
Image processinglab image processing image processing
Image processinglab image processing  image processingImage processinglab image processing  image processing
Image processinglab image processing image processing
RaghadHany
 
Electronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploitElectronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploit
niftliyevhuseyn
 
"PHP and MySQL CRUD Operations for Student Management System"
"PHP and MySQL CRUD Operations for Student Management System""PHP and MySQL CRUD Operations for Student Management System"
"PHP and MySQL CRUD Operations for Student Management System"
Jainul Musani
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
Alan Dix
 
Semantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AISemantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AI
artmondano
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
Mobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi ArabiaMobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi Arabia
Steve Jonas
 
Datastucture-Unit 4-Linked List Presentation.pptx
Datastucture-Unit 4-Linked List Presentation.pptxDatastucture-Unit 4-Linked List Presentation.pptx
Datastucture-Unit 4-Linked List Presentation.pptx
kaleeswaric3
 
Automation Dreamin' 2022: Sharing Some Gratitude with Your Users
Automation Dreamin' 2022: Sharing Some Gratitude with Your UsersAutomation Dreamin' 2022: Sharing Some Gratitude with Your Users
Automation Dreamin' 2022: Sharing Some Gratitude with Your Users
Lynda Kane
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfThe Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
Abi john
 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Learn the Basics of Agile Development: Your Step-by-Step Guide
Learn the Basics of Agile Development: Your Step-by-Step GuideLearn the Basics of Agile Development: Your Step-by-Step Guide
Learn the Basics of Agile Development: Your Step-by-Step Guide
Marcel David
 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
 
"Client Partnership — the Path to Exponential Growth for Companies Sized 50-5...
"Client Partnership — the Path to Exponential Growth for Companies Sized 50-5..."Client Partnership — the Path to Exponential Growth for Companies Sized 50-5...
"Client Partnership — the Path to Exponential Growth for Companies Sized 50-5...
Fwdays
 
Salesforce AI Associate 2 of 2 Certification.docx
Salesforce AI Associate 2 of 2 Certification.docxSalesforce AI Associate 2 of 2 Certification.docx
Salesforce AI Associate 2 of 2 Certification.docx
José Enrique López Rivera
 
Image processinglab image processing image processing
Image processinglab image processing  image processingImage processinglab image processing  image processing
Image processinglab image processing image processing
RaghadHany
 
Electronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploitElectronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploit
niftliyevhuseyn
 
"PHP and MySQL CRUD Operations for Student Management System"
"PHP and MySQL CRUD Operations for Student Management System""PHP and MySQL CRUD Operations for Student Management System"
"PHP and MySQL CRUD Operations for Student Management System"
Jainul Musani
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
Alan Dix
 
Semantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AISemantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AI
artmondano
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
Mobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi ArabiaMobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi Arabia
Steve Jonas
 
Datastucture-Unit 4-Linked List Presentation.pptx
Datastucture-Unit 4-Linked List Presentation.pptxDatastucture-Unit 4-Linked List Presentation.pptx
Datastucture-Unit 4-Linked List Presentation.pptx
kaleeswaric3
 

OVERVIEW: Chromium Source Tree

  • 2. Chang W. Doh <hi> </hi> GDG Korea WebTech Organizer HTML5Rocks/KO Contributor/Coordinator
  • 3. CAUTION! Many documents being mentioned from this slide are outdated. Don’t believe everything. =)
  • 5. Simplified top-projects Project Description android_webview Integration of /content into android. base Common code shared between all sub-projects. build Build Configurations shared by all projects cc chrome Compositor implementations components components for Content Module layer content Core code for multi-process sandboxed browser net Network libraries for Chromium sandbox Sandbox for preventing hacked renderer from modified system. skia skia Graphics library, some classes in ui/gfx wrap skia third_party External libaries such as blink, decoders, compression, ... ui ● /gfx: Shared graphics lib, base of Chromium UI grp. ● /views: frameworks for UI; rendering, layout, event handling. ○ ALSO CHECK! chrome/browser/ui/view v8 V8 JavaScript Engine webkit WebKit glues & some web features
  • 6. Historical changes of Chromium Dependency Diagram
  • 7. Dependency diagram: V1 /chrome /net /webkit WebKit API /base /third_party//webkit /V8
  • 8. Dependency diagram: V2 /chrome /content /net /webkit Content API /base /third_party//webkit /V8 WebKit API
  • 9. Dependency diagram: V3 /chrome OR /android_webview OR ... /components /content /net /webkit Content API /base /third_party//webkit /V8 WebKit API
  • 10. Dependency diagram: V3 /chrome OR /android_webview OR ... /components /content /net /webkit Chromium browser implementation Content API /base /third_party//webkit /V8 WebKit API Network libraries for Chromium Common code to be shared between all sub-projects WebKit glue. NEED RESEARCH SOMEMORE Shared codes between browser implemetations Blink PART All the web platform features, HW acc. except Chrome features
  • 12. /android_webview ● Facades over src/content to integrate into Android ○ References ■ Java Resource on Android ● http://www.chromium.org/developers/design-documents/java-resources- on-android ■ JNI on Chromium for Android ● http://www.chromium.org/developers/design-documents/ android-jni ● WARNING! Use jar_file_jni_generator.gypi for generating JNI of system classes instead of system_classes_jni_generator.gypi ■ Organization of code for Android WebView
  • 13. /base ● Common code shared betweeen sub-projects ○ e.g. String manipulations, file, … ● Guideline ○ Adding things under /base, only if that code must be shared between more than 1 other top-level project.
  • 14. ● Build-related configuration shared by all projects ○ NOTE: ■ gyp_chromium ● Wrapper of gyp for chromium build ■ all.gyp ● Everything starts at here!!! ■ android ● jni_generator.gypi ○ JNI generator for user-defined class ● jar_file_jni_generator.gypi ○ JNI generator for system class /build
  • 15. /cc ● Chrome compositor implementations ○ References: ■ GPU Accelerated Compositing in Chrome ● http://www.chromium.org/developers/design-documents/gpu-accelerated- compositing-in-chrome ■ Compositing in Blink/Webcore [slide] ● https://docs.google. com/presentation/d/1dDE5u76ZBIKmsqkWi2apx3BqV8HOcN f4xxBdyNywZR8/edit#slide=id.gccb6cccc_0709 ■ Compositor Thread Architecture ● http://www.chromium.org/developers/design-documents/ compositor-thread-architecture NOTE: Implementations in ‘cc’ don’t have whole part in above references.
  • 16. /chrome ● Chromium browser implementations ○ e.g. Extensions, NaCl, ChromeFrame, SpellCheck, Autofill, Sync, Prerendering, Safe Browsing, Translate, ... ● See also: ○ chrome.gyp ○ chrome_browser.gypi ○ chrome_browser_ui.gypi ○ chrome_browser_ui_views.gypi ○ chrome_android.gypi
  • 17. /components ● Features for reusing across # of targets ○ for browser features, NOT the web! ■ e.g. Bookmarks, autofill, autocomplete, search engine, history, … ● Guidelines ○ By default, depend only on the lower layers of the Chromium codebase( /base, /net, etc) ■ Individually, allow additional dependencies on the content API and IPC
  • 18. /components ● Guidelines ○ Directory & Subdirectories ■ Directory could have ● DEPS : Dependencies such as rules, include_dir, ... ● OWNERS ● {DIR}.gypi ■ subdirectories ● Components need to live in different processes should separate the code into different subdirectories. components/foo DEPS, OWNERS, foo.gypi components/foo/browser Code that needs the browser process components/foo/renderer IPC constants, ... components/foo/common Code that needs renderer process
  • 19. /components ● Guidelines ○ Directory & Subdirectories (cont’d) ■ Subdirectory should have DEPS file ● with the relevant restrictions in place ○ i.e. only components/*/browser should be allowed to #include from content/public/browser. ○ Naming conventions ■ namespace = the name of the component. ● e.g. //components/foo ○ code should be in the foo:: namespace
  • 20. /components ● Guidelines ○ Android ■ 'android' subdirectory with a Java source ● SHOULD BE: code structure = package name components/foo/android/OWNERS components/foo/android/DEPS components/foo/android/java/src/org/chromium/components/foo/browser/ components/foo/android/javatests/src/org/chromium/components/foo/browser/ ● Reference ○ http://www.chromium.org/developers/design-documents/ structure-of-layered-components-within-the- chromium-codebase
  • 21. /components ● References ○ Structure of layered components ■ http://www.chromium.org/developers/design-documents/ structure-of-layered-components-within- the-chromium-codebase ○ Life of a browser component ■ https://docs.google.com/viewer? a=v&pid=sites&srcid=Y2hyb21pdW0ub3JnfGRld nxneDoxNzgxYjJjMTI0YjBkNTk1
  • 22. /content ● Core code for multi-process sandboxed browser. ○ The core code needed to render a page using a multi-process sandboxed browser. ○ Includes all the web platform features and GPU acceleration except Chrome features. ● The goal ○ Being able to build a browser by starting with content, and then pick and choose Chrome features.
  • 23. /content ● Historical motivation ○ Consensus was reached to move the core Chrome code into srccontent. ■ Hard to figure out what the "best" way, because the APIs and features were together in the same directory. ■ To add a clear separation between the core pieces of the code that render a page using a multi-process browser ■ Not chrome features!!
  • 24. /ipc ● IPC(Inter-Process Communication) module for communcation between chromium processes. ● Reference ○ Multi-process architecture ■ http://www.chromium.org/developers/design-documents/ multi-process-architecture
  • 25. /mojo ● New project for isolating components of chromium multi-process architecture that are concerned with ‘Process management’, ‘Sandboxing’, ‘IPC’. ○ 3Q 2013, started & in progress ○ Similar with ‘IDL’ based generating & binding system. ● Currently, out of our focus :)
  • 26. /net ● The neworking library developed for Chromium ○ can be used seperately from Chromium. ■ see also: chrome/common/net ○ Mostly single-threaded cross-platform library primarily for resource fetching http://www.chromium.org/developers/design-documents/network-stack
  • 27. /net ● Code layout Directory Descriptions base net utilities. e.g. host resolution, cookies, network change detection, SSL. disk_cache Cache for web resources. websockets WebSockets implementation. url_request URLRequest, URLRequestContext, URLRequestJob implementations. spdy SPDY implementation. socket_stream socket streams for WebSockets socket Cross-platform implementations of TCP sockets, "SSL sockets", and socket pools. proxy Proxy (SOCKS and HTTP) configuration, resolution, script fetching, etc.
  • 28. /sandbox ● To prevent a hacked renderer from modifying system ○ C++ library for the creation of sandboxed processes ■ processes that execute within a very restrictive environment. ■ The only resources sandboxed processes can freely use are CPU cycles and memory. ● e.g. Chromium renderers are sandboxed processes. http://www.chromium.org/developers/design-documents/sandbox
  • 29. /skia ● Google’s skia graphics library ○ /skia has configurations only. ■ Skia implemetation is located in ● /third_party/skia ○ https://code.google.com/p/skia/ ○ See also: some wrappers in /ui/gfx
  • 30. /third_party ● All third-party libraries that Chrome used. ○ /third_party/webkit ■ webkit fork, known as ‘blink’ ○ /third_party/webrtc ○ /third_party/webgl ○ /third_party/libc++ ○ /third_party/flac ○ … ● Not only C/C++, Java libraries ○ You can find js project or python tools in this directories. :)
  • 31. /ui ● Contains discrete components used to build Chromium’s user interfaces ○ each subdir has to have isolated component. ■ ui/gfx ● Shared graphics classes. ● These form the base of Chromium’s UI Graphics ■ ui/views ● A simple framework for doing UI development, providing rendering, layout and event handling. ○ Most of the browser UI is implemented in this. ○ Contains the base objects. ● See also: ○ /chrome/browser/ui/views.
  • 32. /v8 ● Google JavaScript Engine ○ except Chrome for iOS ■ The iOS security model does not allow an app to execute native code from writeable memory. ■ Memory is either writeable or executable (but read-only). ■ However, V8 is a pure compiler, and doesn't have an interpreter. ○ Project Home: ■ https://code.google.com/p/v8/
  • 33. /webkit ● All of Chromium's Webkit related stuff ○ But, currently there’re quite many actions are that moving to out of ‘/webkit’ ■ e.g. /content, /chrome, … ○ Will be deprecated? Maybe?!