Views, Aura and Ash:
ChromeOS UI Framework
Simon YoungKi Hong
simonhong@chromium.org
About Me
Software Programmer @LGE
(2009.02 ~)
Chromium Contributor
(2012.01 ~)
Chromium Committer
(2013.11 ~)
Goal
Overview of ChromeOS UI Component.

We can say
“How ChromeOS UI is constructed!”
Goal
Background
Chrome? Chromium?
ChromeOS
Linux based operating system.
Only chrome browser is running for user.
UI Framework
In typical linux,
GUI
Application

GUI
Application

GUI
Application

Window
Manager

gtk

qt

efl

...

X or Wayland
Kernel
What kind of ToolKit is used
in ChromeOS?
Views

They created UI toolkit called "Views"
"Since we desired a differentiated aesthetic for
Chromium, we have had to build a framework
on Windows to accelerate our development of
custom UI" - Chromium design docs
Views
UI is constructed of a tree of view components
Widget
RootView
View
View

View
View

View
View
View
Views
Like other toolkits, it has many custom views
●
●
●
●
●
●
●
●
●

Label
Image view
web view
slider
separator
link
button
combobox
etc...
Views
OK. we know how Widget is made...

But, who give user events
or draw its content?
There is no window manager.
ChromeOS runs single x-client application.

Browser
Process

Renderer
Process

Renderer
Process

libx

X

…...

GPU
Process
They created a new window system.
Aura
Aura
Chrome's next generation hardware
accelerated UI framework
Aura
Contains view components
Responsible for
event propagation
draw widget’s contents
window hierarchy management
- ChromeOS is a tree of Aura Window
Aura
Event Flow
Widget component

Aura Window

X

Kernel

Mouse Click
Aura
Drawing?
RootWindowHost

CC

RootWindow
Composite
& Draw
Aura
Window
Aura
Window

Aura
Window
Aura
Window

Aura
Window

GPU process

Browser process

GPU
OK. we know how Widget is handled...

But, how create a widget?
Ash (Aura SHell)

"A shell is software that provides an interface
for users of an operating system to access the
services of a kernel." - wikipedia
Ash
In typical linux,

GTK
application

QT
Application

....

X
Kernel

Shell
Ash
Role of Shell
* Window mgmt.
* Program exec.
* System mgmt.
Ash
References
http://dev.chromium.org/developers/design-documents
Q&A

Chromium ui framework(shared)