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