Title: [242210] trunk/Source/WebCore
Revision
242210
Author
[email protected]
Date
2019-02-28 11:19:51 -0800 (Thu, 28 Feb 2019)

Log Message

[ContentChangeObserver] Move timer removal code from DOMWindow::clearTimeout to DOMTimer::removeById
https://bugs.webkit.org/show_bug.cgi?id=195143
<rdar://problem/48462351>

Reviewed by Simon Fraser.

Currently DOMWindow::clearTimeout() is the only callsite that we are interested in, but this is more future-proof.

* page/DOMTimer.cpp:
(WebCore::DOMTimer::removeById):
* page/DOMWindow.cpp:
(WebCore::DOMWindow::clearTimeout):
* page/ios/ContentChangeObserver.cpp:
(WebCore::ContentChangeObserver::startObservingDOMTimerExecute):
(WebCore::ContentChangeObserver::stopObservingDOMTimerExecute):
(WebCore::ContentChangeObserver::didRemoveDOMTimer):
(WebCore::ContentChangeObserver::removeDOMTimer): Deleted.
* page/ios/ContentChangeObserver.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (242209 => 242210)


--- trunk/Source/WebCore/ChangeLog	2019-02-28 19:09:32 UTC (rev 242209)
+++ trunk/Source/WebCore/ChangeLog	2019-02-28 19:19:51 UTC (rev 242210)
@@ -1,3 +1,24 @@
+2019-02-28  Zalan Bujtas  <[email protected]>
+
+        [ContentChangeObserver] Move timer removal code from DOMWindow::clearTimeout to DOMTimer::removeById
+        https://bugs.webkit.org/show_bug.cgi?id=195143
+        <rdar://problem/48462351>
+
+        Reviewed by Simon Fraser.
+
+        Currently DOMWindow::clearTimeout() is the only callsite that we are interested in, but this is more future-proof.
+
+        * page/DOMTimer.cpp:
+        (WebCore::DOMTimer::removeById):
+        * page/DOMWindow.cpp:
+        (WebCore::DOMWindow::clearTimeout):
+        * page/ios/ContentChangeObserver.cpp:
+        (WebCore::ContentChangeObserver::startObservingDOMTimerExecute):
+        (WebCore::ContentChangeObserver::stopObservingDOMTimerExecute):
+        (WebCore::ContentChangeObserver::didRemoveDOMTimer):
+        (WebCore::ContentChangeObserver::removeDOMTimer): Deleted.
+        * page/ios/ContentChangeObserver.h:
+
 2019-02-28  Charles Vazac  <[email protected]>
 
         Fix Resource Timing buffer edge cases for WPT

Modified: trunk/Source/WebCore/page/DOMTimer.cpp (242209 => 242210)


--- trunk/Source/WebCore/page/DOMTimer.cpp	2019-02-28 19:09:32 UTC (rev 242209)
+++ trunk/Source/WebCore/page/DOMTimer.cpp	2019-02-28 19:19:51 UTC (rev 242210)
@@ -236,6 +236,14 @@
     if (timeoutId <= 0)
         return;
 
+#if PLATFORM(IOS_FAMILY)
+    if (is<Document>(context) && downcast<Document>(context).page()) {
+        auto& document = downcast<Document>(context);
+        if (auto* timer = document.findTimeout(timeoutId))
+            document.page()->contentChangeObserver().didRemoveDOMTimer(*timer);
+    }
+#endif
+
     if (NestedTimersMap* nestedTimers = NestedTimersMap::instanceForContext(context))
         nestedTimers->remove(timeoutId);
 

Modified: trunk/Source/WebCore/page/DOMWindow.cpp (242209 => 242210)


--- trunk/Source/WebCore/page/DOMWindow.cpp	2019-02-28 19:09:32 UTC (rev 242209)
+++ trunk/Source/WebCore/page/DOMWindow.cpp	2019-02-28 19:19:51 UTC (rev 242210)
@@ -140,10 +140,6 @@
 #include "PointerLockController.h"
 #endif
 
-#if PLATFORM(IOS_FAMILY)
-#include "ContentChangeObserver.h"
-#endif
-
 namespace WebCore {
 using namespace Inspector;
 
@@ -1683,18 +1679,6 @@
 
 void DOMWindow::clearTimeout(int timeoutId)
 {
-#if PLATFORM(IOS_FAMILY)
-    auto handleObservedTimerCancelIfNeeded = [&] {
-        if (!frame() || !frame()->document() || !frame()->document()->page())
-            return;
-        if (timeoutId <= 0)
-            return;
-        auto& document = *frame()->document();
-        if (auto* timer = document.findTimeout(timeoutId))
-            document.page()->contentChangeObserver().removeDOMTimer(*timer);
-    };
-    handleObservedTimerCancelIfNeeded();
-#endif
     ScriptExecutionContext* context = scriptExecutionContext();
     if (!context)
         return;

Modified: trunk/Source/WebCore/page/ios/ContentChangeObserver.cpp (242209 => 242210)


--- trunk/Source/WebCore/page/ios/ContentChangeObserver.cpp	2019-02-28 19:09:32 UTC (rev 242209)
+++ trunk/Source/WebCore/page/ios/ContentChangeObserver.cpp	2019-02-28 19:19:51 UTC (rev 242210)
@@ -117,7 +117,7 @@
     m_page.chrome().client().observedContentChange(m_page.mainFrame());
 }
 
-void ContentChangeObserver::removeDOMTimer(const DOMTimer& timer)
+void ContentChangeObserver::didRemoveDOMTimer(const DOMTimer& timer)
 {
     if (!containsObservedDOMTimer(timer))
         return;

Modified: trunk/Source/WebCore/page/ios/ContentChangeObserver.h (242209 => 242210)


--- trunk/Source/WebCore/page/ios/ContentChangeObserver.h	2019-02-28 19:09:32 UTC (rev 242209)
+++ trunk/Source/WebCore/page/ios/ContentChangeObserver.h	2019-02-28 19:19:51 UTC (rev 242210)
@@ -39,7 +39,7 @@
     ContentChangeObserver(Page&);
 
     void didInstallDOMTimer(const DOMTimer&, Seconds timeout, bool singleShot);
-    void removeDOMTimer(const DOMTimer&);
+    void didRemoveDOMTimer(const DOMTimer&);
     void startObservingDOMTimerExecute(const DOMTimer&);
     void stopObservingDOMTimerExecute(const DOMTimer&);
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to