Title: [242834] trunk/Source/WebCore
Revision
242834
Author
[email protected]
Date
2019-03-12 17:12:15 -0700 (Tue, 12 Mar 2019)

Log Message

[ContentChangeObserver] Reset state when touchStart does not turn into click.
https://bugs.webkit.org/show_bug.cgi?id=195603
<rdar://problem/48796582>

Reviewed by Simon Fraser.

Add reset() function to assert and reset the current state.

* page/ios/ContentChangeObserver.cpp:
(WebCore::ContentChangeObserver::willNotProceedWithClick):
(WebCore::ContentChangeObserver::adjustObservedState):
* page/ios/ContentChangeObserver.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (242833 => 242834)


--- trunk/Source/WebCore/ChangeLog	2019-03-12 23:51:57 UTC (rev 242833)
+++ trunk/Source/WebCore/ChangeLog	2019-03-13 00:12:15 UTC (rev 242834)
@@ -1,3 +1,18 @@
+2019-03-12  Zalan Bujtas  <[email protected]>
+
+        [ContentChangeObserver] Reset state when touchStart does not turn into click.
+        https://bugs.webkit.org/show_bug.cgi?id=195603
+        <rdar://problem/48796582>
+
+        Reviewed by Simon Fraser.
+
+        Add reset() function to assert and reset the current state.
+
+        * page/ios/ContentChangeObserver.cpp:
+        (WebCore::ContentChangeObserver::willNotProceedWithClick):
+        (WebCore::ContentChangeObserver::adjustObservedState):
+        * page/ios/ContentChangeObserver.h:
+
 2019-03-12  Timothy Hatcher  <[email protected]>
 
         Expose document attributes and body background color through HTMLConverter.

Modified: trunk/Source/WebCore/page/ios/ContentChangeObserver.cpp (242833 => 242834)


--- trunk/Source/WebCore/page/ios/ContentChangeObserver.cpp	2019-03-12 23:51:57 UTC (rev 242833)
+++ trunk/Source/WebCore/page/ios/ContentChangeObserver.cpp	2019-03-13 00:12:15 UTC (rev 242834)
@@ -100,7 +100,7 @@
 void ContentChangeObserver::willNotProceedWithClick()
 {
     LOG(ContentObservation, "willNotProceedWithClick: click will not happen.");
-    setIsBetweenTouchEndAndMouseMoved(false);
+    adjustObservedState(Event::WillNotProceedWithClick);
     // FIXME: Add support for preventDefault().
 }
 
@@ -236,6 +236,16 @@
 
 void ContentChangeObserver::adjustObservedState(Event event)
 {
+    auto reset = [&] {
+        setHasNoChangeState();
+        clearObservedDOMTimers();
+        setIsBetweenTouchEndAndMouseMoved(false);
+        ASSERT(!m_isObservingDOMTimerScheduling);
+        ASSERT(!m_isWaitingForStyleRecalc);
+        ASSERT(!m_isInObservedStyleRecalc);
+        ASSERT(!m_observedDomTimerIsBeingExecuted);
+    };
+
     auto adjustStateAndNotifyContentChangeIfNeeded = [&] {
         // Demote to "no change" when there's no pending activity anymore.
         if (observedContentChange() == WKContentIndeterminateChange && !hasPendingActivity())
@@ -258,8 +268,7 @@
 
     switch (event) {
     case Event::StartedTouchStartEventDispatching:
-        setHasNoChangeState();
-        clearObservedDOMTimers();
+        reset();
         setShouldObserveDOMTimerScheduling(true);
         break;
     case Event::EndedTouchStartEventDispatching:
@@ -266,6 +275,9 @@
         setShouldObserveDOMTimerScheduling(false);
         setIsBetweenTouchEndAndMouseMoved(true);
         break;
+    case Event::WillNotProceedWithClick:
+        reset();
+        break;
     case Event::StartedMouseMovedEventDispatching:
         ASSERT(!m_document.hasPendingStyleRecalc());
         if (!isBetweenTouchEndAndMouseMoved()) {

Modified: trunk/Source/WebCore/page/ios/ContentChangeObserver.h (242833 => 242834)


--- trunk/Source/WebCore/page/ios/ContentChangeObserver.h	2019-03-12 23:51:57 UTC (rev 242833)
+++ trunk/Source/WebCore/page/ios/ContentChangeObserver.h	2019-03-13 00:12:15 UTC (rev 242834)
@@ -146,6 +146,7 @@
     enum class Event {
         StartedTouchStartEventDispatching,
         EndedTouchStartEventDispatching,
+        WillNotProceedWithClick,
         StartedMouseMovedEventDispatching,
         EndedMouseMovedEventDispatching,
         InstalledDOMTimer,
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to