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