WebKit Bugzilla
Attachment 368488 Details for
Bug 197347
: [iOS]Double-tapping a post to like doesn't work on Instagram.com (needs 'dblclick' event)
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-197347-20190429134508.patch (text/plain), 24.07 KB, created by
zalan
on 2019-04-29 13:45:09 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
zalan
Created:
2019-04-29 13:45:09 PDT
Size:
24.07 KB
patch
obsolete
>Subversion Revision: 244649 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 5ac42cac99b1d94d81d6acd37fd2ec161914793a..ca55c07021c63403b9324c913a0b6542032ba8c2 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,18 @@ >+2019-04-29 Zalan Bujtas <zalan@apple.com> >+ >+ Double-tapping a post to like doesn't work on Instagram.com (needs 'dblclick' event) >+ https://bugs.webkit.org/show_bug.cgi?id=197347 >+ <rdar://problem/49393423> >+ >+ Reviewed by Wenson Hsieh. >+ >+ Tests: fast/events/touch/ios/double-tap-for-double-click1.html >+ fast/events/touch/ios/double-tap-for-double-click2.html >+ >+ * page/Frame.h: >+ * page/ios/FrameIOS.mm: >+ (WebCore::Frame::nodeRespondingToDoubleClickEvent): >+ > 2019-04-25 Commit Queue <commit-queue@webkit.org> > > Unreviewed, rolling out r244627. >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index bfe4309378de27f0991f0f332f25ac5d0be99665..13c1626fa30dd5f852dca16c0a5797c652718f9c 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,33 @@ >+2019-04-29 Zalan Bujtas <zalan@apple.com> >+ >+ [iOS] Double-tapping a post to like doesn't work on Instagram.com (needs 'dblclick' event) >+ https://bugs.webkit.org/show_bug.cgi?id=197347 >+ <rdar://problem/49393423> >+ >+ Reviewed by Wenson Hsieh. >+ >+ This patch adds support for dispatching dblclick event as the result of the double tap gesture. >+ >+ 1. The new double tap gesture recognizer always fires regardless of what type of action the other, existing double gesture recognizers (double-tap to zoom) trigger. >+ 2. The dblclick event is dispatched on the node with registered dblclick event handler unless the node prohibits double tap gesture (touch-action != auto). >+ >+ * UIProcess/WebPageProxy.h: >+ * UIProcess/ios/WKContentViewInteraction.h: >+ * UIProcess/ios/WKContentViewInteraction.mm: >+ (-[WKContentView setupInteraction]): >+ (-[WKContentView cleanupInteraction]): >+ (-[WKContentView _removeDefaultGestureRecognizers]): >+ (-[WKContentView _addDefaultGestureRecognizers]): >+ (-[WKContentView gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]): >+ (-[WKContentView gestureRecognizerShouldBegin:]): >+ (-[WKContentView _doubleTapRecognizedForDoubleClick:]): >+ * UIProcess/ios/WebPageProxyIOS.mm: >+ (WebKit::WebPageProxy::handleDoubleTapForDoubleClickAtPoint): >+ * WebProcess/WebPage/WebPage.h: >+ * WebProcess/WebPage/WebPage.messages.in: >+ * WebProcess/WebPage/ios/WebPageIOS.mm: >+ (WebKit::WebPage::handleDoubleTapForDoubleClickAtPoint): >+ > 2019-04-25 Alexander Mikhaylenko <exalm7659@gmail.com> > > [GTK] Back/Forward gesture interferes with scrolling >diff --git a/Source/WebCore/page/Frame.h b/Source/WebCore/page/Frame.h >index b33bde3f7700109f06f0e01854b8ecd48b491e1d..69a248fe157a17498bb11d8a3afa0a90c55ae31c 100644 >--- a/Source/WebCore/page/Frame.h >+++ b/Source/WebCore/page/Frame.h >@@ -219,6 +219,7 @@ public: > > WEBCORE_EXPORT Node* deepestNodeAtLocation(const FloatPoint& viewportLocation); > WEBCORE_EXPORT Node* nodeRespondingToClickEvents(const FloatPoint& viewportLocation, FloatPoint& adjustedViewportLocation, SecurityOrigin* = nullptr); >+ WEBCORE_EXPORT Node* nodeRespondingToDoubleClickEvent(const FloatPoint& viewportLocation, FloatPoint& adjustedViewportLocation); > WEBCORE_EXPORT Node* nodeRespondingToScrollWheelEvents(const FloatPoint& viewportLocation); > > WEBCORE_EXPORT NSArray *wordsInCurrentParagraph() const; >diff --git a/Source/WebCore/page/ios/FrameIOS.mm b/Source/WebCore/page/ios/FrameIOS.mm >index 40db2deaef51b420ea05df225ce02cc9068bb537..3f0706a9ca2eaf428fd2273d5666ba87427e4cda 100644 >--- a/Source/WebCore/page/ios/FrameIOS.mm >+++ b/Source/WebCore/page/ios/FrameIOS.mm >@@ -418,6 +418,33 @@ Node* Frame::nodeRespondingToClickEvents(const FloatPoint& viewportLocation, Flo > return qualifyingNodeAtViewportLocation(viewportLocation, adjustedViewportLocation, WTFMove(ancestorRespondingToClickEvents), true); > } > >+Node* Frame::nodeRespondingToDoubleClickEvent(const FloatPoint& viewportLocation, FloatPoint& adjustedViewportLocation) >+{ >+ auto&& ancestorRespondingToDoubleClickEvent = [](const HitTestResult& hitTestResult, Node* terminationNode, IntRect* nodeBounds) -> Node* { >+ if (nodeBounds) >+ *nodeBounds = IntRect(); >+ >+ auto* node = hitTestResult.innerNode(); >+ if (!node) >+ return nullptr; >+ >+ for (; node && node != terminationNode; node = node->parentInComposedTree()) { >+ if (!node->hasEventListeners(eventNames().dblclickEvent)) >+ continue; >+#if ENABLE(TOUCH_EVENTS) >+ if (!node->allowsDoubleTapGesture()) >+ continue; >+#endif >+ if (nodeBounds && node->renderer()) >+ *nodeBounds = node->renderer()->absoluteBoundingBoxRect(true); >+ return node; >+ } >+ return nullptr; >+ }; >+ >+ return qualifyingNodeAtViewportLocation(viewportLocation, adjustedViewportLocation, WTFMove(ancestorRespondingToDoubleClickEvent), true); >+} >+ > Node* Frame::nodeRespondingToScrollWheelEvents(const FloatPoint& viewportLocation) > { > auto&& ancestorRespondingToScrollWheelEvents = [](const HitTestResult& hitTestResult, Node* terminationNode, IntRect* nodeBounds) -> Node* { >diff --git a/Source/WebKit/UIProcess/WebPageProxy.h b/Source/WebKit/UIProcess/WebPageProxy.h >index 7c277b6d84c665055918f08e2bd264f69bc5c686..91611eed525327557a2336465174996ef8720811 100644 >--- a/Source/WebKit/UIProcess/WebPageProxy.h >+++ b/Source/WebKit/UIProcess/WebPageProxy.h >@@ -1210,6 +1210,7 @@ public: > void tapHighlightAtPosition(const WebCore::FloatPoint&, uint64_t& requestID); > void handleTap(const WebCore::FloatPoint&, OptionSet<WebKit::WebEvent::Modifier>, uint64_t layerTreeTransactionIdAtLastTouchStart); > void didRecognizeLongPress(); >+ void handleDoubleTapForDoubleClickAtPoint(const WebCore::IntPoint&, OptionSet<WebEvent::Modifier>, uint64_t layerTreeTransactionIdAtLastTouchStart); > > void inspectorNodeSearchMovedToPosition(const WebCore::FloatPoint&); > void inspectorNodeSearchEndedAtPosition(const WebCore::FloatPoint&); >diff --git a/Source/WebKit/UIProcess/ios/WKContentViewInteraction.h b/Source/WebKit/UIProcess/ios/WKContentViewInteraction.h >index 107a27976d9df7286b3659eacc070c8dd95825dd..566270287378b8817483aa7c96fce99e429af909 100644 >--- a/Source/WebKit/UIProcess/ios/WKContentViewInteraction.h >+++ b/Source/WebKit/UIProcess/ios/WKContentViewInteraction.h >@@ -220,6 +220,7 @@ struct WKAutoCorrectionData { > RetainPtr<UILongPressGestureRecognizer> _longPressGestureRecognizer; > RetainPtr<WKSyntheticTapGestureRecognizer> _doubleTapGestureRecognizer; > RetainPtr<UITapGestureRecognizer> _nonBlockingDoubleTapGestureRecognizer; >+ RetainPtr<UITapGestureRecognizer> _doubleTapGestureRecognizerForDoubleClick; > RetainPtr<UITapGestureRecognizer> _twoFingerDoubleTapGestureRecognizer; > RetainPtr<UITapGestureRecognizer> _twoFingerSingleTapGestureRecognizer; > RetainPtr<UITapGestureRecognizer> _stylusSingleTapGestureRecognizer; >diff --git a/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm b/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm >index 0cfad5f7b3a705d8c2d6e21c0ed14a89a25e9925..daf3f8415efa0244df46529cbdd1990211852ed3 100644 >--- a/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm >+++ b/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm >@@ -734,6 +734,12 @@ - (void)setupInteraction > [_nonBlockingDoubleTapGestureRecognizer setEnabled:NO]; > [self addGestureRecognizer:_nonBlockingDoubleTapGestureRecognizer.get()]; > >+ _doubleTapGestureRecognizerForDoubleClick = adoptNS([[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(_doubleTapRecognizedForDoubleClick:)]); >+ [_doubleTapGestureRecognizerForDoubleClick setNumberOfTapsRequired:2]; >+ [_doubleTapGestureRecognizerForDoubleClick setDelegate:self]; >+ [_doubleTapGestureRecognizerForDoubleClick setEnabled:YES]; >+ [self addGestureRecognizer:_doubleTapGestureRecognizerForDoubleClick.get()]; >+ > [self _createAndConfigureDoubleTapGestureRecognizer]; > > _twoFingerDoubleTapGestureRecognizer = adoptNS([[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(_twoFingerDoubleTapRecognized:)]); >@@ -867,6 +873,9 @@ - (void)cleanupInteraction > [_nonBlockingDoubleTapGestureRecognizer setDelegate:nil]; > [self removeGestureRecognizer:_nonBlockingDoubleTapGestureRecognizer.get()]; > >+ [_doubleTapGestureRecognizerForDoubleClick setDelegate:nil]; >+ [self removeGestureRecognizer:_doubleTapGestureRecognizerForDoubleClick.get()]; >+ > [_twoFingerDoubleTapGestureRecognizer setDelegate:nil]; > [self removeGestureRecognizer:_twoFingerDoubleTapGestureRecognizer.get()]; > >@@ -940,6 +949,7 @@ - (void)_removeDefaultGestureRecognizers > [self removeGestureRecognizer:_highlightLongPressGestureRecognizer.get()]; > [self removeGestureRecognizer:_doubleTapGestureRecognizer.get()]; > [self removeGestureRecognizer:_nonBlockingDoubleTapGestureRecognizer.get()]; >+ [self removeGestureRecognizer:_doubleTapGestureRecognizerForDoubleClick.get()]; > [self removeGestureRecognizer:_twoFingerDoubleTapGestureRecognizer.get()]; > [self removeGestureRecognizer:_twoFingerSingleTapGestureRecognizer.get()]; > [self removeGestureRecognizer:_stylusSingleTapGestureRecognizer.get()]; >@@ -956,6 +966,7 @@ - (void)_addDefaultGestureRecognizers > [self addGestureRecognizer:_highlightLongPressGestureRecognizer.get()]; > [self addGestureRecognizer:_doubleTapGestureRecognizer.get()]; > [self addGestureRecognizer:_nonBlockingDoubleTapGestureRecognizer.get()]; >+ [self addGestureRecognizer:_doubleTapGestureRecognizerForDoubleClick.get()]; > [self addGestureRecognizer:_twoFingerDoubleTapGestureRecognizer.get()]; > [self addGestureRecognizer:_twoFingerSingleTapGestureRecognizer.get()]; > [self addGestureRecognizer:_stylusSingleTapGestureRecognizer.get()]; >@@ -1779,6 +1790,12 @@ - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecogni > if (isSamePair(gestureRecognizer, otherGestureRecognizer, _highlightLongPressGestureRecognizer.get(), _nonBlockingDoubleTapGestureRecognizer.get())) > return YES; > >+ if (isSamePair(gestureRecognizer, otherGestureRecognizer, _nonBlockingDoubleTapGestureRecognizer.get(), _doubleTapGestureRecognizerForDoubleClick.get())) >+ return YES; >+ >+ if (isSamePair(gestureRecognizer, otherGestureRecognizer, _doubleTapGestureRecognizer.get(), _doubleTapGestureRecognizerForDoubleClick.get())) >+ return YES; >+ > if (isSamePair(gestureRecognizer, otherGestureRecognizer, _highlightLongPressGestureRecognizer.get(), _previewSecondaryGestureRecognizer.get())) > return YES; > >@@ -1975,6 +1992,7 @@ - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer > if (gestureRecognizer == _highlightLongPressGestureRecognizer > || gestureRecognizer == _doubleTapGestureRecognizer > || gestureRecognizer == _nonBlockingDoubleTapGestureRecognizer >+ || gestureRecognizer == _doubleTapGestureRecognizerForDoubleClick > || gestureRecognizer == _twoFingerDoubleTapGestureRecognizer) { > > if (hasFocusedElement(_focusedElementInformation)) { >@@ -2377,6 +2395,11 @@ - (void)_nonBlockingDoubleTapRecognized:(UITapGestureRecognizer *)gestureRecogni > _isDoubleTapPending = YES; > } > >+- (void)_doubleTapRecognizedForDoubleClick:(UITapGestureRecognizer *)gestureRecognizer >+{ >+ _page->handleDoubleTapForDoubleClickAtPoint(WebCore::IntPoint(gestureRecognizer.location), WebKit::webEventModifierFlags(gestureRecognizerModifierFlags(gestureRecognizer)), _layerTreeTransactionIdAtLastTouchStart); >+} >+ > - (void)_twoFingerDoubleTapRecognized:(UITapGestureRecognizer *)gestureRecognizer > { > [self _resetIsDoubleTapPending]; >diff --git a/Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm b/Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm >index c682fda34246ff9d721f84063b27a20eb221d45b..7f55adb1b002192c9d1c1e0f63beb7152d0270e9 100644 >--- a/Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm >+++ b/Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm >@@ -867,6 +867,11 @@ void WebPageProxy::didRecognizeLongPress() > process().send(Messages::WebPage::DidRecognizeLongPress(), m_pageID); > } > >+void WebPageProxy::handleDoubleTapForDoubleClickAtPoint(const WebCore::IntPoint& point, OptionSet<WebEvent::Modifier> modifiers, uint64_t layerTreeTransactionIdAtLastTouchStart) >+{ >+ process().send(Messages::WebPage::HandleDoubleTapForDoubleClickAtPoint(point, modifiers, layerTreeTransactionIdAtLastTouchStart), m_pageID); >+} >+ > void WebPageProxy::inspectorNodeSearchMovedToPosition(const WebCore::FloatPoint& position) > { > process().send(Messages::WebPage::InspectorNodeSearchMovedToPosition(position), m_pageID); >diff --git a/Source/WebKit/WebProcess/WebPage/WebPage.h b/Source/WebKit/WebProcess/WebPage/WebPage.h >index 1f39c4379ee0bc8115ca8ab4f4c6514cb2e42c68..30f9e421235a3f52fec28cb4e32f3564add13398 100644 >--- a/Source/WebKit/WebProcess/WebPage/WebPage.h >+++ b/Source/WebKit/WebProcess/WebPage/WebPage.h >@@ -622,6 +622,7 @@ public: > void cancelPotentialTapInFrame(WebFrame&); > void tapHighlightAtPosition(uint64_t requestID, const WebCore::FloatPoint&); > void didRecognizeLongPress(); >+ void handleDoubleTapForDoubleClickAtPoint(const WebCore::IntPoint&, OptionSet<WebKit::WebEvent::Modifier>, uint64_t lastLayerTreeTransactionId); > > void inspectorNodeSearchMovedToPosition(const WebCore::FloatPoint&); > void inspectorNodeSearchEndedAtPosition(const WebCore::FloatPoint&); >diff --git a/Source/WebKit/WebProcess/WebPage/WebPage.messages.in b/Source/WebKit/WebProcess/WebPage/WebPage.messages.in >index 3ff4e408712a47d62127d01455ec657ef2238061..15b60195234af253708f0916f2143faa4a9cb130 100644 >--- a/Source/WebKit/WebProcess/WebPage/WebPage.messages.in >+++ b/Source/WebKit/WebProcess/WebPage/WebPage.messages.in >@@ -57,6 +57,7 @@ messages -> WebPage LegacyReceiver { > CancelPotentialTap() > TapHighlightAtPosition(uint64_t requestID, WebCore::FloatPoint point) > DidRecognizeLongPress() >+ HandleDoubleTapForDoubleClickAtPoint(WebCore::IntPoint point, OptionSet<WebKit::WebEvent::Modifier> modifiers, uint64_t lastLayerTreeTransactionId) > InspectorNodeSearchMovedToPosition(WebCore::FloatPoint point) > InspectorNodeSearchEndedAtPosition(WebCore::FloatPoint point) > BlurFocusedElement() >diff --git a/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm b/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm >index d4621ea988ae83087767680990830099b64766dc..bad457674dcfe5fed31c5c7d2e9731654311783f 100644 >--- a/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm >+++ b/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm >@@ -720,6 +720,28 @@ void WebPage::handleTap(const IntPoint& point, OptionSet<WebEvent::Modifier> mod > handleSyntheticClick(*nodeRespondingToClick, adjustedPoint, modifiers); > } > >+void WebPage::handleDoubleTapForDoubleClickAtPoint(const IntPoint& point, OptionSet<WebEvent::Modifier> modifiers, uint64_t lastLayerTreeTransactionId) >+{ >+ FloatPoint adjustedPoint; >+ auto* nodeRespondingToDoubleClick = m_page->mainFrame().nodeRespondingToDoubleClickEvent(point, adjustedPoint); >+ if (!nodeRespondingToDoubleClick) >+ return; >+ >+ auto* frameRespondingToDoubleClick = nodeRespondingToDoubleClick->document().frame(); >+ if (!frameRespondingToDoubleClick || lastLayerTreeTransactionId < WebFrame::fromCoreFrame(*frameRespondingToDoubleClick)->firstLayerTreeTransactionIDAfterDidCommitLoad()) >+ return; >+ >+ bool shiftKey = modifiers.contains(WebEvent::Modifier::ShiftKey); >+ bool ctrlKey = modifiers.contains(WebEvent::Modifier::ControlKey); >+ bool altKey = modifiers.contains(WebEvent::Modifier::AltKey); >+ bool metaKey = modifiers.contains(WebEvent::Modifier::MetaKey); >+ auto roundedAdjustedPoint = roundedIntPoint(adjustedPoint); >+ nodeRespondingToDoubleClick->document().frame()->eventHandler().handleMousePressEvent(PlatformMouseEvent(roundedAdjustedPoint, roundedAdjustedPoint, LeftButton, PlatformEvent::MousePressed, 2, shiftKey, ctrlKey, altKey, metaKey, WallTime::now(), 0, WebCore::NoTap)); >+ if (m_isClosed) >+ return; >+ nodeRespondingToDoubleClick->document().frame()->eventHandler().handleMouseReleaseEvent(PlatformMouseEvent(roundedAdjustedPoint, roundedAdjustedPoint, LeftButton, PlatformEvent::MouseReleased, 2, shiftKey, ctrlKey, altKey, metaKey, WallTime::now(), 0, WebCore::NoTap)); >+} >+ > void WebPage::requestFocusedElementInformation(WebKit::CallbackID callbackID) > { > FocusedElementInformation info; >diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog >index 400b07667e33167560521b40e0edf990e7944df8..45086e8363f6d06614bc1fc201b208e7e04b132f 100644 >--- a/LayoutTests/ChangeLog >+++ b/LayoutTests/ChangeLog >@@ -1,3 +1,16 @@ >+2019-04-29 Zalan Bujtas <zalan@apple.com> >+ >+ Double-tapping a post to like doesn't work on Instagram.com (needs 'dblclick' event) >+ https://bugs.webkit.org/show_bug.cgi?id=197347 >+ <rdar://problem/49393423> >+ >+ Reviewed by Wenson Hsieh. >+ >+ * fast/events/touch/ios/double-tap-for-double-click1-expected.txt: Added. >+ * fast/events/touch/ios/double-tap-for-double-click1.html: Added. >+ * fast/events/touch/ios/double-tap-for-double-click2-expected.txt: Added. >+ * fast/events/touch/ios/double-tap-for-double-click2.html: Added. >+ > 2019-04-25 Shawn Roberts <sroberts@apple.com> > > http/tests/resourceLoadStatistics/prune-statistics.html is a flaky failure on Debug testers >diff --git a/LayoutTests/fast/events/touch/ios/double-tap-for-double-click1-expected.txt b/LayoutTests/fast/events/touch/ios/double-tap-for-double-click1-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..4c87df43400d8c6e03cd12c9b9c1f1f29088314d >--- /dev/null >+++ b/LayoutTests/fast/events/touch/ios/double-tap-for-double-click1-expected.txt >@@ -0,0 +1,2 @@ >+PASS if 'double click' text is shown below. >+[click][click][double click] >diff --git a/LayoutTests/fast/events/touch/ios/double-tap-for-double-click1.html b/LayoutTests/fast/events/touch/ios/double-tap-for-double-click1.html >new file mode 100644 >index 0000000000000000000000000000000000000000..5513175833b48090f90492883b94f61a4a5f327f >--- /dev/null >+++ b/LayoutTests/fast/events/touch/ios/double-tap-for-double-click1.html >@@ -0,0 +1,42 @@ >+<!DOCTYPE html><!-- webkit-test-runner [ useFlexibleViewport=true ] --> >+<html> >+<head> >+<meta name="viewport" content="width=device-width initial-scale=1 user-scalable=no"> >+<title>This tests that we fire dblclick event on double tap</title> >+<script src="../../../../resources/basic-gestures.js"></script> >+<style> >+#doubleTapthis { >+ width: 400px; >+ height: 400px; >+ border: 1px solid green; >+} >+</style> >+<script> >+async function test() { >+ if (!window.testRunner || !testRunner.runUIScript) >+ return; >+ >+ testRunner.waitUntilDone(); >+ testRunner.dumpAsText(); >+ >+ await doubleTapAtPoint(doubleTapthis.offsetLeft, doubleTapthis.offsetTop); >+} >+</script> >+</head> >+<body onload="test()"> >+<div id=doubleTapthis>PASS if 'double click' text is shown below.</div> >+<pre id=result></pre> >+<script> >+ >+doubleTapthis.addEventListener("click", function( event ) { >+ result.innerHTML = result.innerHTML + "[click]"; >+}, false); >+ >+doubleTapthis.addEventListener("dblclick", function( event ) { >+ result.innerHTML = result.innerHTML + "[double click]"; >+ if (window.testRunner) >+ setTimeout("testRunner.notifyDone()", 0); >+}, false); >+</script> >+</body> >+</html> >diff --git a/LayoutTests/fast/events/touch/ios/double-tap-for-double-click2-expected.txt b/LayoutTests/fast/events/touch/ios/double-tap-for-double-click2-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..c65b7d6d1de8bc471f8e8231901d000d71867002 >--- /dev/null >+++ b/LayoutTests/fast/events/touch/ios/double-tap-for-double-click2-expected.txt >@@ -0,0 +1 @@ >+[double click] >diff --git a/LayoutTests/fast/events/touch/ios/double-tap-for-double-click2.html b/LayoutTests/fast/events/touch/ios/double-tap-for-double-click2.html >new file mode 100644 >index 0000000000000000000000000000000000000000..b1c75922d15b0c2166ef81f76f4c44eebfc7d8b0 >--- /dev/null >+++ b/LayoutTests/fast/events/touch/ios/double-tap-for-double-click2.html >@@ -0,0 +1,57 @@ >+<!DOCTYPE html><!-- webkit-test-runner [ useFlexibleViewport=true ] --> >+<html> >+<head> >+<meta name="viewport" content="width=device-width initial-scale=1 user-scalable=no"> >+<title>This tests that we fire dblclick event on double tap when the content is replaced</title> >+<script src="../../../../resources/basic-gestures.js"></script> >+<style> >+#doubleTapThis { >+ width: 400px; >+ height: 400px; >+ border: 1px solid green; >+} >+ >+#newDoubleTapThis { >+ width: 400px; >+ height: 400px; >+ border: 1px solid green; >+} >+</style> >+<script> >+async function test() { >+ if (!window.testRunner || !testRunner.runUIScript) >+ return; >+ >+ testRunner.waitUntilDone(); >+ testRunner.dumpAsText(); >+ >+ let rect = doubleTapThis.getBoundingClientRect(); >+ let x = rect.left + rect.width / 2; >+ let y = rect.top + rect.height / 2; >+ >+ await doubleTapAtPoint(x, y); >+} >+</script> >+</head> >+<body onload="test()"> >+<div id=doubleTapThis>PASS if 'double click' text is shown below.</div> >+<pre id=result></pre> >+<script> >+ >+doubleTapThis.addEventListener('click', function (e) { >+ doubleTapThis.remove(); >+ >+ let newDoubleTapThis = document.createElement("div"); >+ newDoubleTapThis.id="newDoubleTapThis"; >+ document.body.insertBefore(newDoubleTapThis, result); >+ >+ newDoubleTapThis.addEventListener('dblclick', function (e) { >+ result.innerHTML = result.innerHTML + "[double click]"; >+ if (window.testRunner) >+ setTimeout("testRunner.notifyDone()", 0); >+ }); >+}); >+ >+</script> >+</body> >+</html> >diff --git a/LayoutTests/fast/events/touch/ios/double-tap-for-double-click3-expected.txt b/LayoutTests/fast/events/touch/ios/double-tap-for-double-click3-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..a0292c210c3d7b5aea9c147df58e12170dbfba36 >--- /dev/null >+++ b/LayoutTests/fast/events/touch/ios/double-tap-for-double-click3-expected.txt >@@ -0,0 +1,2 @@ >+PASS if 'double click' text is NOT shown below. >+[click][click] >diff --git a/LayoutTests/fast/events/touch/ios/double-tap-for-double-click3.html b/LayoutTests/fast/events/touch/ios/double-tap-for-double-click3.html >new file mode 100644 >index 0000000000000000000000000000000000000000..4beb8a2c6127fbe9191ca6868f746ceed8c11939 >--- /dev/null >+++ b/LayoutTests/fast/events/touch/ios/double-tap-for-double-click3.html >@@ -0,0 +1,54 @@ >+<!DOCTYPE html><!-- webkit-test-runner [ useFlexibleViewport=true ] --> >+<html> >+<head> >+<meta name="viewport" content="width=device-width initial-scale=1 user-scalable=no"> >+<title>This tests that we do not fire dblclick event on double tap on node with touch-action: none</title> >+<script src="../../../../resources/basic-gestures.js"></script> >+<style> >+#doubleTapthis { >+ width: 400px; >+ height: 400px; >+ border: 1px solid green; >+ touch-action: none; >+} >+#finishTest { >+ width: 10px; >+ height: 10px; >+ border: 1px solid green; >+} >+</style> >+<script> >+async function test() { >+ if (!window.testRunner || !testRunner.runUIScript) >+ return; >+ >+ testRunner.waitUntilDone(); >+ testRunner.dumpAsText(); >+ >+ await doubleTapAtPoint(doubleTapthis.offsetLeft, doubleTapthis.offsetTop); >+ >+ await doubleTapAtPoint(finishTest.offsetLeft, finishTest.offsetTop); >+} >+</script> >+</head> >+<body onload="test()"> >+<div id=doubleTapthis>PASS if 'double click' text is NOT shown below.</div> >+<div id=finishTest></div> >+<pre id=result></pre> >+<script> >+ >+doubleTapthis.addEventListener("click", function( event ) { >+ result.innerHTML = result.innerHTML + "[click]"; >+}, false); >+ >+doubleTapthis.addEventListener("dblclick", function( event ) { >+ result.innerHTML = result.innerHTML + "[double click]"; >+}, false); >+ >+finishTest.addEventListener("dblclick", function( event ) { >+ if (window.testRunner) >+ setTimeout("testRunner.notifyDone()", 0); >+}, false); >+</script> >+</body> >+</html>
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 197347
:
368416
|
368423
|
368424
|
368475
|
368488
|
368536