How WebKit Works
How WebKit Works
Works
Adam Barth (abarth)
October 30, 2012
What is WebKit?
WebKit is a rendering engine for web content
HTML
JavaScript
WebKit
Rendering of a
web page
CSS
Major Components
This talk
JavaScriptCore
(JavaScript Virtual Machine)
WTF
(Data structures, Threading primitives)
Loader
HTML Parser
CSS
DOM
Render Tree
Graphics Context
Script
Frame
Document
Frame
Document
Frame
Document
Lifecycle of a Frame
Uninitialized
Initial
Document
Provisional
Checking
Policy
Ready to
Commit
Committed
CachedResourceLoader
MemoryCache
CachedResource
ResourceRequest
ResourceLoader
ResourceHandle
Platform-specific code
Characters
Tokens
Nodes
3C 62 6F 64 79 3E 48 65 6C 6C 6F 2C 20 3C 73 70 61 6E 3E 77 6F 72 6C
64 21 3C 2F 73 70 61 6E 3E 3C 2F 62 6F 64 79 3E
Tokenizer
<body>Hello, <span>world!</span></body>
StartTag: body
body
Hello,
Hello,
body
DOM
Hello,
span
world!
span
StartTag: span
world!
world!
EndTag: span
TreeBuilder
Tokenizer
TreeBuilder
XSSAuditor
XSSAuditor
HTTP Request
HTTP Response
Tokenizer
TreeBuilder
Render
Block
Render
Block
Layout
html
Render
Text
head
title
Greeting
Render
Inline
bold
body
Hello,
Render
Text
span
world!
img
Render
Image
fixed
Anonymous RenderObjects
Render
Block
div
Anonymous
Hello,
div
world!
Render
Block
Render
Block
Render
Text
Render
Text
LayerTree
Render
Layer
Render
Block
Render
Block
Render
Layer
Render
Text
Render
Inline
Render
Text
bold
Render
Image
fixed
Render
Text
Render
Inline
RootInlineBox
InlineTextBox
RootInlineBox
InlineTextBox
RootInlineBox
InlineTextBox
bold
Render
Text
InlineTextBox
Conclusion
WebCore's main processing pipeline:
Loader and Parser
CSS, DOM, and Script
RenderTree, LayerTree, and InlineBoxes
Other components
WebKit, Bindings, Platform, JavaScriptCore, WTF
... 1.5 MLOC of C++
Learn more:
http://www.webkit.org/coding/technical-articles.html
Thanks!
abarth@webkit.org