Title: [242166] trunk/Source/WebCore
Revision
242166
Author
za...@apple.com
Date
2019-02-27 15:20:44 -0800 (Wed, 27 Feb 2019)

Log Message

[ContentChangeObserver] Move DOM timer handling from global to ContentChangeObserver class
https://bugs.webkit.org/show_bug.cgi?id=195070
<rdar://problem/48417650>

Reviewed by Tim Horton.

Add DOM timer list to ContentChangeObserver and move the related code over from WK functions.

* page/ios/ContentChangeObserver.h:
* page/ios/ContentChangeObserver.mm:
(WebCore::ContentChangeObserver::startObservingDOMTimerScheduling):
(WebCore::ContentChangeObserver::countOfObservedDOMTimers):
(WebCore::ContentChangeObserver::clearObservedDOMTimers):
(WebCore::ContentChangeObserver::setObservedContentChange):
(WebCore::ContentChangeObserver::containsObservedDOMTimer):
(WebCore::ContentChangeObserver::addObservedDOMTimer):
(WebCore::ContentChangeObserver::removeObservedDOMTimer):
* platform/ios/wak/WKContentObservation.cpp:
(WKStartObservingDOMTimerScheduling):
(WKSetObservedContentChange):
(WebThreadGetObservedDOMTimers): Deleted.
(WebThreadCountOfObservedDOMTimers): Deleted.
(WebThreadClearObservedDOMTimers): Deleted.
(WebThreadContainsObservedDOMTimer): Deleted.
(WebThreadAddObservedDOMTimer): Deleted.
(WebThreadRemoveObservedDOMTimer): Deleted.
* platform/ios/wak/WKContentObservation.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (242165 => 242166)


--- trunk/Source/WebCore/ChangeLog	2019-02-27 23:11:56 UTC (rev 242165)
+++ trunk/Source/WebCore/ChangeLog	2019-02-27 23:20:44 UTC (rev 242166)
@@ -1,3 +1,33 @@
+2019-02-27  Zalan Bujtas  <za...@apple.com>
+
+        [ContentChangeObserver] Move DOM timer handling from global to ContentChangeObserver class
+        https://bugs.webkit.org/show_bug.cgi?id=195070
+        <rdar://problem/48417650>
+
+        Reviewed by Tim Horton.
+
+        Add DOM timer list to ContentChangeObserver and move the related code over from WK functions.
+
+        * page/ios/ContentChangeObserver.h:
+        * page/ios/ContentChangeObserver.mm:
+        (WebCore::ContentChangeObserver::startObservingDOMTimerScheduling):
+        (WebCore::ContentChangeObserver::countOfObservedDOMTimers):
+        (WebCore::ContentChangeObserver::clearObservedDOMTimers):
+        (WebCore::ContentChangeObserver::setObservedContentChange):
+        (WebCore::ContentChangeObserver::containsObservedDOMTimer):
+        (WebCore::ContentChangeObserver::addObservedDOMTimer):
+        (WebCore::ContentChangeObserver::removeObservedDOMTimer):
+        * platform/ios/wak/WKContentObservation.cpp:
+        (WKStartObservingDOMTimerScheduling):
+        (WKSetObservedContentChange):
+        (WebThreadGetObservedDOMTimers): Deleted.
+        (WebThreadCountOfObservedDOMTimers): Deleted.
+        (WebThreadClearObservedDOMTimers): Deleted.
+        (WebThreadContainsObservedDOMTimer): Deleted.
+        (WebThreadAddObservedDOMTimer): Deleted.
+        (WebThreadRemoveObservedDOMTimer): Deleted.
+        * platform/ios/wak/WKContentObservation.h:
+
 2019-02-27  Justin Fan  <justin_...@apple.com>
         Fix build errors after Web GPU buffer updates changed some IDL fields from unsigned long to unsigned long long.
 

Modified: trunk/Source/WebCore/page/ios/ContentChangeObserver.h (242165 => 242166)


--- trunk/Source/WebCore/page/ios/ContentChangeObserver.h	2019-02-27 23:11:56 UTC (rev 242165)
+++ trunk/Source/WebCore/page/ios/ContentChangeObserver.h	2019-02-27 23:20:44 UTC (rev 242166)
@@ -94,6 +94,7 @@
     void clearTimersAndReportContentChange();
 
     Page& m_page;
+    HashSet<const DOMTimer*> m_DOMTimerList;
 };
 
 }

Modified: trunk/Source/WebCore/page/ios/ContentChangeObserver.mm (242165 => 242166)


--- trunk/Source/WebCore/page/ios/ContentChangeObserver.mm	2019-02-27 23:11:56 UTC (rev 242165)
+++ trunk/Source/WebCore/page/ios/ContentChangeObserver.mm	2019-02-27 23:20:44 UTC (rev 242166)
@@ -60,7 +60,7 @@
     if (!containsObservedDOMTimer(timer))
         return;
     LOG_WITH_STREAM(ContentObservation, stream << "startObservingDOMTimerExecute: start observing (" << &timer << ") timer callback.");
-    startObservingContentChanges();
+    WKStartObservingContentChanges();
     startObservingStyleRecalcScheduling();
 }
 
@@ -99,7 +99,7 @@
     if (!shouldObserveNextStyleRecalc())
         return;
     LOG(ContentObservation, "startObservingStyleResolve: start observing style resolve.");
-    startObservingContentChanges();
+    WKStartObservingContentChanges();
 }
 
 void ContentChangeObserver::stopObservingStyleResolve()
@@ -167,6 +167,7 @@
 void ContentChangeObserver::startObservingDOMTimerScheduling()
 {
     WKStartObservingDOMTimerScheduling();
+    clearObservedDOMTimers();
 }
 
 void ContentChangeObserver::stopObservingDOMTimerScheduling()
@@ -211,12 +212,12 @@
 
 unsigned ContentChangeObserver::countOfObservedDOMTimers()
 {
-    return WebThreadCountOfObservedDOMTimers();
+    return m_DOMTimerList.size();
 }
 
 void ContentChangeObserver::clearObservedDOMTimers()
 {
-    WebThreadClearObservedDOMTimers();
+    m_DOMTimerList.clear();
 }
 
 void ContentChangeObserver::setObservedContentChange(WKContentChange change)
@@ -226,17 +227,23 @@
 
 bool ContentChangeObserver::containsObservedDOMTimer(const DOMTimer& timer)
 {
-    return WebThreadContainsObservedDOMTimer(const_cast<DOMTimer*>(&timer));
+    return m_DOMTimerList.contains(&timer);
 }
 
 void ContentChangeObserver::addObservedDOMTimer(const DOMTimer& timer)
 {
-    WebThreadAddObservedDOMTimer(const_cast<DOMTimer*>(&timer));
+    ASSERT(isObservingDOMTimerScheduling());
+    if (observedContentChange() == WKContentVisibilityChange)
+        return;
+    m_DOMTimerList.add(&timer);
 }
 
 void ContentChangeObserver::removeObservedDOMTimer(const DOMTimer& timer)
 {
-    WebThreadRemoveObservedDOMTimer(const_cast<DOMTimer*>(&timer));
+    m_DOMTimerList.remove(&timer);
+    // Force reset the content change flag when the last observed content modifier is removed. We should not be in indeterminate state anymore.
+    if (!countOfObservedDOMTimers() && observedContentChange() == WKContentIndeterminateChange)
+        setObservedContentChange(WKContentNoChange);
 }
 
 static Visibility elementImplicitVisibility(const Element& element)

Modified: trunk/Source/WebCore/platform/ios/wak/WKContentObservation.cpp (242165 => 242166)


--- trunk/Source/WebCore/platform/ios/wak/WKContentObservation.cpp	2019-02-27 23:11:56 UTC (rev 242165)
+++ trunk/Source/WebCore/platform/ios/wak/WKContentObservation.cpp	2019-02-27 23:20:44 UTC (rev 242166)
@@ -59,7 +59,6 @@
 void WKStartObservingDOMTimerScheduling(void)
 {
     _WKObservingDOMTimerScheduling = true;
-    WebThreadClearObservedDOMTimers();
 }
 
 void WKStopObservingDOMTimerScheduling(void)
@@ -110,8 +109,6 @@
 
     if (change == WKContentVisibilityChange) {
         _WKContentChange = change;
-        // Don't need to listen to DOM timers/style recalcs anymore.
-        WebThreadClearObservedDOMTimers();
         _WKObservingNextStyleRecalc = false;
         return;
     }
@@ -123,45 +120,4 @@
     ASSERT_NOT_REACHED();
 }
 
-using DOMTimerList = HashSet<void*>;
-static DOMTimerList& WebThreadGetObservedDOMTimers()
-{
-    ASSERT(WebThreadIsLockedOrDisabled());
-    static NeverDestroyed<DOMTimerList> observedDOMTimers;
-    return observedDOMTimers;
-}
-
-int WebThreadCountOfObservedDOMTimers(void)
-{
-    return WebThreadGetObservedDOMTimers().size();
-}
-
-void WebThreadClearObservedDOMTimers()
-{
-    WebThreadGetObservedDOMTimers().clear();
-}
-
-bool WebThreadContainsObservedDOMTimer(void* timer)
-{
-    return WebThreadGetObservedDOMTimers().contains(timer);
-}
-
-void WebThreadAddObservedDOMTimer(void* timer)
-{
-    ASSERT(_WKObservingDOMTimerScheduling);
-    if (_WKContentChange != WKContentVisibilityChange)
-        WebThreadGetObservedDOMTimers().add(timer);
-}
-
-void WebThreadRemoveObservedDOMTimer(void* timer)
-{
-    WebThreadGetObservedDOMTimers().remove(timer);
-    // Force reset the content change flag when the last observed content modifier is removed. We should not be in indeterminate state anymore.
-    if (WebThreadCountOfObservedDOMTimers())
-        return;
-    if (WKObservedContentChange() != WKContentIndeterminateChange)
-        return;
-    _WKContentChange = WKContentNoChange;
-}
-
 #endif // PLATFORM(IOS_FAMILY)

Modified: trunk/Source/WebCore/platform/ios/wak/WKContentObservation.h (242165 => 242166)


--- trunk/Source/WebCore/platform/ios/wak/WKContentObservation.h	2019-02-27 23:11:56 UTC (rev 242165)
+++ trunk/Source/WebCore/platform/ios/wak/WKContentObservation.h	2019-02-27 23:20:44 UTC (rev 242166)
@@ -55,9 +55,6 @@
 
 WEBCORE_EXPORT WKContentChange WKObservedContentChange(void);
 
-WEBCORE_EXPORT int WebThreadCountOfObservedDOMTimers(void);
-WEBCORE_EXPORT void WebThreadClearObservedDOMTimers(void);
-
 #ifdef __cplusplus
 }
 #endif
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to