How WebKit Works
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
Rendering of a
JavaScript WebKit web page
CSS
Bindings
(JavaScript API, Objective-C API)
WebCore
(HTML, CSS, DOM, etc, etc) JavaScriptCore
Platform (JavaScript Virtual Machine)
(Network, Storage, Graphics)
WTF
(Data structures, Threading primitives)
Life of Web Page
Network
Loader
HTML Parser
Render Tree
Graphics Context
Pages, Frames, and Documents
Page
Main Frame
Document
Frame Frame
Document Document
Frame
Document
Frame
Document
Lifecycle of a Frame
Uninitialized
Initial Provisional
Document
Checking Ready to
Policy Commit
Committed
CachedResourceRequest
CachedResourceLoader MemoryCache
CachedResource
ResourceLoader
ResourceHandle
Platform-specific code
How the HTML Parser Works
3C 62 6F 64 79 3E 48 65 6C 6C 6F 2C 20 3C 73 70 61 6E 3E 77 6F 72 6C
Bytes
64 21 3C 2F 73 70 61 6E 3E 3C 2F 62 6F 64 79 3E
Tokenizer
Characters <body>Hello, <span>world!</span></body>
body
DOM
Hello, span
world!
Preload Scanning for Fun and Profit
document.write("<textarea>");
Render
Block
Layout
html
Render Render
bold
Text Inline
head body
Render Render
fixed
title Hello, span Text Image
Render
Block
div
Anonymous
world!
Render Render
Text Text
Render
Layer
Render
Block
Render
Block
Render
Layer
Render Render
bold
Text Inline
Render Render
fixed
Text Image
Render
Text