WebKit!
                 how the web is rendered




Levi Weintraub
me

Intel->Apple->Microsoft->Palm->HP->Google


     on and off on WebKit since 2006


          adventure motorcyclist
me

Intel->Apple->Microsoft->Palm->HP->Google


      on and off on WebKit since 2006


          adventure motorcyclist
adventure motorcyclist
Hi Dad!




          adventure motorcyclist
rendering engine
browser




rendering engine
3 primary rendering engines
primary rendering engines

Trident
primary rendering engines

Trident




Internet Explorer
primary rendering engines

Trident                Gecko




Internet Explorer
primary rendering engines

Trident                Gecko




Internet Explorer       Firefox
primary rendering engines

Trident                Gecko        WebKit




Internet Explorer       Firefox
primary rendering engines

Trident                Gecko           WebKit




Internet Explorer       Firefox     Chrome, Safari, iOS,
                                   Android, Qt, Blackberry,
                                    webOS, Kindle, etc.
Gecko           WebKit

        FREE!
Gecko              WebKit

           FREE!



 Firefox           Chromium
over 38%1




  1: StatCounter's Global March 2012 http://gs.statcounter.com
history
KHTML + Konquerer
19
     98
          KH
                TM
                      Lr
                            ele
                                   as
20                                    ed
     01
          W
               eb
                    Kit
20                        se
     02                      c  ret
          Ja                          ly
               va                          for
                    Sc                           ke
20                    rip                             db
     03                        tC                         yA
          W                        ore                             pp
               eb
                    Co                     rel                       le
                                               ea
                          re                        se
                               &                         d
                                    Sa
20                                     fa    ri r
     05                                           ele
          W                                             as
               eb                                            ed
                    Kit
                          op
                                en
                                     so
20                                         urc
     07                                           ed
          Sa
                far
                     i fo
20                         rW
     08                            ind
        G      oo                        ow
                 gle                          s
20                        Ch
     09                         rom
        C      hro                      er
                    me                    ele
20                          Be                      as
     10                        ta                       ed
          KD                          for                      for
                E                            Ma                      W
                     re-                            cO                  ind
                                                                              ow
                          int                            S                       s
                               eg
                                     rat                       X
                                         e                         an
20                                          sW                          dL
     12                                             eb                    inu
          W                                              Kit                    x
               eb                                              -W
??                  Kit
     ?                    do                                     eb
                                                                          Kit
                                mi
                                    na                                        2a
Pr                                       nt                                         nn
  ofi                                         we                                      ou
         t!!                                        bp                                   nc
                                                         lat                               ed
                                                             f  orm
anatomy of a WebKit browser
Embedding Application     pushes WebKit to do work
                           handles user input
   WebKit (component)


        WebCore



JavaScript
                Platform
 Engine
WebKit-based browser

  WebKit (component)       interface between
                           rendering engine and
                           embedding application
        WebCore



JavaScript
                Platform
 Engine
WebKit-based browser

   WebKit (component)


        WebCore                   application logic
                           loading            painting
                           parsing            event handling
JavaScript                 layout             editing
                Platform
 Engine                    style resolution   javascript bindings
WebKit-based browser

   WebKit (component)


        WebCore



JavaScript
               Platform   network stack
 Engine
                          graphics library
                          font engine
                          native widgets
                          abstraction of native components
WebKit-based browser

     WebKit (component)


          WebCore



 JavaScript
                   Platform
   Engine



V8 or JavaScriptCore
parses and executes page logic
allows DOM manipulation
WebCore
primary data structures

parsing & interface:
   DOM tree
layout and rendering:
   render object tree
   style tree
   layer tree
   line box tree
main flow
network engine



loading


              parser
loader



         parsing


                   DOM tree
parsing                            JavaScript
                               I
                            AP
                       M
                     DO




          DOM tree
                      att
                         ac
                           h




                                   render tree
DOM tree

representation of document
document API
shadow DOM
DOM tree
markup                   DOM representation
<html>                   HTMLDocument
 <body>                   HTMLHTMLElement
  <div>                    HTMLBodyElement
    foo                     HTMLDivElement
    <span>                   Text("foo")
    bar                      HTMLSpanElement
    </span>                   Text("bar")
  </div>
 </body>
</html>
DOM tree                       style
           att
              ac
                h




                 render tree
Airbnb tech talk: Levi Weintraub on webkit
Airbnb tech talk: Levi Weintraub on webkit
OK!
render forest

render object tree
layer tree
inline box tree
style tree
render object tree

owned by DOM tree
only exists for rendered content
responsible for layout and paint
answers DOM API measurement requests
12 paint phases!

block background          child outlines
child block background    self outline
child block backgrounds   selection
float                     collapsed table borders
foreground                text clip
outline                   mask
render object tree

owned by DOM tree
only exists for rendered content
responsible for layout and paint
answers DOM API measurement requests
render object tree
DOM representation         render objects
HTMLBodyElement             RenderBlock
 HTMLDivElement              RenderBlock
  Text("foo")                 RenderText("foo")
  HTMLSpanElement             RenderInline
   Text("bar")                 RenderText("bar")
anonymous blocks
DOM representation      render objects
HTMLBodyElement          RenderBlock
 HTMLDivElement           RenderBlock
  Text("foo")              RenderBlock(anonymous)
  HTMLSpanElement           RenderText("foo")
   Text("bar")              RenderInline
  HTMLDivElement             RenderText("bar")
    Text("baz")            RenderBlock
                            RenderText("baz")
style tree

contains all computed style values for renderers
owned by render object tree
RenderObjects share RenderStyles
RenderStyles share data members
render layer tree

like helper class for rendering
used for <video>, <canvas> with WebGL,
positioned, transformed, transparent, masked,
clipped, scrollable, or reflected elements
establishes coordinate space and z-ordering
at least one per document, sparsely maps to
renderers
render layer structure
                                 negative z-index list


                                   RenderLaye
                                    RenderLaye
                                       r
                                       Render
                                         r
                                        Layers



         RenderLayer
                                 positive z-index list


                                   RenderLaye
                                    RenderLaye
                                       r
                                       Render
                                         r
                                        Layers

         RenderObject



RenderObject      RenderObject
render layer painting
                                 negative z-index list


                                   RenderLaye
                                    RenderLaye
                                       r
                                       Render
                                         r
                                        Layers
                          1
         RenderLayer
                                 positive z-index list


                                   RenderLaye
                                    RenderLaye
                                       r
                                       Render
                                         r
                                        Layers

         RenderObject



RenderObject      RenderObject
render layer painting
                                  negative z-index list


                                    RenderLaye
                                     RenderLaye
                                        r
                                        Render
                                          r
                                         Layers
               2

         RenderLayer
                                  positive z-index list


                                    RenderLaye
                                     RenderLaye
                                        r
                                        Render
                                          r
                                         Layers

         RenderObject



RenderObject       RenderObject
render layer painting
                                 negative z-index list


                                   RenderLaye
                                    RenderLaye
                                       r
                                       Render
                                         r
                                        Layers



         RenderLayer      3
                                 positive z-index list


                                   RenderLaye
                                    RenderLaye
                                       r
                                       Render
                                         r
                                        Layers

         RenderObject



RenderObject      RenderObject
render layer painting, software

paint the intersection of the paint dirty rect with
all intersecting layers in order
all layers render into the same output buffer
render layer painting, hw accelerated

some RenderLayers have backing store GPU
texture
used for 3D transforms, <video>, <canvas>/
plugins with 3D, stacking contexts, or sub-
frames
dirtied RenderLayers paint to GPU texture
GPU composites textures onto final output
buffer
line box tree

owned by RenderBlock
one RootInlineBox per line
RootInlineBox has list of InlineBoxes in that line
each InlineBox has a RenderObject
a renderer may have many InlineBoxes
relies on RenderBlock for layout
line box tree
            Markup: <div>foo<b>bar</b><br>baz</div>

render tree                               line box tree
RenderBlock(div)                            RenderBlock(div)
 RenderText("foo")                           RootInlineBox
 RenderInline(b)                              InlineTextBox("foo")
  RenderText("bar")                           InlineFlowBox(b)
 RenderBR                                      InlineTextBox(b)
 RenderText("baz")                            InlineBox(br)
                                             RootInlineBox
                                              InlineTextBox("baz")
layout

changes to DOM marks renderers as dirty
layout before paint or measurement from JS
●   save old repaint rect
●   bring in updates from DOM
●   determine our preferred width
●   layout children to determine height
●   repaint difference between old and new rect
layout

changes to DOM marks renderers as dirty
layout before paint or measurement from JS
●   save old repaint rect
●   bring in updates from DOM
●   determine our preferred width
●   layout children to determine height
●   repaint difference between old and new rect
review of main flow

loader->parser->DOM tree->render tree
render tree:
●   RenderObject tree
●   RenderLayer tree
●   RenderStyle tree
●   InlineBoxTree
paint

animations, blinking carets, layout, etc. trigger
invalidations to embedder app
app collects rects, triggers paint
tree walk from root RenderLayer
RenderObjects and InlineBoxes paint
GraphicsContext abstraction
hit testing

constant during mouse move
multiple phases
tree walk from root RenderLayer
RenderLayer transforms into local coordinates
upcoming features

component model
sub-pixel layout
lots lots more
component model

based on shadow DOM
hides implementation
●   events re-targeted
●   shadow children inaccessible by regular
    DOM
defined interface
shadow DOM tree




                                       shadow boundary
   Do
     cu
        m
            en
              tt
                 re
                   e


             shadow host                                            shadow root




DOM child                  DOM child                     shadow child         shadow child
shadow render tree
       re
          nde
              rt
                re
                   e



                   shadow host




  shadow child               shadow child
integer layout

layout currently uses integers
fractional pixel values truncated
breaks at non-1:1 zoom
error accumulates
1.5x zoom is bad




150px * 1.5x = 225px
(15px * 1.5x) * 10 = 220px
sub-pixel layout

integers replaced by fixed-point unit
boxes snapped to pixel values
supports sub-pixel CSS values
error doesn't accumulate
multi-process browsers

centralized resources
●   networking
●   cache
●   compositor
●   plugins
safety through sandboxing
multiple main loops ≈ multi-core
chrome architecture
        network stack   browser process      file io




   GPU process


                         plugin process
                          plugin processes



 shared memory

gles2.0 instructions
                                                   render
     textures
                                                 processes
thanks!

     questions?


     http://webkit.org
     http://chromium.org
     leviw@chromium.org


Levi Weintraub

More Related Content

PDF
IPMI is dead, Long live Redfish
PPT
Process and Threads in Linux - PPT
PDF
Linux : PSCI
PPTX
U-boot and Android Verified Boot 2.0
PDF
Introduccion a Visual Studio .NET
PPTX
Introducción a Javascript I
PPT
Linux memory consumption
PDF
Cloud Observability mit Loki, Prometheus, Tempo und Grafana
IPMI is dead, Long live Redfish
Process and Threads in Linux - PPT
Linux : PSCI
U-boot and Android Verified Boot 2.0
Introduccion a Visual Studio .NET
Introducción a Javascript I
Linux memory consumption
Cloud Observability mit Loki, Prometheus, Tempo und Grafana

What's hot (20)

PDF
Java modules
PDF
Introduction to the Qt Quick Scene Graph
 
PDF
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
PPT
Design pattern
PPTX
Procesos e hilos- Parte 1
PPS
Operating Systems and Memory Management
PDF
Caching Basics
PDF
The automation challenge: Kubernetes Operators vs Helm Charts
PDF
Troubleshooting Native Memory Leaks in Java Applications
PPTX
Parallel batch processing with spring batch slideshare
PDF
Cgroups in android
PPT
PDF
Intel® RDT Hands-on Lab
PPTX
Controles swing
PDF
A Glance At The Java Performance Toolbox
PDF
Execution
PDF
Embedded Virtualization applied in Mobile Devices
PPTX
ESTRUCTURA DE DIRECTORIOS UTI
PPTX
Jbehave- Basics to Advance
PDF
05.2 virtio introduction
Java modules
Introduction to the Qt Quick Scene Graph
 
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Design pattern
Procesos e hilos- Parte 1
Operating Systems and Memory Management
Caching Basics
The automation challenge: Kubernetes Operators vs Helm Charts
Troubleshooting Native Memory Leaks in Java Applications
Parallel batch processing with spring batch slideshare
Cgroups in android
Intel® RDT Hands-on Lab
Controles swing
A Glance At The Java Performance Toolbox
Execution
Embedded Virtualization applied in Mobile Devices
ESTRUCTURA DE DIRECTORIOS UTI
Jbehave- Basics to Advance
05.2 virtio introduction
Ad

Viewers also liked (20)

PDF
Pushing Python: Building a High Throughput, Low Latency System
PDF
Intro to Functional Programming
PDF
Анонимные записи в Haskell. Никита Волков
PPTX
Category theory, Monads, and Duality in the world of (BIG) Data
PDF
Монады для барабанщиков. Антон Холомьёв
PDF
Who's More Functional: Kotlin, Groovy, Scala, or Java?
PDF
"Немного о функциональном программирование в JavaScript" Алексей Коваленко
PDF
gevent at TellApart
PDF
London React August - GraphQL at The Financial Times - Viktor Charypar
PPTX
Building a Simple Mobile-optimized Web App Using the jQuery Mobile Framework
PPTX
Introduction to Storm
PDF
CSS/SVG Matrix Transforms
PPTX
DNS Security Presentation ISSA
PDF
Introduction to jQuery Mobile - Web Deliver for All
PDF
HTML5 Essentials
PDF
Introduction and Overview of Apache Kafka, TriHUG July 23, 2013
PPTX
From cache to in-memory data grid. Introduction to Hazelcast.
PDF
Cassandra Introduction & Features
PDF
Etsy Activity Feeds Architecture
PDF
jQuery Essentials
Pushing Python: Building a High Throughput, Low Latency System
Intro to Functional Programming
Анонимные записи в Haskell. Никита Волков
Category theory, Monads, and Duality in the world of (BIG) Data
Монады для барабанщиков. Антон Холомьёв
Who's More Functional: Kotlin, Groovy, Scala, or Java?
"Немного о функциональном программирование в JavaScript" Алексей Коваленко
gevent at TellApart
London React August - GraphQL at The Financial Times - Viktor Charypar
Building a Simple Mobile-optimized Web App Using the jQuery Mobile Framework
Introduction to Storm
CSS/SVG Matrix Transforms
DNS Security Presentation ISSA
Introduction to jQuery Mobile - Web Deliver for All
HTML5 Essentials
Introduction and Overview of Apache Kafka, TriHUG July 23, 2013
From cache to in-memory data grid. Introduction to Hazelcast.
Cassandra Introduction & Features
Etsy Activity Feeds Architecture
jQuery Essentials
Ad

Similar to Airbnb tech talk: Levi Weintraub on webkit (9)

PDF
Redesigning The Library Experience
PDF
Implementing OpenID
PDF
Pp booklet 2
PDF
Open stack - Presenation by Thierry Carrez
PDF
Unit2 Gear
PDF
Unit2 Gear
PDF
Unit1 Screw Thread
PDF
Unit1 Screw Thread
PDF
Implementing OpenID
Redesigning The Library Experience
Implementing OpenID
Pp booklet 2
Open stack - Presenation by Thierry Carrez
Unit2 Gear
Unit2 Gear
Unit1 Screw Thread
Unit1 Screw Thread
Implementing OpenID

Recently uploaded (20)

DOCX
search engine optimization ppt fir known well about this
PPTX
Chapter 5: Probability Theory and Statistics
PDF
sustainability-14-14877-v2.pddhzftheheeeee
PDF
Hindi spoken digit analysis for native and non-native speakers
PPTX
observCloud-Native Containerability and monitoring.pptx
PDF
Taming the Chaos: How to Turn Unstructured Data into Decisions
PDF
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
PDF
Architecture types and enterprise applications.pdf
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PDF
STKI Israel Market Study 2025 version august
PDF
August Patch Tuesday
PDF
Hybrid model detection and classification of lung cancer
PDF
Developing a website for English-speaking practice to English as a foreign la...
PDF
TrustArc Webinar - Click, Consent, Trust: Winning the Privacy Game
PPTX
Modernising the Digital Integration Hub
PDF
Getting Started with Data Integration: FME Form 101
PDF
NewMind AI Weekly Chronicles – August ’25 Week III
PPTX
O2C Customer Invoices to Receipt V15A.pptx
PPTX
MicrosoftCybserSecurityReferenceArchitecture-April-2025.pptx
PDF
Enhancing emotion recognition model for a student engagement use case through...
search engine optimization ppt fir known well about this
Chapter 5: Probability Theory and Statistics
sustainability-14-14877-v2.pddhzftheheeeee
Hindi spoken digit analysis for native and non-native speakers
observCloud-Native Containerability and monitoring.pptx
Taming the Chaos: How to Turn Unstructured Data into Decisions
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
Architecture types and enterprise applications.pdf
Assigned Numbers - 2025 - Bluetooth® Document
STKI Israel Market Study 2025 version august
August Patch Tuesday
Hybrid model detection and classification of lung cancer
Developing a website for English-speaking practice to English as a foreign la...
TrustArc Webinar - Click, Consent, Trust: Winning the Privacy Game
Modernising the Digital Integration Hub
Getting Started with Data Integration: FME Form 101
NewMind AI Weekly Chronicles – August ’25 Week III
O2C Customer Invoices to Receipt V15A.pptx
MicrosoftCybserSecurityReferenceArchitecture-April-2025.pptx
Enhancing emotion recognition model for a student engagement use case through...

Airbnb tech talk: Levi Weintraub on webkit

  • 1. WebKit! how the web is rendered Levi Weintraub
  • 2. me Intel->Apple->Microsoft->Palm->HP->Google on and off on WebKit since 2006 adventure motorcyclist
  • 3. me Intel->Apple->Microsoft->Palm->HP->Google on and off on WebKit since 2006 adventure motorcyclist
  • 5. Hi Dad! adventure motorcyclist
  • 11. primary rendering engines Trident Gecko Internet Explorer
  • 12. primary rendering engines Trident Gecko Internet Explorer Firefox
  • 13. primary rendering engines Trident Gecko WebKit Internet Explorer Firefox
  • 14. primary rendering engines Trident Gecko WebKit Internet Explorer Firefox Chrome, Safari, iOS, Android, Qt, Blackberry, webOS, Kindle, etc.
  • 15. Gecko WebKit FREE!
  • 16. Gecko WebKit FREE! Firefox Chromium
  • 17. over 38%1 1: StatCounter's Global March 2012 http://gs.statcounter.com
  • 20. 19 98 KH TM Lr ele as 20 ed 01 W eb Kit 20 se 02 c ret Ja ly va for Sc ke 20 rip db 03 tC yA W ore pp eb Co rel le ea re se & d Sa 20 fa ri r 05 ele W as eb ed Kit op en so 20 urc 07 ed Sa far i fo 20 rW 08 ind G oo ow gle s 20 Ch 09 rom C hro er me ele 20 Be as 10 ta ed KD for for E Ma W re- cO ind ow int S s eg rat X e an 20 sW dL 12 eb inu W Kit x eb -W ?? Kit ? do eb Kit mi na 2a Pr nt nn ofi we ou t!! bp nc lat ed f orm
  • 21. anatomy of a WebKit browser
  • 22. Embedding Application pushes WebKit to do work handles user input WebKit (component) WebCore JavaScript Platform Engine
  • 23. WebKit-based browser WebKit (component) interface between rendering engine and embedding application WebCore JavaScript Platform Engine
  • 24. WebKit-based browser WebKit (component) WebCore application logic loading painting parsing event handling JavaScript layout editing Platform Engine style resolution javascript bindings
  • 25. WebKit-based browser WebKit (component) WebCore JavaScript Platform network stack Engine graphics library font engine native widgets abstraction of native components
  • 26. WebKit-based browser WebKit (component) WebCore JavaScript Platform Engine V8 or JavaScriptCore parses and executes page logic allows DOM manipulation
  • 28. primary data structures parsing & interface: DOM tree layout and rendering: render object tree style tree layer tree line box tree
  • 31. loader parsing DOM tree
  • 32. parsing JavaScript I AP M DO DOM tree att ac h render tree
  • 33. DOM tree representation of document document API shadow DOM
  • 34. DOM tree markup DOM representation <html> HTMLDocument <body> HTMLHTMLElement <div> HTMLBodyElement foo HTMLDivElement <span> Text("foo") bar HTMLSpanElement </span> Text("bar") </div> </body> </html>
  • 35. DOM tree style att ac h render tree
  • 38. OK!
  • 39. render forest render object tree layer tree inline box tree style tree
  • 40. render object tree owned by DOM tree only exists for rendered content responsible for layout and paint answers DOM API measurement requests
  • 41. 12 paint phases! block background child outlines child block background self outline child block backgrounds selection float collapsed table borders foreground text clip outline mask
  • 42. render object tree owned by DOM tree only exists for rendered content responsible for layout and paint answers DOM API measurement requests
  • 43. render object tree DOM representation render objects HTMLBodyElement RenderBlock HTMLDivElement RenderBlock Text("foo") RenderText("foo") HTMLSpanElement RenderInline Text("bar") RenderText("bar")
  • 44. anonymous blocks DOM representation render objects HTMLBodyElement RenderBlock HTMLDivElement RenderBlock Text("foo") RenderBlock(anonymous) HTMLSpanElement RenderText("foo") Text("bar") RenderInline HTMLDivElement RenderText("bar") Text("baz") RenderBlock RenderText("baz")
  • 45. style tree contains all computed style values for renderers owned by render object tree RenderObjects share RenderStyles RenderStyles share data members
  • 46. render layer tree like helper class for rendering used for <video>, <canvas> with WebGL, positioned, transformed, transparent, masked, clipped, scrollable, or reflected elements establishes coordinate space and z-ordering at least one per document, sparsely maps to renderers
  • 47. render layer structure negative z-index list RenderLaye RenderLaye r Render r Layers RenderLayer positive z-index list RenderLaye RenderLaye r Render r Layers RenderObject RenderObject RenderObject
  • 48. render layer painting negative z-index list RenderLaye RenderLaye r Render r Layers 1 RenderLayer positive z-index list RenderLaye RenderLaye r Render r Layers RenderObject RenderObject RenderObject
  • 49. render layer painting negative z-index list RenderLaye RenderLaye r Render r Layers 2 RenderLayer positive z-index list RenderLaye RenderLaye r Render r Layers RenderObject RenderObject RenderObject
  • 50. render layer painting negative z-index list RenderLaye RenderLaye r Render r Layers RenderLayer 3 positive z-index list RenderLaye RenderLaye r Render r Layers RenderObject RenderObject RenderObject
  • 51. render layer painting, software paint the intersection of the paint dirty rect with all intersecting layers in order all layers render into the same output buffer
  • 52. render layer painting, hw accelerated some RenderLayers have backing store GPU texture used for 3D transforms, <video>, <canvas>/ plugins with 3D, stacking contexts, or sub- frames dirtied RenderLayers paint to GPU texture GPU composites textures onto final output buffer
  • 53. line box tree owned by RenderBlock one RootInlineBox per line RootInlineBox has list of InlineBoxes in that line each InlineBox has a RenderObject a renderer may have many InlineBoxes relies on RenderBlock for layout
  • 54. line box tree Markup: <div>foo<b>bar</b><br>baz</div> render tree line box tree RenderBlock(div) RenderBlock(div) RenderText("foo") RootInlineBox RenderInline(b) InlineTextBox("foo") RenderText("bar") InlineFlowBox(b) RenderBR InlineTextBox(b) RenderText("baz") InlineBox(br) RootInlineBox InlineTextBox("baz")
  • 55. layout changes to DOM marks renderers as dirty layout before paint or measurement from JS ● save old repaint rect ● bring in updates from DOM ● determine our preferred width ● layout children to determine height ● repaint difference between old and new rect
  • 56. layout changes to DOM marks renderers as dirty layout before paint or measurement from JS ● save old repaint rect ● bring in updates from DOM ● determine our preferred width ● layout children to determine height ● repaint difference between old and new rect
  • 57. review of main flow loader->parser->DOM tree->render tree render tree: ● RenderObject tree ● RenderLayer tree ● RenderStyle tree ● InlineBoxTree
  • 58. paint animations, blinking carets, layout, etc. trigger invalidations to embedder app app collects rects, triggers paint tree walk from root RenderLayer RenderObjects and InlineBoxes paint GraphicsContext abstraction
  • 59. hit testing constant during mouse move multiple phases tree walk from root RenderLayer RenderLayer transforms into local coordinates
  • 61. component model based on shadow DOM hides implementation ● events re-targeted ● shadow children inaccessible by regular DOM defined interface
  • 62. shadow DOM tree shadow boundary Do cu m en tt re e shadow host shadow root DOM child DOM child shadow child shadow child
  • 63. shadow render tree re nde rt re e shadow host shadow child shadow child
  • 64. integer layout layout currently uses integers fractional pixel values truncated breaks at non-1:1 zoom error accumulates
  • 65. 1.5x zoom is bad 150px * 1.5x = 225px (15px * 1.5x) * 10 = 220px
  • 66. sub-pixel layout integers replaced by fixed-point unit boxes snapped to pixel values supports sub-pixel CSS values error doesn't accumulate
  • 67. multi-process browsers centralized resources ● networking ● cache ● compositor ● plugins safety through sandboxing multiple main loops ≈ multi-core
  • 68. chrome architecture network stack browser process file io GPU process plugin process plugin processes shared memory gles2.0 instructions render textures processes
  • 69. thanks! questions? http://webkit.org http://chromium.org leviw@chromium.org Levi Weintraub