<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[160908] trunk</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/160908">160908</a></dd>
<dt>Author</dt> <dd>antti@apple.com</dd>
<dt>Date</dt> <dd>2013-12-20 06:44:23 -0800 (Fri, 20 Dec 2013)</dd>
</dl>

<h3>Log Message</h3>
<pre>Create render tree lazily
https://bugs.webkit.org/show_bug.cgi?id=120685

Source/WebCore: 

Reviewed by Andreas Kling.

We currently recompute style and construct renderer for each DOM node immediately after they are added to 
the tree. This is often inefficient as the style may change immediately afterwards and the work needs to be
redone. 
        
With this patch we always compute style and construct render tree lazily, either on style recalc timer or
synchronously when they are needed. It also removes the 'attached' bit. If document has render tree then
all nodes are conceptually &quot;attached&quot; even if this happens lazily.
        
The patch slightly changes behavior of implicit CSS transitions. A synchronous style change during parsing
may not trigger the animation anymore as laziness means we don't see anything changing. This matches Firefox
and Chrome in our test cases.
        
* WebCore.exp.in:
* bindings/js/JSNodeCustom.cpp:
(WebCore::JSNode::insertBefore):
(WebCore::JSNode::replaceChild):
(WebCore::JSNode::appendChild):
        
    All attaching is now lazy, remove AttachLazily.

* css/CSSComputedStyleDeclaration.cpp:
(WebCore::ComputedStyleExtractor::propertyValue):
        
    SVG renderers with !isValid() have empty display property value for some reason. Keep the behavior.

* dom/ContainerNode.cpp:
(WebCore::ContainerNode::insertBefore):
(WebCore::ContainerNode::parserInsertBefore):
(WebCore::ContainerNode::replaceChild):
(WebCore::ContainerNode::appendChild):
(WebCore::ContainerNode::parserAppendChild):
(WebCore::ContainerNode::updateTreeAfterInsertion):
* dom/ContainerNode.h:
* dom/Document.cpp:
(WebCore::Document::~Document):
(WebCore::Document::updateStyleIfNeeded):
(WebCore::Document::createRenderTree):
(WebCore::Document::destroyRenderTree):
        
    Remove attach bit maintenance.

(WebCore::Document::webkitDidExitFullScreenForElement):
        
    Do lazy render tree reconstruction after returning from full screen. That is the only reliable way
    to get the render tree back to decent shape.

* dom/Element.cpp:
(WebCore::Element::isFocusable):
        
    Remove pointless !renderer()-&gt;needsLayout() assert.

(WebCore::Element::addShadowRoot):
(WebCore::Element::childShouldCreateRenderer):
(WebCore::Element::resetComputedStyle):
        
    Take care to reset computed style in all descendants. attachRenderTree no longer does this.

* dom/Element.h:
* dom/Node.cpp:
(WebCore::Node::insertBefore):
(WebCore::Node::replaceChild):
(WebCore::Node::appendChild):
(WebCore::Node::setNeedsStyleRecalc):
        
    Propagate ReconstructRenderTree.

(WebCore::Node::attached):
        
    Emulate the behavior of old attached bit for now so existing code calling this mostly stays working.

* dom/Node.h:
        
    Add new ReconstructRenderTree value for StyleChangeType.

* dom/Range.cpp:
(WebCore::Range::isPointInRange):
(WebCore::Range::comparePoint):
(WebCore::Range::compareNode):
(WebCore::Range::intersectsNode):
* editing/AppendNodeCommand.cpp:
(WebCore::AppendNodeCommand::doApply):
* editing/CompositeEditCommand.cpp:
(WebCore::CompositeEditCommand::canRebalance):
* editing/InsertNodeBeforeCommand.cpp:
(WebCore::InsertNodeBeforeCommand::doApply):
* html/HTMLDetailsElement.cpp:
(WebCore::HTMLDetailsElement::didAddUserAgentShadowRoot):
* html/HTMLDocument.cpp:
(WebCore::HTMLDocument::activeElement):
* html/HTMLElement.cpp:
(WebCore::HTMLElement::setInnerText):
        
    TextControlInnerTextElement always preserves newline even if it doesn't have style yet.

(WebCore::HTMLElement::supportsFocus):
* html/HTMLEmbedElement.cpp:
(WebCore::HTMLEmbedElement::parseAttribute):
* html/HTMLFormControlElement.cpp:
(WebCore::shouldAutofocus):
        
    Don't autofocus until we have renderer.

* html/HTMLFormControlElementWithState.cpp:
(WebCore::HTMLFormControlElementWithState::shouldSaveAndRestoreFormControlState):
* html/HTMLFrameElementBase.cpp:
(WebCore::HTMLFrameElementBase::didNotifySubtreeInsertions):
* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::updateType):
        
    Lazy render tree construction.

(WebCore::HTMLInputElement::parseAttribute):
(WebCore::HTMLInputElement::defaultEventHandler):
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::parseAttribute):
* html/HTMLObjectElement.cpp:
(WebCore::HTMLObjectElement::parseAttribute):
* html/HTMLSummaryElement.cpp:
(WebCore::HTMLSummaryElement::didAddUserAgentShadowRoot):
* html/parser/HTMLConstructionSite.cpp:
(WebCore::executeTask):
        
    Don't attach renderer after construction.

* html/parser/HTMLTreeBuilder.cpp:
(WebCore::HTMLTreeBuilder::callTheAdoptionAgency):
* html/shadow/ContentDistributor.cpp:
(WebCore::ContentDistributor::invalidateDistribution):
* html/shadow/InsertionPoint.cpp:
(WebCore::InsertionPoint::willAttachRenderers):
(WebCore::InsertionPoint::willDetachRenderers):
* html/shadow/MediaControlElements.cpp:
(WebCore::MediaControlTextTrackContainerElement::updateDisplay):
* html/shadow/MediaControls.cpp:
(WebCore::MediaControls::createTextTrackDisplay):
* html/shadow/MediaControlsApple.cpp:
(WebCore::MediaControlsApple::createControls):
* html/track/TextTrackCue.cpp:
(WebCore::TextTrackCue::getDisplayTree):
* loader/PlaceholderDocument.cpp:
(WebCore::PlaceholderDocument::createRenderTree):
* loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::preload):
* style/StyleResolveTree.cpp:
(WebCore::Style::attachTextRenderer):
(WebCore::Style::detachTextRenderer):
        
    Remove attached bit maintenance.

(WebCore::Style::attachChildren):
(WebCore::Style::attachShadowRoot):
(WebCore::Style::attachRenderTree):
(WebCore::Style::detachShadowRoot):
(WebCore::Style::detachRenderTree):
(WebCore::Style::resolveLocal):
* svg/SVGTests.cpp:
(WebCore::SVGTests::handleAttributeChange):
        
    Make lazy.

* testing/Internals.cpp:
(WebCore::Internals::attached):
(WebCore::Internals::elementRenderTreeAsText):
(WebCore::Internals::markerAt):
(WebCore::Internals::nodesFromRect):

LayoutTests: 

Reviewed by Andreas Kling.
        
Most of these are non-visible render tree dump changes (they become simpler).

* editing/selection/click-on-head-margin-expected.txt:
* fast/css-generated-content/before-content-continuation-chain-expected.txt:
* fast/css/transition-color-unspecified.html:
* fast/dom/adopt-node-crash-2-expected.txt:
* fast/dom/modify-node-and-while-in-the-callback-too-crash-expected.txt:
* fast/forms/radio/radio_checked_dynamic-expected.txt:
* fast/frames/lots-of-iframes-expected.txt:
* fast/frames/sandboxed-iframe-autofocus-denied-expected.txt:
* fast/table/table-row-style-not-updated-with-after-content-expected.txt:
* fullscreen/full-screen-render-inline-expected.txt:
* fullscreen/parent-flow-inline-with-block-child-expected.txt:
* platform/mac/editing/inserting/break-blockquote-after-delete-expected.txt:
* platform/mac/fast/css-generated-content/table-row-group-to-inline-expected.txt:
* platform/mac/fast/dynamic/011-expected.txt:
* platform/mac/fast/forms/formmove3-expected.txt:
* platform/mac/fast/forms/preserveFormDuringResidualStyle-expected.txt:
* platform/mac/fast/invalid/001-expected.txt:
* platform/mac/fast/invalid/003-expected.txt:
* platform/mac/fast/invalid/004-expected.txt:
* platform/mac/fast/invalid/007-expected.txt:
* platform/mac/fast/invalid/019-expected.txt:
* platform/mac/fast/multicol/span/span-as-immediate-child-generated-content-expected.txt:
* platform/mac/fast/multicol/span/span-as-immediate-columns-child-dynamic-expected.txt:
* platform/mac/fast/multicol/span/span-as-nested-columns-child-dynamic-expected.txt:
* platform/mac/fast/ruby/ruby-base-merge-block-children-crash-expected.txt:
* platform/mac/tables/mozilla/bugs/bug113235-1-expected.txt:
* platform/mac/tables/mozilla/bugs/bug647-expected.txt:
* platform/mac/tables/mozilla/other/wa_table_tr_align-expected.txt:
* plugins/plugin-remove-readystatechange-expected.txt:
* svg/custom/system-language-crash-expected.txt:
* transitions/equivalent-background-image-no-transition.html:
* transitions/repeated-firing-background-color.html:
* transitions/transition-duration-cleared-in-transitionend-crash.html:

    Adopt a few transition test cases to new behavior.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestseditingselectionclickonheadmarginexpectedtxt">trunk/LayoutTests/editing/selection/click-on-head-margin-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastcsstransitioncolorunspecifiedhtml">trunk/LayoutTests/fast/css/transition-color-unspecified.html</a></li>
<li><a href="#trunkLayoutTestsfastcssgeneratedcontentbeforecontentcontinuationchainexpectedtxt">trunk/LayoutTests/fast/css-generated-content/before-content-continuation-chain-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastdomadoptnodecrash2expectedtxt">trunk/LayoutTests/fast/dom/adopt-node-crash-2-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastdommodifynodeandwhileinthecallbacktoocrashexpectedtxt">trunk/LayoutTests/fast/dom/modify-node-and-while-in-the-callback-too-crash-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastformsradioradio_checked_dynamicexpectedtxt">trunk/LayoutTests/fast/forms/radio/radio_checked_dynamic-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastframeslotsofiframesexpectedtxt">trunk/LayoutTests/fast/frames/lots-of-iframes-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastframessandboxediframeautofocusdeniedexpectedtxt">trunk/LayoutTests/fast/frames/sandboxed-iframe-autofocus-denied-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfasttabletablerowstylenotupdatedwithaftercontentexpectedtxt">trunk/LayoutTests/fast/table/table-row-style-not-updated-with-after-content-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfullscreenfullscreenrenderinlineexpectedtxt">trunk/LayoutTests/fullscreen/full-screen-render-inline-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfullscreenparentflowinlinewithblockchildexpectedtxt">trunk/LayoutTests/fullscreen/parent-flow-inline-with-block-child-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmaceditinginsertingbreakblockquoteafterdeleteexpectedtxt">trunk/LayoutTests/platform/mac/editing/inserting/break-blockquote-after-delete-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacfastcssgeneratedcontenttablerowgrouptoinlineexpectedtxt">trunk/LayoutTests/platform/mac/fast/css-generated-content/table-row-group-to-inline-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacfastdynamic011expectedtxt">trunk/LayoutTests/platform/mac/fast/dynamic/011-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacfastformsformmove3expectedtxt">trunk/LayoutTests/platform/mac/fast/forms/formmove3-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacfastformspreserveFormDuringResidualStyleexpectedtxt">trunk/LayoutTests/platform/mac/fast/forms/preserveFormDuringResidualStyle-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacfastinvalid001expectedtxt">trunk/LayoutTests/platform/mac/fast/invalid/001-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacfastinvalid003expectedtxt">trunk/LayoutTests/platform/mac/fast/invalid/003-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacfastinvalid004expectedtxt">trunk/LayoutTests/platform/mac/fast/invalid/004-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacfastinvalid007expectedtxt">trunk/LayoutTests/platform/mac/fast/invalid/007-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacfastinvalid019expectedtxt">trunk/LayoutTests/platform/mac/fast/invalid/019-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacfastmulticolspanspanasimmediatechildgeneratedcontentexpectedtxt">trunk/LayoutTests/platform/mac/fast/multicol/span/span-as-immediate-child-generated-content-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacfastmulticolspanspanasimmediatecolumnschilddynamicexpectedtxt">trunk/LayoutTests/platform/mac/fast/multicol/span/span-as-immediate-columns-child-dynamic-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacfastmulticolspanspanasnestedcolumnschilddynamicexpectedtxt">trunk/LayoutTests/platform/mac/fast/multicol/span/span-as-nested-columns-child-dynamic-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacfastrubyrubybasemergeblockchildrencrashexpectedtxt">trunk/LayoutTests/platform/mac/fast/ruby/ruby-base-merge-block-children-crash-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmactablesmozillabugsbug1132351expectedtxt">trunk/LayoutTests/platform/mac/tables/mozilla/bugs/bug113235-1-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmactablesmozillabugsbug647expectedtxt">trunk/LayoutTests/platform/mac/tables/mozilla/bugs/bug647-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmactablesmozillaotherwa_table_tr_alignexpectedtxt">trunk/LayoutTests/platform/mac/tables/mozilla/other/wa_table_tr_align-expected.txt</a></li>
<li><a href="#trunkLayoutTestspluginspluginremovereadystatechangeexpectedtxt">trunk/LayoutTests/plugins/plugin-remove-readystatechange-expected.txt</a></li>
<li><a href="#trunkLayoutTestssvgcustomsystemlanguagecrashexpectedtxt">trunk/LayoutTests/svg/custom/system-language-crash-expected.txt</a></li>
<li><a href="#trunkLayoutTeststransitionsequivalentbackgroundimagenotransitionhtml">trunk/LayoutTests/transitions/equivalent-background-image-no-transition.html</a></li>
<li><a href="#trunkLayoutTeststransitionsrepeatedfiringbackgroundcolorhtml">trunk/LayoutTests/transitions/repeated-firing-background-color.html</a></li>
<li><a href="#trunkLayoutTeststransitionstransitiondurationclearedintransitionendcrashhtml">trunk/LayoutTests/transitions/transition-duration-cleared-in-transitionend-crash.html</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreWebCoreexpin">trunk/Source/WebCore/WebCore.exp.in</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSNodeCustomcpp">trunk/Source/WebCore/bindings/js/JSNodeCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorecssCSSComputedStyleDeclarationcpp">trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp</a></li>
<li><a href="#trunkSourceWebCoredomContainerNodecpp">trunk/Source/WebCore/dom/ContainerNode.cpp</a></li>
<li><a href="#trunkSourceWebCoredomContainerNodeh">trunk/Source/WebCore/dom/ContainerNode.h</a></li>
<li><a href="#trunkSourceWebCoredomDocumentcpp">trunk/Source/WebCore/dom/Document.cpp</a></li>
<li><a href="#trunkSourceWebCoredomElementcpp">trunk/Source/WebCore/dom/Element.cpp</a></li>
<li><a href="#trunkSourceWebCoredomElementh">trunk/Source/WebCore/dom/Element.h</a></li>
<li><a href="#trunkSourceWebCoredomNodecpp">trunk/Source/WebCore/dom/Node.cpp</a></li>
<li><a href="#trunkSourceWebCoredomNodeh">trunk/Source/WebCore/dom/Node.h</a></li>
<li><a href="#trunkSourceWebCoredomRangecpp">trunk/Source/WebCore/dom/Range.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingAppendNodeCommandcpp">trunk/Source/WebCore/editing/AppendNodeCommand.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingCompositeEditCommandcpp">trunk/Source/WebCore/editing/CompositeEditCommand.cpp</a></li>
<li><a href="#trunkSourceWebCoreeditingInsertNodeBeforeCommandcpp">trunk/Source/WebCore/editing/InsertNodeBeforeCommand.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLDetailsElementcpp">trunk/Source/WebCore/html/HTMLDetailsElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLDocumentcpp">trunk/Source/WebCore/html/HTMLDocument.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLElementcpp">trunk/Source/WebCore/html/HTMLElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLEmbedElementcpp">trunk/Source/WebCore/html/HTMLEmbedElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLFormControlElementcpp">trunk/Source/WebCore/html/HTMLFormControlElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLFormControlElementWithStatecpp">trunk/Source/WebCore/html/HTMLFormControlElementWithState.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLFrameElementBasecpp">trunk/Source/WebCore/html/HTMLFrameElementBase.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLInputElementcpp">trunk/Source/WebCore/html/HTMLInputElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLMediaElementcpp">trunk/Source/WebCore/html/HTMLMediaElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLObjectElementcpp">trunk/Source/WebCore/html/HTMLObjectElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLSummaryElementcpp">trunk/Source/WebCore/html/HTMLSummaryElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlparserHTMLConstructionSitecpp">trunk/Source/WebCore/html/parser/HTMLConstructionSite.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlparserHTMLTreeBuildercpp">trunk/Source/WebCore/html/parser/HTMLTreeBuilder.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlshadowContentDistributorcpp">trunk/Source/WebCore/html/shadow/ContentDistributor.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlshadowInsertionPointcpp">trunk/Source/WebCore/html/shadow/InsertionPoint.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlshadowMediaControlElementscpp">trunk/Source/WebCore/html/shadow/MediaControlElements.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlshadowMediaControlscpp">trunk/Source/WebCore/html/shadow/MediaControls.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlshadowMediaControlsApplecpp">trunk/Source/WebCore/html/shadow/MediaControlsApple.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmltrackTextTrackCuecpp">trunk/Source/WebCore/html/track/TextTrackCue.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderPlaceholderDocumentcpp">trunk/Source/WebCore/loader/PlaceholderDocument.cpp</a></li>
<li><a href="#trunkSourceWebCoreloadercacheCachedResourceLoadercpp">trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp</a></li>
<li><a href="#trunkSourceWebCorestyleStyleResolveTreecpp">trunk/Source/WebCore/style/StyleResolveTree.cpp</a></li>
<li><a href="#trunkSourceWebCoresvgSVGTestscpp">trunk/Source/WebCore/svg/SVGTests.cpp</a></li>
<li><a href="#trunkSourceWebCoretestingInternalscpp">trunk/Source/WebCore/testing/Internals.cpp</a></li>
<li><a href="#trunkSourceWebKitmacWebViewWebHTMLViewmm">trunk/Source/WebKit/mac/WebView/WebHTMLView.mm</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPagecpp">trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/LayoutTests/ChangeLog        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -1,3 +1,48 @@
</span><ins>+2013-12-19  Antti Koivisto  &lt;antti@apple.com&gt;
+
+        Create render tree lazily
+        https://bugs.webkit.org/show_bug.cgi?id=120685
+
+        Reviewed by Andreas Kling.
+        
+        Most of these are non-visible render tree dump changes (they become simpler).
+
+        * editing/selection/click-on-head-margin-expected.txt:
+        * fast/css-generated-content/before-content-continuation-chain-expected.txt:
+        * fast/css/transition-color-unspecified.html:
+        * fast/dom/adopt-node-crash-2-expected.txt:
+        * fast/dom/modify-node-and-while-in-the-callback-too-crash-expected.txt:
+        * fast/forms/radio/radio_checked_dynamic-expected.txt:
+        * fast/frames/lots-of-iframes-expected.txt:
+        * fast/frames/sandboxed-iframe-autofocus-denied-expected.txt:
+        * fast/table/table-row-style-not-updated-with-after-content-expected.txt:
+        * fullscreen/full-screen-render-inline-expected.txt:
+        * fullscreen/parent-flow-inline-with-block-child-expected.txt:
+        * platform/mac/editing/inserting/break-blockquote-after-delete-expected.txt:
+        * platform/mac/fast/css-generated-content/table-row-group-to-inline-expected.txt:
+        * platform/mac/fast/dynamic/011-expected.txt:
+        * platform/mac/fast/forms/formmove3-expected.txt:
+        * platform/mac/fast/forms/preserveFormDuringResidualStyle-expected.txt:
+        * platform/mac/fast/invalid/001-expected.txt:
+        * platform/mac/fast/invalid/003-expected.txt:
+        * platform/mac/fast/invalid/004-expected.txt:
+        * platform/mac/fast/invalid/007-expected.txt:
+        * platform/mac/fast/invalid/019-expected.txt:
+        * platform/mac/fast/multicol/span/span-as-immediate-child-generated-content-expected.txt:
+        * platform/mac/fast/multicol/span/span-as-immediate-columns-child-dynamic-expected.txt:
+        * platform/mac/fast/multicol/span/span-as-nested-columns-child-dynamic-expected.txt:
+        * platform/mac/fast/ruby/ruby-base-merge-block-children-crash-expected.txt:
+        * platform/mac/tables/mozilla/bugs/bug113235-1-expected.txt:
+        * platform/mac/tables/mozilla/bugs/bug647-expected.txt:
+        * platform/mac/tables/mozilla/other/wa_table_tr_align-expected.txt:
+        * plugins/plugin-remove-readystatechange-expected.txt:
+        * svg/custom/system-language-crash-expected.txt:
+        * transitions/equivalent-background-image-no-transition.html:
+        * transitions/repeated-firing-background-color.html:
+        * transitions/transition-duration-cleared-in-transitionend-crash.html:
+
+            Adopt a few transition test cases to new behavior.
+
</ins><span class="cx"> 2013-12-20  Mario Sanchez Prada  &lt;mario.prada@samsung.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [ATK] [WK2] platform/gtk/accessibility/roles-exposed.html is failing
</span></span></pre></div>
<a id="trunkLayoutTestseditingselectionclickonheadmarginexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/editing/selection/click-on-head-margin-expected.txt (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/editing/selection/click-on-head-margin-expected.txt        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/LayoutTests/editing/selection/click-on-head-margin-expected.txt        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -1,4 +1,4 @@
</span><span class="cx"> Click on the right of this line outside the black box.
</span><span class="cx"> The caret should be placed on the right of the first line, NOT on the right of this line.
</span><del>- PASS
</del><ins>+PASS
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastcsstransitioncolorunspecifiedhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/css/transition-color-unspecified.html (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css/transition-color-unspecified.html        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/LayoutTests/fast/css/transition-color-unspecified.html        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -14,5 +14,5 @@
</span><span class="cx">             setTimeout(&quot;testRunner.notifyDone()&quot;, 0);
</span><span class="cx">     }, false);
</span><span class="cx"> 
</span><del>-    document.getElementById(&quot;test&quot;).className = &quot;&quot;;
</del><ins>+    setTimeout(function() { document.getElementById(&quot;test&quot;).className = &quot;&quot; }, 0);
</ins><span class="cx"> &lt;/script&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsfastcssgeneratedcontentbeforecontentcontinuationchainexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/css-generated-content/before-content-continuation-chain-expected.txt (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css-generated-content/before-content-continuation-chain-expected.txt        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/LayoutTests/fast/css-generated-content/before-content-continuation-chain-expected.txt        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -5,11 +5,11 @@
</span><span class="cx">     RenderBody {BODY} at (8,8) size 784x400
</span><span class="cx">       RenderBlock (anonymous) at (0,0) size 784x0
</span><span class="cx">         RenderInline {SPAN} at (0,0) size 0x0 [color=#008000]
</span><del>-      RenderBlock (anonymous) at (0,0) size 784x200
</del><ins>+      RenderBlock (anonymous) at (0,0) size 784x200 [color=#008000]
</ins><span class="cx">         RenderBlock (generated) at (0,0) size 784x200 [color=#0000FF]
</span><span class="cx">           RenderText at (0,0) size 200x200
</span><span class="cx">             text run at (0,0) width 200: &quot;A&quot;
</span><del>-        RenderBlock {DIV} at (0,200) size 784x0 [color=#008000]
</del><ins>+        RenderBlock {DIV} at (0,200) size 784x0
</ins><span class="cx">       RenderBlock (anonymous) at (0,200) size 784x200
</span><span class="cx">         RenderInline {SPAN} at (0,0) size 200x200 [color=#008000]
</span><span class="cx">           RenderText {#text} at (0,0) size 200x200
</span></span></pre></div>
<a id="trunkLayoutTestsfastdomadoptnodecrash2expectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/dom/adopt-node-crash-2-expected.txt (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/adopt-node-crash-2-expected.txt        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/LayoutTests/fast/dom/adopt-node-crash-2-expected.txt        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -1,2 +1,3 @@
</span><span class="cx"> Tests for a crash due to adopting a DOM node during DOMFocusOut event. Test passes if it doesn't crash.
</span><span class="cx"> 
</span><ins>+
</ins></span></pre></div>
<a id="trunkLayoutTestsfastdommodifynodeandwhileinthecallbacktoocrashexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/dom/modify-node-and-while-in-the-callback-too-crash-expected.txt (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/modify-node-and-while-in-the-callback-too-crash-expected.txt        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/LayoutTests/fast/dom/modify-node-and-while-in-the-callback-too-crash-expected.txt        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -1,3 +1 @@
</span><span class="cx"> This tests that making changes on a node that triggers a callback where we make changes again on the same node does not result in an assert/crash. Test passes if no crash is observed.
</span><del>-
-
</del></span></pre></div>
<a id="trunkLayoutTestsfastformsradioradio_checked_dynamicexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/forms/radio/radio_checked_dynamic-expected.txt (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/forms/radio/radio_checked_dynamic-expected.txt        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/LayoutTests/fast/forms/radio/radio_checked_dynamic-expected.txt        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -10,6 +10,6 @@
</span><span class="cx"> Test 3 Passed
</span><span class="cx"> 
</span><span class="cx"> Test 4: Transfer from &lt;form&gt; to &lt;form&gt;
</span><del>-  
</del><ins>+ 
</ins><span class="cx"> Test 4 Passed
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastframeslotsofiframesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/frames/lots-of-iframes-expected.txt (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/frames/lots-of-iframes-expected.txt        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/LayoutTests/fast/frames/lots-of-iframes-expected.txt        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -1,3 +1,2 @@
</span><span class="cx"> Sucessfully created 1000 frames.
</span><span class="cx"> Successfully blocked creation of frame number 1001.
</span><del>-
</del></span></pre></div>
<a id="trunkLayoutTestsfastframessandboxediframeautofocusdeniedexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/frames/sandboxed-iframe-autofocus-denied-expected.txt (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/frames/sandboxed-iframe-autofocus-denied-expected.txt        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/LayoutTests/fast/frames/sandboxed-iframe-autofocus-denied-expected.txt        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> CONSOLE MESSAGE: line 1: Blocked script execution in 'about:srcdoc' because the document's frame is sandboxed and the 'allow-scripts' permission is not set.
</span><del>-CONSOLE MESSAGE: line 1: Blocked autofocusing on a form control because the form's frame is sandboxed and the 'allow-scripts' permission is not set.
</del><ins>+CONSOLE MESSAGE: Blocked autofocusing on a form control because the form's frame is sandboxed and the 'allow-scripts' permission is not set.
</ins><span class="cx"> CONSOLE MESSAGE: line 13: PASS: The input element is not focused.
</span><span class="cx"> This test passes if the input element in the sandboxed frame is not automatically focused upon, as it should be blocked by the sandboxed scripts flag. A console warning to that effect should also be present.
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfasttabletablerowstylenotupdatedwithaftercontentexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/table/table-row-style-not-updated-with-after-content-expected.txt (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/table/table-row-style-not-updated-with-after-content-expected.txt        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/LayoutTests/fast/table/table-row-style-not-updated-with-after-content-expected.txt        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -7,14 +7,13 @@
</span><span class="cx">         RenderTableSection (anonymous) at (0,0) size 512x256
</span><span class="cx">           RenderTableRow {DIV} at (0,0) size 512x256 [color=#0000FF]
</span><span class="cx">             RenderTableCell (anonymous) at (0,0) size 512x256 [r=0 c=0 rs=1 cs=1]
</span><del>-              RenderTable at (0,0) size 512x256
-                RenderTableSection (anonymous) at (0,0) size 512x256
-                  RenderTableRow (anonymous) at (0,0) size 512x128
</del><ins>+              RenderBlock (anonymous) at (0,0) size 512x128
+                RenderText {#text} at (0,0) size 512x128
+                  text run at (0,0) width 512: &quot;ABCD&quot;
+              RenderTable at (0,128) size 512x128
+                RenderTableSection (anonymous) at (0,0) size 512x128
+                  RenderTableRow (anonymous) at (0,0) size 512x128 [color=#FFFF00]
</ins><span class="cx">                     RenderTableCell (anonymous) at (0,0) size 512x128 [r=0 c=0 rs=1 cs=1]
</span><del>-                      RenderText {#text} at (0,0) size 512x128
-                        text run at (0,0) width 512: &quot;ABCD&quot;
-                  RenderTableRow (anonymous) at (0,128) size 512x128 [color=#FFFF00]
-                    RenderTableCell (anonymous) at (0,128) size 512x128 [r=1 c=0 rs=1 cs=1]
</del><span class="cx">                       RenderText at (0,0) size 512x128
</span><span class="cx">                         text run at (0,0) width 512: &quot;4578&quot;
</span><span class="cx">       RenderBlock {DIV} at (0,256) size 784x128 [color=#008000]
</span></span></pre></div>
<a id="trunkLayoutTestsfullscreenfullscreenrenderinlineexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fullscreen/full-screen-render-inline-expected.txt (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fullscreen/full-screen-render-inline-expected.txt        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/LayoutTests/fullscreen/full-screen-render-inline-expected.txt        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -4,8 +4,6 @@
</span><span class="cx">   RenderBlock {HTML} at (0,0) size 800x600
</span><span class="cx">     RenderBody {BODY} at (8,8) size 784x584
</span><span class="cx">       RenderBlock {SUMMARY} at (0,0) size 784x48
</span><del>-        RenderBlock (anonymous) at (0,0) size 784x0
-        RenderBlock (anonymous) at (0,0) size 784x0
</del><span class="cx">         RenderBlock (anonymous) at (0,0) size 784x16
</span><span class="cx">           RenderText {#text} at (0,0) size 16x16
</span><span class="cx">             text run at (0,0) width 16: &quot;a&quot;
</span></span></pre></div>
<a id="trunkLayoutTestsfullscreenparentflowinlinewithblockchildexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fullscreen/parent-flow-inline-with-block-child-expected.txt (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fullscreen/parent-flow-inline-with-block-child-expected.txt        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/LayoutTests/fullscreen/parent-flow-inline-with-block-child-expected.txt        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -3,19 +3,18 @@
</span><span class="cx"> layer at (0,0) size 800x600
</span><span class="cx">   RenderBlock {HTML} at (0,0) size 800x600
</span><span class="cx">     RenderBody {BODY} at (8,8) size 784x584
</span><del>-      RenderBlock {DIV} at (0,0) size 784x32
</del><ins>+      RenderBlock {DIV} at (0,0) size 784x16
</ins><span class="cx">         RenderBlock (anonymous) at (0,0) size 784x16
</span><span class="cx">           RenderInline {SPAN} at (0,0) size 16x16
</span><span class="cx">             RenderText {#text} at (0,0) size 16x16
</span><span class="cx">               text run at (0,0) width 16: &quot;1&quot;
</span><del>-          RenderText {#text} at (0,0) size 0x0
-        RenderBlock (anonymous) at (0,16) size 784x16
</del><ins>+          RenderText {#text} at (16,0) size 16x16
+            text run at (16,0) width 16: &quot; &quot;
</ins><span class="cx">           RenderInline {SPAN} at (0,0) size 16x16
</span><del>-            RenderText {#text} at (0,0) size 16x16
-              text run at (0,0) width 16: &quot;2&quot;
-        RenderBlock (anonymous) at (0,32) size 784x0
</del><ins>+            RenderText {#text} at (32,0) size 16x16
+              text run at (32,0) width 16: &quot;2&quot;
+        RenderBlock (anonymous) at (0,16) size 784x0
</ins><span class="cx">           RenderBlock {DIV} at (0,0) size 784x0
</span><del>-        RenderBlock (anonymous) at (0,32) size 784x0
</del><ins>+        RenderBlock (anonymous) at (0,16) size 784x0
</ins><span class="cx">           RenderInline {SPAN} at (0,0) size 0x0
</span><del>-        RenderBlock (anonymous) at (0,32) size 784x0
</del><span class="cx">           RenderText {#text} at (0,0) size 0x0
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmaceditinginsertingbreakblockquoteafterdeleteexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/editing/inserting/break-blockquote-after-delete-expected.txt (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/editing/inserting/break-blockquote-after-delete-expected.txt        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/LayoutTests/platform/mac/editing/inserting/break-blockquote-after-delete-expected.txt        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -21,5 +21,4 @@
</span><span class="cx">             RenderBlock {BLOCKQUOTE} at (0,0) size 772x18 [color=#008000] [border: none (2px solid #008000)]
</span><span class="cx">               RenderText {#text} at (12,0) size 35x18
</span><span class="cx">                 text run at (12,0) width 35: &quot;green&quot;
</span><del>-        RenderBlock (anonymous) at (0,54) size 784x0
</del><span class="cx"> caret: position 5 of child 2 {#text} of child 4 {DIV} of body
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacfastcssgeneratedcontenttablerowgrouptoinlineexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/fast/css-generated-content/table-row-group-to-inline-expected.txt (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/fast/css-generated-content/table-row-group-to-inline-expected.txt        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/LayoutTests/platform/mac/fast/css-generated-content/table-row-group-to-inline-expected.txt        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -10,14 +10,11 @@
</span><span class="cx">         RenderText {#text} at (638,0) size 4x18
</span><span class="cx">           text run at (638,0) width 4: &quot; &quot;
</span><span class="cx">         RenderBR {BR} at (642,14) size 0x0
</span><del>-      RenderBlock {UL} at (0,34) size 784x36
-        RenderListItem {LI} at (40,0) size 744x36
-          RenderBlock (anonymous) at (0,0) size 744x18
-            RenderListMarker at (-17,0) size 7x18: bullet
-          RenderTable at (0,18) size 0x0
-          RenderBlock (anonymous) at (0,18) size 744x18
-            RenderInline (generated) at (0,0) size 31x18
-              RenderText at (0,0) size 31x18
-                text run at (0,0) width 31: &quot;hello&quot;
-            RenderText {#text} at (31,0) size 21x18
-              text run at (31,0) width 21: &quot;test&quot;
</del><ins>+      RenderBlock {UL} at (0,34) size 784x18
+        RenderListItem {LI} at (40,0) size 744x18
+          RenderListMarker at (-17,0) size 7x18: bullet
+          RenderInline (generated) at (0,0) size 31x18
+            RenderText at (0,0) size 31x18
+              text run at (0,0) width 31: &quot;hello&quot;
+          RenderText {#text} at (31,0) size 21x18
+            text run at (31,0) width 21: &quot;test&quot;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformmacfastdynamic011expectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/fast/dynamic/011-expected.txt (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/fast/dynamic/011-expected.txt        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/LayoutTests/platform/mac/fast/dynamic/011-expected.txt        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -4,7 +4,6 @@
</span><span class="cx">   RenderBlock {HTML} at (0,0) size 800x600
</span><span class="cx">     RenderBody {BODY} at (8,8) size 784x584
</span><span class="cx">       RenderBlock (anonymous) at (0,0) size 784x36
</span><del>-        RenderInline {SPAN} at (0,0) size 0x0
</del><span class="cx">         RenderInline {SPAN} at (0,0) size 781x36
</span><span class="cx">           RenderInline {SPAN} at (0,0) size 781x36
</span><span class="cx">             RenderText {#text} at (0,0) size 781x36
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacfastformsformmove3expectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/fast/forms/formmove3-expected.txt (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/fast/forms/formmove3-expected.txt        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/LayoutTests/platform/mac/fast/forms/formmove3-expected.txt        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -6,7 +6,6 @@
</span><span class="cx">       RenderBlock (anonymous) at (0,0) size 784x0
</span><span class="cx">         RenderInline {A} at (0,0) size 0x0
</span><span class="cx">           RenderText {#text} at (0,0) size 0x0
</span><del>-        RenderInline {A} at (0,0) size 0x0
</del><span class="cx">       RenderBlock {DIV} at (0,0) size 784x28
</span><span class="cx">         RenderBlock (anonymous) at (0,0) size 784x0
</span><span class="cx">           RenderInline {A} at (0,0) size 0x0
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacfastformspreserveFormDuringResidualStyleexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/fast/forms/preserveFormDuringResidualStyle-expected.txt (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/fast/forms/preserveFormDuringResidualStyle-expected.txt        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/LayoutTests/platform/mac/fast/forms/preserveFormDuringResidualStyle-expected.txt        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -6,7 +6,6 @@
</span><span class="cx">       RenderBlock (anonymous) at (0,0) size 784x0
</span><span class="cx">         RenderInline {FONT} at (0,0) size 0x0
</span><span class="cx">           RenderText {#text} at (0,0) size 0x0
</span><del>-        RenderInline {FONT} at (0,0) size 0x0
</del><span class="cx">       RenderBlock {CENTER} at (0,0) size 784x25
</span><span class="cx">         RenderBlock (anonymous) at (0,0) size 784x0
</span><span class="cx">           RenderInline {FONT} at (0,0) size 0x0
</span><span class="lines">@@ -22,7 +21,6 @@
</span><span class="cx">         RenderBlock (anonymous) at (0,25) size 784x0
</span><span class="cx">           RenderInline {FONT} at (0,0) size 0x0
</span><span class="cx">           RenderText {#text} at (0,0) size 0x0
</span><del>-      RenderBlock (anonymous) at (0,25) size 784x0
</del><span class="cx">       RenderBlock {DIV} at (0,25) size 784x36
</span><span class="cx">         RenderText {#text} at (0,0) size 775x36
</span><span class="cx">           text run at (0,0) width 775: &quot;Success! This test succeeds if the input named mover is not detached from its form when it is moved around in the DOM to&quot;
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacfastinvalid001expectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/fast/invalid/001-expected.txt (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/fast/invalid/001-expected.txt        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/LayoutTests/platform/mac/fast/invalid/001-expected.txt        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -5,7 +5,6 @@
</span><span class="cx">     RenderBody {BODY} at (8,8) size 784x584
</span><span class="cx">       RenderBlock (anonymous) at (0,0) size 784x0
</span><span class="cx">         RenderInline {B} at (0,0) size 0x0
</span><del>-        RenderInline {B} at (0,0) size 0x0
</del><span class="cx">       RenderBlock {P} at (0,0) size 784x18
</span><span class="cx">         RenderInline {B} at (0,0) size 36x18
</span><span class="cx">           RenderText {#text} at (0,0) size 36x18
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacfastinvalid003expectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/fast/invalid/003-expected.txt (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/fast/invalid/003-expected.txt        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/LayoutTests/platform/mac/fast/invalid/003-expected.txt        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -8,8 +8,6 @@
</span><span class="cx">           RenderInline {I} at (0,0) size 89x18
</span><span class="cx">             RenderText {#text} at (0,0) size 89x18
</span><span class="cx">               text run at (0,0) width 89: &quot;Italic and Red&quot;
</span><del>-        RenderInline {FONT} at (0,0) size 0x18 [color=#FF0000]
-          RenderInline {I} at (0,0) size 0x18
</del><span class="cx">         RenderInline {I} at (0,0) size 0x18
</span><span class="cx">       RenderBlock (anonymous) at (0,34) size 784x18
</span><span class="cx">         RenderBlock {P} at (0,0) size 784x18
</span><span class="lines">@@ -37,8 +35,6 @@
</span><span class="cx">         RenderInline {FONT} at (0,0) size 0x0 [color=#FF0000]
</span><span class="cx">           RenderInline {I} at (0,0) size 0x0
</span><span class="cx">             RenderText {#text} at (0,0) size 0x0
</span><del>-        RenderInline {FONT} at (0,0) size 0x0 [color=#FF0000]
-          RenderInline {I} at (0,0) size 0x0
</del><span class="cx">       RenderBlock {P} at (0,136) size 784x18
</span><span class="cx">         RenderInline {FONT} at (0,0) size 123x18 [color=#FF0000]
</span><span class="cx">           RenderInline {I} at (0,0) size 93x18
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacfastinvalid004expectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/fast/invalid/004-expected.txt (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/fast/invalid/004-expected.txt        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/LayoutTests/platform/mac/fast/invalid/004-expected.txt        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -18,7 +18,6 @@
</span><span class="cx">         RenderInline {FONT} at (0,0) size 0x0
</span><span class="cx">         RenderText {#text} at (0,0) size 0x0
</span><span class="cx">         RenderInline {B} at (0,0) size 0x0
</span><del>-        RenderInline {B} at (0,0) size 0x0
</del><span class="cx">       RenderBlock {P} at (0,206) size 784x18
</span><span class="cx">         RenderInline {B} at (0,0) size 97x18
</span><span class="cx">           RenderInline {I} at (0,0) size 97x18
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacfastinvalid007expectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/fast/invalid/007-expected.txt (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/fast/invalid/007-expected.txt        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/LayoutTests/platform/mac/fast/invalid/007-expected.txt        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -6,8 +6,6 @@
</span><span class="cx">       RenderBlock (anonymous) at (0,0) size 784x0
</span><span class="cx">         RenderInline {LABEL} at (0,0) size 0x0
</span><span class="cx">           RenderInline {A} at (0,0) size 0x0
</span><del>-        RenderInline {LABEL} at (0,0) size 0x0
-          RenderInline {A} at (0,0) size 0x0
</del><span class="cx">       RenderBlock (anonymous) at (0,0) size 784x36
</span><span class="cx">         RenderBlock {DIV} at (0,0) size 784x36
</span><span class="cx">           RenderBlock (anonymous) at (0,0) size 784x18
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacfastinvalid019expectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/fast/invalid/019-expected.txt (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/fast/invalid/019-expected.txt        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/LayoutTests/platform/mac/fast/invalid/019-expected.txt        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -6,8 +6,6 @@
</span><span class="cx">       RenderBlock (anonymous) at (0,0) size 784x0
</span><span class="cx">         RenderInline {B} at (0,0) size 0x0
</span><span class="cx">           RenderInline {NOBR} at (0,0) size 0x0
</span><del>-        RenderInline {B} at (0,0) size 0x0
-          RenderInline {NOBR} at (0,0) size 0x0
</del><span class="cx">       RenderBlock {DIV} at (0,0) size 784x64
</span><span class="cx">         RenderBlock (anonymous) at (0,0) size 784x36
</span><span class="cx">           RenderInline {B} at (0,0) size 763x36
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacfastmulticolspanspanasimmediatechildgeneratedcontentexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/fast/multicol/span/span-as-immediate-child-generated-content-expected.txt (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/fast/multicol/span/span-as-immediate-child-generated-content-expected.txt        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/LayoutTests/platform/mac/fast/multicol/span/span-as-immediate-child-generated-content-expected.txt        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -1,8 +1,8 @@
</span><del>-layer at (0,0) size 785x2744
</del><ins>+layer at (0,0) size 785x2762
</ins><span class="cx">   RenderView at (0,0) size 785x600
</span><del>-layer at (0,0) size 785x2744
-  RenderBlock {HTML} at (0,0) size 785x2744
-    RenderBody {BODY} at (8,16) size 769x2712
</del><ins>+layer at (0,0) size 785x2762
+  RenderBlock {HTML} at (0,0) size 785x2762
+    RenderBody {BODY} at (8,16) size 769x2730
</ins><span class="cx"> layer at (8,16) size 760x420
</span><span class="cx">   RenderBlock {DIV} at (0,0) size 760x420 [border: (5px solid #800000)]
</span><span class="cx">     RenderBlock (anonymous multi-column span) at (5,23) size 750x66
</span><span class="lines">@@ -293,12 +293,16 @@
</span><span class="cx">     RenderBlock (generated) at (0,232) size 367x20 [bgcolor=#FFFF00]
</span><span class="cx">       RenderText at (0,0) size 156x18
</span><span class="cx">         text run at (0,0) width 156: &quot;After Generated Content&quot;
</span><del>-layer at (8,2258) size 760x470
-  RenderBlock {DIV} at (0,2242) size 760x470 [border: (5px solid #800000)]
</del><ins>+layer at (8,2258) size 760x488
+  RenderBlock {DIV} at (0,2242) size 760x488 [border: (5px solid #800000)]
</ins><span class="cx">     RenderBlock (anonymous multi-column span) at (5,271) size 750x66
</span><span class="cx">       RenderBlock {H2} at (0,19) size 750x28 [bgcolor=#EEEEEE]
</span><span class="cx">         RenderText {#text} at (0,0) size 276x28
</span><span class="cx">           text run at (0,0) width 276: &quot;This is a spanning element.&quot;
</span><ins>+    RenderBlock (anonymous) at (5,355) size 750x18
+      RenderBlock {SPAN} at (0,0) size 750x18
+        RenderText {#text} at (0,0) size 154x18
+          text run at (0,0) width 154: &quot;Nulla varius enim ac mi.&quot;
</ins><span class="cx"> layer at (13,2263) size 750x266
</span><span class="cx">   RenderBlock (anonymous multi-column) at (5,5) size 750x266
</span><span class="cx">     RenderBlock (generated) at (0,0) size 367x18 [bgcolor=#FFFF00]
</span><span class="lines">@@ -334,17 +338,14 @@
</span><span class="cx">         text run at (0,144) width 343: &quot;condimentum vestibulum. Suspendisse hendrerit quam&quot;
</span><span class="cx">         text run at (0,162) width 362: &quot;nec felis. Sed varius turpis vitae pede. Lorem ipsum dolor&quot;
</span><span class="cx">         text run at (0,180) width 229: &quot;sit amet, consectetuer adipiscing elit.&quot;
</span><del>-layer at (13,2595) size 750x128
-  RenderBlock (anonymous multi-column) at (5,337) size 750x128
-    RenderBlock (anonymous) at (0,0) size 367x18
-      RenderInline {SPAN} at (0,0) size 354x18
-        RenderText {#text} at (0,0) size 354x18
-          text run at (0,0) width 354: &quot;Lorem ipsum dolor sit amet, consectetuer adipiscing elit.&quot;
-    RenderBlock (anonymous) at (0,18) size 367x18
-      RenderBlock {SPAN} at (0,0) size 367x18
-        RenderText {#text} at (0,0) size 154x18
-          text run at (0,0) width 154: &quot;Nulla varius enim ac mi.&quot;
-    RenderBlock (anonymous) at (0,36) size 367x182
</del><ins>+layer at (13,2595) size 750x18
+  RenderBlock (anonymous multi-column) at (5,337) size 750x18
+    RenderInline {SPAN} at (0,0) size 354x18
+      RenderText {#text} at (0,0) size 354x18
+        text run at (0,0) width 354: &quot;Lorem ipsum dolor sit amet, consectetuer adipiscing elit.&quot;
+layer at (13,2631) size 750x110
+  RenderBlock (anonymous multi-column) at (5,373) size 750x110
+    RenderBlock (anonymous) at (0,0) size 367x182
</ins><span class="cx">       RenderInline {SPAN} at (0,0) size 362x182
</span><span class="cx">         RenderText {#text} at (0,0) size 362x182
</span><span class="cx">           text run at (0,0) width 362: &quot;Curabitur sollicitudin felis quis lectus. Quisque adipiscing&quot;
</span><span class="lines">@@ -352,12 +353,12 @@
</span><span class="cx">           text run at (0,36) width 350: &quot;euismod et, nisi. Sed vitae felis vel orci sagittis aliquam.&quot;
</span><span class="cx">           text run at (0,54) width 332: &quot;Cras convallis adipiscing sem. Nam nonummy enim.&quot;
</span><span class="cx">           text run at (0,72) width 351: &quot;Nullam bibendum lobortis neque. Vestibulum velit orci,&quot;
</span><del>-          text run at (0,92) width 329: &quot;tempus euismod, pretium quis, interdum vitae, nulla.&quot;
</del><ins>+          text run at (0,90) width 329: &quot;tempus euismod, pretium quis, interdum vitae, nulla.&quot;
</ins><span class="cx">           text run at (0,110) width 339: &quot;Phasellus eget ante et tortor condimentum vestibulum.&quot;
</span><span class="cx">           text run at (0,128) width 345: &quot;Suspendisse hendrerit quam nec felis. Sed varius turpis&quot;
</span><span class="cx">           text run at (0,146) width 331: &quot;vitae pede. Lorem ipsum dolor sit amet, consectetuer&quot;
</span><span class="cx">           text run at (0,164) width 91: &quot;adipiscing elit.&quot;
</span><span class="cx">       RenderText {#text} at (0,0) size 0x0
</span><del>-    RenderBlock (generated) at (0,218) size 367x20 [bgcolor=#FFFF00]
</del><ins>+    RenderBlock (generated) at (0,182) size 367x20 [bgcolor=#FFFF00]
</ins><span class="cx">       RenderText at (0,0) size 156x18
</span><span class="cx">         text run at (0,0) width 156: &quot;After Generated Content&quot;
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacfastmulticolspanspanasimmediatecolumnschilddynamicexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/fast/multicol/span/span-as-immediate-columns-child-dynamic-expected.txt (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/fast/multicol/span/span-as-immediate-columns-child-dynamic-expected.txt        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/LayoutTests/platform/mac/fast/multicol/span/span-as-immediate-columns-child-dynamic-expected.txt        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -1,8 +1,8 @@
</span><del>-layer at (0,0) size 785x2572
</del><ins>+layer at (0,0) size 785x2590
</ins><span class="cx">   RenderView at (0,0) size 785x600
</span><del>-layer at (0,0) size 785x2572
-  RenderBlock {HTML} at (0,0) size 785x2572
-    RenderBody {BODY} at (8,16) size 769x2540
</del><ins>+layer at (0,0) size 785x2590
+  RenderBlock {HTML} at (0,0) size 785x2590
+    RenderBody {BODY} at (8,16) size 769x2558
</ins><span class="cx"> layer at (8,16) size 760x382
</span><span class="cx">   RenderBlock {DIV} at (0,0) size 760x382 [border: (5px solid #800000)]
</span><span class="cx">     RenderBlock (anonymous multi-column span) at (5,5) size 750x66
</span><span class="lines">@@ -152,22 +152,21 @@
</span><span class="cx">           text run at (0,0) width 276: &quot;This is a spanning element.&quot;
</span><span class="cx"> layer at (13,1265) size 750x126
</span><span class="cx">   RenderBlock (anonymous multi-column) at (5,5) size 750x126
</span><del>-    RenderBlock (anonymous) at (0,0) size 367x234
-      RenderText {#text} at (0,0) size 363x234
-        text run at (0,0) width 354: &quot;Lorem ipsum dolor sit amet, consectetuer adipiscing elit.&quot;
-        text run at (0,18) width 351: &quot;Nulla varius enim ac mi. Curabitur sollicitudin felis quis&quot;
-        text run at (0,36) width 325: &quot;lectus. Quisque adipiscing rhoncus sem. Proin nulla&quot;
-        text run at (0,54) width 358: &quot;purus, vulputate vel, varius ut, euismod et, nisi. Sed vitae&quot;
-        text run at (0,72) width 343: &quot;felis vel orci sagittis aliquam. Cras convallis adipiscing&quot;
-        text run at (0,90) width 340: &quot;sem. Nam nonummy enim. Nullam bibendum lobortis&quot;
-        text run at (0,108) width 344: &quot;neque. Vestibulum velit orci, tempus euismod, pretium&quot;
-        text run at (0,126) width 343: &quot;quis, interdum vitae, nulla. Phasellus eget ante et tortor&quot;
-        text run at (0,144) width 343: &quot;condimentum vestibulum. Suspendisse hendrerit quam&quot;
-        text run at (0,162) width 362: &quot;nec felis. Sed varius turpis vitae pede. Lorem ipsum dolor&quot;
-        text run at (0,180) width 233: &quot;sit amet, consectetuer adipiscing elit. &quot;
-        text run at (233,180) width 121: &quot;Lorem ipsum dolor&quot;
-        text run at (0,198) width 363: &quot;sit amet, consectetuer adipiscing elit. Nulla varius enim ac&quot;
-        text run at (0,216) width 20: &quot;mi.&quot;
</del><ins>+    RenderText {#text} at (0,0) size 363x234
+      text run at (0,0) width 354: &quot;Lorem ipsum dolor sit amet, consectetuer adipiscing elit.&quot;
+      text run at (0,18) width 351: &quot;Nulla varius enim ac mi. Curabitur sollicitudin felis quis&quot;
+      text run at (0,36) width 325: &quot;lectus. Quisque adipiscing rhoncus sem. Proin nulla&quot;
+      text run at (0,54) width 358: &quot;purus, vulputate vel, varius ut, euismod et, nisi. Sed vitae&quot;
+      text run at (0,72) width 343: &quot;felis vel orci sagittis aliquam. Cras convallis adipiscing&quot;
+      text run at (0,90) width 340: &quot;sem. Nam nonummy enim. Nullam bibendum lobortis&quot;
+      text run at (0,108) width 344: &quot;neque. Vestibulum velit orci, tempus euismod, pretium&quot;
+      text run at (0,126) width 343: &quot;quis, interdum vitae, nulla. Phasellus eget ante et tortor&quot;
+      text run at (0,144) width 343: &quot;condimentum vestibulum. Suspendisse hendrerit quam&quot;
+      text run at (0,162) width 362: &quot;nec felis. Sed varius turpis vitae pede. Lorem ipsum dolor&quot;
+      text run at (0,180) width 233: &quot;sit amet, consectetuer adipiscing elit. &quot;
+      text run at (233,180) width 121: &quot;Lorem ipsum dolor&quot;
+      text run at (0,198) width 363: &quot;sit amet, consectetuer adipiscing elit. Nulla varius enim ac&quot;
+      text run at (0,216) width 20: &quot;mi.&quot;
</ins><span class="cx"> layer at (13,1457) size 750x214
</span><span class="cx">   RenderBlock (anonymous multi-column) at (5,197) size 750x214
</span><span class="cx">     RenderBlock (anonymous) at (0,0) size 367x198
</span><span class="lines">@@ -257,12 +256,16 @@
</span><span class="cx">         text run at (0,144) width 343: &quot;condimentum vestibulum. Suspendisse hendrerit quam&quot;
</span><span class="cx">         text run at (0,162) width 362: &quot;nec felis. Sed varius turpis vitae pede. Lorem ipsum dolor&quot;
</span><span class="cx">         text run at (0,180) width 229: &quot;sit amet, consectetuer adipiscing elit.&quot;
</span><del>-layer at (8,2124) size 760x432
-  RenderBlock {DIV} at (0,2108) size 760x432 [border: (5px solid #800000)]
</del><ins>+layer at (8,2124) size 760x450
+  RenderBlock {DIV} at (0,2108) size 760x450 [border: (5px solid #800000)]
</ins><span class="cx">     RenderBlock (anonymous multi-column span) at (5,253) size 750x66
</span><span class="cx">       RenderBlock {H2} at (0,19) size 750x28 [bgcolor=#EEEEEE]
</span><span class="cx">         RenderText {#text} at (0,0) size 276x28
</span><span class="cx">           text run at (0,0) width 276: &quot;This is a spanning element.&quot;
</span><ins>+    RenderBlock (anonymous) at (5,337) size 750x18
+      RenderBlock {SPAN} at (0,0) size 750x18
+        RenderText {#text} at (0,0) size 154x18
+          text run at (0,0) width 154: &quot;Nulla varius enim ac mi.&quot;
</ins><span class="cx"> layer at (13,2129) size 750x248
</span><span class="cx">   RenderBlock (anonymous multi-column) at (5,5) size 750x248
</span><span class="cx">     RenderBlock {P} at (0,16) size 367x198
</span><span class="lines">@@ -295,27 +298,23 @@
</span><span class="cx">         text run at (0,144) width 343: &quot;condimentum vestibulum. Suspendisse hendrerit quam&quot;
</span><span class="cx">         text run at (0,162) width 362: &quot;nec felis. Sed varius turpis vitae pede. Lorem ipsum dolor&quot;
</span><span class="cx">         text run at (0,180) width 229: &quot;sit amet, consectetuer adipiscing elit.&quot;
</span><del>-layer at (13,2443) size 750x108
-  RenderBlock (anonymous multi-column) at (5,319) size 750x108
-    RenderBlock (anonymous) at (0,0) size 367x18
-      RenderInline {SPAN} at (0,0) size 354x18
-        RenderText {#text} at (0,0) size 354x18
-          text run at (0,0) width 354: &quot;Lorem ipsum dolor sit amet, consectetuer adipiscing elit.&quot;
-    RenderBlock (anonymous) at (0,18) size 367x18
-      RenderBlock {SPAN} at (0,0) size 367x18
-        RenderText {#text} at (0,0) size 154x18
-          text run at (0,0) width 154: &quot;Nulla varius enim ac mi.&quot;
-    RenderBlock (anonymous) at (0,36) size 367x180
-      RenderInline {SPAN} at (0,0) size 362x180
-        RenderText {#text} at (0,0) size 362x180
-          text run at (0,0) width 362: &quot;Curabitur sollicitudin felis quis lectus. Quisque adipiscing&quot;
-          text run at (0,18) width 350: &quot;rhoncus sem. Proin nulla purus, vulputate vel, varius ut,&quot;
-          text run at (0,36) width 350: &quot;euismod et, nisi. Sed vitae felis vel orci sagittis aliquam.&quot;
-          text run at (0,54) width 332: &quot;Cras convallis adipiscing sem. Nam nonummy enim.&quot;
-          text run at (0,72) width 351: &quot;Nullam bibendum lobortis neque. Vestibulum velit orci,&quot;
-          text run at (0,90) width 329: &quot;tempus euismod, pretium quis, interdum vitae, nulla.&quot;
-          text run at (0,108) width 339: &quot;Phasellus eget ante et tortor condimentum vestibulum.&quot;
-          text run at (0,126) width 345: &quot;Suspendisse hendrerit quam nec felis. Sed varius turpis&quot;
-          text run at (0,144) width 331: &quot;vitae pede. Lorem ipsum dolor sit amet, consectetuer&quot;
-          text run at (0,162) width 91: &quot;adipiscing elit.&quot;
-      RenderText {#text} at (0,0) size 0x0
</del><ins>+layer at (13,2443) size 750x18
+  RenderBlock (anonymous multi-column) at (5,319) size 750x18
+    RenderInline {SPAN} at (0,0) size 354x18
+      RenderText {#text} at (0,0) size 354x18
+        text run at (0,0) width 354: &quot;Lorem ipsum dolor sit amet, consectetuer adipiscing elit.&quot;
+layer at (13,2479) size 750x90
+  RenderBlock (anonymous multi-column) at (5,355) size 750x90
+    RenderInline {SPAN} at (0,0) size 362x180
+      RenderText {#text} at (0,0) size 362x180
+        text run at (0,0) width 362: &quot;Curabitur sollicitudin felis quis lectus. Quisque adipiscing&quot;
+        text run at (0,18) width 350: &quot;rhoncus sem. Proin nulla purus, vulputate vel, varius ut,&quot;
+        text run at (0,36) width 350: &quot;euismod et, nisi. Sed vitae felis vel orci sagittis aliquam.&quot;
+        text run at (0,54) width 332: &quot;Cras convallis adipiscing sem. Nam nonummy enim.&quot;
+        text run at (0,72) width 351: &quot;Nullam bibendum lobortis neque. Vestibulum velit orci,&quot;
+        text run at (0,90) width 329: &quot;tempus euismod, pretium quis, interdum vitae, nulla.&quot;
+        text run at (0,108) width 339: &quot;Phasellus eget ante et tortor condimentum vestibulum.&quot;
+        text run at (0,126) width 345: &quot;Suspendisse hendrerit quam nec felis. Sed varius turpis&quot;
+        text run at (0,144) width 331: &quot;vitae pede. Lorem ipsum dolor sit amet, consectetuer&quot;
+        text run at (0,162) width 91: &quot;adipiscing elit.&quot;
+    RenderText {#text} at (0,0) size 0x0
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformmacfastmulticolspanspanasnestedcolumnschilddynamicexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/fast/multicol/span/span-as-nested-columns-child-dynamic-expected.txt (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/fast/multicol/span/span-as-nested-columns-child-dynamic-expected.txt        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/LayoutTests/platform/mac/fast/multicol/span/span-as-nested-columns-child-dynamic-expected.txt        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -131,13 +131,12 @@
</span><span class="cx">         text run at (0,178) width 362: &quot;nec felis. Sed varius turpis vitae pede. Lorem ipsum dolor&quot;
</span><span class="cx">         text run at (0,196) width 229: &quot;sit amet, consectetuer adipiscing elit.&quot;
</span><span class="cx">     RenderBlock {SPAN} at (0,246) size 367x36 [color=#FFFFFF] [bgcolor=#000000]
</span><del>-      RenderBlock (anonymous) at (0,0) size 367x36
-        RenderText {#text} at (0,0) size 354x36
-          text run at (0,0) width 354: &quot;Lorem ipsum dolor sit amet, consectetuer adipiscing elit.&quot;
-          text run at (0,18) width 154: &quot;Nulla varius enim ac mi.&quot;
</del><ins>+      RenderText {#text} at (0,0) size 354x36
+        text run at (0,0) width 354: &quot;Lorem ipsum dolor sit amet, consectetuer adipiscing elit.&quot;
+        text run at (0,18) width 154: &quot;Nulla varius enim ac mi.&quot;
</ins><span class="cx"> layer at (13,1106) size 750x222
</span><span class="cx">   RenderBlock (anonymous multi-column) at (5,229) size 750x222
</span><del>-    RenderBlock {SPAN} at (0,16) size 367x198 [color=#FFFFFF] [bgcolor=#000000]
</del><ins>+    RenderBlock {SPAN} at (0,16) size 367x190 [color=#FFFFFF] [bgcolor=#000000]
</ins><span class="cx">       RenderBlock {P} at (0,0) size 367x198
</span><span class="cx">         RenderText {#text} at (0,0) size 362x198
</span><span class="cx">           text run at (0,0) width 354: &quot;Lorem ipsum dolor sit amet, consectetuer adipiscing elit.&quot;
</span><span class="lines">@@ -151,6 +150,8 @@
</span><span class="cx">           text run at (0,144) width 343: &quot;condimentum vestibulum. Suspendisse hendrerit quam&quot;
</span><span class="cx">           text run at (0,162) width 362: &quot;nec felis. Sed varius turpis vitae pede. Lorem ipsum dolor&quot;
</span><span class="cx">           text run at (0,180) width 229: &quot;sit amet, consectetuer adipiscing elit.&quot;
</span><ins>+      RenderBlock (anonymous) at (0,206) size 367x0
+        RenderText {#text} at (0,0) size 0x0
</ins><span class="cx">     RenderBlock (anonymous) at (0,222) size 367x198
</span><span class="cx">       RenderText {#text} at (0,0) size 362x198
</span><span class="cx">         text run at (0,0) width 354: &quot;Lorem ipsum dolor sit amet, consectetuer adipiscing elit.&quot;
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacfastrubyrubybasemergeblockchildrencrashexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/fast/ruby/ruby-base-merge-block-children-crash-expected.txt (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/fast/ruby/ruby-base-merge-block-children-crash-expected.txt        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/LayoutTests/platform/mac/fast/ruby/ruby-base-merge-block-children-crash-expected.txt        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -6,15 +6,13 @@
</span><span class="cx">       RenderRuby (inline) {RUBY} at (0,0) size 64x16
</span><span class="cx">         RenderRubyRun (anonymous) at (0,0) size 64x16
</span><span class="cx">           RenderRubyBase (anonymous) at (0,0) size 64x16
</span><del>-            RenderBlock (anonymous) at (0,0) size 64x16
-              RenderText {#text} at (0,0) size 64x16
-                text run at (0,0) width 64: &quot;PASS&quot;
-              RenderInline {I} at (0,0) size 0x0
-                RenderText {#text} at (0,0) size 0x0
-            RenderBlock (anonymous) at (0,16) size 64x0
</del><ins>+            RenderText {#text} at (0,0) size 64x16
+              text run at (0,0) width 64: &quot;PASS&quot;
+            RenderInline {I} at (0,0) size 0x0
+              RenderText {#text} at (0,0) size 0x0
+            RenderInline {I} at (0,0) size 0x0
</ins><span class="cx">               RenderInline {SPAN} at (0,0) size 0x0
</span><span class="cx">                 RenderInline {SPAN} at (0,0) size 0x0
</span><span class="cx">                   RenderText {#text} at (0,0) size 0x0
</span><span class="cx">                   RenderText {#text} at (0,0) size 0x0
</span><del>-            RenderBlock (anonymous) at (0,16) size 64x0
-              RenderInline {I} at (0,0) size 0x0
</del><ins>+            RenderInline {I} at (0,0) size 0x0
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformmactablesmozillabugsbug1132351expectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/tables/mozilla/bugs/bug113235-1-expected.txt (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/tables/mozilla/bugs/bug113235-1-expected.txt        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/LayoutTests/platform/mac/tables/mozilla/bugs/bug113235-1-expected.txt        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -13,7 +13,7 @@
</span><span class="cx">               RenderBlock (anonymous) at (2,2) size 715x0
</span><span class="cx">                 RenderInline {FONT} at (0,0) size 0x0
</span><span class="cx">                   RenderText {#text} at (0,0) size 0x0
</span><del>-              RenderBlock (anonymous) at (2,2) size 715x11374
</del><ins>+              RenderBlock (anonymous) at (2,2) size 715x52
</ins><span class="cx">                 RenderTable {TABLE} at (0,0) size 566x52 [border: (1px outset #808080)]
</span><span class="cx">                   RenderTableSection {TBODY} at (1,1) size 564x50
</span><span class="cx">                     RenderTableRow {TR} at (0,2) size 564x22
</span><span class="lines">@@ -25,17 +25,19 @@
</span><span class="cx">                       RenderTableCell {TD} at (2,26) size 111x22 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
</span><span class="cx">                         RenderText {#text} at (2,2) size 107x17
</span><span class="cx">                           text run at (2,2) width 107: &quot;Search again...&quot;
</span><del>-                RenderBlock (anonymous) at (0,52) size 715x15
</del><ins>+              RenderBlock (anonymous) at (2,54) size 715x15
+                RenderInline {FONT} at (0,0) size 715x15
</ins><span class="cx">                   RenderText {#text} at (0,0) size 715x15
</span><span class="cx">                     text run at (0,0) width 332: &quot;This text node only exists once in the original document! &quot;
</span><span class="cx">                     text run at (332,0) width 307: &quot;If it were a large collection of inlines, the page would &quot;
</span><span class="cx">                     text run at (639,0) width 76: &quot;hang forever.&quot;
</span><span class="cx">                   RenderInline {A} at (0,0) size 0x0
</span><del>-                RenderBlock {H2} at (0,83) size 715x23
</del><ins>+              RenderBlock (anonymous) at (2,85) size 715x11291
+                RenderBlock {H2} at (0,0) size 715x23
</ins><span class="cx">                   RenderInline {A} at (0,0) size 169x22
</span><span class="cx">                     RenderText {#text} at (0,0) size 169x22
</span><span class="cx">                       text run at (0,0) width 169: &quot;Table of Contents&quot;
</span><del>-                RenderBlock {P} at (0,122) size 715x150
</del><ins>+                RenderBlock {P} at (0,39) size 715x150
</ins><span class="cx">                   RenderInline {B} at (0,0) size 76x15
</span><span class="cx">                     RenderInline {A} at (0,0) size 76x15 [color=#0000EE]
</span><span class="cx">                       RenderText {#text} at (0,0) size 76x15
</span><span class="lines">@@ -88,7 +90,7 @@
</span><span class="cx">                     RenderText {#text} at (0,135) size 217x15
</span><span class="cx">                       text run at (0,135) width 217: &quot;Related Documentation for This Book&quot;
</span><span class="cx">                   RenderText {#text} at (0,0) size 0x0
</span><del>-                RenderBlock {P} at (0,285) size 715x990
</del><ins>+                RenderBlock {P} at (0,202) size 715x990
</ins><span class="cx">                   RenderInline {B} at (0,0) size 58x15
</span><span class="cx">                     RenderInline {A} at (0,0) size 58x15 [color=#0000EE]
</span><span class="cx">                       RenderText {#text} at (0,0) size 58x15
</span><span class="lines">@@ -477,7 +479,7 @@
</span><span class="cx">                     RenderText {#text} at (0,975) size 100x15
</span><span class="cx">                       text run at (0,975) width 100: &quot;Table Collocation&quot;
</span><span class="cx">                   RenderText {#text} at (0,0) size 0x0
</span><del>-                RenderBlock {P} at (0,1288) size 715x1995
</del><ins>+                RenderBlock {P} at (0,1205) size 715x1995
</ins><span class="cx">                   RenderInline {B} at (0,0) size 123x15
</span><span class="cx">                     RenderInline {A} at (0,0) size 123x15 [color=#0000EE]
</span><span class="cx">                       RenderText {#text} at (0,0) size 123x15
</span><span class="lines">@@ -1268,7 +1270,7 @@
</span><span class="cx">                     RenderText {#text} at (0,1980) size 58x15
</span><span class="cx">                       text run at (0,1980) width 58: &quot;Examples&quot;
</span><span class="cx">                   RenderText {#text} at (0,0) size 0x0
</span><del>-                RenderBlock {P} at (0,3296) size 715x1935
</del><ins>+                RenderBlock {P} at (0,3213) size 715x1935
</ins><span class="cx">                   RenderInline {B} at (0,0) size 62x15
</span><span class="cx">                     RenderInline {A} at (0,0) size 62x15 [color=#0000EE]
</span><span class="cx">                       RenderText {#text} at (0,0) size 62x15
</span><span class="lines">@@ -2035,7 +2037,7 @@
</span><span class="cx">                     RenderText {#text} at (0,1920) size 136x15
</span><span class="cx">                       text run at (0,1920) width 136: &quot;User-Defined Functions&quot;
</span><span class="cx">                   RenderText {#text} at (0,0) size 0x0
</span><del>-                RenderBlock {P} at (0,5244) size 715x345
</del><ins>+                RenderBlock {P} at (0,5161) size 715x345
</ins><span class="cx">                   RenderInline {B} at (0,0) size 48x15
</span><span class="cx">                     RenderInline {A} at (0,0) size 48x15 [color=#0000EE]
</span><span class="cx">                       RenderText {#text} at (0,0) size 48x15
</span><span class="lines">@@ -2166,7 +2168,7 @@
</span><span class="cx">                     RenderText {#text} at (0,330) size 185x15
</span><span class="cx">                       text run at (0,330) width 185: &quot;Examples of a select-statement&quot;
</span><span class="cx">                   RenderText {#text} at (0,0) size 0x0
</span><del>-                RenderBlock {P} at (0,5602) size 715x1770
</del><ins>+                RenderBlock {P} at (0,5519) size 715x1770
</ins><span class="cx">                   RenderInline {B} at (0,0) size 100x15
</span><span class="cx">                     RenderInline {A} at (0,0) size 100x15 [color=#0000EE]
</span><span class="cx">                       RenderText {#text} at (0,0) size 100x15
</span><span class="lines">@@ -2867,7 +2869,7 @@
</span><span class="cx">                     RenderText {#text} at (0,1755) size 75x15
</span><span class="cx">                       text run at (0,1755) width 75: &quot;WHENEVER&quot;
</span><span class="cx">                   RenderText {#text} at (0,0) size 0x0
</span><del>-                RenderBlock {P} at (0,7385) size 715x300
</del><ins>+                RenderBlock {P} at (0,7302) size 715x300
</ins><span class="cx">                   RenderInline {B} at (0,0) size 102x15
</span><span class="cx">                     RenderInline {A} at (0,0) size 102x15 [color=#0000EE]
</span><span class="cx">                       RenderText {#text} at (0,0) size 102x15
</span><span class="lines">@@ -2980,13 +2982,13 @@
</span><span class="cx">                     RenderText {#text} at (0,285) size 105x15
</span><span class="cx">                       text run at (0,285) width 105: &quot;WHILE Statement&quot;
</span><span class="cx">                   RenderText {#text} at (0,0) size 0x0
</span><del>-                RenderBlock {P} at (0,7698) size 715x15
</del><ins>+                RenderBlock {P} at (0,7615) size 715x15
</ins><span class="cx">                   RenderInline {B} at (0,0) size 150x15
</span><span class="cx">                     RenderInline {A} at (0,0) size 150x15 [color=#0000EE]
</span><span class="cx">                       RenderText {#text} at (0,0) size 150x15
</span><span class="cx">                         text run at (0,0) width 150: &quot;Appendix A. SQL Limits&quot;
</span><span class="cx">                   RenderBR {BR} at (150,12) size 0x0
</span><del>-                RenderBlock {P} at (0,7726) size 715x90
</del><ins>+                RenderBlock {P} at (0,7643) size 715x90
</ins><span class="cx">                   RenderInline {B} at (0,0) size 274x15
</span><span class="cx">                     RenderInline {A} at (0,0) size 274x15 [color=#0000EE]
</span><span class="cx">                       RenderText {#text} at (0,0) size 274x15
</span><span class="lines">@@ -3015,7 +3017,7 @@
</span><span class="cx">                     RenderText {#text} at (0,75) size 325x15
</span><span class="cx">                       text run at (0,75) width 325: &quot;DB2 Enterprise - Extended Edition Usage of the SQLCA&quot;
</span><span class="cx">                   RenderText {#text} at (0,0) size 0x0
</span><del>-                RenderBlock {P} at (0,7829) size 715x165
</del><ins>+                RenderBlock {P} at (0,7746) size 715x165
</ins><span class="cx">                   RenderInline {B} at (0,0) size 264x15
</span><span class="cx">                     RenderInline {A} at (0,0) size 264x15 [color=#0000EE]
</span><span class="cx">                       RenderText {#text} at (0,0) size 264x15
</span><span class="lines">@@ -3074,7 +3076,7 @@
</span><span class="cx">                     RenderText {#text} at (0,150) size 153x15
</span><span class="cx">                       text run at (0,150) width 153: &quot;SQLLEN Field for Decimal&quot;
</span><span class="cx">                   RenderText {#text} at (0,0) size 0x0
</span><del>-                RenderBlock {P} at (0,8007) size 715x1095
</del><ins>+                RenderBlock {P} at (0,7924) size 715x1095
</ins><span class="cx">                   RenderInline {B} at (0,0) size 168x15
</span><span class="cx">                     RenderInline {A} at (0,0) size 168x15 [color=#0000EE]
</span><span class="cx">                       RenderText {#text} at (0,0) size 168x15
</span><span class="lines">@@ -3505,7 +3507,7 @@
</span><span class="cx">                     RenderText {#text} at (0,1080) size 116x15
</span><span class="cx">                       text run at (0,1080) width 116: &quot;SYSSTAT.TABLES&quot;
</span><span class="cx">                   RenderText {#text} at (0,0) size 0x0
</span><del>-                RenderBlock {P} at (0,9115) size 715x165
</del><ins>+                RenderBlock {P} at (0,9032) size 715x165
</ins><span class="cx">                   RenderInline {B} at (0,0) size 362x15
</span><span class="cx">                     RenderInline {A} at (0,0) size 362x15 [color=#0000EE]
</span><span class="cx">                       RenderText {#text} at (0,0) size 362x15
</span><span class="lines">@@ -3564,7 +3566,7 @@
</span><span class="cx">                     RenderText {#text} at (0,150) size 147x15
</span><span class="cx">                       text run at (0,150) width 147: &quot;OBJCAT.TRANSFORMS&quot;
</span><span class="cx">                   RenderText {#text} at (0,0) size 0x0
</span><del>-                RenderBlock {P} at (0,9293) size 715x240
</del><ins>+                RenderBlock {P} at (0,9210) size 715x240
</ins><span class="cx">                   RenderInline {B} at (0,0) size 197x15
</span><span class="cx">                     RenderInline {A} at (0,0) size 197x15 [color=#0000EE]
</span><span class="cx">                       RenderText {#text} at (0,0) size 197x15
</span><span class="lines">@@ -3653,7 +3655,7 @@
</span><span class="cx">                     RenderText {#text} at (0,225) size 184x15
</span><span class="cx">                       text run at (0,225) width 184: &quot;Considerations and Restrictions&quot;
</span><span class="cx">                   RenderText {#text} at (0,0) size 0x0
</span><del>-                RenderBlock {P} at (0,9546) size 715x390
</del><ins>+                RenderBlock {P} at (0,9463) size 715x390
</ins><span class="cx">                   RenderInline {B} at (0,0) size 233x15
</span><span class="cx">                     RenderInline {A} at (0,0) size 233x15 [color=#0000EE]
</span><span class="cx">                       RenderText {#text} at (0,0) size 233x15
</span><span class="lines">@@ -3802,7 +3804,7 @@
</span><span class="cx">                     RenderText {#text} at (0,375) size 92x15
</span><span class="cx">                       text run at (0,375) width 92: &quot;Walker Resume&quot;
</span><span class="cx">                   RenderText {#text} at (0,0) size 0x0
</span><del>-                RenderBlock {P} at (0,9949) size 715x90
</del><ins>+                RenderBlock {P} at (0,9866) size 715x90
</ins><span class="cx">                   RenderInline {B} at (0,0) size 369x15
</span><span class="cx">                     RenderInline {A} at (0,0) size 369x15 [color=#0000EE]
</span><span class="cx">                       RenderText {#text} at (0,0) size 369x15
</span><span class="lines">@@ -3831,19 +3833,19 @@
</span><span class="cx">                     RenderText {#text} at (0,75) size 198x15
</span><span class="cx">                       text run at (0,75) width 198: &quot;ISO/ANS SQL92 Reserved Words&quot;
</span><span class="cx">                   RenderText {#text} at (0,0) size 0x0
</span><del>-                RenderBlock {P} at (0,10052) size 715x15
</del><ins>+                RenderBlock {P} at (0,9969) size 715x15
</ins><span class="cx">                   RenderInline {B} at (0,0) size 269x15
</span><span class="cx">                     RenderInline {A} at (0,0) size 269x15 [color=#0000EE]
</span><span class="cx">                       RenderText {#text} at (0,0) size 269x15
</span><span class="cx">                         text run at (0,0) width 269: &quot;Appendix I. Comparison of Isolation Levels&quot;
</span><span class="cx">                   RenderBR {BR} at (269,12) size 0x0
</span><del>-                RenderBlock {P} at (0,10080) size 715x15
</del><ins>+                RenderBlock {P} at (0,9997) size 715x15
</ins><span class="cx">                   RenderInline {B} at (0,0) size 318x15
</span><span class="cx">                     RenderInline {A} at (0,0) size 318x15 [color=#0000EE]
</span><span class="cx">                       RenderText {#text} at (0,0) size 318x15
</span><span class="cx">                         text run at (0,0) width 318: &quot;Appendix J. Interaction of Triggers and Constraints&quot;
</span><span class="cx">                   RenderBR {BR} at (318,12) size 0x0
</span><del>-                RenderBlock {P} at (0,10108) size 715x315
</del><ins>+                RenderBlock {P} at (0,10025) size 715x315
</ins><span class="cx">                   RenderInline {B} at (0,0) size 270x15
</span><span class="cx">                     RenderInline {A} at (0,0) size 270x15 [color=#0000EE]
</span><span class="cx">                       RenderText {#text} at (0,0) size 270x15
</span><span class="lines">@@ -3962,13 +3964,13 @@
</span><span class="cx">                     RenderText {#text} at (0,300) size 225x15
</span><span class="cx">                       text run at (0,300) width 225: &quot;ADVISE_WORKLOAD Table Definition&quot;
</span><span class="cx">                   RenderText {#text} at (0,0) size 0x0
</span><del>-                RenderBlock {P} at (0,10436) size 715x15
</del><ins>+                RenderBlock {P} at (0,10353) size 715x15
</ins><span class="cx">                   RenderInline {B} at (0,0) size 227x15
</span><span class="cx">                     RenderInline {A} at (0,0) size 227x15 [color=#0000EE]
</span><span class="cx">                       RenderText {#text} at (0,0) size 227x15
</span><span class="cx">                         text run at (0,0) width 227: &quot;Appendix L. Explain Register Values&quot;
</span><span class="cx">                   RenderBR {BR} at (227,12) size 0x0
</span><del>-                RenderBlock {P} at (0,10464) size 715x75
</del><ins>+                RenderBlock {P} at (0,10381) size 715x75
</ins><span class="cx">                   RenderInline {B} at (0,0) size 308x15
</span><span class="cx">                     RenderInline {A} at (0,0) size 308x15 [color=#0000EE]
</span><span class="cx">                       RenderText {#text} at (0,0) size 308x15
</span><span class="lines">@@ -3991,7 +3993,7 @@
</span><span class="cx">                     RenderText {#text} at (0,60) size 169x15
</span><span class="cx">                       text run at (0,60) width 169: &quot;Example 3: Controlling Depth&quot;
</span><span class="cx">                   RenderText {#text} at (0,0) size 0x0
</span><del>-                RenderBlock {P} at (0,10552) size 715x75
</del><ins>+                RenderBlock {P} at (0,10469) size 715x75
</ins><span class="cx">                   RenderInline {B} at (0,0) size 187x15
</span><span class="cx">                     RenderInline {A} at (0,0) size 187x15 [color=#0000EE]
</span><span class="cx">                       RenderText {#text} at (0,0) size 187x15
</span><span class="lines">@@ -4014,7 +4016,7 @@
</span><span class="cx">                     RenderText {#text} at (0,60) size 179x15
</span><span class="cx">                       text run at (0,60) width 179: &quot;Querying the Exception Tables&quot;
</span><span class="cx">                   RenderText {#text} at (0,0) size 0x0
</span><del>-                RenderBlock {P} at (0,10640) size 715x330
</del><ins>+                RenderBlock {P} at (0,10557) size 715x330
</ins><span class="cx">                   RenderInline {B} at (0,0) size 420x15
</span><span class="cx">                     RenderInline {A} at (0,0) size 420x15 [color=#0000EE]
</span><span class="cx">                       RenderText {#text} at (0,0) size 420x15
</span><span class="lines">@@ -4139,13 +4141,13 @@
</span><span class="cx">                     RenderText {#text} at (0,315) size 63x15
</span><span class="cx">                       text run at (0,315) width 63: &quot;PREPARE&quot;
</span><span class="cx">                   RenderText {#text} at (0,0) size 0x0
</span><del>-                RenderBlock {P} at (0,10983) size 715x15
</del><ins>+                RenderBlock {P} at (0,10900) size 715x15
</ins><span class="cx">                   RenderInline {B} at (0,0) size 295x15
</span><span class="cx">                     RenderInline {A} at (0,0) size 295x15 [color=#0000EE]
</span><span class="cx">                       RenderText {#text} at (0,0) size 295x15
</span><span class="cx">                         text run at (0,0) width 295: &quot;Appendix P. BNF Specifications for DATALINKs&quot;
</span><span class="cx">                   RenderBR {BR} at (295,12) size 0x0
</span><del>-                RenderBlock {P} at (0,11011) size 715x180
</del><ins>+                RenderBlock {P} at (0,10928) size 715x180
</ins><span class="cx">                   RenderInline {B} at (0,0) size 217x15
</span><span class="cx">                     RenderInline {A} at (0,0) size 217x15 [color=#0000EE]
</span><span class="cx">                       RenderText {#text} at (0,0) size 217x15
</span><span class="lines">@@ -4210,7 +4212,7 @@
</span><span class="cx">                     RenderText {#text} at (0,165) size 168x15
</span><span class="cx">                       text run at (0,165) width 168: &quot;Searching Information Online&quot;
</span><span class="cx">                   RenderText {#text} at (0,0) size 0x0
</span><del>-                RenderBlock {P} at (0,11204) size 715x45
</del><ins>+                RenderBlock {P} at (0,11121) size 715x45
</ins><span class="cx">                   RenderInline {B} at (0,0) size 126x15
</span><span class="cx">                     RenderInline {A} at (0,0) size 126x15 [color=#0000EE]
</span><span class="cx">                       RenderText {#text} at (0,0) size 126x15
</span><span class="lines">@@ -4221,13 +4223,13 @@
</span><span class="cx">                     RenderText {#text} at (0,30) size 69x15
</span><span class="cx">                       text run at (0,30) width 69: &quot;Trademarks&quot;
</span><span class="cx">                   RenderText {#text} at (0,0) size 0x0
</span><del>-                RenderBlock {P} at (0,11262) size 715x15
</del><ins>+                RenderBlock {P} at (0,11179) size 715x15
</ins><span class="cx">                   RenderInline {B} at (0,0) size 34x15
</span><span class="cx">                     RenderInline {A} at (0,0) size 34x15 [color=#0000EE]
</span><span class="cx">                       RenderText {#text} at (0,0) size 34x15
</span><span class="cx">                         text run at (0,0) width 34: &quot;Index&quot;
</span><span class="cx">                   RenderBR {BR} at (34,12) size 0x0
</span><del>-                RenderBlock {P} at (0,11290) size 715x45
</del><ins>+                RenderBlock {P} at (0,11207) size 715x45
</ins><span class="cx">                   RenderInline {B} at (0,0) size 95x15
</span><span class="cx">                     RenderInline {A} at (0,0) size 95x15 [color=#0000EE]
</span><span class="cx">                       RenderText {#text} at (0,0) size 95x15
</span><span class="lines">@@ -4240,7 +4242,7 @@
</span><span class="cx">                   RenderText {#text} at (0,0) size 0x0
</span><span class="cx">                   RenderInline {A} at (0,0) size 0x0
</span><span class="cx">                   RenderText {#text} at (0,0) size 0x0
</span><del>-                RenderTable {TABLE} at (0,11348) size 26x26
</del><ins>+                RenderTable {TABLE} at (0,11265) size 26x26
</ins><span class="cx">                   RenderTableSection {TBODY} at (0,0) size 26x26
</span><span class="cx">                     RenderTableRow {TR} at (0,2) size 26x0
</span><span class="cx">                     RenderTableRow {TR} at (0,4) size 26x20
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmactablesmozillabugsbug647expectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/tables/mozilla/bugs/bug647-expected.txt (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/tables/mozilla/bugs/bug647-expected.txt        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/LayoutTests/platform/mac/tables/mozilla/bugs/bug647-expected.txt        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -18,13 +18,11 @@
</span><span class="cx">                         RenderBlock (anonymous) at (2,2) size 90x0
</span><span class="cx">                           RenderInline {FONT} at (0,0) size 0x0
</span><span class="cx">                             RenderText {#text} at (0,0) size 0x0
</span><del>-                          RenderInline {FONT} at (0,0) size 0x0
</del><span class="cx">                         RenderBlock {CENTER} at (2,2) size 90x13
</span><span class="cx">                           RenderInline {FONT} at (0,0) size 24x13
</span><span class="cx">                             RenderText {#text} at (33,0) size 24x13
</span><span class="cx">                               text run at (33,0) width 24: &quot;inside&quot;
</span><span class="cx">                           RenderText {#text} at (0,0) size 0x0
</span><del>-                        RenderBlock (anonymous) at (2,15) size 90x0
</del><span class="cx">                 RenderBlock (anonymous) at (0,23) size 100x18
</span><span class="cx">                   RenderText {#text} at (10,0) size 80x18
</span><span class="cx">                     text run at (10,0) width 80: &quot;outside table&quot;
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmactablesmozillaotherwa_table_tr_alignexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/tables/mozilla/other/wa_table_tr_align-expected.txt (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/tables/mozilla/other/wa_table_tr_align-expected.txt        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/LayoutTests/platform/mac/tables/mozilla/other/wa_table_tr_align-expected.txt        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -234,8 +234,6 @@
</span><span class="cx">                         text run at (240,0) width 48: &quot; has no&quot;
</span><span class="cx">                         text run at (0,18) width 294: &quot;special effect on the row data since it simply&quot;
</span><span class="cx">                         text run at (0,36) width 319: &quot;reiterates the default horizontal row alignment!&quot;
</span><del>-                  RenderInline {B} at (0,0) size 0x0
-                    RenderInline {FONT} at (0,0) size 0x0 [color=#FF0000]
</del><span class="cx">                 RenderBlock {P} at (2,72) size 336x0
</span><span class="cx">                   RenderInline {B} at (0,0) size 0x0
</span><span class="cx">                     RenderInline {FONT} at (0,0) size 0x0 [color=#FF0000]
</span><span class="lines">@@ -280,8 +278,6 @@
</span><span class="cx">                         text run at (266,0) width 48: &quot; has no&quot;
</span><span class="cx">                         text run at (0,18) width 297: &quot;special effect on the row head since it simply&quot;
</span><span class="cx">                         text run at (0,36) width 319: &quot;reiterates the default horizontal row alignment!&quot;
</span><del>-                  RenderInline {B} at (0,0) size 0x0
-                    RenderInline {FONT} at (0,0) size 0x0 [color=#FF0000]
</del><span class="cx">                 RenderBlock {P} at (2,72) size 336x0
</span><span class="cx">                   RenderInline {B} at (0,0) size 0x0
</span><span class="cx">                     RenderInline {FONT} at (0,0) size 0x0 [color=#FF0000]
</span></span></pre></div>
<a id="trunkLayoutTestspluginspluginremovereadystatechangeexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/plugins/plugin-remove-readystatechange-expected.txt (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/plugins/plugin-remove-readystatechange-expected.txt        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/LayoutTests/plugins/plugin-remove-readystatechange-expected.txt        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -1,3 +1,2 @@
</span><span class="cx"> ALERT: PASS: element could not be re-appended
</span><span class="cx"> This test passes if it does not trip an assert in debug builds. It ensures a readystatechange event can't get dispatched until after a plugin is fully removed.
</span><del>-
</del></span></pre></div>
<a id="trunkLayoutTestssvgcustomsystemlanguagecrashexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/svg/custom/system-language-crash-expected.txt (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/svg/custom/system-language-crash-expected.txt        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/LayoutTests/svg/custom/system-language-crash-expected.txt        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -1,2 +1 @@
</span><span class="cx"> PASS: did not crash.
</span><del>-
</del></span></pre></div>
<a id="trunkLayoutTeststransitionsequivalentbackgroundimagenotransitionhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/transitions/equivalent-background-image-no-transition.html (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/transitions/equivalent-background-image-no-transition.html        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/LayoutTests/transitions/equivalent-background-image-no-transition.html        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -41,7 +41,7 @@
</span><span class="cx">         }
</span><span class="cx">     });
</span><span class="cx"> 
</span><del>-    document.getElementById(&quot;foo&quot;).className=&quot;trans&quot;;
</del><ins>+    setTimeout(function() { document.getElementById(&quot;foo&quot;).className=&quot;trans&quot; }, 0);
</ins><span class="cx">     &lt;/script&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;div id=&quot;result&quot;&gt;
</span></span></pre></div>
<a id="trunkLayoutTeststransitionsrepeatedfiringbackgroundcolorhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/transitions/repeated-firing-background-color.html (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/transitions/repeated-firing-background-color.html        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/LayoutTests/transitions/repeated-firing-background-color.html        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -40,7 +40,7 @@
</span><span class="cx">         checkRunning()
</span><span class="cx">     });
</span><span class="cx"> 
</span><del>-    document.getElementById(&quot;foo&quot;).className=&quot;trans&quot;;
</del><ins>+    setTimeout(function() { document.getElementById(&quot;foo&quot;).className=&quot;trans&quot; }, 0);
</ins><span class="cx"> &lt;/script&gt;
</span><span class="cx"> 
</span><span class="cx"> &lt;div id=&quot;result&quot;&gt;
</span></span></pre></div>
<a id="trunkLayoutTeststransitionstransitiondurationclearedintransitionendcrashhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/transitions/transition-duration-cleared-in-transitionend-crash.html (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/transitions/transition-duration-cleared-in-transitionend-crash.html        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/LayoutTests/transitions/transition-duration-cleared-in-transitionend-crash.html        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -13,7 +13,7 @@
</span><span class="cx">                 if (window.testRunner)
</span><span class="cx">                     testRunner.notifyDone();
</span><span class="cx">             });
</span><del>-            el.style.cssText += ';-webkit-transition:background-color 0.2s;background-color:#fff'
</del><ins>+            setTimeout(function() { el.style.cssText += ';-webkit-transition:background-color 0.2s;background-color:#fff' }, 0);
</ins><span class="cx">         &lt;/script&gt;
</span><span class="cx">     &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/Source/WebCore/ChangeLog        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -1,3 +1,176 @@
</span><ins>+2013-12-19  Antti Koivisto  &lt;antti@apple.com&gt;
+
+        Create render tree lazily
+        https://bugs.webkit.org/show_bug.cgi?id=120685
+
+        Reviewed by Andreas Kling.
+
+        We currently recompute style and construct renderer for each DOM node immediately after they are added to 
+        the tree. This is often inefficient as the style may change immediately afterwards and the work needs to be
+        redone. 
+        
+        With this patch we always compute style and construct render tree lazily, either on style recalc timer or
+        synchronously when they are needed. It also removes the 'attached' bit. If document has render tree then
+        all nodes are conceptually &quot;attached&quot; even if this happens lazily.
+        
+        The patch slightly changes behavior of implicit CSS transitions. A synchronous style change during parsing
+        may not trigger the animation anymore as laziness means we don't see anything changing. This matches Firefox
+        and Chrome in our test cases.
+        
+        * WebCore.exp.in:
+        * bindings/js/JSNodeCustom.cpp:
+        (WebCore::JSNode::insertBefore):
+        (WebCore::JSNode::replaceChild):
+        (WebCore::JSNode::appendChild):
+        
+            All attaching is now lazy, remove AttachLazily.
+
+        * css/CSSComputedStyleDeclaration.cpp:
+        (WebCore::ComputedStyleExtractor::propertyValue):
+        
+            SVG renderers with !isValid() have empty display property value for some reason. Keep the behavior.
+
+        * dom/ContainerNode.cpp:
+        (WebCore::ContainerNode::insertBefore):
+        (WebCore::ContainerNode::parserInsertBefore):
+        (WebCore::ContainerNode::replaceChild):
+        (WebCore::ContainerNode::appendChild):
+        (WebCore::ContainerNode::parserAppendChild):
+        (WebCore::ContainerNode::updateTreeAfterInsertion):
+        * dom/ContainerNode.h:
+        * dom/Document.cpp:
+        (WebCore::Document::~Document):
+        (WebCore::Document::updateStyleIfNeeded):
+        (WebCore::Document::createRenderTree):
+        (WebCore::Document::destroyRenderTree):
+        
+            Remove attach bit maintenance.
+
+        (WebCore::Document::webkitDidExitFullScreenForElement):
+        
+            Do lazy render tree reconstruction after returning from full screen. That is the only reliable way
+            to get the render tree back to decent shape.
+
+        * dom/Element.cpp:
+        (WebCore::Element::isFocusable):
+        
+            Remove pointless !renderer()-&gt;needsLayout() assert.
+
+        (WebCore::Element::addShadowRoot):
+        (WebCore::Element::childShouldCreateRenderer):
+        (WebCore::Element::resetComputedStyle):
+        
+            Take care to reset computed style in all descendants. attachRenderTree no longer does this.
+
+        * dom/Element.h:
+        * dom/Node.cpp:
+        (WebCore::Node::insertBefore):
+        (WebCore::Node::replaceChild):
+        (WebCore::Node::appendChild):
+        (WebCore::Node::setNeedsStyleRecalc):
+        
+            Propagate ReconstructRenderTree.
+
+        (WebCore::Node::attached):
+        
+            Emulate the behavior of old attached bit for now so existing code calling this mostly stays working.
+
+        * dom/Node.h:
+        
+            Add new ReconstructRenderTree value for StyleChangeType.
+
+        * dom/Range.cpp:
+        (WebCore::Range::isPointInRange):
+        (WebCore::Range::comparePoint):
+        (WebCore::Range::compareNode):
+        (WebCore::Range::intersectsNode):
+        * editing/AppendNodeCommand.cpp:
+        (WebCore::AppendNodeCommand::doApply):
+        * editing/CompositeEditCommand.cpp:
+        (WebCore::CompositeEditCommand::canRebalance):
+        * editing/InsertNodeBeforeCommand.cpp:
+        (WebCore::InsertNodeBeforeCommand::doApply):
+        * html/HTMLDetailsElement.cpp:
+        (WebCore::HTMLDetailsElement::didAddUserAgentShadowRoot):
+        * html/HTMLDocument.cpp:
+        (WebCore::HTMLDocument::activeElement):
+        * html/HTMLElement.cpp:
+        (WebCore::HTMLElement::setInnerText):
+        
+            TextControlInnerTextElement always preserves newline even if it doesn't have style yet.
+
+        (WebCore::HTMLElement::supportsFocus):
+        * html/HTMLEmbedElement.cpp:
+        (WebCore::HTMLEmbedElement::parseAttribute):
+        * html/HTMLFormControlElement.cpp:
+        (WebCore::shouldAutofocus):
+        
+            Don't autofocus until we have renderer.
+
+        * html/HTMLFormControlElementWithState.cpp:
+        (WebCore::HTMLFormControlElementWithState::shouldSaveAndRestoreFormControlState):
+        * html/HTMLFrameElementBase.cpp:
+        (WebCore::HTMLFrameElementBase::didNotifySubtreeInsertions):
+        * html/HTMLInputElement.cpp:
+        (WebCore::HTMLInputElement::updateType):
+        
+            Lazy render tree construction.
+
+        (WebCore::HTMLInputElement::parseAttribute):
+        (WebCore::HTMLInputElement::defaultEventHandler):
+        * html/HTMLMediaElement.cpp:
+        (WebCore::HTMLMediaElement::parseAttribute):
+        * html/HTMLObjectElement.cpp:
+        (WebCore::HTMLObjectElement::parseAttribute):
+        * html/HTMLSummaryElement.cpp:
+        (WebCore::HTMLSummaryElement::didAddUserAgentShadowRoot):
+        * html/parser/HTMLConstructionSite.cpp:
+        (WebCore::executeTask):
+        
+            Don't attach renderer after construction.
+
+        * html/parser/HTMLTreeBuilder.cpp:
+        (WebCore::HTMLTreeBuilder::callTheAdoptionAgency):
+        * html/shadow/ContentDistributor.cpp:
+        (WebCore::ContentDistributor::invalidateDistribution):
+        * html/shadow/InsertionPoint.cpp:
+        (WebCore::InsertionPoint::willAttachRenderers):
+        (WebCore::InsertionPoint::willDetachRenderers):
+        * html/shadow/MediaControlElements.cpp:
+        (WebCore::MediaControlTextTrackContainerElement::updateDisplay):
+        * html/shadow/MediaControls.cpp:
+        (WebCore::MediaControls::createTextTrackDisplay):
+        * html/shadow/MediaControlsApple.cpp:
+        (WebCore::MediaControlsApple::createControls):
+        * html/track/TextTrackCue.cpp:
+        (WebCore::TextTrackCue::getDisplayTree):
+        * loader/PlaceholderDocument.cpp:
+        (WebCore::PlaceholderDocument::createRenderTree):
+        * loader/cache/CachedResourceLoader.cpp:
+        (WebCore::CachedResourceLoader::preload):
+        * style/StyleResolveTree.cpp:
+        (WebCore::Style::attachTextRenderer):
+        (WebCore::Style::detachTextRenderer):
+        
+            Remove attached bit maintenance.
+
+        (WebCore::Style::attachChildren):
+        (WebCore::Style::attachShadowRoot):
+        (WebCore::Style::attachRenderTree):
+        (WebCore::Style::detachShadowRoot):
+        (WebCore::Style::detachRenderTree):
+        (WebCore::Style::resolveLocal):
+        * svg/SVGTests.cpp:
+        (WebCore::SVGTests::handleAttributeChange):
+        
+            Make lazy.
+
+        * testing/Internals.cpp:
+        (WebCore::Internals::attached):
+        (WebCore::Internals::elementRenderTreeAsText):
+        (WebCore::Internals::markerAt):
+        (WebCore::Internals::nodesFromRect):
+
</ins><span class="cx"> 2013-12-20  Andreas Kling  &lt;akling@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Devirtualize RenderElement::setStyle().
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCoreexpin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.exp.in (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.exp.in        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/Source/WebCore/WebCore.exp.in        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -257,7 +257,7 @@
</span><span class="cx"> __ZN7WebCore13AXObjectCache23focusedUIElementForPageEPKNS_4PageE
</span><span class="cx"> __ZN7WebCore13AXObjectCache42gAccessibilityEnhancedUserInterfaceEnabledE
</span><span class="cx"> __ZN7WebCore13CharacterData7setDataERKN3WTF6StringERi
</span><del>-__ZN7WebCore13ContainerNode11appendChildEN3WTF10PassRefPtrINS_4NodeEEERiNS_14AttachBehaviorE
</del><ins>+__ZN7WebCore13ContainerNode11appendChildEN3WTF10PassRefPtrINS_4NodeEEERi
</ins><span class="cx"> __ZN7WebCore13ContainerNode11removeChildEPNS_4NodeERi
</span><span class="cx"> __ZN7WebCore13GraphicsLayer11setChildrenERKN3WTF6VectorIPS0_Lm0ENS1_15CrashOnOverflowEEE
</span><span class="cx"> __ZN7WebCore13GraphicsLayer12replaceChildEPS0_S1_
</span><span class="lines">@@ -951,9 +951,9 @@
</span><span class="cx"> __ZN7WebCore4Icon18createIconForFilesERKN3WTF6VectorINS1_6StringELm0ENS1_15CrashOnOverflowEEE
</span><span class="cx"> __ZN7WebCore4IconD1Ev
</span><span class="cx"> __ZN7WebCore4Node10renderRectEPb
</span><del>-__ZN7WebCore4Node11appendChildEN3WTF10PassRefPtrIS0_EERiNS_14AttachBehaviorE
</del><ins>+__ZN7WebCore4Node11appendChildEN3WTF10PassRefPtrIS0_EERi
</ins><span class="cx"> __ZN7WebCore4Node11removeChildEPS0_Ri
</span><del>-__ZN7WebCore4Node12insertBeforeEN3WTF10PassRefPtrIS0_EEPS0_RiNS_14AttachBehaviorE
</del><ins>+__ZN7WebCore4Node12insertBeforeEN3WTF10PassRefPtrIS0_EEPS0_Ri
</ins><span class="cx"> __ZN7WebCore4Node14removedLastRefEv
</span><span class="cx"> __ZN7WebCore4Node14setTextContentERKN3WTF6StringERi
</span><span class="cx"> __ZN7WebCore4Node17stopIgnoringLeaksEv
</span><span class="lines">@@ -1158,6 +1158,7 @@
</span><span class="cx"> __ZN7WebCore8Document16isPageBoxVisibleEi
</span><span class="cx"> __ZN7WebCore8Document16shortcutIconURLsEv
</span><span class="cx"> __ZN7WebCore8Document17setFocusedElementEN3WTF10PassRefPtrINS_7ElementEEENS_14FocusDirectionE
</span><ins>+__ZN7WebCore8Document19updateStyleIfNeededEv
</ins><span class="cx"> __ZN7WebCore8Document20styleResolverChangedENS_23StyleResolverUpdateFlagE
</span><span class="cx"> __ZN7WebCore8Document22createDocumentFragmentEv
</span><span class="cx"> __ZN7WebCore8Document23didAddWheelEventHandlerEv
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSNodeCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSNodeCustom.cpp (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSNodeCustom.cpp        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/Source/WebCore/bindings/js/JSNodeCustom.cpp        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -134,7 +134,7 @@
</span><span class="cx"> JSValue JSNode::insertBefore(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     ExceptionCode ec = 0;
</span><del>-    bool ok = impl().insertBefore(toNode(exec-&gt;argument(0)), toNode(exec-&gt;argument(1)), ec, AttachLazily);
</del><ins>+    bool ok = impl().insertBefore(toNode(exec-&gt;argument(0)), toNode(exec-&gt;argument(1)), ec);
</ins><span class="cx">     setDOMException(exec, ec);
</span><span class="cx">     if (ok)
</span><span class="cx">         return exec-&gt;argument(0);
</span><span class="lines">@@ -144,7 +144,7 @@
</span><span class="cx"> JSValue JSNode::replaceChild(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     ExceptionCode ec = 0;
</span><del>-    bool ok = impl().replaceChild(toNode(exec-&gt;argument(0)), toNode(exec-&gt;argument(1)), ec, AttachLazily);
</del><ins>+    bool ok = impl().replaceChild(toNode(exec-&gt;argument(0)), toNode(exec-&gt;argument(1)), ec);
</ins><span class="cx">     setDOMException(exec, ec);
</span><span class="cx">     if (ok)
</span><span class="cx">         return exec-&gt;argument(1);
</span><span class="lines">@@ -164,7 +164,7 @@
</span><span class="cx"> JSValue JSNode::appendChild(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx">     ExceptionCode ec = 0;
</span><del>-    bool ok = impl().appendChild(toNode(exec-&gt;argument(0)), ec, AttachLazily);
</del><ins>+    bool ok = impl().appendChild(toNode(exec-&gt;argument(0)), ec);
</ins><span class="cx">     setDOMException(exec, ec);
</span><span class="cx">     if (ok)
</span><span class="cx">         return exec-&gt;argument(0);
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSComputedStyleDeclarationcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -58,6 +58,7 @@
</span><span class="cx"> #include &quot;RenderBox.h&quot;
</span><span class="cx"> #include &quot;RenderStyle.h&quot;
</span><span class="cx"> #include &quot;RenderView.h&quot;
</span><ins>+#include &quot;SVGElement.h&quot;
</ins><span class="cx"> #include &quot;StyleInheritedData.h&quot;
</span><span class="cx"> #include &quot;StyleProperties.h&quot;
</span><span class="cx"> #include &quot;StylePropertyShorthand.h&quot;
</span><span class="lines">@@ -1757,9 +1758,14 @@
</span><span class="cx">             styledNode = this-&gt;styledNode();
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        style = computeRenderStyleForProperty(styledNode, m_pseudoElementSpecifier, propertyID);
</del><span class="cx">         renderer = styledNode-&gt;renderer();
</span><span class="cx"> 
</span><ins>+#if ENABLE(SVG)
+        if (propertyID == CSSPropertyDisplay &amp;&amp; !renderer &amp;&amp; isSVGElement(*styledNode) &amp;&amp; !toSVGElement(*styledNode).isValid())
+            return nullptr;
+#endif
+        style = computeRenderStyleForProperty(styledNode, m_pseudoElementSpecifier, propertyID);
+
</ins><span class="cx">         // FIXME: Some of these cases could be narrowed down or optimized better.
</span><span class="cx">         forceFullLayout = isLayoutDependent(propertyID, style.get(), renderer)
</span><span class="cx">             || styledNode-&gt;isInShadowTree()
</span></span></pre></div>
<a id="trunkSourceWebCoredomContainerNodecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/ContainerNode.cpp (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/ContainerNode.cpp        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/Source/WebCore/dom/ContainerNode.cpp        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -258,7 +258,7 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool ContainerNode::insertBefore(PassRefPtr&lt;Node&gt; newChild, Node* refChild, ExceptionCode&amp; ec, AttachBehavior attachBehavior)
</del><ins>+bool ContainerNode::insertBefore(PassRefPtr&lt;Node&gt; newChild, Node* refChild, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><span class="cx">     // Check that this node is not &quot;floating&quot;.
</span><span class="cx">     // If it is, it can be deleted as a side effect of sending mutation events.
</span><span class="lines">@@ -270,7 +270,7 @@
</span><span class="cx"> 
</span><span class="cx">     // insertBefore(node, 0) is equivalent to appendChild(node)
</span><span class="cx">     if (!refChild)
</span><del>-        return appendChild(newChild, ec, attachBehavior);
</del><ins>+        return appendChild(newChild, ec);
</ins><span class="cx"> 
</span><span class="cx">     // Make sure adding the new child is OK.
</span><span class="cx">     if (!checkAddChild(this, newChild.get(), ec))
</span><span class="lines">@@ -317,7 +317,7 @@
</span><span class="cx"> 
</span><span class="cx">         insertBeforeCommon(next.get(), child);
</span><span class="cx"> 
</span><del>-        updateTreeAfterInsertion(child, attachBehavior);
</del><ins>+        updateTreeAfterInsertion(child);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     dispatchSubtreeModifiedEvent();
</span><span class="lines">@@ -396,9 +396,11 @@
</span><span class="cx">     notifyChildInserted(*newChild, ChildChangeSourceParser);
</span><span class="cx"> 
</span><span class="cx">     ChildNodeInsertionNotifier(*this).notify(*newChild);
</span><ins>+
+    newChild-&gt;setNeedsStyleRecalc(ReconstructRenderTree);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool ContainerNode::replaceChild(PassRefPtr&lt;Node&gt; newChild, Node* oldChild, ExceptionCode&amp; ec, AttachBehavior attachBehavior)
</del><ins>+bool ContainerNode::replaceChild(PassRefPtr&lt;Node&gt; newChild, Node* oldChild, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><span class="cx">     // Check that this node is not &quot;floating&quot;.
</span><span class="cx">     // If it is, it can be deleted as a side effect of sending mutation events.
</span><span class="lines">@@ -478,7 +480,7 @@
</span><span class="cx">                 appendChildToContainer(&amp;child, *this);
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        updateTreeAfterInsertion(child, attachBehavior);
</del><ins>+        updateTreeAfterInsertion(child);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     dispatchSubtreeModifiedEvent();
</span><span class="lines">@@ -674,7 +676,7 @@
</span><span class="cx">     dispatchSubtreeModifiedEvent();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool ContainerNode::appendChild(PassRefPtr&lt;Node&gt; newChild, ExceptionCode&amp; ec, AttachBehavior attachBehavior)
</del><ins>+bool ContainerNode::appendChild(PassRefPtr&lt;Node&gt; newChild, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><span class="cx">     Ref&lt;ContainerNode&gt; protect(*this);
</span><span class="cx"> 
</span><span class="lines">@@ -724,7 +726,7 @@
</span><span class="cx">             appendChildToContainer(&amp;child, *this);
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        updateTreeAfterInsertion(child, attachBehavior);
</del><ins>+        updateTreeAfterInsertion(child);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     dispatchSubtreeModifiedEvent();
</span><span class="lines">@@ -757,6 +759,8 @@
</span><span class="cx">     notifyChildInserted(*newChild, ChildChangeSourceParser);
</span><span class="cx"> 
</span><span class="cx">     ChildNodeInsertionNotifier(*this).notify(*newChild);
</span><ins>+
+    newChild-&gt;setNeedsStyleRecalc(ReconstructRenderTree);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void ContainerNode::suspendPostAttachCallbacks()
</span><span class="lines">@@ -1065,7 +1069,7 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ContainerNode::updateTreeAfterInsertion(Node&amp; child, AttachBehavior attachBehavior)
</del><ins>+void ContainerNode::updateTreeAfterInsertion(Node&amp; child)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(child.refCount());
</span><span class="cx"> 
</span><span class="lines">@@ -1075,19 +1079,7 @@
</span><span class="cx"> 
</span><span class="cx">     ChildNodeInsertionNotifier(*this).notify(child);
</span><span class="cx"> 
</span><del>-    // FIXME: Attachment should be the first operation in this function, but some code
-    // (for example, HTMLFormControlElement's autofocus support) requires this ordering.
-    if (attached() &amp;&amp; !child.attached() &amp;&amp; child.parentNode() == this) {
-        if (attachBehavior == AttachLazily) {
-            if (child.isElementNode())
-                toElement(child).lazyAttach();
-            else if (child.isTextNode()) {
-                child.setAttached(true);
-                child.setNeedsStyleRecalc();
-            }
-        } else
-            attachChild(child);
-    }
</del><ins>+    child.setNeedsStyleRecalc(ReconstructRenderTree);
</ins><span class="cx"> 
</span><span class="cx">     dispatchChildInsertionEvents(child);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoredomContainerNodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/ContainerNode.h (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/ContainerNode.h        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/Source/WebCore/dom/ContainerNode.h        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -90,10 +90,10 @@
</span><span class="cx">     unsigned childNodeCount() const;
</span><span class="cx">     Node* childNode(unsigned index) const;
</span><span class="cx"> 
</span><del>-    bool insertBefore(PassRefPtr&lt;Node&gt; newChild, Node* refChild, ExceptionCode&amp; = ASSERT_NO_EXCEPTION, AttachBehavior = AttachNow);
-    bool replaceChild(PassRefPtr&lt;Node&gt; newChild, Node* oldChild, ExceptionCode&amp; = ASSERT_NO_EXCEPTION, AttachBehavior = AttachNow);
</del><ins>+    bool insertBefore(PassRefPtr&lt;Node&gt; newChild, Node* refChild, ExceptionCode&amp; = ASSERT_NO_EXCEPTION);
+    bool replaceChild(PassRefPtr&lt;Node&gt; newChild, Node* oldChild, ExceptionCode&amp; = ASSERT_NO_EXCEPTION);
</ins><span class="cx">     bool removeChild(Node* child, ExceptionCode&amp; = ASSERT_NO_EXCEPTION);
</span><del>-    bool appendChild(PassRefPtr&lt;Node&gt; newChild, ExceptionCode&amp; = ASSERT_NO_EXCEPTION, AttachBehavior = AttachNow);
</del><ins>+    bool appendChild(PassRefPtr&lt;Node&gt; newChild, ExceptionCode&amp; = ASSERT_NO_EXCEPTION);
</ins><span class="cx"> 
</span><span class="cx">     // These methods are only used during parsing.
</span><span class="cx">     // They don't send DOM mutation events or handle reparenting.
</span><span class="lines">@@ -168,7 +168,7 @@
</span><span class="cx">     void notifyChildInserted(Node&amp; child, ChildChangeSource);
</span><span class="cx">     void notifyChildRemoved(Node&amp; child, Node* previousSibling, Node* nextSibling, ChildChangeSource);
</span><span class="cx"> 
</span><del>-    void updateTreeAfterInsertion(Node&amp; child, AttachBehavior);
</del><ins>+    void updateTreeAfterInsertion(Node&amp; child);
</ins><span class="cx"> 
</span><span class="cx">     bool isContainerNode() const WTF_DELETED_FUNCTION;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Document.cpp (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Document.cpp        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/Source/WebCore/dom/Document.cpp        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -559,7 +559,6 @@
</span><span class="cx">     ASSERT(!renderView());
</span><span class="cx">     ASSERT(!m_inPageCache);
</span><span class="cx">     ASSERT(m_ranges.isEmpty());
</span><del>-    ASSERT(!m_styleRecalcTimer.isActive());
</del><span class="cx">     ASSERT(!m_parentTreeScope);
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(DEVICE_ORIENTATION) &amp;&amp; PLATFORM(IOS)
</span><span class="lines">@@ -1795,8 +1794,11 @@
</span><span class="cx"> void Document::updateStyleIfNeeded()
</span><span class="cx"> {
</span><span class="cx">     ASSERT(isMainThread());
</span><del>-    ASSERT(!view() || (!view()-&gt;isInLayout() &amp;&amp; !view()-&gt;isPainting()));
</del><ins>+    ASSERT(!view() || !view()-&gt;isPainting());
</ins><span class="cx"> 
</span><ins>+    if (!view() || view()-&gt;isInLayout())
+        return;
+
</ins><span class="cx">     if (m_optimizedStyleSheetUpdateTimer.isActive())
</span><span class="cx">         styleResolverChanged(RecalcStyleIfNeeded);
</span><span class="cx"> 
</span><span class="lines">@@ -1965,8 +1967,6 @@
</span><span class="cx"> 
</span><span class="cx">     if (m_documentElement)
</span><span class="cx">         Style::attachRenderTree(*m_documentElement);
</span><del>-
-    setAttached(true);
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static void pageWheelEventHandlerCountChanged(Page&amp; page)
</span><span class="lines">@@ -2059,7 +2059,6 @@
</span><span class="cx">         Style::detachRenderTree(*m_documentElement);
</span><span class="cx"> 
</span><span class="cx">     clearChildNeedsStyleRecalc();
</span><del>-    setAttached(false);
</del><span class="cx"> 
</span><span class="cx">     unscheduleStyleRecalc();
</span><span class="cx"> 
</span><span class="lines">@@ -5440,6 +5439,9 @@
</span><span class="cx">     if (m_fullScreenRenderer)
</span><span class="cx">         m_fullScreenRenderer-&gt;unwrapRenderer();
</span><span class="cx"> 
</span><ins>+    if (m_fullScreenElement-&gt;parentNode())
+        m_fullScreenElement-&gt;parentNode()-&gt;setNeedsStyleRecalc(ReconstructRenderTree);
+
</ins><span class="cx">     m_fullScreenElement = nullptr;
</span><span class="cx">     scheduleForcedStyleRecalc();
</span><span class="cx">     
</span></span></pre></div>
<a id="trunkSourceWebCoredomElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Element.cpp (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Element.cpp        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/Source/WebCore/dom/Element.cpp        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -36,6 +36,7 @@
</span><span class="cx"> #include &quot;ContainerNodeAlgorithms.h&quot;
</span><span class="cx"> #include &quot;DOMTokenList.h&quot;
</span><span class="cx"> #include &quot;DocumentSharedObjectPool.h&quot;
</span><ins>+#include &quot;ElementIterator.h&quot;
</ins><span class="cx"> #include &quot;ElementRareData.h&quot;
</span><span class="cx"> #include &quot;EventDispatcher.h&quot;
</span><span class="cx"> #include &quot;FlowThreadController.h&quot;
</span><span class="lines">@@ -461,12 +462,10 @@
</span><span class="cx">         return e-&gt;renderer() &amp;&amp; e-&gt;renderer()-&gt;style().visibility() == VISIBLE;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (renderer())
-        ASSERT(!renderer()-&gt;needsLayout());
-    else {
</del><ins>+    if (!renderer()) {
</ins><span class="cx">         // If the node is in a display:none tree it might say it needs style recalc but
</span><span class="cx">         // the whole document is actually up to date.
</span><del>-        ASSERT(!document().childNeedsStyleRecalc());
</del><ins>+        ASSERT(!needsStyleRecalc() || !document().childNeedsStyleRecalc());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // FIXME: Even if we are not visible, we might have a child that is visible.
</span><span class="lines">@@ -1448,28 +1447,6 @@
</span><span class="cx">         document().renderView()-&gt;flowThreadController().unregisterNamedFlowContentElement(*this);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void Element::lazyReattach(ShouldSetAttached shouldSetAttached)
-{
-    if (attached())
-        Style::detachRenderTreeInReattachMode(*this);
-    lazyAttach(shouldSetAttached);
-}
-
-void Element::lazyAttach(ShouldSetAttached shouldSetAttached)
-{
-    for (Node* node = this; node; node = NodeTraversal::next(node, this)) {
-        if (!node-&gt;isTextNode() &amp;&amp; !node-&gt;isElementNode())
-            continue;
-        if (node-&gt;hasChildNodes())
-            node-&gt;setChildNeedsStyleRecalc();
-        if (node-&gt;isElementNode())
-            toElement(node)-&gt;setStyleChange(FullStyleChange);
-        if (shouldSetAttached == SetAttached)
-            node-&gt;setAttached(true);
-    }
-    markAncestorsWithChildNeedsStyleRecalc();
-}
-
</del><span class="cx"> PassRef&lt;RenderStyle&gt; Element::styleForRenderer()
</span><span class="cx"> {
</span><span class="cx">     if (hasCustomStyleResolveCallbacks()) {
</span><span class="lines">@@ -1523,7 +1500,7 @@
</span><span class="cx">     // Set some flag here and recreate shadow hosts' renderer in
</span><span class="cx">     // Element::recalcStyle.
</span><span class="cx">     if (attached())
</span><del>-        lazyReattach();
</del><ins>+        setNeedsStyleRecalc(ReconstructRenderTree);
</ins><span class="cx"> 
</span><span class="cx">     InspectorInstrumentation::didPushShadowRoot(this, shadowRoot);
</span><span class="cx"> }
</span><span class="lines">@@ -2533,8 +2510,10 @@
</span><span class="cx"> {
</span><span class="cx"> #if ENABLE(SVG)
</span><span class="cx">     // Only create renderers for SVG elements whose parents are SVG elements, or for proper &lt;svg xmlns=&quot;svgNS&quot;&gt; subdocuments.
</span><del>-    if (child.isSVGElement())
-        return child.hasTagName(SVGNames::svgTag) || isSVGElement();
</del><ins>+    if (child.isSVGElement()) {
+        ASSERT(!isSVGElement());
+        return child.hasTagName(SVGNames::svgTag) &amp;&amp; toSVGElement(child).isValid();
+    }
</ins><span class="cx"> #endif
</span><span class="cx">     return ContainerNode::childShouldCreateRenderer(child);
</span><span class="cx"> }
</span><span class="lines">@@ -2952,9 +2931,13 @@
</span><span class="cx"> 
</span><span class="cx"> void Element::resetComputedStyle()
</span><span class="cx"> {
</span><del>-    if (!hasRareData())
</del><ins>+    if (!hasRareData() || !elementRareData()-&gt;computedStyle())
</ins><span class="cx">         return;
</span><span class="cx">     elementRareData()-&gt;resetComputedStyle();
</span><ins>+    for (auto&amp; child : elementDescendants(*this)) {
+        if (child.hasRareData())
+            child.elementRareData()-&gt;resetComputedStyle();
+    }
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void Element::clearStyleDerivedDataBeforeDetachingRenderer()
</span></span></pre></div>
<a id="trunkSourceWebCoredomElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Element.h (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Element.h        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/Source/WebCore/dom/Element.h        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -304,12 +304,7 @@
</span><span class="cx"> 
</span><span class="cx">     virtual void copyNonAttributePropertiesFromElement(const Element&amp;) { }
</span><span class="cx"> 
</span><del>-    enum ShouldSetAttached {
-        SetAttached,
-        DoNotSetAttached
-    };
-    void lazyAttach(ShouldSetAttached = SetAttached);
-    void lazyReattach(ShouldSetAttached = SetAttached);
</del><ins>+    void lazyReattach();
</ins><span class="cx"> 
</span><span class="cx">     virtual RenderElement* createRenderer(PassRef&lt;RenderStyle&gt;);
</span><span class="cx">     virtual bool rendererIsNeeded(const RenderStyle&amp;);
</span></span></pre></div>
<a id="trunkSourceWebCoredomNodecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Node.cpp (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Node.cpp        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/Source/WebCore/dom/Node.cpp        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -420,22 +420,22 @@
</span><span class="cx">     return n;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool Node::insertBefore(PassRefPtr&lt;Node&gt; newChild, Node* refChild, ExceptionCode&amp; ec, AttachBehavior attachBehavior)
</del><ins>+bool Node::insertBefore(PassRefPtr&lt;Node&gt; newChild, Node* refChild, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><span class="cx">     if (!isContainerNode()) {
</span><span class="cx">         ec = HIERARCHY_REQUEST_ERR;
</span><span class="cx">         return false;
</span><span class="cx">     }
</span><del>-    return toContainerNode(this)-&gt;insertBefore(newChild, refChild, ec, attachBehavior);
</del><ins>+    return toContainerNode(this)-&gt;insertBefore(newChild, refChild, ec);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool Node::replaceChild(PassRefPtr&lt;Node&gt; newChild, Node* oldChild, ExceptionCode&amp; ec, AttachBehavior attachBehavior)
</del><ins>+bool Node::replaceChild(PassRefPtr&lt;Node&gt; newChild, Node* oldChild, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><span class="cx">     if (!isContainerNode()) {
</span><span class="cx">         ec = HIERARCHY_REQUEST_ERR;
</span><span class="cx">         return false;
</span><span class="cx">     }
</span><del>-    return toContainerNode(this)-&gt;replaceChild(newChild, oldChild, ec, attachBehavior);
</del><ins>+    return toContainerNode(this)-&gt;replaceChild(newChild, oldChild, ec);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool Node::removeChild(Node* oldChild, ExceptionCode&amp; ec)
</span><span class="lines">@@ -447,13 +447,13 @@
</span><span class="cx">     return toContainerNode(this)-&gt;removeChild(oldChild, ec);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool Node::appendChild(PassRefPtr&lt;Node&gt; newChild, ExceptionCode&amp; ec, AttachBehavior attachBehavior)
</del><ins>+bool Node::appendChild(PassRefPtr&lt;Node&gt; newChild, ExceptionCode&amp; ec)
</ins><span class="cx"> {
</span><span class="cx">     if (!isContainerNode()) {
</span><span class="cx">         ec = HIERARCHY_REQUEST_ERR;
</span><span class="cx">         return false;
</span><span class="cx">     }
</span><del>-    return toContainerNode(this)-&gt;appendChild(newChild, ec, attachBehavior);
</del><ins>+    return toContainerNode(this)-&gt;appendChild(newChild, ec);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void Node::remove(ExceptionCode&amp; ec)
</span><span class="lines">@@ -673,14 +673,14 @@
</span><span class="cx"> void Node::setNeedsStyleRecalc(StyleChangeType changeType)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(changeType != NoStyleChange);
</span><del>-    if (!attached()) // changed compared to what?
</del><ins>+    if (changeType != ReconstructRenderTree &amp;&amp; !attached()) // changed compared to what?
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     StyleChangeType existingChangeType = styleChangeType();
</span><span class="cx">     if (changeType &gt; existingChangeType)
</span><span class="cx">         setStyleChange(changeType);
</span><span class="cx"> 
</span><del>-    if (existingChangeType == NoStyleChange)
</del><ins>+    if (existingChangeType == NoStyleChange || changeType == ReconstructRenderTree)
</ins><span class="cx">         markAncestorsWithChildNeedsStyleRecalc();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -2297,6 +2297,13 @@
</span><span class="cx">         node-&gt;incrementConnectedSubframeCount(count);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+bool Node::attached() const
+{
+    // FIXME: This should go away along with the whole vague 'attached' concept. The conditions here produce
+    // roughly the old behavior based on an explicit attached bit.
+    return inDocument() &amp;&amp; document().renderView() &amp;&amp; (renderer() || styleChangeType() != ReconstructRenderTree);
+}
+
</ins><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><span class="cx"> #ifndef NDEBUG
</span></span></pre></div>
<a id="trunkSourceWebCoredomNodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Node.h (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Node.h        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/Source/WebCore/dom/Node.h        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -97,7 +97,8 @@
</span><span class="cx">     NoStyleChange = 0, 
</span><span class="cx">     InlineStyleChange = 1 &lt;&lt; nodeStyleChangeShift, 
</span><span class="cx">     FullStyleChange = 2 &lt;&lt; nodeStyleChangeShift, 
</span><del>-    SyntheticStyleChange = 3 &lt;&lt; nodeStyleChangeShift
</del><ins>+    SyntheticStyleChange = 3 &lt;&lt; nodeStyleChangeShift,
+    ReconstructRenderTree = 4 &lt;&lt; nodeStyleChangeShift,
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> class NodeRareDataBase {
</span><span class="lines">@@ -114,11 +115,6 @@
</span><span class="cx">     RenderObject* m_renderer;
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-enum AttachBehavior {
-    AttachNow,
-    AttachLazily,
-};
-
</del><span class="cx"> class Node : public EventTarget, public ScriptWrappable, public TreeShared&lt;Node&gt; {
</span><span class="cx">     friend class Document;
</span><span class="cx">     friend class TreeScope;
</span><span class="lines">@@ -189,10 +185,10 @@
</span><span class="cx">     // These should all actually return a node, but this is only important for language bindings,
</span><span class="cx">     // which will already know and hold a ref on the right node to return. Returning bool allows
</span><span class="cx">     // these methods to be more efficient since they don't need to return a ref
</span><del>-    bool insertBefore(PassRefPtr&lt;Node&gt; newChild, Node* refChild, ExceptionCode&amp;, AttachBehavior = AttachNow);
-    bool replaceChild(PassRefPtr&lt;Node&gt; newChild, Node* oldChild, ExceptionCode&amp;, AttachBehavior = AttachNow);
</del><ins>+    bool insertBefore(PassRefPtr&lt;Node&gt; newChild, Node* refChild, ExceptionCode&amp;);
+    bool replaceChild(PassRefPtr&lt;Node&gt; newChild, Node* oldChild, ExceptionCode&amp;);
</ins><span class="cx">     bool removeChild(Node* child, ExceptionCode&amp;);
</span><del>-    bool appendChild(PassRefPtr&lt;Node&gt; newChild, ExceptionCode&amp;, AttachBehavior = AttachNow);
</del><ins>+    bool appendChild(PassRefPtr&lt;Node&gt; newChild, ExceptionCode&amp;);
</ins><span class="cx"> 
</span><span class="cx">     void remove(ExceptionCode&amp;);
</span><span class="cx">     bool hasChildNodes() const { return firstChild(); }
</span><span class="lines">@@ -313,8 +309,7 @@
</span><span class="cx">     bool isUserActionElement() const { return getFlag(IsUserActionElement); }
</span><span class="cx">     void setUserActionElement(bool flag) { setFlag(flag, IsUserActionElement); }
</span><span class="cx"> 
</span><del>-    bool attached() const { return getFlag(IsAttachedFlag); }
-    void setAttached(bool flag) { setFlag(flag, IsAttachedFlag); }
</del><ins>+    bool attached() const;
</ins><span class="cx">     bool needsStyleRecalc() const { return styleChangeType() != NoStyleChange; }
</span><span class="cx">     StyleChangeType styleChangeType() const { return static_cast&lt;StyleChangeType&gt;(m_nodeFlags &amp; StyleChangeMask); }
</span><span class="cx">     bool childNeedsStyleRecalc() const { return getFlag(ChildNeedsStyleRecalcFlag); }
</span><span class="lines">@@ -572,7 +567,6 @@
</span><span class="cx">         IsStyledElementFlag = 1 &lt;&lt; 3,
</span><span class="cx">         IsHTMLFlag = 1 &lt;&lt; 4,
</span><span class="cx">         IsSVGFlag = 1 &lt;&lt; 5,
</span><del>-        IsAttachedFlag = 1 &lt;&lt; 6,
</del><span class="cx">         ChildNeedsStyleRecalcFlag = 1 &lt;&lt; 7,
</span><span class="cx">         InDocumentFlag = 1 &lt;&lt; 8,
</span><span class="cx">         IsLinkFlag = 1 &lt;&lt; 9,
</span><span class="lines">@@ -584,8 +578,7 @@
</span><span class="cx">         // be stored in the same memory word as the Node bits above.
</span><span class="cx">         IsParsingChildrenFinishedFlag = 1 &lt;&lt; 13, // Element
</span><span class="cx"> 
</span><del>-        StyleChangeMask = 1 &lt;&lt; nodeStyleChangeShift | 1 &lt;&lt; (nodeStyleChangeShift + 1),
-        SelfOrAncestorHasDirAutoFlag = 1 &lt;&lt; 16,
</del><ins>+        StyleChangeMask = 1 &lt;&lt; nodeStyleChangeShift | 1 &lt;&lt; (nodeStyleChangeShift + 1) | 1 &lt;&lt; (nodeStyleChangeShift + 2),
</ins><span class="cx">         IsEditingTextFlag = 1 &lt;&lt; 17,
</span><span class="cx">         InNamedFlowFlag = 1 &lt;&lt; 18,
</span><span class="cx">         HasSyntheticAttrChildNodesFlag = 1 &lt;&lt; 19,
</span><span class="lines">@@ -600,6 +593,8 @@
</span><span class="cx">         ChildrenAffectedByDirectAdjacentRulesFlag = 1 &lt;&lt; 27,
</span><span class="cx">         ChildrenAffectedByHoverRulesFlag = 1 &lt;&lt; 28,
</span><span class="cx"> 
</span><ins>+        SelfOrAncestorHasDirAutoFlag = 1 &lt;&lt; 29,
+
</ins><span class="cx">         DefaultNodeFlags = IsParsingChildrenFinishedFlag
</span><span class="cx">     };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoredomRangecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Range.cpp (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Range.cpp        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/Source/WebCore/dom/Range.cpp        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -311,7 +311,7 @@
</span><span class="cx">         return false;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (!refNode-&gt;attached() || &amp;refNode-&gt;document() != &amp;ownerDocument()) {
</del><ins>+    if (!refNode-&gt;inDocument() || &amp;refNode-&gt;document() != &amp;ownerDocument()) {
</ins><span class="cx">         return false;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -340,7 +340,7 @@
</span><span class="cx">         return 0;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (!refNode-&gt;attached() || &amp;refNode-&gt;document() != &amp;ownerDocument()) {
</del><ins>+    if (!refNode-&gt;inDocument() || &amp;refNode-&gt;document() != &amp;ownerDocument()) {
</ins><span class="cx">         ec = WRONG_DOCUMENT_ERR;
</span><span class="cx">         return 0;
</span><span class="cx">     }
</span><span class="lines">@@ -376,12 +376,12 @@
</span><span class="cx">         return NODE_BEFORE;
</span><span class="cx">     }
</span><span class="cx">     
</span><del>-    if (!m_start.container() &amp;&amp; refNode-&gt;attached()) {
</del><ins>+    if (!m_start.container() &amp;&amp; refNode-&gt;inDocument()) {
</ins><span class="cx">         ec = INVALID_STATE_ERR;
</span><span class="cx">         return NODE_BEFORE;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (m_start.container() &amp;&amp; !refNode-&gt;attached()) {
</del><ins>+    if (m_start.container() &amp;&amp; !refNode-&gt;inDocument()) {
</ins><span class="cx">         // Firefox doesn't throw an exception for this case; it returns 0.
</span><span class="cx">         return NODE_BEFORE;
</span><span class="cx">     }
</span><span class="lines">@@ -591,7 +591,7 @@
</span><span class="cx">         return false;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (!refNode-&gt;attached() || &amp;refNode-&gt;document() != &amp;ownerDocument()) {
</del><ins>+    if (!refNode-&gt;inDocument() || &amp;refNode-&gt;document() != &amp;ownerDocument()) {
</ins><span class="cx">         // Firefox doesn't throw an exception for these cases; it returns false.
</span><span class="cx">         return false;
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingAppendNodeCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/AppendNodeCommand.cpp (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/AppendNodeCommand.cpp        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/Source/WebCore/editing/AppendNodeCommand.cpp        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -61,7 +61,7 @@
</span><span class="cx">     if (!m_parent-&gt;rendererIsEditable() &amp;&amp; m_parent-&gt;attached())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    m_parent-&gt;appendChild(m_node.get(), IGNORE_EXCEPTION, AttachLazily);
</del><ins>+    m_parent-&gt;appendChild(m_node.get(), IGNORE_EXCEPTION);
</ins><span class="cx"> 
</span><span class="cx">     if (AXObjectCache::accessibilityEnabled())
</span><span class="cx">         sendAXTextChangedIgnoringLineBreaks(m_node.get(), AXObjectCache::AXTextInserted);
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingCompositeEditCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/CompositeEditCommand.cpp (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/CompositeEditCommand.cpp        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/Source/WebCore/editing/CompositeEditCommand.cpp        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -626,6 +626,8 @@
</span><span class="cx">     if (textNode-&gt;length() == 0)
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><ins>+    node-&gt;document().updateStyleIfNeeded();
+
</ins><span class="cx">     RenderObject* renderer = textNode-&gt;renderer();
</span><span class="cx">     if (renderer &amp;&amp; !renderer-&gt;style().collapseWhiteSpace())
</span><span class="cx">         return false;
</span></span></pre></div>
<a id="trunkSourceWebCoreeditingInsertNodeBeforeCommandcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/editing/InsertNodeBeforeCommand.cpp (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/editing/InsertNodeBeforeCommand.cpp        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/Source/WebCore/editing/InsertNodeBeforeCommand.cpp        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -55,7 +55,7 @@
</span><span class="cx">         return;
</span><span class="cx">     ASSERT(parent-&gt;isContentEditable(Node::UserSelectAllIsAlwaysNonEditable));
</span><span class="cx"> 
</span><del>-    parent-&gt;insertBefore(m_insertChild.get(), m_refChild.get(), IGNORE_EXCEPTION, AttachLazily);
</del><ins>+    parent-&gt;insertBefore(m_insertChild.get(), m_refChild.get(), IGNORE_EXCEPTION);
</ins><span class="cx"> 
</span><span class="cx">     if (AXObjectCache* cache = document().existingAXObjectCache())
</span><span class="cx">         cache-&gt;nodeTextChangeNotification(m_insertChild.get(), AXObjectCache::AXTextInserted, 0, m_insertChild-&gt;nodeValue());
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLDetailsElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLDetailsElement.cpp (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLDetailsElement.cpp        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/Source/WebCore/html/HTMLDetailsElement.cpp        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -117,8 +117,8 @@
</span><span class="cx"> 
</span><span class="cx"> void HTMLDetailsElement::didAddUserAgentShadowRoot(ShadowRoot* root)
</span><span class="cx"> {
</span><del>-    root-&gt;appendChild(DetailsSummaryElement::create(document()), ASSERT_NO_EXCEPTION, AttachLazily);
-    root-&gt;appendChild(DetailsContentElement::create(document()), ASSERT_NO_EXCEPTION, AttachLazily);
</del><ins>+    root-&gt;appendChild(DetailsSummaryElement::create(document()), ASSERT_NO_EXCEPTION);
+    root-&gt;appendChild(DetailsContentElement::create(document()), ASSERT_NO_EXCEPTION);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Element* HTMLDetailsElement::findMainSummary() const
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLDocumentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLDocument.cpp (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLDocument.cpp        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/Source/WebCore/html/HTMLDocument.cpp        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -139,6 +139,7 @@
</span><span class="cx"> 
</span><span class="cx"> Element* HTMLDocument::activeElement()
</span><span class="cx"> {
</span><ins>+    document().updateStyleIfNeeded();
</ins><span class="cx">     if (Element* element = treeScope().focusedElement())
</span><span class="cx">         return element;
</span><span class="cx">     return body();
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLElement.cpp (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLElement.cpp        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/Source/WebCore/html/HTMLElement.cpp        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -39,6 +39,7 @@
</span><span class="cx"> #include &quot;ExceptionCode.h&quot;
</span><span class="cx"> #include &quot;Frame.h&quot;
</span><span class="cx"> #include &quot;FrameLoader.h&quot;
</span><ins>+#include &quot;FrameView.h&quot;
</ins><span class="cx"> #include &quot;HTMLBRElement.h&quot;
</span><span class="cx"> #include &quot;HTMLCollection.h&quot;
</span><span class="cx"> #include &quot;HTMLDocument.h&quot;
</span><span class="lines">@@ -478,7 +479,7 @@
</span><span class="cx">     // FIXME: Can the renderer be out of date here? Do we need to call updateStyleIfNeeded?
</span><span class="cx">     // For example, for the contents of textarea elements that are display:none?
</span><span class="cx">     auto r = renderer();
</span><del>-    if (r &amp;&amp; r-&gt;style().preserveNewline()) {
</del><ins>+    if ((r &amp;&amp; r-&gt;style().preserveNewline()) || (inDocument() &amp;&amp; isTextControlInnerTextElement())) {
</ins><span class="cx">         if (!text.contains('\r')) {
</span><span class="cx">             replaceChildrenWithText(*this, text, ec);
</span><span class="cx">             return;
</span><span class="lines">@@ -661,6 +662,8 @@
</span><span class="cx"> 
</span><span class="cx"> bool HTMLElement::supportsFocus() const
</span><span class="cx"> {
</span><ins>+    if (!document().view()-&gt;isInLayout())
+        document().updateStyleIfNeeded();
</ins><span class="cx">     return Element::supportsFocus() || (rendererIsEditable() &amp;&amp; parentNode() &amp;&amp; !parentNode()-&gt;rendererIsEditable());
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLEmbedElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLEmbedElement.cpp (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLEmbedElement.cpp        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/Source/WebCore/html/HTMLEmbedElement.cpp        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -105,6 +105,7 @@
</span><span class="cx">         m_url = stripLeadingAndTrailingHTMLSpaces(value);
</span><span class="cx">     else if (name == srcAttr) {
</span><span class="cx">         m_url = stripLeadingAndTrailingHTMLSpaces(value);
</span><ins>+        document().updateStyleIfNeeded();
</ins><span class="cx">         if (renderer() &amp;&amp; isImageType()) {
</span><span class="cx">             if (!m_imageLoader)
</span><span class="cx">                 m_imageLoader = adoptPtr(new HTMLImageLoader(this));
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLFormControlElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLFormControlElement.cpp (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLFormControlElement.cpp        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/Source/WebCore/html/HTMLFormControlElement.cpp        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -170,9 +170,11 @@
</span><span class="cx"> 
</span><span class="cx"> static bool shouldAutofocus(HTMLFormControlElement* element)
</span><span class="cx"> {
</span><ins>+    if (!element-&gt;renderer())
+        return false;
</ins><span class="cx">     if (!element-&gt;fastHasAttribute(autofocusAttr))
</span><span class="cx">         return false;
</span><del>-    if (!element-&gt;renderer())
</del><ins>+    if (!element-&gt;inDocument() || !element-&gt;document().renderView())
</ins><span class="cx">         return false;
</span><span class="cx">     if (element-&gt;document().ignoreAutofocus())
</span><span class="cx">         return false;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLFormControlElementWithStatecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLFormControlElementWithState.cpp (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLFormControlElementWithState.cpp        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/Source/WebCore/html/HTMLFormControlElementWithState.cpp        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -77,7 +77,7 @@
</span><span class="cx"> bool HTMLFormControlElementWithState::shouldSaveAndRestoreFormControlState() const
</span><span class="cx"> {
</span><span class="cx">     // We don't save/restore control state in a form with autocomplete=off.
</span><del>-    return attached() &amp;&amp; shouldAutocomplete();
</del><ins>+    return inDocument() &amp;&amp; shouldAutocomplete();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> FormControlState HTMLFormControlElementWithState::saveFormControlState() const
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLFrameElementBasecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLFrameElementBase.cpp (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLFrameElementBase.cpp        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/Source/WebCore/html/HTMLFrameElementBase.cpp        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -162,14 +162,8 @@
</span><span class="cx">     if (!SubframeLoadingDisabler::canLoadFrame(*this))
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    // JavaScript in src=javascript: and beforeonload can access the renderer
-    // during attribute parsing *before* the normal parser machinery would
-    // attach the element. To support this, we lazyAttach here, but only
-    // if we don't already have a renderer (if we're inserted
-    // as part of a DocumentFragment, insertedInto from an earlier element
-    // could have forced a style resolve and already attached us).
</del><span class="cx">     if (!renderer())
</span><del>-        lazyAttach(DoNotSetAttached);
</del><ins>+        setNeedsStyleRecalc(ReconstructRenderTree);
</ins><span class="cx">     setNameAndOpenURL();
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLInputElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLInputElement.cpp (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLInputElement.cpp        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/Source/WebCore/html/HTMLInputElement.cpp        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -471,10 +471,6 @@
</span><span class="cx"> 
</span><span class="cx">     m_inputType-&gt;destroyShadowSubtree();
</span><span class="cx"> 
</span><del>-    bool wasAttached = attached();
-    if (wasAttached)
-        Style::detachRenderTree(*this);
-
</del><span class="cx">     m_inputType = std::move(newType);
</span><span class="cx">     m_inputType-&gt;createShadowSubtree();
</span><span class="cx"> 
</span><span class="lines">@@ -523,12 +519,12 @@
</span><span class="cx">             attributeChanged(alignAttr, align-&gt;value());
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (wasAttached) {
-        Style::attachRenderTree(*this);
-        if (document().focusedElement() == this)
-            updateFocusAppearance(true);
-    }
</del><ins>+    if (renderer())
+        setNeedsStyleRecalc(ReconstructRenderTree);
</ins><span class="cx"> 
</span><ins>+    if (document().focusedElement() == this)
+        updateFocusAppearance(true);
+
</ins><span class="cx">     if (ShadowRoot* shadowRoot = shadowRootOfParentForDistribution(this))
</span><span class="cx">         shadowRoot-&gt;invalidateDistribution();
</span><span class="cx"> 
</span><span class="lines">@@ -688,7 +684,7 @@
</span><span class="cx">         m_maxResults = !value.isNull() ? std::min(value.toInt(), maxSavedResults) : -1;
</span><span class="cx">         // FIXME: Detaching just for maxResults change is not ideal.  We should figure out the right
</span><span class="cx">         // time to relayout for this change.
</span><del>-        if (m_maxResults != oldResults &amp;&amp; (m_maxResults &lt;= 0 || oldResults &lt;= 0) &amp;&amp; attached())
</del><ins>+        if (m_maxResults != oldResults &amp;&amp; (m_maxResults &lt;= 0 || oldResults &lt;= 0) &amp;&amp; renderer())
</ins><span class="cx">             Style::reattachRenderTree(*this);
</span><span class="cx">         setNeedsStyleRecalc();
</span><span class="cx">         FeatureObserver::observe(&amp;document(), FeatureObserver::ResultsAttribute);
</span><span class="lines">@@ -745,8 +741,7 @@
</span><span class="cx">             Style::detachRenderTree(*this);
</span><span class="cx">             m_inputType-&gt;destroyShadowSubtree();
</span><span class="cx">             m_inputType-&gt;createShadowSubtree();
</span><del>-            if (!attached())
-                Style::attachRenderTree(*this);
</del><ins>+            Style::attachRenderTree(*this);
</ins><span class="cx">         } else {
</span><span class="cx">             m_inputType-&gt;destroyShadowSubtree();
</span><span class="cx">             m_inputType-&gt;createShadowSubtree();
</span><span class="lines">@@ -1202,6 +1197,7 @@
</span><span class="cx">             return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    document().updateStyleIfNeeded();
</ins><span class="cx">     m_inputType-&gt;forwardEvent(evt);
</span><span class="cx"> 
</span><span class="cx">     if (!callBaseClassEarly &amp;&amp; !evt-&gt;defaultHandled())
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLMediaElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLMediaElement.cpp        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -734,7 +734,7 @@
</span><span class="cx"> 
</span><span class="cx"> void HTMLMediaElement::willAttachRenderers()
</span><span class="cx"> {
</span><del>-    ASSERT(!attached());
</del><ins>+    ASSERT(!renderer());
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(PLUGIN_PROXY_FOR_VIDEO)
</span><span class="cx">     if (shouldUseVideoPluginProxy())
</span><span class="lines">@@ -5106,7 +5106,7 @@
</span><span class="cx">     if (isFullscreen())
</span><span class="cx">         mediaControls-&gt;enteredFullscreen();
</span><span class="cx"> 
</span><del>-    ensureUserAgentShadowRoot().appendChild(mediaControls, ASSERT_NO_EXCEPTION, AttachLazily);
</del><ins>+    ensureUserAgentShadowRoot().appendChild(mediaControls, ASSERT_NO_EXCEPTION);
</ins><span class="cx"> 
</span><span class="cx">     if (!controls() || !inDocument())
</span><span class="cx">         mediaControls-&gt;hide();
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLObjectElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLObjectElement.cpp (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLObjectElement.cpp        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/Source/WebCore/html/HTMLObjectElement.cpp        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -115,6 +115,7 @@
</span><span class="cx">             setNeedsWidgetUpdate(true);
</span><span class="cx">     } else if (name == dataAttr) {
</span><span class="cx">         m_url = stripLeadingAndTrailingHTMLSpaces(value);
</span><ins>+        document().updateStyleIfNeeded();
</ins><span class="cx">         if (renderer()) {
</span><span class="cx">             setNeedsWidgetUpdate(true);
</span><span class="cx">             if (isImageType()) {
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLSummaryElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLSummaryElement.cpp (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLSummaryElement.cpp        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/Source/WebCore/html/HTMLSummaryElement.cpp        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -79,8 +79,8 @@
</span><span class="cx"> 
</span><span class="cx"> void HTMLSummaryElement::didAddUserAgentShadowRoot(ShadowRoot* root)
</span><span class="cx"> {
</span><del>-    root-&gt;appendChild(DetailsMarkerControl::create(document()), ASSERT_NO_EXCEPTION, AttachLazily);
-    root-&gt;appendChild(SummaryContentElement::create(document()), ASSERT_NO_EXCEPTION, AttachLazily);
</del><ins>+    root-&gt;appendChild(DetailsMarkerControl::create(document()), ASSERT_NO_EXCEPTION);
+    root-&gt;appendChild(SummaryContentElement::create(document()), ASSERT_NO_EXCEPTION);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> HTMLDetailsElement* HTMLSummaryElement::detailsElement() const
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlparserHTMLConstructionSitecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/parser/HTMLConstructionSite.cpp (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/parser/HTMLConstructionSite.cpp        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/Source/WebCore/html/parser/HTMLConstructionSite.cpp        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -91,16 +91,6 @@
</span><span class="cx">     else
</span><span class="cx">         task.parent-&gt;parserAppendChild(task.child.get());
</span><span class="cx"> 
</span><del>-    // JavaScript run from beforeload (or DOM Mutation or event handlers)
-    // might have removed the child, in which case we should not attach it.
-
-    if (task.child-&gt;parentNode() &amp;&amp; task.parent-&gt;attached() &amp;&amp; !task.child-&gt;attached()) {
-        if (task.child-&gt;isElementNode())
-            Style::attachRenderTree(*toElement(task.child.get()));
-        else if (task.child-&gt;isTextNode())
-            Style::attachTextRenderer(*toText(task.child.get()));
-    }
-
</del><span class="cx">     task.child-&gt;beginParsingChildren();
</span><span class="cx"> 
</span><span class="cx">     if (task.selfClosing)
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlparserHTMLTreeBuildercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/parser/HTMLTreeBuilder.cpp (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/parser/HTMLTreeBuilder.cpp        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/Source/WebCore/html/parser/HTMLTreeBuilder.cpp        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -1603,8 +1603,6 @@
</span><span class="cx">             if (ContainerNode* parent = lastNode-&gt;element()-&gt;parentNode())
</span><span class="cx">                 parent-&gt;parserRemoveChild(*lastNode-&gt;element());
</span><span class="cx">             node-&gt;element()-&gt;parserAppendChild(lastNode-&gt;element());
</span><del>-            if (lastNode-&gt;element()-&gt;parentElement()-&gt;attached() &amp;&amp; !lastNode-&gt;element()-&gt;attached())
-                lastNode-&gt;element()-&gt;lazyAttach();
</del><span class="cx">             // 9.10
</span><span class="cx">             lastNode = node;
</span><span class="cx">         }
</span><span class="lines">@@ -1624,8 +1622,6 @@
</span><span class="cx"> #endif
</span><span class="cx">             ASSERT(lastNode-&gt;stackItem()-&gt;isElementNode());
</span><span class="cx">             ASSERT(lastNode-&gt;element()-&gt;parentNode());
</span><del>-            if (lastNode-&gt;element()-&gt;parentNode()-&gt;attached() &amp;&amp; !lastNode-&gt;element()-&gt;attached())
-                lastNode-&gt;element()-&gt;lazyAttach();
</del><span class="cx">         }
</span><span class="cx">         // 11.
</span><span class="cx">         RefPtr&lt;HTMLStackItem&gt; newItem = m_tree.createElementFromSavedToken(formattingElementRecord-&gt;stackItem().get());
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlshadowContentDistributorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/shadow/ContentDistributor.cpp (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/shadow/ContentDistributor.cpp        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/Source/WebCore/html/shadow/ContentDistributor.cpp        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -144,11 +144,8 @@
</span><span class="cx">     bool didNeedInvalidation = needsInvalidation();
</span><span class="cx">     bool needsReattach = didNeedInvalidation ? invalidate(host) : false;
</span><span class="cx"> 
</span><del>-    if (needsReattach &amp;&amp; host-&gt;attached()) {
-        for (Element* element = ElementTraversal::firstWithin(host); element; element = ElementTraversal::nextSibling(element))
-            element-&gt;lazyReattach();
-        host-&gt;setNeedsStyleRecalc();
-    }
</del><ins>+    if (needsReattach)
+        host-&gt;setNeedsStyleRecalc(ReconstructRenderTree);
</ins><span class="cx"> 
</span><span class="cx">     if (didNeedInvalidation) {
</span><span class="cx">         ASSERT(m_validity == Invalidating);
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlshadowInsertionPointcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/shadow/InsertionPoint.cpp (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/shadow/InsertionPoint.cpp        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/Source/WebCore/html/shadow/InsertionPoint.cpp        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -55,22 +55,22 @@
</span><span class="cx">     if (ShadowRoot* shadowRoot = containingShadowRoot())
</span><span class="cx">         ContentDistributor::ensureDistribution(shadowRoot);
</span><span class="cx">     for (Node* current = firstDistributed(); current; current = nextDistributedTo(current)) {
</span><del>-        if (current-&gt;attached())
-            continue;
</del><span class="cx">         if (current-&gt;isTextNode()) {
</span><ins>+            if (current-&gt;renderer())
+                continue;
</ins><span class="cx">             Style::attachTextRenderer(*toText(current));
</span><span class="cx">             continue;
</span><span class="cx">         }
</span><del>-        if (current-&gt;isElementNode())
</del><ins>+        if (current-&gt;isElementNode()) {
+            if (current-&gt;renderer())
+                Style::detachRenderTree(*toElement(current));
</ins><span class="cx">             Style::attachRenderTree(*toElement(current));
</span><ins>+        }
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InsertionPoint::willDetachRenderers()
</span><span class="cx"> {
</span><del>-    if (ShadowRoot* shadowRoot = containingShadowRoot())
-        ContentDistributor::ensureDistribution(shadowRoot);
-
</del><span class="cx">     for (Node* current = firstDistributed(); current; current = nextDistributedTo(current)) {
</span><span class="cx">         if (current-&gt;isTextNode()) {
</span><span class="cx">             Style::detachTextRenderer(*toText(current));
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlshadowMediaControlElementscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/shadow/MediaControlElements.cpp (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/shadow/MediaControlElements.cpp        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/Source/WebCore/html/shadow/MediaControlElements.cpp        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -1290,7 +1290,7 @@
</span><span class="cx">         RefPtr&lt;TextTrackCueBox&gt; displayBox = cue-&gt;getDisplayTree(m_videoDisplaySize.size());
</span><span class="cx">         if (displayBox-&gt;hasChildNodes() &amp;&amp; !contains(displayBox.get())) {
</span><span class="cx">             // Note: the display tree of a cue is removed when the active flag of the cue is unset.
</span><del>-            appendChild(displayBox, ASSERT_NO_EXCEPTION, AttachNow);
</del><ins>+            appendChild(displayBox, ASSERT_NO_EXCEPTION);
</ins><span class="cx">             cue-&gt;setFontSize(m_fontSize, m_videoDisplaySize.size(), m_fontSizeIsImportant);
</span><span class="cx">         }
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlshadowMediaControlscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/shadow/MediaControls.cpp (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/shadow/MediaControls.cpp        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/Source/WebCore/html/shadow/MediaControls.cpp        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -392,7 +392,7 @@
</span><span class="cx">         m_textDisplayContainer-&gt;setMediaController(m_mediaController);
</span><span class="cx"> 
</span><span class="cx">     // Insert it before the first controller element so it always displays behind the controls.
</span><del>-    insertBefore(textDisplayContainer.release(), m_panel, IGNORE_EXCEPTION, AttachLazily);
</del><ins>+    insertBefore(textDisplayContainer.release(), m_panel, IGNORE_EXCEPTION);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void MediaControls::showTextTrackDisplay()
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlshadowMediaControlsApplecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/shadow/MediaControlsApple.cpp (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/shadow/MediaControlsApple.cpp        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/Source/WebCore/html/shadow/MediaControlsApple.cpp        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -73,26 +73,26 @@
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;MediaControlRewindButtonElement&gt; rewindButton = MediaControlRewindButtonElement::create(document);
</span><span class="cx">     controls-&gt;m_rewindButton = rewindButton.get();
</span><del>-    panel-&gt;appendChild(rewindButton.release(), ec, AttachLazily);
</del><ins>+    panel-&gt;appendChild(rewindButton.release(), ec);
</ins><span class="cx">     if (ec)
</span><span class="cx">         return 0;
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;MediaControlPlayButtonElement&gt; playButton = MediaControlPlayButtonElement::create(document);
</span><span class="cx">     controls-&gt;m_playButton = playButton.get();
</span><del>-    panel-&gt;appendChild(playButton.release(), ec, AttachLazily);
</del><ins>+    panel-&gt;appendChild(playButton.release(), ec);
</ins><span class="cx">     if (ec)
</span><span class="cx">         return 0;
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;MediaControlReturnToRealtimeButtonElement&gt; returnToRealtimeButton = MediaControlReturnToRealtimeButtonElement::create(document);
</span><span class="cx">     controls-&gt;m_returnToRealTimeButton = returnToRealtimeButton.get();
</span><del>-    panel-&gt;appendChild(returnToRealtimeButton.release(), ec, AttachLazily);
</del><ins>+    panel-&gt;appendChild(returnToRealtimeButton.release(), ec);
</ins><span class="cx">     if (ec)
</span><span class="cx">         return 0;
</span><span class="cx"> 
</span><span class="cx">     if (document.page()-&gt;theme().usesMediaControlStatusDisplay()) {
</span><span class="cx">         RefPtr&lt;MediaControlStatusDisplayElement&gt; statusDisplay = MediaControlStatusDisplayElement::create(document);
</span><span class="cx">         controls-&gt;m_statusDisplay = statusDisplay.get();
</span><del>-        panel-&gt;appendChild(statusDisplay.release(), ec, AttachLazily);
</del><ins>+        panel-&gt;appendChild(statusDisplay.release(), ec);
</ins><span class="cx">         if (ec)
</span><span class="cx">             return 0;
</span><span class="cx">     }
</span><span class="lines">@@ -101,38 +101,38 @@
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;MediaControlCurrentTimeDisplayElement&gt; currentTimeDisplay = MediaControlCurrentTimeDisplayElement::create(document);
</span><span class="cx">     controls-&gt;m_currentTimeDisplay = currentTimeDisplay.get();
</span><del>-    timelineContainer-&gt;appendChild(currentTimeDisplay.release(), ec, AttachLazily);
</del><ins>+    timelineContainer-&gt;appendChild(currentTimeDisplay.release(), ec);
</ins><span class="cx">     if (ec)
</span><span class="cx">         return 0;
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;MediaControlTimelineElement&gt; timeline = MediaControlTimelineElement::create(document, controls.get());
</span><span class="cx">     controls-&gt;m_timeline = timeline.get();
</span><del>-    timelineContainer-&gt;appendChild(timeline.release(), ec, AttachLazily);
</del><ins>+    timelineContainer-&gt;appendChild(timeline.release(), ec);
</ins><span class="cx">     if (ec)
</span><span class="cx">         return 0;
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;MediaControlTimeRemainingDisplayElement&gt; timeRemainingDisplay = MediaControlTimeRemainingDisplayElement::create(document);
</span><span class="cx">     controls-&gt;m_timeRemainingDisplay = timeRemainingDisplay.get();
</span><del>-    timelineContainer-&gt;appendChild(timeRemainingDisplay.release(), ec, AttachLazily);
</del><ins>+    timelineContainer-&gt;appendChild(timeRemainingDisplay.release(), ec);
</ins><span class="cx">     if (ec)
</span><span class="cx">         return 0;
</span><span class="cx"> 
</span><span class="cx">     controls-&gt;m_timelineContainer = timelineContainer.get();
</span><del>-    panel-&gt;appendChild(timelineContainer.release(), ec, AttachLazily);
</del><ins>+    panel-&gt;appendChild(timelineContainer.release(), ec);
</ins><span class="cx">     if (ec)
</span><span class="cx">         return 0;
</span><span class="cx"> 
</span><span class="cx">     // FIXME: Only create when needed &lt;http://webkit.org/b/57163&gt;
</span><span class="cx">     RefPtr&lt;MediaControlSeekBackButtonElement&gt; seekBackButton = MediaControlSeekBackButtonElement::create(document);
</span><span class="cx">     controls-&gt;m_seekBackButton = seekBackButton.get();
</span><del>-    panel-&gt;appendChild(seekBackButton.release(), ec, AttachLazily);
</del><ins>+    panel-&gt;appendChild(seekBackButton.release(), ec);
</ins><span class="cx">     if (ec)
</span><span class="cx">         return 0;
</span><span class="cx"> 
</span><span class="cx">     // FIXME: Only create when needed &lt;http://webkit.org/b/57163&gt;
</span><span class="cx">     RefPtr&lt;MediaControlSeekForwardButtonElement&gt; seekForwardButton = MediaControlSeekForwardButtonElement::create(document);
</span><span class="cx">     controls-&gt;m_seekForwardButton = seekForwardButton.get();
</span><del>-    panel-&gt;appendChild(seekForwardButton.release(), ec, AttachLazily);
</del><ins>+    panel-&gt;appendChild(seekForwardButton.release(), ec);
</ins><span class="cx">     if (ec)
</span><span class="cx">         return 0;
</span><span class="cx"> 
</span><span class="lines">@@ -141,18 +141,18 @@
</span><span class="cx"> 
</span><span class="cx">         RefPtr&lt;MediaControlClosedCaptionsTrackListElement&gt; closedCaptionsTrackList = MediaControlClosedCaptionsTrackListElement::create(document, controls.get());
</span><span class="cx">         controls-&gt;m_closedCaptionsTrackList = closedCaptionsTrackList.get();
</span><del>-        closedCaptionsContainer-&gt;appendChild(closedCaptionsTrackList.release(), ec, AttachLazily);
</del><ins>+        closedCaptionsContainer-&gt;appendChild(closedCaptionsTrackList.release(), ec);
</ins><span class="cx">         if (ec)
</span><span class="cx">             return 0;
</span><span class="cx"> 
</span><span class="cx">         RefPtr&lt;MediaControlToggleClosedCaptionsButtonElement&gt; toggleClosedCaptionsButton = MediaControlToggleClosedCaptionsButtonElement::create(document, controls.get());
</span><span class="cx">         controls-&gt;m_toggleClosedCaptionsButton = toggleClosedCaptionsButton.get();
</span><del>-        panel-&gt;appendChild(toggleClosedCaptionsButton.release(), ec, AttachLazily);
</del><ins>+        panel-&gt;appendChild(toggleClosedCaptionsButton.release(), ec);
</ins><span class="cx">         if (ec)
</span><span class="cx">             return 0;
</span><span class="cx"> 
</span><span class="cx">         controls-&gt;m_closedCaptionsContainer = closedCaptionsContainer.get();
</span><del>-        controls-&gt;appendChild(closedCaptionsContainer.release(), ec, AttachLazily);
</del><ins>+        controls-&gt;appendChild(closedCaptionsContainer.release(), ec);
</ins><span class="cx">         if (ec)
</span><span class="cx">             return 0;
</span><span class="cx">     }
</span><span class="lines">@@ -160,7 +160,7 @@
</span><span class="cx">     // FIXME: Only create when needed &lt;http://webkit.org/b/57163&gt;
</span><span class="cx">     RefPtr&lt;MediaControlFullscreenButtonElement&gt; fullScreenButton = MediaControlFullscreenButtonElement::create(document);
</span><span class="cx">     controls-&gt;m_fullScreenButton = fullScreenButton.get();
</span><del>-    panel-&gt;appendChild(fullScreenButton.release(), ec, AttachLazily);
</del><ins>+    panel-&gt;appendChild(fullScreenButton.release(), ec);
</ins><span class="cx"> 
</span><span class="cx">     // The mute button and the slider element should be in the same div.
</span><span class="cx">     RefPtr&lt;HTMLDivElement&gt; panelVolumeControlContainer = HTMLDivElement::create(document);
</span><span class="lines">@@ -170,7 +170,7 @@
</span><span class="cx"> 
</span><span class="cx">         RefPtr&lt;MediaControlPanelVolumeSliderElement&gt; slider = MediaControlPanelVolumeSliderElement::create(document);
</span><span class="cx">         controls-&gt;m_volumeSlider = slider.get();
</span><del>-        volumeSliderContainer-&gt;appendChild(slider.release(), ec, AttachLazily);
</del><ins>+        volumeSliderContainer-&gt;appendChild(slider.release(), ec);
</ins><span class="cx">         if (ec)
</span><span class="cx">             return 0;
</span><span class="cx"> 
</span><span class="lines">@@ -178,48 +178,48 @@
</span><span class="cx">         // It's important only when the volume bar is displayed below the controls.
</span><span class="cx">         RefPtr&lt;MediaControlVolumeSliderMuteButtonElement&gt; volumeSliderMuteButton = MediaControlVolumeSliderMuteButtonElement::create(document);
</span><span class="cx">         controls-&gt;m_volumeSliderMuteButton = volumeSliderMuteButton.get();
</span><del>-        volumeSliderContainer-&gt;appendChild(volumeSliderMuteButton.release(), ec, AttachLazily);
</del><ins>+        volumeSliderContainer-&gt;appendChild(volumeSliderMuteButton.release(), ec);
</ins><span class="cx"> 
</span><span class="cx">         if (ec)
</span><span class="cx">             return 0;
</span><span class="cx"> 
</span><span class="cx">         controls-&gt;m_volumeSliderContainer = volumeSliderContainer.get();
</span><del>-        panelVolumeControlContainer-&gt;appendChild(volumeSliderContainer.release(), ec, AttachLazily);
</del><ins>+        panelVolumeControlContainer-&gt;appendChild(volumeSliderContainer.release(), ec);
</ins><span class="cx">         if (ec)
</span><span class="cx">             return 0;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;MediaControlPanelMuteButtonElement&gt; panelMuteButton = MediaControlPanelMuteButtonElement::create(document, controls.get());
</span><span class="cx">     controls-&gt;m_panelMuteButton = panelMuteButton.get();
</span><del>-    panelVolumeControlContainer-&gt;appendChild(panelMuteButton.release(), ec, AttachLazily);
</del><ins>+    panelVolumeControlContainer-&gt;appendChild(panelMuteButton.release(), ec);
</ins><span class="cx">     if (ec)
</span><span class="cx">         return 0;
</span><span class="cx"> 
</span><del>-    panel-&gt;appendChild(panelVolumeControlContainer, ec, AttachLazily);
</del><ins>+    panel-&gt;appendChild(panelVolumeControlContainer, ec);
</ins><span class="cx">     if (ec)
</span><span class="cx">         return 0;
</span><span class="cx"> 
</span><span class="cx">     // FIXME: Only create when needed &lt;http://webkit.org/b/57163&gt;
</span><span class="cx">     RefPtr&lt;MediaControlFullscreenVolumeMinButtonElement&gt; fullScreenMinVolumeButton = MediaControlFullscreenVolumeMinButtonElement::create(document);
</span><span class="cx">     controls-&gt;m_fullScreenMinVolumeButton = fullScreenMinVolumeButton.get();
</span><del>-    panel-&gt;appendChild(fullScreenMinVolumeButton.release(), ec, AttachLazily);
</del><ins>+    panel-&gt;appendChild(fullScreenMinVolumeButton.release(), ec);
</ins><span class="cx">     if (ec)
</span><span class="cx">         return 0;
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;MediaControlFullscreenVolumeSliderElement&gt; fullScreenVolumeSlider = MediaControlFullscreenVolumeSliderElement::create(document);
</span><span class="cx">     controls-&gt;m_fullScreenVolumeSlider = fullScreenVolumeSlider.get();
</span><del>-    panel-&gt;appendChild(fullScreenVolumeSlider.release(), ec, AttachLazily);
</del><ins>+    panel-&gt;appendChild(fullScreenVolumeSlider.release(), ec);
</ins><span class="cx">     if (ec)
</span><span class="cx">         return 0;
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;MediaControlFullscreenVolumeMaxButtonElement&gt; fullScreenMaxVolumeButton = MediaControlFullscreenVolumeMaxButtonElement::create(document);
</span><span class="cx">     controls-&gt;m_fullScreenMaxVolumeButton = fullScreenMaxVolumeButton.get();
</span><del>-    panel-&gt;appendChild(fullScreenMaxVolumeButton.release(), ec, AttachLazily);
</del><ins>+    panel-&gt;appendChild(fullScreenMaxVolumeButton.release(), ec);
</ins><span class="cx">     if (ec)
</span><span class="cx">         return 0;
</span><span class="cx"> 
</span><span class="cx">     controls-&gt;m_panel = panel.get();
</span><del>-    controls-&gt;appendChild(panel.release(), ec, AttachLazily);
</del><ins>+    controls-&gt;appendChild(panel.release(), ec);
</ins><span class="cx">     if (ec)
</span><span class="cx">         return 0;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmltrackTextTrackCuecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/track/TextTrackCue.cpp (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/track/TextTrackCue.cpp        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/Source/WebCore/html/track/TextTrackCue.cpp        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -825,7 +825,7 @@
</span><span class="cx"> 
</span><span class="cx">     // Note: This is contained by default in m_cueBackgroundBox.
</span><span class="cx">     m_cueBackgroundBox-&gt;setPseudo(cueShadowPseudoId());
</span><del>-    displayTree-&gt;appendChild(m_cueBackgroundBox, ASSERT_NO_EXCEPTION, AttachLazily);
</del><ins>+    displayTree-&gt;appendChild(m_cueBackgroundBox, ASSERT_NO_EXCEPTION);
</ins><span class="cx"> 
</span><span class="cx">     // FIXME(BUG 79916): Runs of children of WebVTT Ruby Objects that are not
</span><span class="cx">     // WebVTT Ruby Text Objects must be wrapped in anonymous boxes whose
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderPlaceholderDocumentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/PlaceholderDocument.cpp (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/PlaceholderDocument.cpp        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/Source/WebCore/loader/PlaceholderDocument.cpp        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -36,8 +36,6 @@
</span><span class="cx"> 
</span><span class="cx">     for (auto&amp; child : elementChildren(*this))
</span><span class="cx">         Style::attachRenderTree(child);
</span><del>-
-    setAttached(true);
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreloadercacheCachedResourceLoadercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -832,7 +832,7 @@
</span><span class="cx">     // FIXME: We should consider adding a setting to toggle aggressive preloading behavior as opposed
</span><span class="cx">     // to making this behavior specific to iOS.
</span><span class="cx"> #if !PLATFORM(IOS)
</span><del>-    bool hasRendering = m_document-&gt;body() &amp;&amp; m_document-&gt;body()-&gt;renderer();
</del><ins>+    bool hasRendering = m_document-&gt;body() &amp;&amp; m_document-&gt;renderView();
</ins><span class="cx">     bool canBlockParser = type == CachedResource::Script || type == CachedResource::CSSStyleSheet;
</span><span class="cx">     if (!hasRendering &amp;&amp; !canBlockParser) {
</span><span class="cx">         // Don't preload subresources that can't block the parser before we have something to draw.
</span></span></pre></div>
<a id="trunkSourceWebCorestyleStyleResolveTreecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/style/StyleResolveTree.cpp (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/style/StyleResolveTree.cpp        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/Source/WebCore/style/StyleResolveTree.cpp        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -405,7 +405,6 @@
</span><span class="cx"> {
</span><span class="cx">     createTextRendererIfNeeded(textNode);
</span><span class="cx"> 
</span><del>-    textNode.setAttached(true);
</del><span class="cx">     textNode.clearNeedsStyleRecalc();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -414,7 +413,6 @@
</span><span class="cx">     if (textNode.renderer())
</span><span class="cx">         textNode.renderer()-&gt;destroyAndCleanupAnonymousWrappers();
</span><span class="cx">     textNode.setRenderer(0);
</span><del>-    textNode.setAttached(false);
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void updateTextRendererAfterContentChange(Text&amp; textNode, unsigned offsetOfReplacedData, unsigned lengthOfReplacedData)
</span><span class="lines">@@ -440,8 +438,8 @@
</span><span class="cx"> static void attachChildren(ContainerNode&amp; current)
</span><span class="cx"> {
</span><span class="cx">     for (Node* child = current.firstChild(); child; child = child-&gt;nextSibling()) {
</span><del>-        ASSERT(!child-&gt;attached() || current.shadowRoot());
-        if (child-&gt;attached())
</del><ins>+        ASSERT(!child-&gt;renderer() || current.shadowRoot() || current.isInsertionPoint());
+        if (child-&gt;renderer())
</ins><span class="cx">             continue;
</span><span class="cx">         if (child-&gt;isTextNode()) {
</span><span class="cx">             attachTextRenderer(*toText(child));
</span><span class="lines">@@ -454,8 +452,6 @@
</span><span class="cx"> 
</span><span class="cx"> static void attachShadowRoot(ShadowRoot&amp; shadowRoot)
</span><span class="cx"> {
</span><del>-    if (shadowRoot.attached())
-        return;
</del><span class="cx">     StyleResolver&amp; styleResolver = shadowRoot.document().ensureStyleResolver();
</span><span class="cx">     styleResolver.pushParentShadowRoot(&amp;shadowRoot);
</span><span class="cx"> 
</span><span class="lines">@@ -464,7 +460,7 @@
</span><span class="cx">     styleResolver.popParentShadowRoot(&amp;shadowRoot);
</span><span class="cx"> 
</span><span class="cx">     shadowRoot.clearNeedsStyleRecalc();
</span><del>-    shadowRoot.setAttached(true);
</del><ins>+    shadowRoot.clearChildNeedsStyleRecalc();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static PseudoElement* beforeOrAfterPseudoElement(Element&amp; current, PseudoId pseudoId)
</span><span class="lines">@@ -543,8 +539,8 @@
</span><span class="cx"> 
</span><span class="cx">     attachChildren(current);
</span><span class="cx"> 
</span><del>-    current.setAttached(true);
</del><span class="cx">     current.clearNeedsStyleRecalc();
</span><ins>+    current.clearChildNeedsStyleRecalc();
</ins><span class="cx"> 
</span><span class="cx">     if (AXObjectCache* cache = current.document().axObjectCache())
</span><span class="cx">         cache-&gt;updateCacheAfterNodeIsAttached(&amp;current);
</span><span class="lines">@@ -572,11 +568,7 @@
</span><span class="cx"> 
</span><span class="cx"> static void detachShadowRoot(ShadowRoot&amp; shadowRoot, DetachType detachType)
</span><span class="cx"> {
</span><del>-    if (!shadowRoot.attached())
-        return;
</del><span class="cx">     detachChildren(shadowRoot, detachType);
</span><del>-
-    shadowRoot.setAttached(false);
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static void detachRenderTree(Element&amp; current, DetachType detachType)
</span><span class="lines">@@ -602,8 +594,6 @@
</span><span class="cx">         current.renderer()-&gt;destroyAndCleanupAnonymousWrappers();
</span><span class="cx">     current.setRenderer(0);
</span><span class="cx"> 
</span><del>-    current.setAttached(false);
-
</del><span class="cx">     if (current.hasCustomStyleResolveCallbacks())
</span><span class="cx">         current.didDetachRenderers();
</span><span class="cx"> }
</span><span class="lines">@@ -649,12 +639,12 @@
</span><span class="cx">     RefPtr&lt;RenderStyle&gt; currentStyle = current.renderStyle();
</span><span class="cx"> 
</span><span class="cx">     Document&amp; document = current.document();
</span><del>-    if (currentStyle) {
</del><ins>+    if (currentStyle &amp;&amp; current.styleChangeType() != ReconstructRenderTree) {
</ins><span class="cx">         newStyle = current.styleForRenderer();
</span><span class="cx">         localChange = determineChange(currentStyle.get(), newStyle.get(), document.settings());
</span><span class="cx">     }
</span><span class="cx">     if (localChange == Detach) {
</span><del>-        if (current.attached())
</del><ins>+        if (current.renderer() || current.inNamedFlow())
</ins><span class="cx">             detachRenderTree(current, ReattachDetach);
</span><span class="cx">         attachRenderTree(current, newStyle.release());
</span><span class="cx">         reattachTextRenderersForWhitespaceOnlySiblingsAfterAttachIfNeeded(current);
</span></span></pre></div>
<a id="trunkSourceWebCoresvgSVGTestscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/svg/SVGTests.cpp (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/svg/SVGTests.cpp        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/Source/WebCore/svg/SVGTests.cpp        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -156,12 +156,7 @@
</span><span class="cx">     if (!targetElement-&gt;inDocument())
</span><span class="cx">         return true;
</span><span class="cx"> 
</span><del>-    bool valid = targetElement-&gt;isValid();
-    bool attached = targetElement-&gt;attached();
-    if (valid &amp;&amp; !attached &amp;&amp; targetElement-&gt;parentNode()-&gt;attached())
-        Style::attachRenderTree(*targetElement);
-    else if (!valid &amp;&amp; attached)
-        Style::detachRenderTree(*targetElement);
</del><ins>+    targetElement-&gt;setNeedsStyleRecalc(ReconstructRenderTree);
</ins><span class="cx"> 
</span><span class="cx">     return true;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoretestingInternalscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/testing/Internals.cpp (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/testing/Internals.cpp        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/Source/WebCore/testing/Internals.cpp        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -486,6 +486,7 @@
</span><span class="cx">     return frame()-&gt;animation().pauseTransitionAtTime(pseudoElement-&gt;renderer(), property, pauseTime);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+// FIXME: Remove.
</ins><span class="cx"> bool Internals::attached(Node* node, ExceptionCode&amp; ec)
</span><span class="cx"> {
</span><span class="cx">     if (!node) {
</span><span class="lines">@@ -493,7 +494,7 @@
</span><span class="cx">         return false;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    return node-&gt;attached();
</del><ins>+    return true;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String Internals::elementRenderTreeAsText(Element* element, ExceptionCode&amp; ec)
</span><span class="lines">@@ -503,6 +504,8 @@
</span><span class="cx">         return String();
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    element-&gt;document().updateStyleIfNeeded();
+
</ins><span class="cx">     String representation = externalRepresentation(element);
</span><span class="cx">     if (representation.isEmpty()) {
</span><span class="cx">         ec = INVALID_ACCESS_ERR;
</span><span class="lines">@@ -749,6 +752,7 @@
</span><span class="cx"> 
</span><span class="cx"> DocumentMarker* Internals::markerAt(Node* node, const String&amp; markerType, unsigned index, ExceptionCode&amp; ec)
</span><span class="cx"> {
</span><ins>+    node-&gt;document().updateLayoutIgnorePendingStylesheets();
</ins><span class="cx">     if (!node) {
</span><span class="cx">         ec = INVALID_ACCESS_ERR;
</span><span class="cx">         return 0;
</span><span class="lines">@@ -1204,6 +1208,8 @@
</span><span class="cx">     if (!renderView)
</span><span class="cx">         return 0;
</span><span class="cx"> 
</span><ins>+    document-&gt;updateLayoutIgnorePendingStylesheets();
+
</ins><span class="cx">     float zoomFactor = frame-&gt;pageZoomFactor();
</span><span class="cx">     LayoutPoint point = roundedLayoutPoint(FloatPoint(centerX * zoomFactor + frameView-&gt;scrollX(), centerY * zoomFactor + frameView-&gt;scrollY()));
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKitmacWebViewWebHTMLViewmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebView/WebHTMLView.mm (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebView/WebHTMLView.mm        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/Source/WebKit/mac/WebView/WebHTMLView.mm        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -3016,7 +3016,16 @@
</span><span class="cx"> // Do a layout, but set up a new fixed width for the purposes of doing printing layout.
</span><span class="cx"> // minPageWidth==0 implies a non-printing layout
</span><span class="cx"> - (void)layoutToMinimumPageWidth:(float)minPageLogicalWidth height:(float)minPageLogicalHeight originalPageWidth:(float)originalPageWidth originalPageHeight:(float)originalPageHeight maximumShrinkRatio:(float)maximumShrinkRatio adjustingViewSize:(BOOL)adjustViewSize
</span><del>-{    
</del><ins>+{
+    Frame* coreFrame = core([self _frame]);
+    if (!coreFrame)
+        return;
+    if (coreFrame-&gt;document()) {
+        if (coreFrame-&gt;document()-&gt;inPageCache())
+            return;
+        coreFrame-&gt;document()-&gt;updateStyleIfNeeded();
+    }
+
</ins><span class="cx">     if (![self _needsLayout])
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="lines">@@ -3026,10 +3035,6 @@
</span><span class="cx"> 
</span><span class="cx">     LOG(View, &quot;%@ doing layout&quot;, self);
</span><span class="cx"> 
</span><del>-    Frame* coreFrame = core([self _frame]);
-    if (!coreFrame)
-        return;
-
</del><span class="cx">     if (FrameView* coreView = coreFrame-&gt;view()) {
</span><span class="cx">         if (minPageLogicalWidth &gt; 0.0) {
</span><span class="cx">             FloatSize pageSize(minPageLogicalWidth, minPageLogicalHeight);
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebPagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (160907 => 160908)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp        2013-12-20 14:12:04 UTC (rev 160907)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp        2013-12-20 14:44:23 UTC (rev 160908)
</span><span class="lines">@@ -1775,6 +1775,9 @@
</span><span class="cx"> {
</span><span class="cx">     CurrentEvent currentEvent(keyboardEvent);
</span><span class="cx"> 
</span><ins>+    Frame&amp; frame = m_page-&gt;focusController().focusedOrMainFrame();
+    frame.document()-&gt;updateStyleIfNeeded();
+
</ins><span class="cx">     handled = handleKeyEvent(keyboardEvent, m_page.get());
</span><span class="cx">     if (!handled)
</span><span class="cx">         handled = performDefaultBehaviorForKeyEvent(keyboardEvent);
</span></span></pre>
</div>
</div>

</body>
</html>