Title: [243315] trunk/Source/WebCore
Revision
243315
Author
[email protected]
Date
2019-03-21 12:52:18 -0700 (Thu, 21 Mar 2019)

Log Message

[ContentChangeObserver] Cleanup reset state.
https://bugs.webkit.org/show_bug.cgi?id=196076
<rdar://problem/49107931>

Reviewed by Simon Fraser.

stopObservingPendingActivities() is a subset of reset() and call it when we've observed a visible change.

* page/ios/ContentChangeObserver.cpp:
(WebCore::ContentChangeObserver::willNotProceedWithClick):
(WebCore::ContentChangeObserver::stopObservingPendingActivities):
(WebCore::ContentChangeObserver::reset):
(WebCore::ContentChangeObserver::didSuspendActiveDOMObjects):
(WebCore::ContentChangeObserver::willDetachPage):
(WebCore::ContentChangeObserver::adjustObservedState):
(WebCore::ContentChangeObserver::cancelPendingActivities): Deleted.
* page/ios/ContentChangeObserver.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (243314 => 243315)


--- trunk/Source/WebCore/ChangeLog	2019-03-21 19:21:11 UTC (rev 243314)
+++ trunk/Source/WebCore/ChangeLog	2019-03-21 19:52:18 UTC (rev 243315)
@@ -1,5 +1,25 @@
 2019-03-21  Zalan Bujtas  <[email protected]>
 
+        [ContentChangeObserver] Cleanup reset state.
+        https://bugs.webkit.org/show_bug.cgi?id=196076
+        <rdar://problem/49107931>
+
+        Reviewed by Simon Fraser.
+
+        stopObservingPendingActivities() is a subset of reset() and call it when we've observed a visible change.
+
+        * page/ios/ContentChangeObserver.cpp:
+        (WebCore::ContentChangeObserver::willNotProceedWithClick):
+        (WebCore::ContentChangeObserver::stopObservingPendingActivities):
+        (WebCore::ContentChangeObserver::reset):
+        (WebCore::ContentChangeObserver::didSuspendActiveDOMObjects):
+        (WebCore::ContentChangeObserver::willDetachPage):
+        (WebCore::ContentChangeObserver::adjustObservedState):
+        (WebCore::ContentChangeObserver::cancelPendingActivities): Deleted.
+        * page/ios/ContentChangeObserver.h:
+
+2019-03-21  Zalan Bujtas  <[email protected]>
+
         Unreviewed build fix.
 
         * page/ios/ContentChangeObserver.h:

Modified: trunk/Source/WebCore/page/ios/ContentChangeObserver.cpp (243314 => 243315)


--- trunk/Source/WebCore/page/ios/ContentChangeObserver.cpp	2019-03-21 19:21:11 UTC (rev 243314)
+++ trunk/Source/WebCore/page/ios/ContentChangeObserver.cpp	2019-03-21 19:52:18 UTC (rev 243315)
@@ -198,7 +198,6 @@
 {
     LOG(ContentObservation, "willNotProceedWithClick: click will not happen.");
     adjustObservedState(Event::WillNotProceedWithClick);
-    // FIXME: Add support for preventDefault().
 }
 
 void ContentChangeObserver::domTimerExecuteDidStart(const DOMTimer& timer)
@@ -242,9 +241,26 @@
     adjustObservedState(Event::EndedStyleRecalc);
 }
 
-void ContentChangeObserver::cancelPendingActivities()
+void ContentChangeObserver::stopObservingPendingActivities()
 {
+    setShouldObserveNextStyleRecalc(false);
+    setShouldObserveDOMTimerScheduling(false);
+    setShouldObserveTransitions(false);
     clearObservedDOMTimers();
+    clearObservedTransitions();
+}
+
+void ContentChangeObserver::reset()
+{
+    stopObservingPendingActivities();
+    setHasNoChangeState();
+    setIsBetweenTouchEndAndMouseMoved(false);
+
+    m_touchEventIsBeingDispatched = false;
+    m_isInObservedStyleRecalc = false;
+    m_observedDomTimerIsBeingExecuted = false;
+    m_mouseMovedEventIsBeingDispatched = false;
+
     m_contentObservationTimer.stop();
 }
 
@@ -251,13 +267,13 @@
 void ContentChangeObserver::didSuspendActiveDOMObjects()
 {
     LOG(ContentObservation, "didSuspendActiveDOMObjects");
-    cancelPendingActivities();
+    reset();
 }
 
 void ContentChangeObserver::willDetachPage()
 {
     LOG(ContentObservation, "willDetachPage");
-    cancelPendingActivities();
+    reset();
 }
 
 void ContentChangeObserver::contentVisibilityDidChange()
@@ -333,13 +349,14 @@
 
 void ContentChangeObserver::adjustObservedState(Event event)
 {
-    auto reset = [&] {
+    auto resetToStartObserving = [&] {
         setHasNoChangeState();
         clearObservedDOMTimers();
         clearObservedTransitions();
         setIsBetweenTouchEndAndMouseMoved(false);
-        ASSERT(!m_isObservingDOMTimerScheduling);
-        ASSERT(!m_isWaitingForStyleRecalc);
+        setShouldObserveNextStyleRecalc(false);
+        setShouldObserveDOMTimerScheduling(false);
+        setShouldObserveTransitions(false);
         ASSERT(!m_isInObservedStyleRecalc);
         ASSERT(!m_observedDomTimerIsBeingExecuted);
     };
@@ -370,7 +387,7 @@
 
     switch (event) {
     case Event::StartedTouchStartEventDispatching:
-        reset();
+        resetToStartObserving();
         setShouldObserveDOMTimerScheduling(true);
         setShouldObserveTransitions(true);
         break;
@@ -385,7 +402,7 @@
     case Event::StartedMouseMovedEventDispatching:
         ASSERT(!m_document.hasPendingStyleRecalc());
         if (!isBetweenTouchEndAndMouseMoved())
-            reset();
+            resetToStartObserving();
         setIsBetweenTouchEndAndMouseMoved(false);
         setShouldObserveDOMTimerScheduling(!hasVisibleChangeState());
         setShouldObserveTransitions(!hasVisibleChangeState());
@@ -429,10 +446,8 @@
         break;
     case Event::ContentVisibilityChanged:
         setHasVisibleChangeState();
-        // Remove pending activities. We don't need to observe them anymore.
-        setShouldObserveNextStyleRecalc(false);
-        clearObservedDOMTimers();
-        clearObservedTransitions();
+        // Stop pending activities. We don't need to observe them anymore.
+        stopObservingPendingActivities();
         break;
     }
 }

Modified: trunk/Source/WebCore/page/ios/ContentChangeObserver.h (243314 => 243315)


--- trunk/Source/WebCore/page/ios/ContentChangeObserver.h	2019-03-21 19:21:11 UTC (rev 243314)
+++ trunk/Source/WebCore/page/ios/ContentChangeObserver.h	2019-03-21 19:52:18 UTC (rev 243315)
@@ -139,7 +139,8 @@
 
     bool isObservingContentChanges() const;
 
-    void cancelPendingActivities();
+    void stopObservingPendingActivities();
+    void reset();
 
     void setHasIndeterminateState();
     void setHasVisibleChangeState();
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to