<!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>[185269] 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/185269">185269</a></dd>
<dt>Author</dt> <dd>cdumez@apple.com</dd>
<dt>Date</dt> <dd>2015-06-05 15:10:19 -0700 (Fri, 05 Jun 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>Regression(<a href="http://trac.webkit.org/projects/webkit/changeset/176212">r176212</a>): Broke app switching on iCloud.com
https://bugs.webkit.org/show_bug.cgi?id=145708
&lt;rdar://problem/21235277&gt;

Reviewed by Simon Fraser.

Source/WebCore:

Roll out <a href="http://trac.webkit.org/projects/webkit/changeset/176212">r176212</a> and follow-up fixes for now, to fix iCloud.com.
We can reconsider later how to do this in a safer way.

* bindings/js/JSCSSStyleDeclarationCustom.cpp:
(WebCore::JSCSSStyleDeclaration::putDelegate): Deleted.
(WebCore::JSCSSStyleDeclaration::getOwnPropertyNames): Deleted.
* dom/Element.cpp:
* dom/Element.h:
* dom/ElementRareData.cpp:
* dom/ElementRareData.h:
(WebCore::ElementRareData::ElementRareData):
(WebCore::ElementRareData::~ElementRareData): Deleted.
* dom/Node.cpp:
(WebCore::Node::materializeRareData):
* html/HTMLCanvasElement.cpp:
(WebCore::HTMLCanvasElement::notifyObserversCanvasChanged): Deleted.
* page/DOMTimer.cpp:
(WebCore::DOMTimerFireState::scriptMadeNonUserObservableChanges): Deleted.
(WebCore::DOMTimerFireState::scriptMadeUserObservableChanges): Deleted.
(WebCore::NestedTimersMap::instanceForContext): Deleted.
(WebCore::DOMTimer::install): Deleted.
(WebCore::DOMTimer::fired): Deleted.
(WebCore::DOMTimer::alignedFireTime): Deleted.
(WebCore::DOMTimer::activeDOMObjectName): Deleted.
* page/DOMTimer.h:
* page/FrameView.cpp:
(WebCore::FrameView::reset): Deleted.
(WebCore::FrameView::viewportContentsChanged): Deleted.
(WebCore::FrameView::autoSizeIfEnabled): Deleted.
* page/FrameView.h:

LayoutTests:

Remove layout tests covering DOM Timer throttling.

* fast/canvas/canvas-outside-viewport-timer-throttling-expected.txt: Removed.
* fast/canvas/canvas-outside-viewport-timer-throttling.html: Removed.
* fast/dom/nested-timer-display-none-element-throttling-expected.txt: Removed.
* fast/dom/nested-timer-display-none-element-throttling.html: Removed.
* fast/dom/repeating-timer-display-none-element-throttling-expected.txt: Removed.
* fast/dom/repeating-timer-display-none-element-throttling.html: Removed.
* fast/dom/repeating-timer-element-overflow-hidden-throttling-expected.txt: Removed.
* fast/dom/repeating-timer-element-overflow-hidden-throttling.html: Removed.
* fast/dom/resources/timer-throttling-iframe.html: Removed.
* fast/dom/timer-throttle-on-scrolling-iframe-away-expected.txt: Removed.
* fast/dom/timer-throttle-on-scrolling-iframe-away.html: Removed.
* fast/dom/timer-unthrottle-on-layout-expected.txt: Removed.
* fast/dom/timer-unthrottle-on-layout.html: Removed.
* fast/dom/timer-unthrottle-on-scroll-expected.txt: Removed.
* fast/dom/timer-unthrottle-on-scroll.html: Removed.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSCSSStyleDeclarationCustomcpp">trunk/Source/WebCore/bindings/js/JSCSSStyleDeclarationCustom.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="#trunkSourceWebCoredomElementRareDatacpp">trunk/Source/WebCore/dom/ElementRareData.cpp</a></li>
<li><a href="#trunkSourceWebCoredomElementRareDatah">trunk/Source/WebCore/dom/ElementRareData.h</a></li>
<li><a href="#trunkSourceWebCoredomNodecpp">trunk/Source/WebCore/dom/Node.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLCanvasElementcpp">trunk/Source/WebCore/html/HTMLCanvasElement.cpp</a></li>
<li><a href="#trunkSourceWebCorepageDOMTimercpp">trunk/Source/WebCore/page/DOMTimer.cpp</a></li>
<li><a href="#trunkSourceWebCorepageDOMTimerh">trunk/Source/WebCore/page/DOMTimer.h</a></li>
<li><a href="#trunkSourceWebCorepageFrameViewcpp">trunk/Source/WebCore/page/FrameView.cpp</a></li>
<li><a href="#trunkSourceWebCorepageFrameViewh">trunk/Source/WebCore/page/FrameView.h</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsfastcanvascanvasoutsideviewporttimerthrottlingexpectedtxt">trunk/LayoutTests/fast/canvas/canvas-outside-viewport-timer-throttling-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastcanvascanvasoutsideviewporttimerthrottlinghtml">trunk/LayoutTests/fast/canvas/canvas-outside-viewport-timer-throttling.html</a></li>
<li><a href="#trunkLayoutTestsfastdomnestedtimerdisplaynoneelementthrottlingexpectedtxt">trunk/LayoutTests/fast/dom/nested-timer-display-none-element-throttling-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastdomnestedtimerdisplaynoneelementthrottlinghtml">trunk/LayoutTests/fast/dom/nested-timer-display-none-element-throttling.html</a></li>
<li><a href="#trunkLayoutTestsfastdomrepeatingtimerdisplaynoneelementthrottlingexpectedtxt">trunk/LayoutTests/fast/dom/repeating-timer-display-none-element-throttling-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastdomrepeatingtimerdisplaynoneelementthrottlinghtml">trunk/LayoutTests/fast/dom/repeating-timer-display-none-element-throttling.html</a></li>
<li><a href="#trunkLayoutTestsfastdomrepeatingtimerelementoverflowhiddenthrottlingexpectedtxt">trunk/LayoutTests/fast/dom/repeating-timer-element-overflow-hidden-throttling-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastdomrepeatingtimerelementoverflowhiddenthrottlinghtml">trunk/LayoutTests/fast/dom/repeating-timer-element-overflow-hidden-throttling.html</a></li>
<li><a href="#trunkLayoutTestsfastdomresourcestimerthrottlingiframehtml">trunk/LayoutTests/fast/dom/resources/timer-throttling-iframe.html</a></li>
<li><a href="#trunkLayoutTestsfastdomtimerthrottleonscrollingiframeawayexpectedtxt">trunk/LayoutTests/fast/dom/timer-throttle-on-scrolling-iframe-away-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastdomtimerthrottleonscrollingiframeawayhtml">trunk/LayoutTests/fast/dom/timer-throttle-on-scrolling-iframe-away.html</a></li>
<li><a href="#trunkLayoutTestsfastdomtimerunthrottleonlayoutexpectedtxt">trunk/LayoutTests/fast/dom/timer-unthrottle-on-layout-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastdomtimerunthrottleonlayouthtml">trunk/LayoutTests/fast/dom/timer-unthrottle-on-layout.html</a></li>
<li><a href="#trunkLayoutTestsfastdomtimerunthrottleonscrollexpectedtxt">trunk/LayoutTests/fast/dom/timer-unthrottle-on-scroll-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastdomtimerunthrottleonscrollhtml">trunk/LayoutTests/fast/dom/timer-unthrottle-on-scroll.html</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (185268 => 185269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2015-06-05 22:03:50 UTC (rev 185268)
+++ trunk/LayoutTests/ChangeLog        2015-06-05 22:10:19 UTC (rev 185269)
</span><span class="lines">@@ -1,3 +1,29 @@
</span><ins>+2015-06-05  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        Regression(r176212): Broke app switching on iCloud.com
+        https://bugs.webkit.org/show_bug.cgi?id=145708
+        &lt;rdar://problem/21235277&gt;
+
+        Reviewed by Simon Fraser.
+
+        Remove layout tests covering DOM Timer throttling.
+
+        * fast/canvas/canvas-outside-viewport-timer-throttling-expected.txt: Removed.
+        * fast/canvas/canvas-outside-viewport-timer-throttling.html: Removed.
+        * fast/dom/nested-timer-display-none-element-throttling-expected.txt: Removed.
+        * fast/dom/nested-timer-display-none-element-throttling.html: Removed.
+        * fast/dom/repeating-timer-display-none-element-throttling-expected.txt: Removed.
+        * fast/dom/repeating-timer-display-none-element-throttling.html: Removed.
+        * fast/dom/repeating-timer-element-overflow-hidden-throttling-expected.txt: Removed.
+        * fast/dom/repeating-timer-element-overflow-hidden-throttling.html: Removed.
+        * fast/dom/resources/timer-throttling-iframe.html: Removed.
+        * fast/dom/timer-throttle-on-scrolling-iframe-away-expected.txt: Removed.
+        * fast/dom/timer-throttle-on-scrolling-iframe-away.html: Removed.
+        * fast/dom/timer-unthrottle-on-layout-expected.txt: Removed.
+        * fast/dom/timer-unthrottle-on-layout.html: Removed.
+        * fast/dom/timer-unthrottle-on-scroll-expected.txt: Removed.
+        * fast/dom/timer-unthrottle-on-scroll.html: Removed.
+
</ins><span class="cx"> 2015-06-05  Myles C. Maxfield  &lt;mmaxfield@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [iOS] Emoji overlap preceeding lines
</span></span></pre></div>
<a id="trunkLayoutTestsfastcanvascanvasoutsideviewporttimerthrottlingexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/fast/canvas/canvas-outside-viewport-timer-throttling-expected.txt (185268 => 185269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/canvas/canvas-outside-viewport-timer-throttling-expected.txt        2015-06-05 22:03:50 UTC (rev 185268)
+++ trunk/LayoutTests/fast/canvas/canvas-outside-viewport-timer-throttling-expected.txt        2015-06-05 22:10:19 UTC (rev 185269)
</span><span class="lines">@@ -1,13 +0,0 @@
</span><del>-Test that a DOM timer drawing on a canvas outside viewport gets throttled.
-
-On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
-
-
-The timer should initially not be throttled.
-PASS internals.isTimerThrottled(timeoutId) is false
-The timer should now be throttled as it is drawing on a canvas outside viewport.
-PASS internals.isTimerThrottled(timeoutId) is true
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
</del></span></pre></div>
<a id="trunkLayoutTestsfastcanvascanvasoutsideviewporttimerthrottlinghtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/fast/canvas/canvas-outside-viewport-timer-throttling.html (185268 => 185269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/canvas/canvas-outside-viewport-timer-throttling.html        2015-06-05 22:03:50 UTC (rev 185268)
+++ trunk/LayoutTests/fast/canvas/canvas-outside-viewport-timer-throttling.html        2015-06-05 22:10:19 UTC (rev 185269)
</span><span class="lines">@@ -1,45 +0,0 @@
</span><del>-&lt;!DOCTYPE html&gt;
-&lt;html&gt;
-&lt;head&gt;
-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
-&lt;script&gt;
-var i = 0;
-var context;
-var timeoutId;
-var wasThrottled;
-
-function loop()
-{
-   i = (i + 1) % 255;
-   context.fillStyle = &quot;rgb(&quot; + i + &quot;, 0, 0)&quot;;
-   context.fillRect(0, 0, 150, 150);
-
-   // 5 iterations should suffice to throttle the timer.
-   if (i == 5) {
-     debug(&quot;The timer should now be throttled as it is drawing on a canvas outside viewport.&quot;);
-     shouldBeTrue(&quot;internals.isTimerThrottled(timeoutId)&quot;);
-     clearInterval(timeoutId);
-     finishJSTest();
-   }
-}
-
-function runTest() {
-  context = document.getElementById(&quot;canvas&quot;).getContext('2d');
-
-  timeoutId = setInterval(loop, 5);
-  debug(&quot;The timer should initially not be throttled.&quot;);
-  shouldBeFalse(&quot;internals.isTimerThrottled(timeoutId)&quot;);
-}
-&lt;/script&gt;
-&lt;/head&gt;
-&lt;body onload=&quot;runTest();&quot;&gt;
-&lt;script&gt;
-description(&quot;Test that a DOM timer drawing on a canvas outside viewport gets throttled.&quot;);
-jsTestIsAsync = true;
-&lt;/script&gt;
-&lt;div style=&quot;position: relative; width: 1600px; height: 2400px;&quot;&gt;
-  &lt;canvas id=&quot;canvas&quot; width=150 height=150 style=&quot;position:absolute; left: 600px; top: 800px;&quot;&gt;&lt;/canvas&gt;
-&lt;/div&gt;
-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
-&lt;/body&gt;
-&lt;/html&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsfastdomnestedtimerdisplaynoneelementthrottlingexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/fast/dom/nested-timer-display-none-element-throttling-expected.txt (185268 => 185269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/nested-timer-display-none-element-throttling-expected.txt        2015-06-05 22:03:50 UTC (rev 185268)
+++ trunk/LayoutTests/fast/dom/nested-timer-display-none-element-throttling-expected.txt        2015-06-05 22:10:19 UTC (rev 185269)
</span><span class="lines">@@ -1,18 +0,0 @@
</span><del>-Tests that a nested timer changing the style of a display:none element gets throttled.
-
-On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
-
-
-The timer should initially not be throttled.
-PASS internals.isTimerThrottled(timeoutId) is false
-5th iteration, timer should have been throttled.
-PASS wasThrottled is true
-6th iteration, timer should still be throttled.
-PASS internals.isTimerThrottled(timeoutId) is true
-Timer mutated the DOM tree.
-7th iteration, timer should no longer be throttled.
-PASS internals.isTimerThrottled(timeoutId) is false
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
</del></span></pre></div>
<a id="trunkLayoutTestsfastdomnestedtimerdisplaynoneelementthrottlinghtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/fast/dom/nested-timer-display-none-element-throttling.html (185268 => 185269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/nested-timer-display-none-element-throttling.html        2015-06-05 22:03:50 UTC (rev 185268)
+++ trunk/LayoutTests/fast/dom/nested-timer-display-none-element-throttling.html        2015-06-05 22:10:19 UTC (rev 185269)
</span><span class="lines">@@ -1,58 +0,0 @@
</span><del>-&lt;!DOCTYPE html&gt;
-&lt;body&gt;
-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
-&lt;div id=&quot;testElement&quot; style=&quot;display: none&quot;&gt;Test&lt;/div&gt;
-&lt;script&gt;
-description(&quot;Tests that a nested timer changing the style of a display:none element gets throttled.&quot;);
-jsTestIsAsync = true;
-
-var iterationCount = 0;
-var timeoutId;
-var testElement = document.getElementById(&quot;testElement&quot;);
-var wasThrottled = false;
-
-function checkTimerThrottleState()
-{
-  if (iterationCount == 5) {
-    // Do not use shouldBeTrue() here because it would cause a DOM tree mutation and
-    // unthrottle the DOM Timer.
-    wasThrottled = internals.isTimerThrottled(timeoutId);
-  } else if (iterationCount == 6) {
-    debug(&quot;5th iteration, timer should have been throttled.&quot;);
-    shouldBeTrue(&quot;wasThrottled&quot;);
-    debug(&quot;6th iteration, timer should still be throttled.&quot;);
-    shouldBeTrue(&quot;internals.isTimerThrottled(timeoutId)&quot;);
-  } else if (iterationCount &gt;= 6) {
-    // Timer should be unthrottled due to the DOM tree mutation caused by shouldBeTrue() in
-    // the previous iteration.
-    debug(&quot;&quot; + iterationCount + &quot;th iteration, timer should no longer be throttled.&quot;);
-    shouldBeFalse(&quot;internals.isTimerThrottled(timeoutId)&quot;);
-    clearTimeout(timeoutId);
-    finishJSTest();
-  }
-}
-
-function timerCallback()
-{
-  ++iterationCount;
-  // Interact with the style of the element.
-  testElement.style[&quot;left&quot;] = &quot;&quot; + iterationCount + &quot;px&quot;;
-
-  // 5 iterations should be sufficient to throttle the timer.
-  if (iterationCount &gt;= 5) {
-    setTimeout(checkTimerThrottleState, 0);
-    if (iterationCount == 7) {
-      // The call to debug() mutates the DOM tree.
-      debug(&quot;Timer mutated the DOM tree.&quot;);
-    }
-  }
-
-  timeoutId = setTimeout(timerCallback, 0);
-}
-
-timeoutId = setTimeout(timerCallback, 0);
-debug(&quot;The timer should initially not be throttled.&quot;);
-shouldBeFalse(&quot;internals.isTimerThrottled(timeoutId)&quot;);
-&lt;/script&gt;
-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
-&lt;/body&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsfastdomrepeatingtimerdisplaynoneelementthrottlingexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/fast/dom/repeating-timer-display-none-element-throttling-expected.txt (185268 => 185269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/repeating-timer-display-none-element-throttling-expected.txt        2015-06-05 22:03:50 UTC (rev 185268)
+++ trunk/LayoutTests/fast/dom/repeating-timer-display-none-element-throttling-expected.txt        2015-06-05 22:10:19 UTC (rev 185269)
</span><span class="lines">@@ -1,18 +0,0 @@
</span><del>-Tests that a repeating timer changing the style of a display:none element gets throttled.
-
-On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
-
-
-The timer should initially not be throttled.
-PASS internals.isTimerThrottled(timeoutId) is false
-5th iteration, timer should have been throttled.
-PASS wasThrottled is true
-6th iteration, timer should still be throttled.
-PASS internals.isTimerThrottled(timeoutId) is true
-Timer mutated the DOM tree.
-7th iteration, timer should no longer be throttled.
-PASS internals.isTimerThrottled(timeoutId) is false
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
</del></span></pre></div>
<a id="trunkLayoutTestsfastdomrepeatingtimerdisplaynoneelementthrottlinghtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/fast/dom/repeating-timer-display-none-element-throttling.html (185268 => 185269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/repeating-timer-display-none-element-throttling.html        2015-06-05 22:03:50 UTC (rev 185268)
+++ trunk/LayoutTests/fast/dom/repeating-timer-display-none-element-throttling.html        2015-06-05 22:10:19 UTC (rev 185269)
</span><span class="lines">@@ -1,46 +0,0 @@
</span><del>-&lt;!DOCTYPE html&gt;
-&lt;body&gt;
-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
-&lt;div id=&quot;testElement&quot; style=&quot;display: none&quot;&gt;Test&lt;/div&gt;
-&lt;script&gt;
-description(&quot;Tests that a repeating timer changing the style of a display:none element gets throttled.&quot;);
-jsTestIsAsync = true;
-
-var iterationCount = 0;
-var timeoutId;
-var testElement = document.getElementById(&quot;testElement&quot;);
-var wasThrottled = false;
-
-function timerCallback()
-{
-  ++iterationCount;
-  // Interact with the style of the element.
-  testElement.style[&quot;left&quot;] = &quot;&quot; + iterationCount + &quot;px&quot;;
-
-  // 5 iterations should suffice to throttle the timer.
-  if (iterationCount == 5) {
-    // Do not use shouldBeTrue() here because it would cause a DOM tree mutation and
-    // unthrottle the DOM Timer.
-    wasThrottled = internals.isTimerThrottled(timeoutId);
-  } else if (iterationCount == 6) {
-    debug(&quot;5th iteration, timer should have been throttled.&quot;);
-    shouldBeTrue(&quot;wasThrottled&quot;);
-    debug(&quot;6th iteration, timer should still be throttled.&quot;);
-    shouldBeTrue(&quot;internals.isTimerThrottled(timeoutId)&quot;);
-    debug(&quot;Timer mutated the DOM tree.&quot;);
-  } else if (iterationCount &gt;= 6) {
-    // Timer should be unthrottled due to the DOM tree mutation caused by shouldBeTrue() in
-    // the previous iteration.
-    debug(&quot;&quot; + iterationCount + &quot;th iteration, timer should no longer be throttled.&quot;);
-    shouldBeFalse(&quot;internals.isTimerThrottled(timeoutId)&quot;);
-    clearInterval(timeoutId);
-    finishJSTest();
-  }
-}
-
-timeoutId = setInterval(timerCallback, 0);
-debug(&quot;The timer should initially not be throttled.&quot;);
-shouldBeFalse(&quot;internals.isTimerThrottled(timeoutId)&quot;);
-&lt;/script&gt;
-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
-&lt;/body&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsfastdomrepeatingtimerelementoverflowhiddenthrottlingexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/fast/dom/repeating-timer-element-overflow-hidden-throttling-expected.txt (185268 => 185269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/repeating-timer-element-overflow-hidden-throttling-expected.txt        2015-06-05 22:03:50 UTC (rev 185268)
+++ trunk/LayoutTests/fast/dom/repeating-timer-element-overflow-hidden-throttling-expected.txt        2015-06-05 22:10:19 UTC (rev 185269)
</span><span class="lines">@@ -1,16 +0,0 @@
</span><del>-Tests that a repeating timer changing the style of an element with 0 height and hidden overflow content that have their own layer gets throttled.
-
-On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
-
-
-PASS testElement.offsetHeight is 0
-The timer should initially not be throttled.
-PASS internals.isTimerThrottled(timeoutId) is false
-5th iteration, timer should have been throttled.
-PASS wasThrottled is true
-6th iteration, timer should still be unthrottled.
-PASS internals.isTimerThrottled(timeoutId) is true
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
</del></span></pre></div>
<a id="trunkLayoutTestsfastdomrepeatingtimerelementoverflowhiddenthrottlinghtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/fast/dom/repeating-timer-element-overflow-hidden-throttling.html (185268 => 185269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/repeating-timer-element-overflow-hidden-throttling.html        2015-06-05 22:03:50 UTC (rev 185268)
+++ trunk/LayoutTests/fast/dom/repeating-timer-element-overflow-hidden-throttling.html        2015-06-05 22:10:19 UTC (rev 185269)
</span><span class="lines">@@ -1,45 +0,0 @@
</span><del>-&lt;!DOCTYPE html&gt;
-&lt;body&gt;
-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
-&lt;div id=&quot;testElement&quot; style=&quot;height: 0; overflow: hidden;&quot;&gt;
-&lt;div style=&quot;-webkit-transform: translateX(0);&quot;&gt;test1&lt;/div&gt;
-&lt;div style=&quot;-webkit-transform: translateX(0);&quot;&gt;test2&lt;/div&gt;
-&lt;/div&gt;
-&lt;script&gt;
-description(&quot;Tests that a repeating timer changing the style of an element with 0 height and hidden overflow content that have their own layer gets throttled.&quot;);
-jsTestIsAsync = true;
-
-var iterationCount = 0;
-var timeoutId;
-var testElement = document.getElementById(&quot;testElement&quot;);
-var wasThrottled = false;
-
-function timerCallback()
-{
-  ++iterationCount;
-  // Interact with the style of the element.
-  testElement.style[&quot;left&quot;] = &quot;&quot; + iterationCount + &quot;px&quot;;
-
-  // 5 iterations should suffice to throttle the timer.
-  if (iterationCount == 5) {
-    // Do not use shouldBeTrue() here because it would cause a DOM tree mutation and
-    // unthrottle the DOM Timer.
-    wasThrottled = internals.isTimerThrottled(timeoutId);
-  } else if (iterationCount == 6) {
-    debug(&quot;5th iteration, timer should have been throttled.&quot;);
-    shouldBeTrue(&quot;wasThrottled&quot;);
-    debug(&quot;6th iteration, timer should still be unthrottled.&quot;);
-    shouldBeTrue(&quot;internals.isTimerThrottled(timeoutId)&quot;);
-    clearInterval(timeoutId);
-    finishJSTest();
-  }
-}
-
-shouldBe(&quot;testElement.offsetHeight&quot;, &quot;0&quot;);
-
-timeoutId = setInterval(timerCallback, 0);
-debug(&quot;The timer should initially not be throttled.&quot;);
-shouldBeFalse(&quot;internals.isTimerThrottled(timeoutId)&quot;);
-&lt;/script&gt;
-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
-&lt;/body&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsfastdomresourcestimerthrottlingiframehtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/fast/dom/resources/timer-throttling-iframe.html (185268 => 185269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/resources/timer-throttling-iframe.html        2015-06-05 22:03:50 UTC (rev 185268)
+++ trunk/LayoutTests/fast/dom/resources/timer-throttling-iframe.html        2015-06-05 22:10:19 UTC (rev 185269)
</span><span class="lines">@@ -1,23 +0,0 @@
</span><del>-&lt;!DOCTYPE html&gt;
-&lt;body&gt;
-&lt;div id=&quot;testElement&quot;&gt;TEST&lt;/div&gt;
-&lt;script&gt;
-var testElement = document.getElementById(&quot;testElement&quot;);
-var iterationCount = 0;
-var timeoutId;
-
-function timerCallback() {
-  ++iterationCount;
-
-  // Change style of Element.
-  testElement.style[&quot;opacity&quot;] = &quot;&quot; + (iterationCount / 10.);
-
-  parent.timerFired(iterationCount, internals.isTimerThrottled(timeoutId));
-
-  if (iterationCount == 7)
-    clearInterval(timeoutId);
-}
-
-timeoutId = setInterval(timerCallback, 0);
-&lt;/script&gt;
-&lt;/body&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsfastdomtimerthrottleonscrollingiframeawayexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/fast/dom/timer-throttle-on-scrolling-iframe-away-expected.txt (185268 => 185269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/timer-throttle-on-scrolling-iframe-away-expected.txt        2015-06-05 22:03:50 UTC (rev 185268)
+++ trunk/LayoutTests/fast/dom/timer-throttle-on-scrolling-iframe-away-expected.txt        2015-06-05 22:10:19 UTC (rev 185269)
</span><span class="lines">@@ -1,14 +0,0 @@
</span><del>-Tests that a repeating timer in an iframe changing the style of an element gets throttled when scrolling the frame out of view.
-
-On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
-
-
-Frame is inside viewport, timer should not be throttled
-PASS isTimerThrottledBeforeScroll is false
-Scrolling frame out of view.
-Frame is outside viewport, timer should now be throttled
-PASS isTimerThrottledAfterScroll is true
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
</del></span></pre></div>
<a id="trunkLayoutTestsfastdomtimerthrottleonscrollingiframeawayhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/fast/dom/timer-throttle-on-scrolling-iframe-away.html (185268 => 185269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/timer-throttle-on-scrolling-iframe-away.html        2015-06-05 22:03:50 UTC (rev 185268)
+++ trunk/LayoutTests/fast/dom/timer-throttle-on-scrolling-iframe-away.html        2015-06-05 22:10:19 UTC (rev 185269)
</span><span class="lines">@@ -1,34 +0,0 @@
</span><del>-&lt;!DOCTYPE html&gt;
-&lt;body&gt;
-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
-&lt;script&gt;
-description(&quot;Tests that a repeating timer in an iframe changing the style of an element gets throttled when scrolling the frame out of view.&quot;);
-jsTestIsAsync = true;
-
-function scrollFrameOutOfView()
-{
-  debug(&quot;Scrolling frame out of view.&quot;);
-  window.scrollBy(0,800);
-}
-
-function timerFired(iterationCount, isThrottled) {
-  // 5 iterations should suffice to throttle the timer.
-  if (iterationCount == 5) {
-    debug(&quot;Frame is inside viewport, timer should not be throttled&quot;);
-    isTimerThrottledBeforeScroll = isThrottled;
-    shouldBeFalse(&quot;isTimerThrottledBeforeScroll&quot;);
-    scrollFrameOutOfView();
-  } else if (iterationCount == 7) {
-    debug(&quot;Frame is outside viewport, timer should now be throttled&quot;);
-    isTimerThrottledAfterScroll = isThrottled;
-    shouldBeTrue(&quot;isTimerThrottledAfterScroll&quot;);
-    finishJSTest();
-  }
-}
-
-&lt;/script&gt;
-&lt;div style=&quot;position: relative; width: 1600px; height: 2400px; background-color: green;&quot;&gt;
-  &lt;iframe id=&quot;testFrame&quot; src=&quot;resources/timer-throttling-iframe.html&quot; style=&quot;width: 100px; height: 100px;&quot;&gt;&lt;/iframe&gt;
-&lt;/div&gt;
-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
-&lt;/body&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsfastdomtimerunthrottleonlayoutexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/fast/dom/timer-unthrottle-on-layout-expected.txt (185268 => 185269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/timer-unthrottle-on-layout-expected.txt        2015-06-05 22:03:50 UTC (rev 185268)
+++ trunk/LayoutTests/fast/dom/timer-unthrottle-on-layout-expected.txt        2015-06-05 22:10:19 UTC (rev 185269)
</span><span class="lines">@@ -1,19 +0,0 @@
</span><del>-Tests that a repeating timer changing the style of an element outside viewport gets unthrottled if the elements is inside the viewport after layout.
-
-On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
-
-
-PASS internals.isTimerThrottled(timeoutId) is false
-5th iteration, timer should be throttled as the element is outside the viewport.
-PASS wasThrottled is true
-Timer should still be throttled before layout.
-PASS internals.isTimerThrottled(timeoutId) is true
-Forcing layout
-Timer should no longer be throttled
-PASS internals.isTimerThrottled(timeoutId) is false
-6th iteration, timer should still be unthrottled.
-PASS internals.isTimerThrottled(timeoutId) is false
-PASS successfullyParsed is true
-
-TEST COMPLETE
-TEST
</del></span></pre></div>
<a id="trunkLayoutTestsfastdomtimerunthrottleonlayouthtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/fast/dom/timer-unthrottle-on-layout.html (185268 => 185269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/timer-unthrottle-on-layout.html        2015-06-05 22:03:50 UTC (rev 185268)
+++ trunk/LayoutTests/fast/dom/timer-unthrottle-on-layout.html        2015-06-05 22:10:19 UTC (rev 185269)
</span><span class="lines">@@ -1,62 +0,0 @@
</span><del>-&lt;!DOCTYPE html&gt;
-&lt;body&gt;
-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
-&lt;div style=&quot;position: relative; width: 1600px; height: 2400px; background-color: green;&quot;&gt;
-  &lt;div id=&quot;parentDiv&quot; style=&quot;position:absolute; left: 600px; top: 800px;&quot;&gt;
-    &lt;div id=&quot;testElement&quot;&gt;TEST&lt;/div&gt;
-  &lt;/div&gt;
-&lt;/div&gt;
-&lt;script&gt;
-description(&quot;Tests that a repeating timer changing the style of an element outside viewport gets unthrottled if the elements is inside the viewport after layout.&quot;);
-jsTestIsAsync = true;
-
-var testElement = document.getElementById('testElement');
-var iterationCount = 0;
-var wasThrottled = false;
-var wasThrottledBeforeScroll = false;
-var timeoutId;
-
-function moveElementInsideViewport()
-{
-  debug(&quot;5th iteration, timer should be throttled as the element is outside the viewport.&quot;);
-  shouldBeTrue(&quot;wasThrottled&quot;);
-
-  var parentDiv = document.getElementById(&quot;parentDiv&quot;);
-  parentDiv.style[&quot;top&quot;] = &quot;100px&quot;;
-
-  debug(&quot;Timer should still be throttled before layout.&quot;);
-  shouldBeTrue(&quot;internals.isTimerThrottled(timeoutId)&quot;);
-
-  debug(&quot;Forcing layout&quot;);
-  parentDiv.offsetTop;
-
-  debug(&quot;Timer should no longer be throttled&quot;);
-  shouldBeFalse(&quot;internals.isTimerThrottled(timeoutId)&quot;);
-}
-
-function timerCallback()
-{
-  ++iterationCount;
-  // Change the style of the element while it is outside viewport.
-  testElement.style[&quot;opacity&quot;] = &quot;&quot; + (iterationCount / 10.);
-
-  // 5 iterations should be sufficient to throttle the timer.
-  if (iterationCount == 5) {
-    // Do not use shouldBeTrue() because it would cause a DOM tree mutation
-    // and unthrottle the timer.
-    wasThrottled = internals.isTimerThrottled(timeoutId);
-    setTimeout(moveElementInsideViewport, 0);
-  } else if (iterationCount == 6) {
-    debug(&quot;6th iteration, timer should still be unthrottled.&quot;);
-    shouldBeFalse(&quot;internals.isTimerThrottled(timeoutId)&quot;);
-
-    clearInterval(timeoutId);
-    finishJSTest();
-  }
-}
-
-timeoutId = setInterval(timerCallback, 0);
-shouldBeFalse(&quot;internals.isTimerThrottled(timeoutId)&quot;);
-&lt;/script&gt;
-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
-&lt;/body&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsfastdomtimerunthrottleonscrollexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/fast/dom/timer-unthrottle-on-scroll-expected.txt (185268 => 185269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/timer-unthrottle-on-scroll-expected.txt        2015-06-05 22:03:50 UTC (rev 185268)
+++ trunk/LayoutTests/fast/dom/timer-unthrottle-on-scroll-expected.txt        2015-06-05 22:10:19 UTC (rev 185269)
</span><span class="lines">@@ -1,19 +0,0 @@
</span><del>-Tests that a repeating timer changing the style of an element outside viewport gets unthrottled when scrolling the element into view.
-
-On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
-
-
-PASS internals.isTimerThrottled(timeoutId) is false
-5th iteration, timer should be throttled as the element is outside the viewport.
-PASS wasThrottled is true
-Timer should still be throttled before scrolling.
-PASS internals.isTimerThrottled(timeoutId) is true
-Scrolling element into view.
-Timer should no longer be throttled
-PASS internals.isTimerThrottled(timeoutId) is false
-6th iteration, timer should still be unthrottled.
-PASS internals.isTimerThrottled(timeoutId) is false
-PASS successfullyParsed is true
-
-TEST COMPLETE
-TEST
</del></span></pre></div>
<a id="trunkLayoutTestsfastdomtimerunthrottleonscrollhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/fast/dom/timer-unthrottle-on-scroll.html (185268 => 185269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/timer-unthrottle-on-scroll.html        2015-06-05 22:03:50 UTC (rev 185268)
+++ trunk/LayoutTests/fast/dom/timer-unthrottle-on-scroll.html        2015-06-05 22:10:19 UTC (rev 185269)
</span><span class="lines">@@ -1,59 +0,0 @@
</span><del>-&lt;!DOCTYPE html&gt;
-&lt;body&gt;
-&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
-&lt;div style=&quot;position: relative; width: 1600px; height: 2400px; background-color: green;&quot;&gt;
-  &lt;div style=&quot;position:absolute; left: 600px; top: 800px;&quot;&gt;
-    &lt;div id=&quot;testElement&quot;&gt;TEST&lt;/div&gt;
-  &lt;/div&gt;
-&lt;/div&gt;
-&lt;script&gt;
-description(&quot;Tests that a repeating timer changing the style of an element outside viewport gets unthrottled when scrolling the element into view.&quot;);
-jsTestIsAsync = true;
-
-var testElement = document.getElementById('testElement');
-var iterationCount = 0;
-var wasThrottled = false;
-var wasThrottledBeforeScroll = false;
-var timeoutId;
-
-function scrollElementIntoView()
-{
-  debug(&quot;5th iteration, timer should be throttled as the element is outside the viewport.&quot;);
-  shouldBeTrue(&quot;wasThrottled&quot;);
-
-  debug(&quot;Timer should still be throttled before scrolling.&quot;);
-  shouldBeTrue(&quot;internals.isTimerThrottled(timeoutId)&quot;);
-
-  debug(&quot;Scrolling element into view.&quot;);
-  window.internals.scrollElementToRect(testElement, 0, 0, 300, 300);
-
-  debug(&quot;Timer should no longer be throttled&quot;);
-  shouldBeFalse(&quot;internals.isTimerThrottled(timeoutId)&quot;);
-}
-
-function timerCallback()
-{
-  ++iterationCount;
-  // Change the style of the element while it is outside viewport.
-  testElement.style[&quot;opacity&quot;] = &quot;&quot; + (iterationCount / 10.);
-
-  // 5 iterations should be sufficient to throttle the timer.
-  if (iterationCount == 5) {
-    // Do not use shouldBeTrue() because it would cause a DOM tree mutation
-    // and unthrottle the timer.
-    wasThrottled = internals.isTimerThrottled(timeoutId);
-    setTimeout(scrollElementIntoView, 0);
-  } else if (iterationCount == 6) {
-    debug(&quot;6th iteration, timer should still be unthrottled.&quot;);
-    shouldBeFalse(&quot;internals.isTimerThrottled(timeoutId)&quot;);
-
-    clearInterval(timeoutId);
-    finishJSTest();
-  }
-}
-
-timeoutId = setInterval(timerCallback, 0);
-shouldBeFalse(&quot;internals.isTimerThrottled(timeoutId)&quot;);
-&lt;/script&gt;
-&lt;script src=&quot;../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
-&lt;/body&gt;
</del></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (185268 => 185269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-06-05 22:03:50 UTC (rev 185268)
+++ trunk/Source/WebCore/ChangeLog        2015-06-05 22:10:19 UTC (rev 185269)
</span><span class="lines">@@ -1,3 +1,42 @@
</span><ins>+2015-06-05  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        Regression(r176212): Broke app switching on iCloud.com
+        https://bugs.webkit.org/show_bug.cgi?id=145708
+        &lt;rdar://problem/21235277&gt;
+
+        Reviewed by Simon Fraser.
+
+        Roll out r176212 and follow-up fixes for now, to fix iCloud.com.
+        We can reconsider later how to do this in a safer way.
+
+        * bindings/js/JSCSSStyleDeclarationCustom.cpp:
+        (WebCore::JSCSSStyleDeclaration::putDelegate): Deleted.
+        (WebCore::JSCSSStyleDeclaration::getOwnPropertyNames): Deleted.
+        * dom/Element.cpp:
+        * dom/Element.h:
+        * dom/ElementRareData.cpp:
+        * dom/ElementRareData.h:
+        (WebCore::ElementRareData::ElementRareData):
+        (WebCore::ElementRareData::~ElementRareData): Deleted.
+        * dom/Node.cpp:
+        (WebCore::Node::materializeRareData):
+        * html/HTMLCanvasElement.cpp:
+        (WebCore::HTMLCanvasElement::notifyObserversCanvasChanged): Deleted.
+        * page/DOMTimer.cpp:
+        (WebCore::DOMTimerFireState::scriptMadeNonUserObservableChanges): Deleted.
+        (WebCore::DOMTimerFireState::scriptMadeUserObservableChanges): Deleted.
+        (WebCore::NestedTimersMap::instanceForContext): Deleted.
+        (WebCore::DOMTimer::install): Deleted.
+        (WebCore::DOMTimer::fired): Deleted.
+        (WebCore::DOMTimer::alignedFireTime): Deleted.
+        (WebCore::DOMTimer::activeDOMObjectName): Deleted.
+        * page/DOMTimer.h:
+        * page/FrameView.cpp:
+        (WebCore::FrameView::reset): Deleted.
+        (WebCore::FrameView::viewportContentsChanged): Deleted.
+        (WebCore::FrameView::autoSizeIfEnabled): Deleted.
+        * page/FrameView.h:
+
</ins><span class="cx"> 2015-06-05  Myles C. Maxfield  &lt;mmaxfield@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [iOS] Emoji overlap preceeding lines
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSCSSStyleDeclarationCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp (185268 => 185269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp        2015-06-05 22:03:50 UTC (rev 185268)
+++ trunk/Source/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp        2015-06-05 22:10:19 UTC (rev 185269)
</span><span class="lines">@@ -320,23 +320,6 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-// We only throttle DOM timers if they animate CSS properties that will only
-// cause the current element (or its descendants) to be repainted.
-static inline bool propertyChangeMayRepaintNonDescendants(CSSPropertyID propertyID)
-{
-    switch (propertyID) {
-    case CSSPropertyBottom:
-    case CSSPropertyLeft:
-    case CSSPropertyOpacity:
-    case CSSPropertyRight:
-    case CSSPropertyTop:
-    case CSSPropertyTransform:
-        return false;
-    default:
-        return true;
-    }
-}
-
</del><span class="cx"> bool JSCSSStyleDeclaration::putDelegate(ExecState* exec, PropertyName propertyName, JSValue value, PutPropertySlot&amp;)
</span><span class="cx"> {
</span><span class="cx">     CSSPropertyInfo propertyInfo = cssPropertyIDForJSCSSPropertyName(propertyName);
</span><span class="lines">@@ -361,10 +344,6 @@
</span><span class="cx">     impl().setPropertyInternal(propertyID, propValue, important, ec);
</span><span class="cx">     setDOMException(exec, ec);
</span><span class="cx"> 
</span><del>-    // Choke point for interaction with style of element; notify DOMTimer of the event.
-    if (auto* element = impl().parentElement())
-        DOMTimer::scriptDidCauseElementRepaint(*element, propertyChangeMayRepaintNonDescendants(propertyID));
-
</del><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoredomElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Element.cpp (185268 => 185269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Element.cpp        2015-06-05 22:03:50 UTC (rev 185268)
+++ trunk/Source/WebCore/dom/Element.cpp        2015-06-05 22:10:19 UTC (rev 185269)
</span><span class="lines">@@ -1374,11 +1374,6 @@
</span><span class="cx">     return document().completeURL(stripLeadingAndTrailingHTMLSpaces(linkAttribute));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-WeakPtr&lt;Element&gt; Element::createWeakPtr()
-{
-    return ensureElementRareData().weakPtrFactory().createWeakPtr();
-}
-
</del><span class="cx"> // Returns true is the given attribute is an event handler.
</span><span class="cx"> // We consider an event handler any attribute that begins with &quot;on&quot;.
</span><span class="cx"> // It is a simple solution that has the advantage of not requiring any
</span></span></pre></div>
<a id="trunkSourceWebCoredomElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Element.h (185268 => 185269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Element.h        2015-06-05 22:03:50 UTC (rev 185268)
+++ trunk/Source/WebCore/dom/Element.h        2015-06-05 22:10:19 UTC (rev 185269)
</span><span class="lines">@@ -483,7 +483,6 @@
</span><span class="cx">     void clearHoverAndActiveStatusBeforeDetachingRenderer();
</span><span class="cx"> 
</span><span class="cx">     WEBCORE_EXPORT URL absoluteLinkURL() const;
</span><del>-    WeakPtr&lt;Element&gt; createWeakPtr();
</del><span class="cx"> 
</span><span class="cx"> protected:
</span><span class="cx">     Element(const QualifiedName&amp;, Document&amp;, ConstructionType);
</span></span></pre></div>
<a id="trunkSourceWebCoredomElementRareDatacpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/ElementRareData.cpp (185268 => 185269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/ElementRareData.cpp        2015-06-05 22:03:50 UTC (rev 185268)
+++ trunk/Source/WebCore/dom/ElementRareData.cpp        2015-06-05 22:10:19 UTC (rev 185269)
</span><span class="lines">@@ -39,7 +39,7 @@
</span><span class="cx">     RegionOversetState regionOversetState;
</span><span class="cx">     LayoutSize sizeForResizing;
</span><span class="cx">     IntSize scrollOffset;
</span><del>-    void* pointers[8];
</del><ins>+    void* pointers[7];
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> static_assert(sizeof(ElementRareData) == sizeof(SameSizeAsElementRareData), &quot;ElementRareData should stay small&quot;);
</span></span></pre></div>
<a id="trunkSourceWebCoredomElementRareDatah"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/ElementRareData.h (185268 => 185269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/ElementRareData.h        2015-06-05 22:03:50 UTC (rev 185268)
+++ trunk/Source/WebCore/dom/ElementRareData.h        2015-06-05 22:10:19 UTC (rev 185269)
</span><span class="lines">@@ -35,7 +35,7 @@
</span><span class="cx"> 
</span><span class="cx"> class ElementRareData : public NodeRareData {
</span><span class="cx"> public:
</span><del>-    ElementRareData(Element&amp;, RenderElement*);
</del><ins>+    explicit ElementRareData(RenderElement*);
</ins><span class="cx">     ~ElementRareData();
</span><span class="cx"> 
</span><span class="cx">     void setBeforePseudoElement(RefPtr&lt;PseudoElement&gt;&amp;&amp;);
</span><span class="lines">@@ -113,8 +113,6 @@
</span><span class="cx">     bool hasPendingResources() const { return m_hasPendingResources; }
</span><span class="cx">     void setHasPendingResources(bool has) { m_hasPendingResources = has; }
</span><span class="cx"> 
</span><del>-    WeakPtrFactory&lt;Element&gt;&amp; weakPtrFactory() { return m_weakPtrFactory; }
-
</del><span class="cx"> private:
</span><span class="cx">     short m_tabIndex;
</span><span class="cx">     unsigned short m_childIndex;
</span><span class="lines">@@ -148,7 +146,6 @@
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;PseudoElement&gt; m_beforePseudoElement;
</span><span class="cx">     RefPtr&lt;PseudoElement&gt; m_afterPseudoElement;
</span><del>-    WeakPtrFactory&lt;Element&gt; m_weakPtrFactory;
</del><span class="cx"> 
</span><span class="cx">     void releasePseudoElement(PseudoElement*);
</span><span class="cx"> };
</span><span class="lines">@@ -158,7 +155,7 @@
</span><span class="cx">     return IntSize(LayoutUnit::max(), LayoutUnit::max());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-inline ElementRareData::ElementRareData(Element&amp; element, RenderElement* renderer)
</del><ins>+inline ElementRareData::ElementRareData(RenderElement* renderer)
</ins><span class="cx">     : NodeRareData(renderer)
</span><span class="cx">     , m_tabIndex(0)
</span><span class="cx">     , m_childIndex(0)
</span><span class="lines">@@ -177,7 +174,6 @@
</span><span class="cx">     , m_childrenAffectedByPropertyBasedBackwardPositionalRules(false)
</span><span class="cx">     , m_regionOversetState(RegionUndefined)
</span><span class="cx">     , m_minimumSizeForResizing(defaultMinimumSizeForResizing())
</span><del>-    , m_weakPtrFactory(&amp;element)
</del><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoredomNodecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Node.cpp (185268 => 185269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Node.cpp        2015-06-05 22:03:50 UTC (rev 185268)
+++ trunk/Source/WebCore/dom/Node.cpp        2015-06-05 22:10:19 UTC (rev 185269)
</span><span class="lines">@@ -354,7 +354,7 @@
</span><span class="cx"> {
</span><span class="cx">     NodeRareData* data;
</span><span class="cx">     if (is&lt;Element&gt;(*this))
</span><del>-        data = std::make_unique&lt;ElementRareData&gt;(downcast&lt;Element&gt;(*this), downcast&lt;RenderElement&gt;(m_data.m_renderer)).release();
</del><ins>+        data = std::make_unique&lt;ElementRareData&gt;(downcast&lt;RenderElement&gt;(m_data.m_renderer)).release();
</ins><span class="cx">     else
</span><span class="cx">         data = std::make_unique&lt;NodeRareData&gt;(m_data.m_renderer).release();
</span><span class="cx">     ASSERT(data);
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLCanvasElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLCanvasElement.cpp (185268 => 185269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLCanvasElement.cpp        2015-06-05 22:03:50 UTC (rev 185268)
+++ trunk/Source/WebCore/html/HTMLCanvasElement.cpp        2015-06-05 22:10:19 UTC (rev 185269)
</span><span class="lines">@@ -274,9 +274,6 @@
</span><span class="cx"> 
</span><span class="cx"> void HTMLCanvasElement::notifyObserversCanvasChanged(const FloatRect&amp; rect)
</span><span class="cx"> {
</span><del>-    // Choke point for canvas drawing; notify DOMTimer of the event.
-    DOMTimer::scriptDidCauseElementRepaint(*this);
-
</del><span class="cx">     for (auto it = m_observers.begin(), end = m_observers.end(); it != end; ++it)
</span><span class="cx">         (*it)-&gt;canvasChanged(*this, rect);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorepageDOMTimercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/DOMTimer.cpp (185268 => 185269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/DOMTimer.cpp        2015-06-05 22:03:50 UTC (rev 185268)
+++ trunk/Source/WebCore/page/DOMTimer.cpp        2015-06-05 22:10:19 UTC (rev 185269)
</span><span class="lines">@@ -27,7 +27,6 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;DOMTimer.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;FrameView.h&quot;
</del><span class="cx"> #include &quot;HTMLPlugInElement.h&quot;
</span><span class="cx"> #include &quot;InspectorInstrumentation.h&quot;
</span><span class="cx"> #include &quot;Logging.h&quot;
</span><span class="lines">@@ -82,11 +81,6 @@
</span><span class="cx"> 
</span><span class="cx">     void setScriptMadeUserObservableChanges() { m_scriptMadeUserObservableChanges = true; }
</span><span class="cx">     void setScriptMadeNonUserObservableChanges() { m_scriptMadeNonUserObservableChanges = true; }
</span><del>-    void setScriptMadeNonUserObservableChangesToElement(Element&amp; element)
-    {
-        m_scriptMadeNonUserObservableChanges = true;
-        m_elementsChangedOutsideViewport.set(&amp;element, element.createWeakPtr());
-    }
</del><span class="cx"> 
</span><span class="cx">     bool scriptMadeNonUserObservableChanges() const { return m_scriptMadeNonUserObservableChanges; }
</span><span class="cx">     bool scriptMadeUserObservableChanges() const
</span><span class="lines">@@ -99,24 +93,12 @@
</span><span class="cx">         return document &amp;&amp; document-&gt;domTreeVersion() != m_initialDOMTreeVersion;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    void elementsChangedOutsideViewport(Vector&lt;WeakPtr&lt;Element&gt;&gt;&amp; elements) const
-    {
-        ASSERT(elements.isEmpty());
-        elements.reserveCapacity(m_elementsChangedOutsideViewport.size());
-        for (auto&amp; element : m_elementsChangedOutsideViewport.values()) {
-            if (element)
-                elements.uncheckedAppend(element);
-        }
-        elements.shrinkToFit();
-    }
-
</del><span class="cx">     static DOMTimerFireState* current;
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     ScriptExecutionContext&amp; m_context;
</span><span class="cx">     uint64_t m_initialDOMTreeVersion;
</span><span class="cx">     DOMTimerFireState* m_previous;
</span><del>-    HashMap&lt;Element*, WeakPtr&lt;Element&gt;&gt; m_elementsChangedOutsideViewport;
</del><span class="cx">     bool m_contextIsDocument;
</span><span class="cx">     bool m_scriptMadeNonUserObservableChanges { false };
</span><span class="cx">     bool m_scriptMadeUserObservableChanges { false };
</span><span class="lines">@@ -210,10 +192,6 @@
</span><span class="cx"> 
</span><span class="cx"> DOMTimer::~DOMTimer()
</span><span class="cx"> {
</span><del>-    // If the ScriptExecutionContext has already been destroyed, there is
-    // no need to stop listening for viewport changes.
-    if (scriptExecutionContext() &amp;&amp; isIntervalDependentOnViewport())
-        unregisterForViewportChanges();
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> int DOMTimer::install(ScriptExecutionContext&amp; context, std::unique_ptr&lt;ScheduledAction&gt; action, int timeout, bool singleShot)
</span><span class="lines">@@ -284,7 +262,6 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (fireState.scriptMadeUserObservableChanges()) {
</span><del>-        ASSERT(m_elementsCausingThrottling.isEmpty());
</del><span class="cx">         if (m_throttleState != ShouldNotThrottle) {
</span><span class="cx">             m_throttleState = ShouldNotThrottle;
</span><span class="cx">             updateTimerIntervalIfNecessary();
</span><span class="lines">@@ -294,11 +271,6 @@
</span><span class="cx">             m_throttleState = ShouldThrottle;
</span><span class="cx">             updateTimerIntervalIfNecessary();
</span><span class="cx">         }
</span><del>-        // Update our vector of Elements causing throttling and register
-        // for viewport changes if the vector is not empty.
-        fireState.elementsChangedOutsideViewport(m_elementsCausingThrottling);
-        if (isIntervalDependentOnViewport())
-            registerForViewportChanges();
</del><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -313,17 +285,6 @@
</span><span class="cx">         DOMTimerFireState::current-&gt;setScriptMadeNonUserObservableChanges();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void DOMTimer::scriptDidCauseElementRepaint(Element&amp; element, bool mayRepaintNonDescendants)
-{
-    if (!DOMTimerFireState::current)
-        return;
-
-    if (mayRepaintNonDescendants || element.mayCauseRepaintInsideViewport())
-        DOMTimerFireState::current-&gt;setScriptMadeUserObservableChanges();
-    else
-        DOMTimerFireState::current-&gt;setScriptMadeNonUserObservableChangesToElement(element);
-}
-
</del><span class="cx"> void DOMTimer::fired()
</span><span class="cx"> {
</span><span class="cx">     // Retain this - if the timer is cancelled while this function is on the stack (implicitly and always
</span><span class="lines">@@ -335,10 +296,6 @@
</span><span class="cx">     ScriptExecutionContext&amp; context = *scriptExecutionContext();
</span><span class="cx"> 
</span><span class="cx">     DOMTimerFireState fireState(context);
</span><del>-    if (isIntervalDependentOnViewport()) {
-        // We re-evaluate if the timer interval is dependent on the viewport every time it fires.
-        unregisterForViewportChanges();
-    }
</del><span class="cx"> 
</span><span class="cx"> #if PLATFORM(IOS)
</span><span class="cx">     Document* document = nullptr;
</span><span class="lines">@@ -431,22 +388,6 @@
</span><span class="cx">     m_action = nullptr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void DOMTimer::registerForViewportChanges()
-{
-    ASSERT(isIntervalDependentOnViewport());
-    if (auto* frameView = downcast&lt;Document&gt;(*scriptExecutionContext()).view())
-        frameView-&gt;registerThrottledDOMTimer(this);
-}
-
-void DOMTimer::unregisterForViewportChanges()
-{
-    ASSERT(scriptExecutionContext());
-    if (auto* frameView = downcast&lt;Document&gt;(*scriptExecutionContext()).view())
-        frameView-&gt;unregisterThrottledDOMTimer(this);
-
-    m_elementsCausingThrottling.clear();
-}
-
</del><span class="cx"> void DOMTimer::updateTimerIntervalIfNecessary()
</span><span class="cx"> {
</span><span class="cx">     ASSERT(m_nestingLevel &lt;= maxTimerNestingLevel);
</span><span class="lines">@@ -467,26 +408,6 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void DOMTimer::updateThrottlingStateAfterViewportChange(const IntRect&amp; visibleRect)
-{
-    ASSERT(isIntervalDependentOnViewport());
-    // Check if the elements that caused this timer to be throttled are still outside the viewport.
-    for (auto&amp; weakElementPtr : m_elementsCausingThrottling) {
-        Element* element = weakElementPtr.get();
-        // Skip elements that were removed from the document.
-        if (!element || !element-&gt;inDocument())
-            continue;
-
-        if (element-&gt;mayCauseRepaintInsideViewport(&amp;visibleRect)) {
-            LOG(DOMTimers, &quot;%p - Script is changing style of an element that is now inside the viewport, unthrottling the timer.&quot;, this);
-            m_throttleState = ShouldNotThrottle;
-            unregisterForViewportChanges();
-            updateTimerIntervalIfNecessary();
-            break;
-        }
-    }
-}
-
</del><span class="cx"> double DOMTimer::intervalClampedToMinimum() const
</span><span class="cx"> {
</span><span class="cx">     ASSERT(scriptExecutionContext());
</span></span></pre></div>
<a id="trunkSourceWebCorepageDOMTimerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/DOMTimer.h (185268 => 185269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/DOMTimer.h        2015-06-05 22:03:50 UTC (rev 185268)
+++ trunk/Source/WebCore/page/DOMTimer.h        2015-06-05 22:10:19 UTC (rev 185269)
</span><span class="lines">@@ -29,9 +29,7 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;SuspendableTimer.h&quot;
</span><span class="cx"> #include &lt;memory&gt;
</span><del>-#include &lt;wtf/HashSet.h&gt;
</del><span class="cx"> #include &lt;wtf/RefCounted.h&gt;
</span><del>-#include &lt;wtf/WeakPtr.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -60,10 +58,8 @@
</span><span class="cx">         // Notify that the interval may need updating (e.g. because the minimum interval
</span><span class="cx">         // setting for the context has changed).
</span><span class="cx">         void updateTimerIntervalIfNecessary();
</span><del>-        void updateThrottlingStateAfterViewportChange(const IntRect&amp; visibleRect);
</del><span class="cx"> 
</span><span class="cx">         static void scriptDidInteractWithPlugin(HTMLPlugInElement&amp;);
</span><del>-        static void scriptDidCauseElementRepaint(Element&amp;, bool mayRepaintNonDescendants = false);
</del><span class="cx"> 
</span><span class="cx">     private:
</span><span class="cx">         DOMTimer(ScriptExecutionContext&amp;, std::unique_ptr&lt;ScheduledAction&gt;, int interval, bool singleShot);
</span><span class="lines">@@ -72,10 +68,6 @@
</span><span class="cx">         double intervalClampedToMinimum() const;
</span><span class="cx"> 
</span><span class="cx">         bool isDOMTimersThrottlingEnabled(Document&amp;) const;
</span><del>-        bool isIntervalDependentOnViewport() const { return m_throttleState == ShouldThrottle &amp;&amp; !m_elementsCausingThrottling.isEmpty(); }
-        void registerForViewportChanges();
-        void unregisterForViewportChanges();
-
</del><span class="cx">         void updateThrottlingStateIfNecessary(const DOMTimerFireState&amp;);
</span><span class="cx"> 
</span><span class="cx">         // SuspendableTimer
</span><span class="lines">@@ -99,10 +91,6 @@
</span><span class="cx">         TimerThrottleState m_throttleState;
</span><span class="cx">         double m_currentTimerInterval;
</span><span class="cx">         bool m_shouldForwardUserGesture;
</span><del>-        // Use WeakPtrs because we don't want to keep the elements alive but we
-        // still need to handle cases where the elements get destroyed after
-        // the timer has fired.
-        Vector&lt;WeakPtr&lt;Element&gt;&gt; m_elementsCausingThrottling;
</del><span class="cx">     };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorepageFrameViewcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/FrameView.cpp (185268 => 185269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/FrameView.cpp        2015-06-05 22:03:50 UTC (rev 185268)
+++ trunk/Source/WebCore/page/FrameView.cpp        2015-06-05 22:10:19 UTC (rev 185269)
</span><span class="lines">@@ -291,7 +291,6 @@
</span><span class="cx">     m_isVisuallyNonEmpty = false;
</span><span class="cx">     m_firstVisuallyNonEmptyLayoutCallbackPending = true;
</span><span class="cx">     m_maintainScrollPositionAnchor = nullptr;
</span><del>-    m_throttledTimers.clear();
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void FrameView::removeFromAXObjectCache()
</span><span class="lines">@@ -1806,7 +1805,6 @@
</span><span class="cx">     // check if we should resume animated images or unthrottle DOM timers.
</span><span class="cx">     applyRecursivelyWithVisibleRect([] (FrameView&amp; frameView, const IntRect&amp; visibleRect) {
</span><span class="cx">         frameView.resumeVisibleImageAnimations(visibleRect);
</span><del>-        frameView.updateThrottledDOMTimersState(visibleRect);
</del><span class="cx">         frameView.updateScriptedAnimationsAndTimersThrottlingState(visibleRect);
</span><span class="cx">     });
</span><span class="cx"> }
</span><span class="lines">@@ -3122,29 +3120,6 @@
</span><span class="cx">     performPostLayoutTasks();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void FrameView::registerThrottledDOMTimer(DOMTimer* timer)
-{
-    m_throttledTimers.add(timer);
-}
-
-void FrameView::unregisterThrottledDOMTimer(DOMTimer* timer)
-{
-    m_throttledTimers.remove(timer);
-}
-
-void FrameView::updateThrottledDOMTimersState(const IntRect&amp; visibleRect)
-{
-    if (m_throttledTimers.isEmpty())
-        return;
-
-    // Do not iterate over the HashSet because calling DOMTimer::updateThrottlingStateAfterViewportChange()
-    // may cause timers to remove themselves from it while we are iterating.
-    Vector&lt;DOMTimer*&gt; timers;
-    copyToVector(m_throttledTimers, timers);
-    for (auto* timer : timers)
-        timer-&gt;updateThrottlingStateAfterViewportChange(visibleRect);
-}
-
</del><span class="cx"> void FrameView::autoSizeIfEnabled()
</span><span class="cx"> {
</span><span class="cx">     if (!m_shouldAutoSize)
</span></span></pre></div>
<a id="trunkSourceWebCorepageFrameViewh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/FrameView.h (185268 => 185269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/FrameView.h        2015-06-05 22:03:50 UTC (rev 185268)
+++ trunk/Source/WebCore/page/FrameView.h        2015-06-05 22:10:19 UTC (rev 185269)
</span><span class="lines">@@ -43,7 +43,6 @@
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class AXObjectCache;
</span><del>-class DOMTimer;
</del><span class="cx"> class Element;
</span><span class="cx"> class FloatSize;
</span><span class="cx"> class Frame;
</span><span class="lines">@@ -316,9 +315,6 @@
</span><span class="cx"> 
</span><span class="cx">     void postLayoutTimerFired();
</span><span class="cx"> 
</span><del>-    void registerThrottledDOMTimer(DOMTimer*);
-    void unregisterThrottledDOMTimer(DOMTimer*);
-
</del><span class="cx">     WEBCORE_EXPORT bool wasScrolledByUser() const;
</span><span class="cx">     WEBCORE_EXPORT void setWasScrolledByUser(bool);
</span><span class="cx"> 
</span><span class="lines">@@ -604,7 +600,6 @@
</span><span class="cx">     void autoSizeIfEnabled();
</span><span class="cx"> 
</span><span class="cx">     void applyRecursivelyWithVisibleRect(const std::function&lt;void (FrameView&amp; frameView, const IntRect&amp; visibleRect)&gt;&amp;);
</span><del>-    void updateThrottledDOMTimersState(const IntRect&amp; visibleRect);
</del><span class="cx">     void resumeVisibleImageAnimations(const IntRect&amp; visibleRect);
</span><span class="cx">     void updateScriptedAnimationsAndTimersThrottlingState(const IntRect&amp; visibleRect);
</span><span class="cx"> 
</span><span class="lines">@@ -789,8 +784,6 @@
</span><span class="cx">     std::unique_ptr&lt;ScrollableAreaSet&gt; m_scrollableAreas;
</span><span class="cx">     std::unique_ptr&lt;ViewportConstrainedObjectSet&gt; m_viewportConstrainedObjects;
</span><span class="cx"> 
</span><del>-    HashSet&lt;DOMTimer*&gt; m_throttledTimers;
-
</del><span class="cx">     int m_headerHeight;
</span><span class="cx">     int m_footerHeight;
</span><span class="cx"> 
</span></span></pre>
</div>
</div>

</body>
</html>