Diff
Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (239842 => 239843)
--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj 2019-01-10 21:46:30 UTC (rev 239842)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj 2019-01-10 21:50:42 UTC (rev 239843)
@@ -4242,7 +4242,7 @@
D3A94A3B122DABAC00A37BBC /* MediaQueryListListener.h in Headers */ = {isa = PBXBuildFile; fileRef = D3A94A34122DABAC00A37BBC /* MediaQueryListListener.h */; };
D3A94A47122DC40F00A37BBC /* JSMediaQueryList.h in Headers */ = {isa = PBXBuildFile; fileRef = D3A94A43122DC40F00A37BBC /* JSMediaQueryList.h */; };
D3AA10F4123A98AA0092152B /* MediaQueryMatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = D3AA10F2123A98AA0092152B /* MediaQueryMatcher.h */; };
- D3D4E973130C7CFE007BA540 /* HTMLSummaryElement.h in Headers */ = {isa = PBXBuildFile; fileRef = D3D4E971130C7CFE007BA540 /* HTMLSummaryElement.h */; };
+ D3D4E973130C7CFE007BA540 /* HTMLSummaryElement.h in Headers */ = {isa = PBXBuildFile; fileRef = D3D4E971130C7CFE007BA540 /* HTMLSummaryElement.h */; settings = {ATTRIBUTES = (Private, ); }; };
D3F3D3641A69B1900059FC2B /* JSWebGL2RenderingContext.h in Headers */ = {isa = PBXBuildFile; fileRef = D3F3D3621A69B1900059FC2B /* JSWebGL2RenderingContext.h */; };
D3F3D3691A69B7B00059FC2B /* WebGLRenderingContextBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D3F3D35E1A69A5060059FC2B /* WebGLRenderingContextBase.cpp */; };
D3F3D36A1A69B7B90059FC2B /* WebGLRenderingContextBase.h in Headers */ = {isa = PBXBuildFile; fileRef = D3F3D35F1A69A5060059FC2B /* WebGLRenderingContextBase.h */; };
Modified: trunk/Source/WebKit/ChangeLog (239842 => 239843)
--- trunk/Source/WebKit/ChangeLog 2019-01-10 21:46:30 UTC (rev 239842)
+++ trunk/Source/WebKit/ChangeLog 2019-01-10 21:50:42 UTC (rev 239843)
@@ -1,3 +1,29 @@
+2019-01-10 Zalan Bujtas <za...@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-10 Alexey Proskuryakov <a...@apple.com>
Remove unneeded XPCService variant for plugin service
Modified: trunk/Source/WebKit/UIProcess/PageClient.h (239842 => 239843)
--- trunk/Source/WebKit/UIProcess/PageClient.h 2019-01-10 21:46:30 UTC (rev 239842)
+++ trunk/Source/WebKit/UIProcess/PageClient.h 2019-01-10 21:50:42 UTC (rev 239843)
@@ -354,7 +354,7 @@
#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;
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.h (239842 => 239843)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.h 2019-01-10 21:46:30 UTC (rev 239842)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.h 2019-01-10 21:50:42 UTC (rev 239843)
@@ -1780,7 +1780,7 @@
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();
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.messages.in (239842 => 239843)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.messages.in 2019-01-10 21:46:30 UTC (rev 239842)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.messages.in 2019-01-10 21:50:42 UTC (rev 239843)
@@ -401,7 +401,7 @@
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()
Modified: trunk/Source/WebKit/UIProcess/ios/PageClientImplIOS.h (239842 => 239843)
--- trunk/Source/WebKit/UIProcess/ios/PageClientImplIOS.h 2019-01-10 21:46:30 UTC (rev 239842)
+++ trunk/Source/WebKit/UIProcess/ios/PageClientImplIOS.h 2019-01-10 21:50:42 UTC (rev 239843)
@@ -130,7 +130,7 @@
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;
Modified: trunk/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm (239842 => 239843)
--- trunk/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm 2019-01-10 21:46:30 UTC (rev 239842)
+++ trunk/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm 2019-01-10 21:50:42 UTC (rev 239843)
@@ -479,9 +479,9 @@
[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)
Modified: trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.h (239842 => 239843)
--- trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.h 2019-01-10 21:46:30 UTC (rev 239842)
+++ trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.h 2019-01-10 21:50:42 UTC (rev 239843)
@@ -242,6 +242,7 @@
uint64_t _latestTapID;
struct TapHighlightInformation {
+ BOOL nodeHasBuiltInClickHandling { false };
WebCore::Color color;
Vector<WebCore::FloatQuad> quads;
WebCore::IntSize topLeftRadius;
@@ -381,7 +382,7 @@
- (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;
Modified: trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm (239842 => 239843)
--- trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm 2019-01-10 21:46:30 UTC (rev 239842)
+++ trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm 2019-01-10 21:50:42 UTC (rev 239843)
@@ -1274,6 +1274,9 @@
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 @@
[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 @@
_tapHighlightInformation.topRightRadius = topRightRadius;
_tapHighlightInformation.bottomLeftRadius = bottomLeftRadius;
_tapHighlightInformation.bottomRightRadius = bottomRightRadius;
+ _tapHighlightInformation.nodeHasBuiltInClickHandling = nodeHasBuiltInClickHandling;
if (_showDebugTapHighlightsForFastClicking)
_tapHighlightInformation.color = [self _tapHighlightColorForFastClick:![_doubleTapGestureRecognizer isEnabled]];
else
Modified: trunk/Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm (239842 => 239843)
--- trunk/Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm 2019-01-10 21:46:30 UTC (rev 239842)
+++ trunk/Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm 2019-01-10 21:50:42 UTC (rev 239843)
@@ -894,9 +894,9 @@
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)
Modified: trunk/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm (239842 => 239843)
--- trunk/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm 2019-01-10 21:46:30 UTC (rev 239842)
+++ trunk/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm 2019-01-10 21:50:42 UTC (rev 239843)
@@ -80,10 +80,12 @@
#import <WebCore/HTMLFormElement.h>
#import <WebCore/HTMLImageElement.h>
#import <WebCore/HTMLInputElement.h>
+#import <WebCore/HTMLLabelElement.h>
#import <WebCore/HTMLOptGroupElement.h>
#import <WebCore/HTMLOptionElement.h>
#import <WebCore/HTMLParserIdioms.h>
#import <WebCore/HTMLSelectElement.h>
+#import <WebCore/HTMLSummaryElement.h>
#import <WebCore/HTMLTextAreaElement.h>
#import <WebCore/HTMLTextFormControlElement.h>
#import <WebCore/HistoryItem.h>
@@ -725,7 +727,8 @@
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())));
+ bool nodeHasBuiltInClickHandling = is<HTMLFormControlElement>(*node) || is<HTMLAnchorElement>(*node) || is<HTMLLabelElement>(*node) || is<HTMLSummaryElement>(*node) || node->isLink();
+ send(Messages::WebPageProxy::DidGetTapHighlightGeometries(requestID, highlightColor, quads, roundedIntSize(borderRadii.topLeft()), roundedIntSize(borderRadii.topRight()), roundedIntSize(borderRadii.bottomLeft()), roundedIntSize(borderRadii.bottomRight()), nodeHasBuiltInClickHandling));
}
#else
UNUSED_PARAM(requestID);