Title: [185269] trunk
Revision
185269
Author
[email protected]
Date
2015-06-05 15:10:19 -0700 (Fri, 05 Jun 2015)

Log Message

Regression(r176212): Broke app switching on iCloud.com
https://bugs.webkit.org/show_bug.cgi?id=145708
<rdar://problem/21235277>

Reviewed by Simon Fraser.

Source/WebCore:

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:

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.

Modified Paths

Removed Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (185268 => 185269)


--- trunk/LayoutTests/ChangeLog	2015-06-05 22:03:50 UTC (rev 185268)
+++ trunk/LayoutTests/ChangeLog	2015-06-05 22:10:19 UTC (rev 185269)
@@ -1,3 +1,29 @@
+2015-06-05  Chris Dumez  <[email protected]>
+
+        Regression(r176212): Broke app switching on iCloud.com
+        https://bugs.webkit.org/show_bug.cgi?id=145708
+        <rdar://problem/21235277>
+
+        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.
+
 2015-06-05  Myles C. Maxfield  <[email protected]>
 
         [iOS] Emoji overlap preceeding lines

Deleted: trunk/LayoutTests/fast/canvas/canvas-outside-viewport-timer-throttling-expected.txt (185268 => 185269)


--- 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)
@@ -1,13 +0,0 @@
-Test that a DOM timer drawing on a canvas outside viewport gets throttled.
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-
-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
-

Deleted: trunk/LayoutTests/fast/canvas/canvas-outside-viewport-timer-throttling.html (185268 => 185269)


--- 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)
@@ -1,45 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<script src=""
-<script>
-var i = 0;
-var context;
-var timeoutId;
-var wasThrottled;
-
-function loop()
-{
-   i = (i + 1) % 255;
-   context.fillStyle = "rgb(" + i + ", 0, 0)";
-   context.fillRect(0, 0, 150, 150);
-
-   // 5 iterations should suffice to throttle the timer.
-   if (i == 5) {
-     debug("The timer should now be throttled as it is drawing on a canvas outside viewport.");
-     shouldBeTrue("internals.isTimerThrottled(timeoutId)");
-     clearInterval(timeoutId);
-     finishJSTest();
-   }
-}
-
-function runTest() {
-  context = document.getElementById("canvas").getContext('2d');
-
-  timeoutId = setInterval(loop, 5);
-  debug("The timer should initially not be throttled.");
-  shouldBeFalse("internals.isTimerThrottled(timeoutId)");
-}
-</script>
-</head>
-<body _onload_="runTest();">
-<script>
-description("Test that a DOM timer drawing on a canvas outside viewport gets throttled.");
-jsTestIsAsync = true;
-</script>
-<div style="position: relative; width: 1600px; height: 2400px;">
-  <canvas id="canvas" width=150 height=150 style="position:absolute; left: 600px; top: 800px;"></canvas>
-</div>
-<script src=""
-</body>
-</html>

Deleted: trunk/LayoutTests/fast/dom/nested-timer-display-none-element-throttling-expected.txt (185268 => 185269)


--- 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)
@@ -1,18 +0,0 @@
-Tests that a nested timer changing the style of a display:none element gets throttled.
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-
-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
-

Deleted: trunk/LayoutTests/fast/dom/nested-timer-display-none-element-throttling.html (185268 => 185269)


--- 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)
@@ -1,58 +0,0 @@
-<!DOCTYPE html>
-<body>
-<script src=""
-<div id="testElement" style="display: none">Test</div>
-<script>
-description("Tests that a nested timer changing the style of a display:none element gets throttled.");
-jsTestIsAsync = true;
-
-var iterationCount = 0;
-var timeoutId;
-var testElement = document.getElementById("testElement");
-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("5th iteration, timer should have been throttled.");
-    shouldBeTrue("wasThrottled");
-    debug("6th iteration, timer should still be throttled.");
-    shouldBeTrue("internals.isTimerThrottled(timeoutId)");
-  } else if (iterationCount >= 6) {
-    // Timer should be unthrottled due to the DOM tree mutation caused by shouldBeTrue() in
-    // the previous iteration.
-    debug("" + iterationCount + "th iteration, timer should no longer be throttled.");
-    shouldBeFalse("internals.isTimerThrottled(timeoutId)");
-    clearTimeout(timeoutId);
-    finishJSTest();
-  }
-}
-
-function timerCallback()
-{
-  ++iterationCount;
-  // Interact with the style of the element.
-  testElement.style["left"] = "" + iterationCount + "px";
-
-  // 5 iterations should be sufficient to throttle the timer.
-  if (iterationCount >= 5) {
-    setTimeout(checkTimerThrottleState, 0);
-    if (iterationCount == 7) {
-      // The call to debug() mutates the DOM tree.
-      debug("Timer mutated the DOM tree.");
-    }
-  }
-
-  timeoutId = setTimeout(timerCallback, 0);
-}
-
-timeoutId = setTimeout(timerCallback, 0);
-debug("The timer should initially not be throttled.");
-shouldBeFalse("internals.isTimerThrottled(timeoutId)");
-</script>
-<script src=""
-</body>

Deleted: trunk/LayoutTests/fast/dom/repeating-timer-display-none-element-throttling-expected.txt (185268 => 185269)


--- 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)
@@ -1,18 +0,0 @@
-Tests that a repeating timer changing the style of a display:none element gets throttled.
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-
-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
-

Deleted: trunk/LayoutTests/fast/dom/repeating-timer-display-none-element-throttling.html (185268 => 185269)


--- 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)
@@ -1,46 +0,0 @@
-<!DOCTYPE html>
-<body>
-<script src=""
-<div id="testElement" style="display: none">Test</div>
-<script>
-description("Tests that a repeating timer changing the style of a display:none element gets throttled.");
-jsTestIsAsync = true;
-
-var iterationCount = 0;
-var timeoutId;
-var testElement = document.getElementById("testElement");
-var wasThrottled = false;
-
-function timerCallback()
-{
-  ++iterationCount;
-  // Interact with the style of the element.
-  testElement.style["left"] = "" + iterationCount + "px";
-
-  // 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("5th iteration, timer should have been throttled.");
-    shouldBeTrue("wasThrottled");
-    debug("6th iteration, timer should still be throttled.");
-    shouldBeTrue("internals.isTimerThrottled(timeoutId)");
-    debug("Timer mutated the DOM tree.");
-  } else if (iterationCount >= 6) {
-    // Timer should be unthrottled due to the DOM tree mutation caused by shouldBeTrue() in
-    // the previous iteration.
-    debug("" + iterationCount + "th iteration, timer should no longer be throttled.");
-    shouldBeFalse("internals.isTimerThrottled(timeoutId)");
-    clearInterval(timeoutId);
-    finishJSTest();
-  }
-}
-
-timeoutId = setInterval(timerCallback, 0);
-debug("The timer should initially not be throttled.");
-shouldBeFalse("internals.isTimerThrottled(timeoutId)");
-</script>
-<script src=""
-</body>

Deleted: trunk/LayoutTests/fast/dom/repeating-timer-element-overflow-hidden-throttling-expected.txt (185268 => 185269)


--- 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)
@@ -1,16 +0,0 @@
-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 "PASS" messages, followed by "TEST COMPLETE".
-
-
-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
-

Deleted: trunk/LayoutTests/fast/dom/repeating-timer-element-overflow-hidden-throttling.html (185268 => 185269)


--- 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)
@@ -1,45 +0,0 @@
-<!DOCTYPE html>
-<body>
-<script src=""
-<div id="testElement" style="height: 0; overflow: hidden;">
-<div style="-webkit-transform: translateX(0);">test1</div>
-<div style="-webkit-transform: translateX(0);">test2</div>
-</div>
-<script>
-description("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.");
-jsTestIsAsync = true;
-
-var iterationCount = 0;
-var timeoutId;
-var testElement = document.getElementById("testElement");
-var wasThrottled = false;
-
-function timerCallback()
-{
-  ++iterationCount;
-  // Interact with the style of the element.
-  testElement.style["left"] = "" + iterationCount + "px";
-
-  // 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("5th iteration, timer should have been throttled.");
-    shouldBeTrue("wasThrottled");
-    debug("6th iteration, timer should still be unthrottled.");
-    shouldBeTrue("internals.isTimerThrottled(timeoutId)");
-    clearInterval(timeoutId);
-    finishJSTest();
-  }
-}
-
-shouldBe("testElement.offsetHeight", "0");
-
-timeoutId = setInterval(timerCallback, 0);
-debug("The timer should initially not be throttled.");
-shouldBeFalse("internals.isTimerThrottled(timeoutId)");
-</script>
-<script src=""
-</body>

Deleted: trunk/LayoutTests/fast/dom/resources/timer-throttling-iframe.html (185268 => 185269)


--- 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)
@@ -1,23 +0,0 @@
-<!DOCTYPE html>
-<body>
-<div id="testElement">TEST</div>
-<script>
-var testElement = document.getElementById("testElement");
-var iterationCount = 0;
-var timeoutId;
-
-function timerCallback() {
-  ++iterationCount;
-
-  // Change style of Element.
-  testElement.style["opacity"] = "" + (iterationCount / 10.);
-
-  parent.timerFired(iterationCount, internals.isTimerThrottled(timeoutId));
-
-  if (iterationCount == 7)
-    clearInterval(timeoutId);
-}
-
-timeoutId = setInterval(timerCallback, 0);
-</script>
-</body>

Deleted: trunk/LayoutTests/fast/dom/timer-throttle-on-scrolling-iframe-away-expected.txt (185268 => 185269)


--- 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)
@@ -1,14 +0,0 @@
-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 "PASS" messages, followed by "TEST COMPLETE".
-
-
-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
-

Deleted: trunk/LayoutTests/fast/dom/timer-throttle-on-scrolling-iframe-away.html (185268 => 185269)


--- 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)
@@ -1,34 +0,0 @@
-<!DOCTYPE html>
-<body>
-<script src=""
-<script>
-description("Tests that a repeating timer in an iframe changing the style of an element gets throttled when scrolling the frame out of view.");
-jsTestIsAsync = true;
-
-function scrollFrameOutOfView()
-{
-  debug("Scrolling frame out of view.");
-  window.scrollBy(0,800);
-}
-
-function timerFired(iterationCount, isThrottled) {
-  // 5 iterations should suffice to throttle the timer.
-  if (iterationCount == 5) {
-    debug("Frame is inside viewport, timer should not be throttled");
-    isTimerThrottledBeforeScroll = isThrottled;
-    shouldBeFalse("isTimerThrottledBeforeScroll");
-    scrollFrameOutOfView();
-  } else if (iterationCount == 7) {
-    debug("Frame is outside viewport, timer should now be throttled");
-    isTimerThrottledAfterScroll = isThrottled;
-    shouldBeTrue("isTimerThrottledAfterScroll");
-    finishJSTest();
-  }
-}
-
-</script>
-<div style="position: relative; width: 1600px; height: 2400px; background-color: green;">
-  <iframe id="testFrame" src="" style="width: 100px; height: 100px;"></iframe>
-</div>
-<script src=""
-</body>

Deleted: trunk/LayoutTests/fast/dom/timer-unthrottle-on-layout-expected.txt (185268 => 185269)


--- 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)
@@ -1,19 +0,0 @@
-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 "PASS" messages, followed by "TEST COMPLETE".
-
-
-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

Deleted: trunk/LayoutTests/fast/dom/timer-unthrottle-on-layout.html (185268 => 185269)


--- 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)
@@ -1,62 +0,0 @@
-<!DOCTYPE html>
-<body>
-<script src=""
-<div style="position: relative; width: 1600px; height: 2400px; background-color: green;">
-  <div id="parentDiv" style="position:absolute; left: 600px; top: 800px;">
-    <div id="testElement">TEST</div>
-  </div>
-</div>
-<script>
-description("Tests that a repeating timer changing the style of an element outside viewport gets unthrottled if the elements is inside the viewport after layout.");
-jsTestIsAsync = true;
-
-var testElement = document.getElementById('testElement');
-var iterationCount = 0;
-var wasThrottled = false;
-var wasThrottledBeforeScroll = false;
-var timeoutId;
-
-function moveElementInsideViewport()
-{
-  debug("5th iteration, timer should be throttled as the element is outside the viewport.");
-  shouldBeTrue("wasThrottled");
-
-  var parentDiv = document.getElementById("parentDiv");
-  parentDiv.style["top"] = "100px";
-
-  debug("Timer should still be throttled before layout.");
-  shouldBeTrue("internals.isTimerThrottled(timeoutId)");
-
-  debug("Forcing layout");
-  parentDiv.offsetTop;
-
-  debug("Timer should no longer be throttled");
-  shouldBeFalse("internals.isTimerThrottled(timeoutId)");
-}
-
-function timerCallback()
-{
-  ++iterationCount;
-  // Change the style of the element while it is outside viewport.
-  testElement.style["opacity"] = "" + (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("6th iteration, timer should still be unthrottled.");
-    shouldBeFalse("internals.isTimerThrottled(timeoutId)");
-
-    clearInterval(timeoutId);
-    finishJSTest();
-  }
-}
-
-timeoutId = setInterval(timerCallback, 0);
-shouldBeFalse("internals.isTimerThrottled(timeoutId)");
-</script>
-<script src=""
-</body>

Deleted: trunk/LayoutTests/fast/dom/timer-unthrottle-on-scroll-expected.txt (185268 => 185269)


--- 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)
@@ -1,19 +0,0 @@
-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 "PASS" messages, followed by "TEST COMPLETE".
-
-
-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

Deleted: trunk/LayoutTests/fast/dom/timer-unthrottle-on-scroll.html (185268 => 185269)


--- 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)
@@ -1,59 +0,0 @@
-<!DOCTYPE html>
-<body>
-<script src=""
-<div style="position: relative; width: 1600px; height: 2400px; background-color: green;">
-  <div style="position:absolute; left: 600px; top: 800px;">
-    <div id="testElement">TEST</div>
-  </div>
-</div>
-<script>
-description("Tests that a repeating timer changing the style of an element outside viewport gets unthrottled when scrolling the element into view.");
-jsTestIsAsync = true;
-
-var testElement = document.getElementById('testElement');
-var iterationCount = 0;
-var wasThrottled = false;
-var wasThrottledBeforeScroll = false;
-var timeoutId;
-
-function scrollElementIntoView()
-{
-  debug("5th iteration, timer should be throttled as the element is outside the viewport.");
-  shouldBeTrue("wasThrottled");
-
-  debug("Timer should still be throttled before scrolling.");
-  shouldBeTrue("internals.isTimerThrottled(timeoutId)");
-
-  debug("Scrolling element into view.");
-  window.internals.scrollElementToRect(testElement, 0, 0, 300, 300);
-
-  debug("Timer should no longer be throttled");
-  shouldBeFalse("internals.isTimerThrottled(timeoutId)");
-}
-
-function timerCallback()
-{
-  ++iterationCount;
-  // Change the style of the element while it is outside viewport.
-  testElement.style["opacity"] = "" + (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("6th iteration, timer should still be unthrottled.");
-    shouldBeFalse("internals.isTimerThrottled(timeoutId)");
-
-    clearInterval(timeoutId);
-    finishJSTest();
-  }
-}
-
-timeoutId = setInterval(timerCallback, 0);
-shouldBeFalse("internals.isTimerThrottled(timeoutId)");
-</script>
-<script src=""
-</body>

Modified: trunk/Source/WebCore/ChangeLog (185268 => 185269)


--- 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)
@@ -1,3 +1,42 @@
+2015-06-05  Chris Dumez  <[email protected]>
+
+        Regression(r176212): Broke app switching on iCloud.com
+        https://bugs.webkit.org/show_bug.cgi?id=145708
+        <rdar://problem/21235277>
+
+        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:
+
 2015-06-05  Myles C. Maxfield  <[email protected]>
 
         [iOS] Emoji overlap preceeding lines

Modified: trunk/Source/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp (185268 => 185269)


--- 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)
@@ -320,23 +320,6 @@
     return true;
 }
 
-// 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;
-    }
-}
-
 bool JSCSSStyleDeclaration::putDelegate(ExecState* exec, PropertyName propertyName, JSValue value, PutPropertySlot&)
 {
     CSSPropertyInfo propertyInfo = cssPropertyIDForJSCSSPropertyName(propertyName);
@@ -361,10 +344,6 @@
     impl().setPropertyInternal(propertyID, propValue, important, ec);
     setDOMException(exec, ec);
 
-    // Choke point for interaction with style of element; notify DOMTimer of the event.
-    if (auto* element = impl().parentElement())
-        DOMTimer::scriptDidCauseElementRepaint(*element, propertyChangeMayRepaintNonDescendants(propertyID));
-
     return true;
 }
 

Modified: trunk/Source/WebCore/dom/Element.cpp (185268 => 185269)


--- 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)
@@ -1374,11 +1374,6 @@
     return document().completeURL(stripLeadingAndTrailingHTMLSpaces(linkAttribute));
 }
 
-WeakPtr<Element> Element::createWeakPtr()
-{
-    return ensureElementRareData().weakPtrFactory().createWeakPtr();
-}
-
 // Returns true is the given attribute is an event handler.
 // We consider an event handler any attribute that begins with "on".
 // It is a simple solution that has the advantage of not requiring any

Modified: trunk/Source/WebCore/dom/Element.h (185268 => 185269)


--- 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)
@@ -483,7 +483,6 @@
     void clearHoverAndActiveStatusBeforeDetachingRenderer();
 
     WEBCORE_EXPORT URL absoluteLinkURL() const;
-    WeakPtr<Element> createWeakPtr();
 
 protected:
     Element(const QualifiedName&, Document&, ConstructionType);

Modified: trunk/Source/WebCore/dom/ElementRareData.cpp (185268 => 185269)


--- 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)
@@ -39,7 +39,7 @@
     RegionOversetState regionOversetState;
     LayoutSize sizeForResizing;
     IntSize scrollOffset;
-    void* pointers[8];
+    void* pointers[7];
 };
 
 static_assert(sizeof(ElementRareData) == sizeof(SameSizeAsElementRareData), "ElementRareData should stay small");

Modified: trunk/Source/WebCore/dom/ElementRareData.h (185268 => 185269)


--- 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)
@@ -35,7 +35,7 @@
 
 class ElementRareData : public NodeRareData {
 public:
-    ElementRareData(Element&, RenderElement*);
+    explicit ElementRareData(RenderElement*);
     ~ElementRareData();
 
     void setBeforePseudoElement(RefPtr<PseudoElement>&&);
@@ -113,8 +113,6 @@
     bool hasPendingResources() const { return m_hasPendingResources; }
     void setHasPendingResources(bool has) { m_hasPendingResources = has; }
 
-    WeakPtrFactory<Element>& weakPtrFactory() { return m_weakPtrFactory; }
-
 private:
     short m_tabIndex;
     unsigned short m_childIndex;
@@ -148,7 +146,6 @@
 
     RefPtr<PseudoElement> m_beforePseudoElement;
     RefPtr<PseudoElement> m_afterPseudoElement;
-    WeakPtrFactory<Element> m_weakPtrFactory;
 
     void releasePseudoElement(PseudoElement*);
 };
@@ -158,7 +155,7 @@
     return IntSize(LayoutUnit::max(), LayoutUnit::max());
 }
 
-inline ElementRareData::ElementRareData(Element& element, RenderElement* renderer)
+inline ElementRareData::ElementRareData(RenderElement* renderer)
     : NodeRareData(renderer)
     , m_tabIndex(0)
     , m_childIndex(0)
@@ -177,7 +174,6 @@
     , m_childrenAffectedByPropertyBasedBackwardPositionalRules(false)
     , m_regionOversetState(RegionUndefined)
     , m_minimumSizeForResizing(defaultMinimumSizeForResizing())
-    , m_weakPtrFactory(&element)
 {
 }
 

Modified: trunk/Source/WebCore/dom/Node.cpp (185268 => 185269)


--- 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)
@@ -354,7 +354,7 @@
 {
     NodeRareData* data;
     if (is<Element>(*this))
-        data = "" downcast<RenderElement>(m_data.m_renderer)).release();
+        data = ""
     else
         data = ""
     ASSERT(data);

Modified: trunk/Source/WebCore/html/HTMLCanvasElement.cpp (185268 => 185269)


--- 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)
@@ -274,9 +274,6 @@
 
 void HTMLCanvasElement::notifyObserversCanvasChanged(const FloatRect& rect)
 {
-    // Choke point for canvas drawing; notify DOMTimer of the event.
-    DOMTimer::scriptDidCauseElementRepaint(*this);
-
     for (auto it = m_observers.begin(), end = m_observers.end(); it != end; ++it)
         (*it)->canvasChanged(*this, rect);
 }

Modified: trunk/Source/WebCore/page/DOMTimer.cpp (185268 => 185269)


--- 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)
@@ -27,7 +27,6 @@
 #include "config.h"
 #include "DOMTimer.h"
 
-#include "FrameView.h"
 #include "HTMLPlugInElement.h"
 #include "InspectorInstrumentation.h"
 #include "Logging.h"
@@ -82,11 +81,6 @@
 
     void setScriptMadeUserObservableChanges() { m_scriptMadeUserObservableChanges = true; }
     void setScriptMadeNonUserObservableChanges() { m_scriptMadeNonUserObservableChanges = true; }
-    void setScriptMadeNonUserObservableChangesToElement(Element& element)
-    {
-        m_scriptMadeNonUserObservableChanges = true;
-        m_elementsChangedOutsideViewport.set(&element, element.createWeakPtr());
-    }
 
     bool scriptMadeNonUserObservableChanges() const { return m_scriptMadeNonUserObservableChanges; }
     bool scriptMadeUserObservableChanges() const
@@ -99,24 +93,12 @@
         return document && document->domTreeVersion() != m_initialDOMTreeVersion;
     }
 
-    void elementsChangedOutsideViewport(Vector<WeakPtr<Element>>& elements) const
-    {
-        ASSERT(elements.isEmpty());
-        elements.reserveCapacity(m_elementsChangedOutsideViewport.size());
-        for (auto& element : m_elementsChangedOutsideViewport.values()) {
-            if (element)
-                elements.uncheckedAppend(element);
-        }
-        elements.shrinkToFit();
-    }
-
     static DOMTimerFireState* current;
 
 private:
     ScriptExecutionContext& m_context;
     uint64_t m_initialDOMTreeVersion;
     DOMTimerFireState* m_previous;
-    HashMap<Element*, WeakPtr<Element>> m_elementsChangedOutsideViewport;
     bool m_contextIsDocument;
     bool m_scriptMadeNonUserObservableChanges { false };
     bool m_scriptMadeUserObservableChanges { false };
@@ -210,10 +192,6 @@
 
 DOMTimer::~DOMTimer()
 {
-    // If the ScriptExecutionContext has already been destroyed, there is
-    // no need to stop listening for viewport changes.
-    if (scriptExecutionContext() && isIntervalDependentOnViewport())
-        unregisterForViewportChanges();
 }
 
 int DOMTimer::install(ScriptExecutionContext& context, std::unique_ptr<ScheduledAction> action, int timeout, bool singleShot)
@@ -284,7 +262,6 @@
     }
 
     if (fireState.scriptMadeUserObservableChanges()) {
-        ASSERT(m_elementsCausingThrottling.isEmpty());
         if (m_throttleState != ShouldNotThrottle) {
             m_throttleState = ShouldNotThrottle;
             updateTimerIntervalIfNecessary();
@@ -294,11 +271,6 @@
             m_throttleState = ShouldThrottle;
             updateTimerIntervalIfNecessary();
         }
-        // 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();
     }
 }
 
@@ -313,17 +285,6 @@
         DOMTimerFireState::current->setScriptMadeNonUserObservableChanges();
 }
 
-void DOMTimer::scriptDidCauseElementRepaint(Element& element, bool mayRepaintNonDescendants)
-{
-    if (!DOMTimerFireState::current)
-        return;
-
-    if (mayRepaintNonDescendants || element.mayCauseRepaintInsideViewport())
-        DOMTimerFireState::current->setScriptMadeUserObservableChanges();
-    else
-        DOMTimerFireState::current->setScriptMadeNonUserObservableChangesToElement(element);
-}
-
 void DOMTimer::fired()
 {
     // Retain this - if the timer is cancelled while this function is on the stack (implicitly and always
@@ -335,10 +296,6 @@
     ScriptExecutionContext& context = *scriptExecutionContext();
 
     DOMTimerFireState fireState(context);
-    if (isIntervalDependentOnViewport()) {
-        // We re-evaluate if the timer interval is dependent on the viewport every time it fires.
-        unregisterForViewportChanges();
-    }
 
 #if PLATFORM(IOS)
     Document* document = nullptr;
@@ -431,22 +388,6 @@
     m_action = nullptr;
 }
 
-void DOMTimer::registerForViewportChanges()
-{
-    ASSERT(isIntervalDependentOnViewport());
-    if (auto* frameView = downcast<Document>(*scriptExecutionContext()).view())
-        frameView->registerThrottledDOMTimer(this);
-}
-
-void DOMTimer::unregisterForViewportChanges()
-{
-    ASSERT(scriptExecutionContext());
-    if (auto* frameView = downcast<Document>(*scriptExecutionContext()).view())
-        frameView->unregisterThrottledDOMTimer(this);
-
-    m_elementsCausingThrottling.clear();
-}
-
 void DOMTimer::updateTimerIntervalIfNecessary()
 {
     ASSERT(m_nestingLevel <= maxTimerNestingLevel);
@@ -467,26 +408,6 @@
     }
 }
 
-void DOMTimer::updateThrottlingStateAfterViewportChange(const IntRect& visibleRect)
-{
-    ASSERT(isIntervalDependentOnViewport());
-    // Check if the elements that caused this timer to be throttled are still outside the viewport.
-    for (auto& weakElementPtr : m_elementsCausingThrottling) {
-        Element* element = weakElementPtr.get();
-        // Skip elements that were removed from the document.
-        if (!element || !element->inDocument())
-            continue;
-
-        if (element->mayCauseRepaintInsideViewport(&visibleRect)) {
-            LOG(DOMTimers, "%p - Script is changing style of an element that is now inside the viewport, unthrottling the timer.", this);
-            m_throttleState = ShouldNotThrottle;
-            unregisterForViewportChanges();
-            updateTimerIntervalIfNecessary();
-            break;
-        }
-    }
-}
-
 double DOMTimer::intervalClampedToMinimum() const
 {
     ASSERT(scriptExecutionContext());

Modified: trunk/Source/WebCore/page/DOMTimer.h (185268 => 185269)


--- 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)
@@ -29,9 +29,7 @@
 
 #include "SuspendableTimer.h"
 #include <memory>
-#include <wtf/HashSet.h>
 #include <wtf/RefCounted.h>
-#include <wtf/WeakPtr.h>
 
 namespace WebCore {
 
@@ -60,10 +58,8 @@
         // Notify that the interval may need updating (e.g. because the minimum interval
         // setting for the context has changed).
         void updateTimerIntervalIfNecessary();
-        void updateThrottlingStateAfterViewportChange(const IntRect& visibleRect);
 
         static void scriptDidInteractWithPlugin(HTMLPlugInElement&);
-        static void scriptDidCauseElementRepaint(Element&, bool mayRepaintNonDescendants = false);
 
     private:
         DOMTimer(ScriptExecutionContext&, std::unique_ptr<ScheduledAction>, int interval, bool singleShot);
@@ -72,10 +68,6 @@
         double intervalClampedToMinimum() const;
 
         bool isDOMTimersThrottlingEnabled(Document&) const;
-        bool isIntervalDependentOnViewport() const { return m_throttleState == ShouldThrottle && !m_elementsCausingThrottling.isEmpty(); }
-        void registerForViewportChanges();
-        void unregisterForViewportChanges();
-
         void updateThrottlingStateIfNecessary(const DOMTimerFireState&);
 
         // SuspendableTimer
@@ -99,10 +91,6 @@
         TimerThrottleState m_throttleState;
         double m_currentTimerInterval;
         bool m_shouldForwardUserGesture;
-        // 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<WeakPtr<Element>> m_elementsCausingThrottling;
     };
 
 } // namespace WebCore

Modified: trunk/Source/WebCore/page/FrameView.cpp (185268 => 185269)


--- 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)
@@ -291,7 +291,6 @@
     m_isVisuallyNonEmpty = false;
     m_firstVisuallyNonEmptyLayoutCallbackPending = true;
     m_maintainScrollPositionAnchor = nullptr;
-    m_throttledTimers.clear();
 }
 
 void FrameView::removeFromAXObjectCache()
@@ -1806,7 +1805,6 @@
     // check if we should resume animated images or unthrottle DOM timers.
     applyRecursivelyWithVisibleRect([] (FrameView& frameView, const IntRect& visibleRect) {
         frameView.resumeVisibleImageAnimations(visibleRect);
-        frameView.updateThrottledDOMTimersState(visibleRect);
         frameView.updateScriptedAnimationsAndTimersThrottlingState(visibleRect);
     });
 }
@@ -3122,29 +3120,6 @@
     performPostLayoutTasks();
 }
 
-void FrameView::registerThrottledDOMTimer(DOMTimer* timer)
-{
-    m_throttledTimers.add(timer);
-}
-
-void FrameView::unregisterThrottledDOMTimer(DOMTimer* timer)
-{
-    m_throttledTimers.remove(timer);
-}
-
-void FrameView::updateThrottledDOMTimersState(const IntRect& 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<DOMTimer*> timers;
-    copyToVector(m_throttledTimers, timers);
-    for (auto* timer : timers)
-        timer->updateThrottlingStateAfterViewportChange(visibleRect);
-}
-
 void FrameView::autoSizeIfEnabled()
 {
     if (!m_shouldAutoSize)

Modified: trunk/Source/WebCore/page/FrameView.h (185268 => 185269)


--- 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)
@@ -43,7 +43,6 @@
 namespace WebCore {
 
 class AXObjectCache;
-class DOMTimer;
 class Element;
 class FloatSize;
 class Frame;
@@ -316,9 +315,6 @@
 
     void postLayoutTimerFired();
 
-    void registerThrottledDOMTimer(DOMTimer*);
-    void unregisterThrottledDOMTimer(DOMTimer*);
-
     WEBCORE_EXPORT bool wasScrolledByUser() const;
     WEBCORE_EXPORT void setWasScrolledByUser(bool);
 
@@ -604,7 +600,6 @@
     void autoSizeIfEnabled();
 
     void applyRecursivelyWithVisibleRect(const std::function<void (FrameView& frameView, const IntRect& visibleRect)>&);
-    void updateThrottledDOMTimersState(const IntRect& visibleRect);
     void resumeVisibleImageAnimations(const IntRect& visibleRect);
     void updateScriptedAnimationsAndTimersThrottlingState(const IntRect& visibleRect);
 
@@ -789,8 +784,6 @@
     std::unique_ptr<ScrollableAreaSet> m_scrollableAreas;
     std::unique_ptr<ViewportConstrainedObjectSet> m_viewportConstrainedObjects;
 
-    HashSet<DOMTimer*> m_throttledTimers;
-
     int m_headerHeight;
     int m_footerHeight;
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to