SlideShare a Scribd company logo
1 of 33
Download to read offline
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?!

More Related Content

What's hot

Android's Multimedia Framework
Android's Multimedia FrameworkAndroid's Multimedia Framework
Android's Multimedia FrameworkOpersys inc.
 
Drone CI/CD 自動化測試及部署
Drone CI/CD 自動化測試及部署Drone CI/CD 自動化測試及部署
Drone CI/CD 自動化測試及部署Bo-Yi Wu
 
Rouault imbert alpc_rpc_pacsec
Rouault imbert alpc_rpc_pacsecRouault imbert alpc_rpc_pacsec
Rouault imbert alpc_rpc_pacsecPacSecJP
 
Getting started with Docker
Getting started with DockerGetting started with Docker
Getting started with DockerRavindu Fernando
 
Driving containerd operations with gRPC
Driving containerd operations with gRPCDriving containerd operations with gRPC
Driving containerd operations with gRPCDocker, Inc.
 
Docker Container Security
Docker Container SecurityDocker Container Security
Docker Container SecuritySuraj Khetani
 
Reverse eningeering
Reverse eningeeringReverse eningeering
Reverse eningeeringKent Huang
 
The Linux Kernel Implementation of Pipes and FIFOs
The Linux Kernel Implementation of Pipes and FIFOsThe Linux Kernel Implementation of Pipes and FIFOs
The Linux Kernel Implementation of Pipes and FIFOsDivye Kapoor
 
SIngle Sign On with Keycloak
SIngle Sign On with KeycloakSIngle Sign On with Keycloak
SIngle Sign On with KeycloakJulien Pivotto
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to dockerInstruqt
 
Exploiting the Linux Kernel via Intel's SYSRET Implementation
Exploiting the Linux Kernel via Intel's SYSRET ImplementationExploiting the Linux Kernel via Intel's SYSRET Implementation
Exploiting the Linux Kernel via Intel's SYSRET Implementationnkslides
 
Gnome on wayland at a glance
Gnome on wayland at a glanceGnome on wayland at a glance
Gnome on wayland at a glancegnomekr
 
IBM WebSphere Application Server traditional and Docker
IBM WebSphere Application Server traditional and DockerIBM WebSphere Application Server traditional and Docker
IBM WebSphere Application Server traditional and DockerDavid Currie
 
The linux networking architecture
The linux networking architectureThe linux networking architecture
The linux networking architecturehugo lu
 
Enforcing Bespoke Policies in Kubernetes
Enforcing Bespoke Policies in KubernetesEnforcing Bespoke Policies in Kubernetes
Enforcing Bespoke Policies in KubernetesTorin Sandall
 
Android graphic system (SurfaceFlinger) : Design Pattern's perspective
Android graphic system (SurfaceFlinger) : Design Pattern's perspectiveAndroid graphic system (SurfaceFlinger) : Design Pattern's perspective
Android graphic system (SurfaceFlinger) : Design Pattern's perspectiveBin Chen
 
Cloud Native Days Korea 2019 - kakao's k8s_as_a_service
Cloud Native Days Korea 2019 - kakao's k8s_as_a_serviceCloud Native Days Korea 2019 - kakao's k8s_as_a_service
Cloud Native Days Korea 2019 - kakao's k8s_as_a_serviceDennis Hong
 

What's hot (20)

Android's Multimedia Framework
Android's Multimedia FrameworkAndroid's Multimedia Framework
Android's Multimedia Framework
 
Drone CI/CD 自動化測試及部署
Drone CI/CD 自動化測試及部署Drone CI/CD 自動化測試及部署
Drone CI/CD 自動化測試及部署
 
Rouault imbert alpc_rpc_pacsec
Rouault imbert alpc_rpc_pacsecRouault imbert alpc_rpc_pacsec
Rouault imbert alpc_rpc_pacsec
 
Getting started with Docker
Getting started with DockerGetting started with Docker
Getting started with Docker
 
Driving containerd operations with gRPC
Driving containerd operations with gRPCDriving containerd operations with gRPC
Driving containerd operations with gRPC
 
Docker Container Security
Docker Container SecurityDocker Container Security
Docker Container Security
 
Reverse eningeering
Reverse eningeeringReverse eningeering
Reverse eningeering
 
The Linux Kernel Implementation of Pipes and FIFOs
The Linux Kernel Implementation of Pipes and FIFOsThe Linux Kernel Implementation of Pipes and FIFOs
The Linux Kernel Implementation of Pipes and FIFOs
 
SIngle Sign On with Keycloak
SIngle Sign On with KeycloakSIngle Sign On with Keycloak
SIngle Sign On with Keycloak
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
 
Exploiting the Linux Kernel via Intel's SYSRET Implementation
Exploiting the Linux Kernel via Intel's SYSRET ImplementationExploiting the Linux Kernel via Intel's SYSRET Implementation
Exploiting the Linux Kernel via Intel's SYSRET Implementation
 
Gnome on wayland at a glance
Gnome on wayland at a glanceGnome on wayland at a glance
Gnome on wayland at a glance
 
IBM WebSphere Application Server traditional and Docker
IBM WebSphere Application Server traditional and DockerIBM WebSphere Application Server traditional and Docker
IBM WebSphere Application Server traditional and Docker
 
The linux networking architecture
The linux networking architectureThe linux networking architecture
The linux networking architecture
 
Enforcing Bespoke Policies in Kubernetes
Enforcing Bespoke Policies in KubernetesEnforcing Bespoke Policies in Kubernetes
Enforcing Bespoke Policies in Kubernetes
 
Android graphic system (SurfaceFlinger) : Design Pattern's perspective
Android graphic system (SurfaceFlinger) : Design Pattern's perspectiveAndroid graphic system (SurfaceFlinger) : Design Pattern's perspective
Android graphic system (SurfaceFlinger) : Design Pattern's perspective
 
Docker
DockerDocker
Docker
 
Cloud Native Days Korea 2019 - kakao's k8s_as_a_service
Cloud Native Days Korea 2019 - kakao's k8s_as_a_serviceCloud Native Days Korea 2019 - kakao's k8s_as_a_service
Cloud Native Days Korea 2019 - kakao's k8s_as_a_service
 
The WebKit project
The WebKit projectThe WebKit project
The WebKit project
 
librados
libradoslibrados
librados
 

Viewers also liked

Android Chromium Rendering Pipeline
Android Chromium Rendering PipelineAndroid Chromium Rendering Pipeline
Android Chromium Rendering PipelineHyungwook Lee
 
Chrome & Webkit overview
Chrome & Webkit overviewChrome & Webkit overview
Chrome & Webkit overviewBin 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_20131022NAVER 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 architectureaccount 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 EnterpriseExoLeaders.com
 
03 - Qt UI Development
03 - Qt UI Development03 - Qt UI Development
03 - Qt UI DevelopmentAndreas Jakl
 
Charity apprentice logo-blue-6675
Charity apprentice logo-blue-6675Charity apprentice logo-blue-6675
Charity apprentice logo-blue-6675FITC
 
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 exploitationKrzysztof Kotowicz
 
Chemistry of Chromium
Chemistry of ChromiumChemistry of Chromium
Chemistry of Chromiumwewwchemistry
 
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 chromiumAmr Elshikh
 
Chromium problems
Chromium problemsChromium problems
Chromium problemscrazyaxe
 

Viewers also liked (18)

Android Chromium Rendering Pipeline
Android Chromium Rendering PipelineAndroid Chromium Rendering Pipeline
Android Chromium Rendering Pipeline
 
Chrome & Webkit overview
Chrome & Webkit overviewChrome & Webkit overview
Chrome & Webkit overview
 
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
 
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
 
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
 
03 - Qt UI Development
03 - Qt UI Development03 - Qt UI Development
03 - Qt UI Development
 
了解 Qt
了解 Qt了解 Qt
了解 Qt
 
Maemo 6 UI Framework
Maemo 6 UI FrameworkMaemo 6 UI Framework
Maemo 6 UI Framework
 
Charity apprentice logo-blue-6675
Charity apprentice logo-blue-6675Charity apprentice logo-blue-6675
Charity apprentice logo-blue-6675
 
Qt5 embedded
Qt5 embeddedQt5 embedded
Qt5 embedded
 
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
 
Ketan seminar ppt
Ketan seminar pptKetan seminar ppt
Ketan seminar ppt
 
Chemistry of Chromium
Chemistry of ChromiumChemistry of Chromium
Chemistry of Chromium
 
Mobile Browser Internal (Blink Rendering Engine)
Mobile Browser Internal (Blink Rendering Engine)Mobile Browser Internal (Blink Rendering Engine)
Mobile Browser Internal (Blink Rendering Engine)
 
Chromium ppt
Chromium pptChromium ppt
Chromium ppt
 
Removal of chromium
Removal of chromiumRemoval of chromium
Removal of chromium
 
Chromium problems
Chromium problemsChromium problems
Chromium problems
 

Similar to Chromium Source Tree Overview

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 VIOpersys 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 technologiesBethmi 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 VOpersys 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 LabRon 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 IVOpersys inc.
 
[scala.by] Launching new application fast
[scala.by] Launching new application fast[scala.by] Launching new application fast
[scala.by] Launching new application fastDenis Karpenko
 
Android Things Internals
Android Things InternalsAndroid Things Internals
Android Things InternalsOpersys inc.
 
Android Things: Android for IoT
Android Things: Android for IoTAndroid Things: Android for IoT
Android Things: Android for IoTOpersys inc.
 
HKG18-203 - Overview of Linaro DRM
HKG18-203 - Overview of Linaro DRMHKG18-203 - Overview of Linaro DRM
HKG18-203 - Overview of Linaro DRMLinaro
 
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 labRon 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 JavaScriptHoracio Gonzalez
 
Android Things Internals
Android Things InternalsAndroid Things Internals
Android Things InternalsOpersys inc.
 
Brillo / Weave Internals
Brillo / Weave InternalsBrillo / Weave Internals
Brillo / Weave InternalsOpersys 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 VIOpersys inc.
 
Extending Android's Platform Toolsuite
Extending Android's Platform ToolsuiteExtending Android's Platform Toolsuite
Extending Android's Platform ToolsuiteOpersys 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 VOpersys 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 AndroidJuan Camilo Sacanamboy
 

Similar to Chromium Source Tree Overview (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
 
Code-Hub
Code-HubCode-Hub
Code-Hub
 
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
 
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
 
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
 
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
 
[scala.by] Launching new application fast
[scala.by] Launching new application fast[scala.by] Launching new application fast
[scala.by] Launching new application fast
 
Android Things Internals
Android Things InternalsAndroid Things Internals
Android Things Internals
 
Android Things: Android for IoT
Android Things: Android for IoTAndroid Things: Android for IoT
Android Things: Android for IoT
 
HKG18-203 - Overview of Linaro DRM
HKG18-203 - Overview of Linaro DRMHKG18-203 - Overview of Linaro DRM
HKG18-203 - Overview of Linaro DRM
 
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
 
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)
 
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
 
Android Things Internals
Android Things InternalsAndroid Things Internals
Android Things Internals
 
Brillo / Weave Internals
Brillo / Weave InternalsBrillo / Weave Internals
Brillo / Weave Internals
 
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
 
Extending Android's Platform Toolsuite
Extending Android's Platform ToolsuiteExtending Android's Platform Toolsuite
Extending Android's Platform Toolsuite
 
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
 
Polymer 101
Polymer 101Polymer 101
Polymer 101
 
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
 

More from 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 appChang 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 - KeynoteChang W. Doh
 
PWA Roadshow Seoul - HTTPS
PWA Roadshow Seoul - HTTPSPWA Roadshow Seoul - HTTPS
PWA Roadshow Seoul - HTTPSChang 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 WorkerChang W. Doh
 
초보 개발자를 위한 웹 프론트엔드 개발 101
초보 개발자를 위한 웹 프론트엔드 개발 101초보 개발자를 위한 웹 프론트엔드 개발 101
초보 개발자를 위한 웹 프론트엔드 개발 101Chang 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 webChang 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 WorkerChang W. Doh
 
Chrome enchanted 2015
Chrome enchanted 2015Chrome enchanted 2015
Chrome enchanted 2015Chang 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 polymerChang W. Doh
 
알아봅시다, Polymer: Web Components & Web Animations
알아봅시다, Polymer: Web Components & Web Animations알아봅시다, Polymer: Web Components & Web Animations
알아봅시다, Polymer: Web Components & Web AnimationsChang W. Doh
 

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

Recently uploaded

Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 

Recently uploaded (20)

Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 

Chromium Source Tree Overview

  • 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?!