WebKit Bugzilla
Attachment 358732 Details for
Bug 193294
: REGRESSION (r237658): Tap highlight limits cause the highlight to no longer show with legitimate button sizes
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-193294-20190109131718.patch (text/plain), 15.18 KB, created by
zalan
on 2019-01-09 13:17:19 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
zalan
Created:
2019-01-09 13:17:19 PST
Size:
15.18 KB
patch
obsolete
>Subversion Revision: 239773 >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index 891a4f5f895eadbe11fc3e45d24f21f0b5014564..2a61f6c69921c1ffc2bb979eee5618bd8d1466f6 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,29 @@ >+2019-01-09 Zalan Bujtas <zalan@apple.com> >+ >+ REGRESSION (r237658): Tap highlight limits cause the highlight to no longer show with legitimate button sizes >+ https://bugs.webkit.org/show_bug.cgi?id=193294 >+ <rdar://problem/46006678> >+ >+ Reviewed by Simon Fraser. >+ >+ Input type elements should always paint tap highlight (ignore size heuristic). >+ >+ * UIProcess/PageClient.h: >+ * UIProcess/WebPageProxy.h: >+ * UIProcess/WebPageProxy.messages.in: >+ * UIProcess/ios/PageClientImplIOS.h: >+ * UIProcess/ios/PageClientImplIOS.mm: >+ (WebKit::PageClientImpl::didGetTapHighlightGeometries): >+ * UIProcess/ios/WKContentViewInteraction.h: >+ * UIProcess/ios/WKContentViewInteraction.mm: >+ (-[WKContentView _showTapHighlight]): >+ (-[WKContentView _didGetTapHighlightForRequest:color:quads:topLeftRadius:topRightRadius:bottomLeftRadius:bottomRightRadius:nodeHasBuiltInClickHandling:]): >+ (-[WKContentView _didGetTapHighlightForRequest:color:quads:topLeftRadius:topRightRadius:bottomLeftRadius:bottomRightRadius:]): Deleted. >+ * UIProcess/ios/WebPageProxyIOS.mm: >+ (WebKit::WebPageProxy::didGetTapHighlightGeometries): >+ * WebProcess/WebPage/ios/WebPageIOS.mm: >+ (WebKit::WebPage::sendTapHighlightForNodeIfNecessary): >+ > 2019-01-09 Michael Catanzaro <mcatanzaro@igalia.com> > > [GTK] Add missing autocleanups >diff --git a/Source/WebKit/UIProcess/PageClient.h b/Source/WebKit/UIProcess/PageClient.h >index 0b858c46ee474d696ddc3d435bd54c1323003c2d..149714ab1d2265a6834d57ef47b116ea4e29e351 100644 >--- a/Source/WebKit/UIProcess/PageClient.h >+++ b/Source/WebKit/UIProcess/PageClient.h >@@ -354,7 +354,7 @@ public: > > #if PLATFORM(IOS_FAMILY) > virtual void commitPotentialTapFailed() = 0; >- virtual void didGetTapHighlightGeometries(uint64_t requestID, const WebCore::Color&, const Vector<WebCore::FloatQuad>& highlightedQuads, const WebCore::IntSize& topLeftRadius, const WebCore::IntSize& topRightRadius, const WebCore::IntSize& bottomLeftRadius, const WebCore::IntSize& bottomRightRadius) = 0; >+ virtual void didGetTapHighlightGeometries(uint64_t requestID, const WebCore::Color&, const Vector<WebCore::FloatQuad>& highlightedQuads, const WebCore::IntSize& topLeftRadius, const WebCore::IntSize& topRightRadius, const WebCore::IntSize& bottomLeftRadius, const WebCore::IntSize& bottomRightRadius, bool nodeHasBuiltInClickHandling) = 0; > > virtual void didCommitLayerTree(const RemoteLayerTreeTransaction&) = 0; > virtual void layerTreeCommitComplete() = 0; >diff --git a/Source/WebKit/UIProcess/WebPageProxy.h b/Source/WebKit/UIProcess/WebPageProxy.h >index 456c8a29ec38675668dd5ccb21e45538f97799df..966b807a42e43aeb29f0f50a1b61ba7f987196b5 100644 >--- a/Source/WebKit/UIProcess/WebPageProxy.h >+++ b/Source/WebKit/UIProcess/WebPageProxy.h >@@ -1780,7 +1780,7 @@ private: > void restorePageState(Optional<WebCore::FloatPoint> scrollPosition, const WebCore::FloatPoint& scrollOrigin, const WebCore::FloatBoxExtent& obscuredInsetsOnSave, double scale); > void restorePageCenterAndScale(Optional<WebCore::FloatPoint>, double scale); > >- void didGetTapHighlightGeometries(uint64_t requestID, const WebCore::Color& color, const Vector<WebCore::FloatQuad>& geometries, const WebCore::IntSize& topLeftRadius, const WebCore::IntSize& topRightRadius, const WebCore::IntSize& bottomLeftRadius, const WebCore::IntSize& bottomRightRadius); >+ void didGetTapHighlightGeometries(uint64_t requestID, const WebCore::Color& color, const Vector<WebCore::FloatQuad>& geometries, const WebCore::IntSize& topLeftRadius, const WebCore::IntSize& topRightRadius, const WebCore::IntSize& bottomLeftRadius, const WebCore::IntSize& bottomRightRadius, bool nodeHasBuiltInClickHandling); > > void elementDidFocus(const FocusedElementInformation&, bool userIsInteracting, bool blurPreviousNode, bool changingActivityState, const UserData&); > void elementDidBlur(); >diff --git a/Source/WebKit/UIProcess/WebPageProxy.messages.in b/Source/WebKit/UIProcess/WebPageProxy.messages.in >index cf40fdcb0e5d1ed0e176db296c230313ecbdc9b7..95fee23e0d9cb87019e76814011a5d6b764b549b 100644 >--- a/Source/WebKit/UIProcess/WebPageProxy.messages.in >+++ b/Source/WebKit/UIProcess/WebPageProxy.messages.in >@@ -401,7 +401,7 @@ messages -> WebPageProxy { > CouldNotRestorePageState() > RestorePageState(Optional<WebCore::FloatPoint> scrollPosition, WebCore::FloatPoint scrollOrigin, WebCore::RectEdges<float> obscuredInsetsOnSave, double scale) > RestorePageCenterAndScale(Optional<WebCore::FloatPoint> unobscuredCenter, double scale) >- DidGetTapHighlightGeometries(uint64_t requestID, WebCore::Color color, Vector<WebCore::FloatQuad> geometries, WebCore::IntSize topLeftRadius, WebCore::IntSize topRightRadius, WebCore::IntSize bottomLeftRadius, WebCore::IntSize bottomRightRadius) >+ DidGetTapHighlightGeometries(uint64_t requestID, WebCore::Color color, Vector<WebCore::FloatQuad> geometries, WebCore::IntSize topLeftRadius, WebCore::IntSize topRightRadius, WebCore::IntSize bottomLeftRadius, WebCore::IntSize bottomRightRadius, bool nodeHasBuiltInClickHandling) > > ElementDidFocus(struct WebKit::FocusedElementInformation information, bool userIsInteracting, bool blurPreviousNode, bool changingActivityState, WebKit::UserData userData) > ElementDidBlur() >diff --git a/Source/WebKit/UIProcess/ios/PageClientImplIOS.h b/Source/WebKit/UIProcess/ios/PageClientImplIOS.h >index 4b420d16738ad8a6f2250c2d999e9e0f58a96496..877c8137f3316582ac5433eed5b17bdab2539d9f 100644 >--- a/Source/WebKit/UIProcess/ios/PageClientImplIOS.h >+++ b/Source/WebKit/UIProcess/ios/PageClientImplIOS.h >@@ -130,7 +130,7 @@ private: > void wheelEventWasNotHandledByWebCore(const NativeWebWheelEvent&) override; > > void commitPotentialTapFailed() override; >- void didGetTapHighlightGeometries(uint64_t requestID, const WebCore::Color&, const Vector<WebCore::FloatQuad>& highlightedQuads, const WebCore::IntSize& topLeftRadius, const WebCore::IntSize& topRightRadius, const WebCore::IntSize& bottomLeftRadius, const WebCore::IntSize& bottomRightRadius) override; >+ void didGetTapHighlightGeometries(uint64_t requestID, const WebCore::Color&, const Vector<WebCore::FloatQuad>& highlightedQuads, const WebCore::IntSize& topLeftRadius, const WebCore::IntSize& topRightRadius, const WebCore::IntSize& bottomLeftRadius, const WebCore::IntSize& bottomRightRadius, bool nodeHasBuiltInClickHandling) override; > > void didCommitLayerTree(const RemoteLayerTreeTransaction&) override; > void layerTreeCommitComplete() override; >diff --git a/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm b/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm >index 71b57ccbb28b2af5712731fab52b03fe7e56699d..7e063da1d38c05ea36f2109b20fd7414c20b7532 100644 >--- a/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm >+++ b/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm >@@ -479,9 +479,9 @@ void PageClientImpl::commitPotentialTapFailed() > [m_contentView _commitPotentialTapFailed]; > } > >-void PageClientImpl::didGetTapHighlightGeometries(uint64_t requestID, const WebCore::Color& color, const Vector<WebCore::FloatQuad>& highlightedQuads, const WebCore::IntSize& topLeftRadius, const WebCore::IntSize& topRightRadius, const WebCore::IntSize& bottomLeftRadius, const WebCore::IntSize& bottomRightRadius) >+void PageClientImpl::didGetTapHighlightGeometries(uint64_t requestID, const WebCore::Color& color, const Vector<WebCore::FloatQuad>& highlightedQuads, const WebCore::IntSize& topLeftRadius, const WebCore::IntSize& topRightRadius, const WebCore::IntSize& bottomLeftRadius, const WebCore::IntSize& bottomRightRadius, bool nodeHasBuiltInClickHandling) > { >- [m_contentView _didGetTapHighlightForRequest:requestID color:color quads:highlightedQuads topLeftRadius:topLeftRadius topRightRadius:topRightRadius bottomLeftRadius:bottomLeftRadius bottomRightRadius:bottomRightRadius]; >+ [m_contentView _didGetTapHighlightForRequest:requestID color:color quads:highlightedQuads topLeftRadius:topLeftRadius topRightRadius:topRightRadius bottomLeftRadius:bottomLeftRadius bottomRightRadius:bottomRightRadius nodeHasBuiltInClickHandling:nodeHasBuiltInClickHandling]; > } > > void PageClientImpl::didCommitLayerTree(const RemoteLayerTreeTransaction& layerTreeTransaction) >diff --git a/Source/WebKit/UIProcess/ios/WKContentViewInteraction.h b/Source/WebKit/UIProcess/ios/WKContentViewInteraction.h >index 7b6728f2f8cfbe64c6a56c9b1317d4c94f933af0..a7ffff78f30a70f4fc590d705a1d19e3a3881bef 100644 >--- a/Source/WebKit/UIProcess/ios/WKContentViewInteraction.h >+++ b/Source/WebKit/UIProcess/ios/WKContentViewInteraction.h >@@ -242,6 +242,7 @@ struct WKAutoCorrectionData { > > uint64_t _latestTapID; > struct TapHighlightInformation { >+ BOOL nodeHasBuiltInClickHandling { false }; > WebCore::Color color; > Vector<WebCore::FloatQuad> quads; > WebCore::IntSize topLeftRadius; >@@ -381,7 +382,7 @@ FOR_EACH_PRIVATE_WKCONTENTVIEW_ACTION(DECLARE_WKCONTENTVIEW_ACTION_FOR_WEB_VIEW) > - (void)_commitPotentialTapFailed; > - (void)_didNotHandleTapAsClick:(const WebCore::IntPoint&)point; > - (void)_didCompleteSyntheticClick; >-- (void)_didGetTapHighlightForRequest:(uint64_t)requestID color:(const WebCore::Color&)color quads:(const Vector<WebCore::FloatQuad>&)highlightedQuads topLeftRadius:(const WebCore::IntSize&)topLeftRadius topRightRadius:(const WebCore::IntSize&)topRightRadius bottomLeftRadius:(const WebCore::IntSize&)bottomLeftRadius bottomRightRadius:(const WebCore::IntSize&)bottomRightRadius; >+- (void)_didGetTapHighlightForRequest:(uint64_t)requestID color:(const WebCore::Color&)color quads:(const Vector<WebCore::FloatQuad>&)highlightedQuads topLeftRadius:(const WebCore::IntSize&)topLeftRadius topRightRadius:(const WebCore::IntSize&)topRightRadius bottomLeftRadius:(const WebCore::IntSize&)bottomLeftRadius bottomRightRadius:(const WebCore::IntSize&)bottomRightRadius nodeHasBuiltInClickHandling:(BOOL)nodeHasBuiltInClickHandling; > > - (BOOL)_mayDisableDoubleTapGesturesDuringSingleTap; > - (void)_disableDoubleTapGesturesDuringTapIfNecessary:(uint64_t)requestID; >diff --git a/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm b/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm >index 527ef27180b669bc70d460d29f9f336f51fcca54..51a0d875310cedd519aa4ecfb418ffcf6d238ed7 100644 >--- a/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm >+++ b/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm >@@ -1274,6 +1274,9 @@ - (void)_showTapHighlight > UNUSED_PARAM(rect); > return NO; > #else >+ if (_tapHighlightInformation.nodeHasBuiltInClickHandling) >+ return true; >+ > static const float highlightPaintThreshold = 0.3; // 30% > float highlightArea = 0; > for (auto highlightQuad : _tapHighlightInformation.quads) { >@@ -1300,7 +1303,7 @@ - (void)_showTapHighlight > [self _updateTapHighlight]; > } > >-- (void)_didGetTapHighlightForRequest:(uint64_t)requestID color:(const WebCore::Color&)color quads:(const Vector<WebCore::FloatQuad>&)highlightedQuads topLeftRadius:(const WebCore::IntSize&)topLeftRadius topRightRadius:(const WebCore::IntSize&)topRightRadius bottomLeftRadius:(const WebCore::IntSize&)bottomLeftRadius bottomRightRadius:(const WebCore::IntSize&)bottomRightRadius >+- (void)_didGetTapHighlightForRequest:(uint64_t)requestID color:(const WebCore::Color&)color quads:(const Vector<WebCore::FloatQuad>&)highlightedQuads topLeftRadius:(const WebCore::IntSize&)topLeftRadius topRightRadius:(const WebCore::IntSize&)topRightRadius bottomLeftRadius:(const WebCore::IntSize&)bottomLeftRadius bottomRightRadius:(const WebCore::IntSize&)bottomRightRadius nodeHasBuiltInClickHandling:(BOOL)nodeHasBuiltInClickHandling > { > if (!_isTapHighlightIDValid || _latestTapID != requestID) > return; >@@ -1315,6 +1318,7 @@ - (void)_didGetTapHighlightForRequest:(uint64_t)requestID color:(const WebCore:: > _tapHighlightInformation.topRightRadius = topRightRadius; > _tapHighlightInformation.bottomLeftRadius = bottomLeftRadius; > _tapHighlightInformation.bottomRightRadius = bottomRightRadius; >+ _tapHighlightInformation.nodeHasBuiltInClickHandling = nodeHasBuiltInClickHandling; > if (_showDebugTapHighlightsForFastClicking) > _tapHighlightInformation.color = [self _tapHighlightColorForFastClick:![_doubleTapGestureRecognizer isEnabled]]; > else >diff --git a/Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm b/Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm >index d33263d547157aa5f3971be89cd99091fd002dea..11a746739f76bf723c3ba80116addde93ab48210 100644 >--- a/Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm >+++ b/Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm >@@ -894,9 +894,9 @@ void WebPageProxy::restorePageCenterAndScale(Optional<WebCore::FloatPoint> cente > pageClient().restorePageCenterAndScale(center, scale); > } > >-void WebPageProxy::didGetTapHighlightGeometries(uint64_t requestID, const WebCore::Color& color, const Vector<WebCore::FloatQuad>& highlightedQuads, const WebCore::IntSize& topLeftRadius, const WebCore::IntSize& topRightRadius, const WebCore::IntSize& bottomLeftRadius, const WebCore::IntSize& bottomRightRadius) >+void WebPageProxy::didGetTapHighlightGeometries(uint64_t requestID, const WebCore::Color& color, const Vector<WebCore::FloatQuad>& highlightedQuads, const WebCore::IntSize& topLeftRadius, const WebCore::IntSize& topRightRadius, const WebCore::IntSize& bottomLeftRadius, const WebCore::IntSize& bottomRightRadius, bool nodeHasBuiltInClickHandling) > { >- pageClient().didGetTapHighlightGeometries(requestID, color, highlightedQuads, topLeftRadius, topRightRadius, bottomLeftRadius, bottomRightRadius); >+ pageClient().didGetTapHighlightGeometries(requestID, color, highlightedQuads, topLeftRadius, topRightRadius, bottomLeftRadius, bottomRightRadius, nodeHasBuiltInClickHandling); > } > > void WebPageProxy::elementDidFocus(const FocusedElementInformation& information, bool userIsInteracting, bool blurPreviousNode, bool changingActivityState, const UserData& userData) >diff --git a/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm b/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm >index 910080e660fba0710133b1e472e26f29fa5e135d..5db2f9b776e80915a8da95fea8a16e6551294d2e 100644 >--- a/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm >+++ b/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm >@@ -725,7 +725,7 @@ void WebPage::sendTapHighlightForNodeIfNecessary(uint64_t requestID, Node* node) > if (is<RenderBox>(*renderer)) > borderRadii = downcast<RenderBox>(*renderer).borderRadii(); > >- send(Messages::WebPageProxy::DidGetTapHighlightGeometries(requestID, highlightColor, quads, roundedIntSize(borderRadii.topLeft()), roundedIntSize(borderRadii.topRight()), roundedIntSize(borderRadii.bottomLeft()), roundedIntSize(borderRadii.bottomRight()))); >+ send(Messages::WebPageProxy::DidGetTapHighlightGeometries(requestID, highlightColor, quads, roundedIntSize(borderRadii.topLeft()), roundedIntSize(borderRadii.topRight()), roundedIntSize(borderRadii.bottomLeft()), roundedIntSize(borderRadii.bottomRight()), node->willRespondToMouseClickEvents())); > } > #else > UNUSED_PARAM(requestID);
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 193294
:
358727
|
358731
|
358732
|
358804