[ContentChangeObserver] Cancel ongoing content observation when tap is failed/cancelled
https://bugs.webkit.org/show_bug.cgi?id=199828
<rdar://problem/53152696>
Reviewed by Wenson Hsieh.
Source/WebCore:
This patch ensures that we stop the content observation (initiated by touch start) when the tap
is cancelled/failed.
Not testable.
* page/ios/ContentChangeObserver.cpp:
(WebCore::ContentChangeObserver::didCancelPotentialTap):
* page/ios/ContentChangeObserver.h:
Source/WebKit:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::commitPotentialTapFailed):
(WebKit::WebPage::cancelPotentialTap):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@247483 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index 93e37eb..1c39ffc 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,20 @@
+2019-07-16 Zalan Bujtas <zalan@apple.com>
+
+ [ContentChangeObserver] Cancel ongoing content observation when tap is failed/cancelled
+ https://bugs.webkit.org/show_bug.cgi?id=199828
+ <rdar://problem/53152696>
+
+ Reviewed by Wenson Hsieh.
+
+ This patch ensures that we stop the content observation (initiated by touch start) when the tap
+ is cancelled/failed.
+
+ Not testable.
+
+ * page/ios/ContentChangeObserver.cpp:
+ (WebCore::ContentChangeObserver::didCancelPotentialTap):
+ * page/ios/ContentChangeObserver.h:
+
2019-07-16 Rob Buis <rbuis@igalia.com>
Remove support for beforeload on link=prefetch
diff --git a/Source/WebCore/page/ios/ContentChangeObserver.cpp b/Source/WebCore/page/ios/ContentChangeObserver.cpp
index 8eb047e..891b57c 100644
--- a/Source/WebCore/page/ios/ContentChangeObserver.cpp
+++ b/Source/WebCore/page/ios/ContentChangeObserver.cpp
@@ -150,6 +150,12 @@
}
}
+void ContentChangeObserver::didCancelPotentialTap(Frame& mainFrame)
+{
+ LOG(ContentObservation, "didCancelPotentialTap: cancel ongoing content change observing.");
+ WebCore::willNotProceedWithClick(mainFrame);
+}
+
void ContentChangeObserver::didRecognizeLongPress(Frame& mainFrame)
{
LOG(ContentObservation, "didRecognizeLongPress: cancel ongoing content change observing.");
diff --git a/Source/WebCore/page/ios/ContentChangeObserver.h b/Source/WebCore/page/ios/ContentChangeObserver.h
index 8526af8..cabd013 100644
--- a/Source/WebCore/page/ios/ContentChangeObserver.h
+++ b/Source/WebCore/page/ios/ContentChangeObserver.h
@@ -59,14 +59,15 @@
void didFinishTransition(const Element&, CSSPropertyID);
void didRemoveTransition(const Element&, CSSPropertyID);
- WEBCORE_EXPORT void willNotProceedWithClick();
WEBCORE_EXPORT static void didRecognizeLongPress(Frame& mainFrame);
WEBCORE_EXPORT static void didPreventDefaultForEvent(Frame& mainFrame);
+ WEBCORE_EXPORT static void didCancelPotentialTap(Frame& mainFrame);
void didSuspendActiveDOMObjects();
void willDetachPage();
void willDestroyRenderer(const Element&);
+ void willNotProceedWithClick();
void setHiddenTouchTarget(Element& targetElement) { m_hiddenTouchTargetElement = makeWeakPtr(targetElement); }
void resetHiddenTouchTarget() { m_hiddenTouchTargetElement = { }; }
diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog
index 34f8098..639ed9c 100644
--- a/Source/WebKit/ChangeLog
+++ b/Source/WebKit/ChangeLog
@@ -1,3 +1,15 @@
+2019-07-16 Zalan Bujtas <zalan@apple.com>
+
+ [ContentChangeObserver] Cancel ongoing content observation when tap is failed/cancelled
+ https://bugs.webkit.org/show_bug.cgi?id=199828
+ <rdar://problem/53152696>
+
+ Reviewed by Wenson Hsieh.
+
+ * WebProcess/WebPage/ios/WebPageIOS.mm:
+ (WebKit::WebPage::commitPotentialTapFailed):
+ (WebKit::WebPage::cancelPotentialTap):
+
2019-07-15 Alex Christensen <achristensen@webkit.org>
Remove redundant WebsiteDataStoreConfiguration member
diff --git a/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm b/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm
index 13c8531..52ae1f7 100644
--- a/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm
+++ b/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm
@@ -1126,6 +1126,7 @@
void WebPage::commitPotentialTapFailed()
{
+ ContentChangeObserver::didCancelPotentialTap(m_page->mainFrame());
if (!m_page->focusController().focusedOrMainFrame().selection().selection().isContentEditable())
clearSelection();
@@ -1135,8 +1136,7 @@
void WebPage::cancelPotentialTap()
{
- if (m_potentialTapNode)
- m_potentialTapNode->document().contentChangeObserver().willNotProceedWithClick();
+ ContentChangeObserver::didCancelPotentialTap(m_page->mainFrame());
cancelPotentialTapInFrame(*m_mainFrame);
}