Title: [242516] trunk/Source/WebCore
Revision
242516
Author
za...@apple.com
Date
2019-03-05 15:35:02 -0800 (Tue, 05 Mar 2019)

Log Message

[ContentChangeObserver] Assert on if notify content change is allowed
https://bugs.webkit.org/show_bug.cgi?id=195332
<rdar://problem/48603276>

Reviewed by Simon Fraser.

Assert we don't notify the client about the state change while in handleSyntheticClick().

* page/ios/ContentChangeObserver.cpp:
(WebCore::ContentChangeObserver::domTimerExecuteDidStart):
(WebCore::ContentChangeObserver::domTimerExecuteDidFinish):
(WebCore::ContentChangeObserver::adjustObservedState):
* page/ios/ContentChangeObserver.h:
(WebCore::ContentChangeObserver::isObservingContentChanges const):
(WebCore::ContentChangeObserver::isNotifyContentChangeAllowed const):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (242515 => 242516)


--- trunk/Source/WebCore/ChangeLog	2019-03-05 23:12:51 UTC (rev 242515)
+++ trunk/Source/WebCore/ChangeLog	2019-03-05 23:35:02 UTC (rev 242516)
@@ -1,3 +1,21 @@
+2019-03-05  Zalan Bujtas  <za...@apple.com>
+
+        [ContentChangeObserver] Assert on if notify content change is allowed
+        https://bugs.webkit.org/show_bug.cgi?id=195332
+        <rdar://problem/48603276>
+
+        Reviewed by Simon Fraser.
+
+        Assert we don't notify the client about the state change while in handleSyntheticClick().
+
+        * page/ios/ContentChangeObserver.cpp:
+        (WebCore::ContentChangeObserver::domTimerExecuteDidStart):
+        (WebCore::ContentChangeObserver::domTimerExecuteDidFinish):
+        (WebCore::ContentChangeObserver::adjustObservedState):
+        * page/ios/ContentChangeObserver.h:
+        (WebCore::ContentChangeObserver::isObservingContentChanges const):
+        (WebCore::ContentChangeObserver::isNotifyContentChangeAllowed const):
+
 2019-03-05  Said Abou-Hallawa  <sabouhall...@apple.com>
 
         SVGPathSegList.insertItemBefore() should fail if the newItem belongs to an animating animPathSegList

Modified: trunk/Source/WebCore/page/ios/ContentChangeObserver.cpp (242515 => 242516)


--- trunk/Source/WebCore/page/ios/ContentChangeObserver.cpp	2019-03-05 23:12:51 UTC (rev 242515)
+++ trunk/Source/WebCore/page/ios/ContentChangeObserver.cpp	2019-03-05 23:35:02 UTC (rev 242516)
@@ -73,7 +73,7 @@
         return;
     LOG_WITH_STREAM(ContentObservation, stream << "startObservingDOMTimerExecute: start observing (" << &timer << ") timer callback.");
 
-    m_domTimerisBeingExecuted = true;
+    m_domTimerIsBeingExecuted = true;
 }
 
 void ContentChangeObserver::domTimerExecuteDidFinish(const DOMTimer& timer)
@@ -82,7 +82,7 @@
         return;
     LOG_WITH_STREAM(ContentObservation, stream << "stopObservingDOMTimerExecute: stop observing (" << &timer << ") timer callback.");
 
-    m_domTimerisBeingExecuted = false;
+    m_domTimerIsBeingExecuted = false;
     unregisterDOMTimer(timer);
     setShouldObserveNextStyleRecalc(m_document.hasPendingStyleRecalc());
     adjustObservedState(Event::EndedDOMTimerExecution);
@@ -140,6 +140,9 @@
 
 void ContentChangeObserver::mouseMovedDidStart()
 {
+#if !ASSERT_DISABLED
+    m_mouseMovedIsBeingDispatched = true;
+#endif
     ASSERT(!m_document.hasPendingStyleRecalc());
     clearObservedDOMTimers();
     setShouldObserveDOMTimerScheduling(true);
@@ -149,6 +152,9 @@
 void ContentChangeObserver::mouseMovedDidFinish()
 {
     setShouldObserveDOMTimerScheduling(false);
+#if !ASSERT_DISABLED
+    m_mouseMovedIsBeingDispatched = false;
+#endif
 }
 
 WKContentChange ContentChangeObserver::observedContentChange() const
@@ -178,6 +184,7 @@
             return;
         }
         LOG_WITH_STREAM(ContentObservation, stream << "notifyContentChangeIfNeeded: sending observedContentChange ->" << observedContentChange());
+        ASSERT(isNotifyContentChangeAllowed());
         ASSERT(m_document.page());
         ASSERT(m_document.frame());
         m_document.page()->chrome().client().observedContentChange(*m_document.frame());

Modified: trunk/Source/WebCore/page/ios/ContentChangeObserver.h (242515 => 242516)


--- trunk/Source/WebCore/page/ios/ContentChangeObserver.h	2019-03-05 23:12:51 UTC (rev 242515)
+++ trunk/Source/WebCore/page/ios/ContentChangeObserver.h	2019-03-05 23:35:02 UTC (rev 242516)
@@ -102,7 +102,7 @@
     void setShouldObserveNextStyleRecalc(bool);
     bool isObservingStyleRecalc() const { return m_isObservingStyleRecalc; }
 
-    bool isObservingContentChanges() const { return m_domTimerisBeingExecuted || m_styleRecalcIsBeingExecuted; }
+    bool isObservingContentChanges() const { return m_domTimerIsBeingExecuted || m_styleRecalcIsBeingExecuted; }
 
     void clearObservedDOMTimers() { m_DOMTimerList.clear(); }
     void clearTimersAndReportContentChange();
@@ -116,6 +116,9 @@
     bool hasDeterminateState() const;
 
     bool hasPendingActivity() const { return hasObservedDOMTimer() || m_document.hasPendingStyleRecalc(); }
+#if !ASSERT_DISABLED
+    bool isNotifyContentChangeAllowed() const { return !m_mouseMovedIsBeingDispatched; }
+#endif
 
     enum class Event {
         StartedMouseMovedEventDispatching,
@@ -132,7 +135,10 @@
     bool m_isObservingStyleRecalc { false };
     bool m_styleRecalcIsBeingExecuted { false };
     bool m_isObservingDOMTimerScheduling { false };
-    bool m_domTimerisBeingExecuted { false };
+    bool m_domTimerIsBeingExecuted { false };
+#if !ASSERT_DISABLED
+    bool m_mouseMovedIsBeingDispatched { false };
+#endif
 };
 
 inline void ContentChangeObserver::setHasNoChangeState()
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to