Changeset 274245 in webkit
- Timestamp:
- Mar 10, 2021, 3:38:53 PM (6 years ago)
- Location:
- branches/safari-611.1.21.0-branch/Source/WebKit
- Files:
-
- 9 edited
-
ChangeLog (modified) (1 diff)
-
UIProcess/PageClient.h (modified) (1 diff)
-
UIProcess/WebPageProxy.cpp (modified) (5 diffs)
-
UIProcess/ios/PageClientImplIOS.h (modified) (1 diff)
-
UIProcess/ios/PageClientImplIOS.mm (modified) (1 diff)
-
UIProcess/ios/WKContentViewInteraction.h (modified) (2 diffs)
-
UIProcess/ios/WKContentViewInteraction.mm (modified) (10 diffs)
-
UIProcess/ios/WKDeferringGestureRecognizer.h (modified) (1 diff)
-
UIProcess/ios/WKDeferringGestureRecognizer.mm (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
branches/safari-611.1.21.0-branch/Source/WebKit/ChangeLog
r274236 r274245 1 2021-03-10 Ruben Turcios <rubent_22@apple.com> 2 3 Revert r271193. rdar://problem/75273221 4 1 5 2021-03-10 Ruben Turcios <rubent_22@apple.com> 2 6 -
branches/safari-611.1.21.0-branch/Source/WebKit/UIProcess/PageClient.h
r273456 r274245 340 340 #endif 341 341 #if ENABLE(IOS_TOUCH_EVENTS) 342 virtual void doneDeferring TouchStart(bool preventNativeGestures) = 0;342 virtual void doneDeferringNativeGestures(bool preventNativeGestures) = 0; 343 343 #endif 344 344 -
branches/safari-611.1.21.0-branch/Source/WebKit/UIProcess/WebPageProxy.cpp
r274105 r274245 2915 2915 if (touchEventsTrackingType == TrackingType::NotTracking) { 2916 2916 if (!isHandlingPreventableTouchStart()) 2917 pageClient().doneDeferring TouchStart(false);2917 pageClient().doneDeferringNativeGestures(false); 2918 2918 return; 2919 2919 } … … 2930 2930 didReceiveEvent(event.type(), false); 2931 2931 if (!isHandlingPreventableTouchStart()) 2932 pageClient().doneDeferring TouchStart(false);2932 pageClient().doneDeferringNativeGestures(false); 2933 2933 return; 2934 2934 } … … 2937 2937 ++m_handlingPreventableTouchStartCount; 2938 2938 Function<void(bool, CallbackBase::Error)> completionHandler = [this, protectedThis = makeRef(*this), event](bool handled, CallbackBase::Error error) { 2939 bool didFinishDeferringTouchStart = false; 2940 ASSERT_IMPLIES(event.type() == WebEvent::TouchStart, m_handlingPreventableTouchStartCount); 2941 if (event.type() == WebEvent::TouchStart && m_handlingPreventableTouchStartCount) 2942 didFinishDeferringTouchStart = !--m_handlingPreventableTouchStartCount; 2939 ASSERT(m_handlingPreventableTouchStartCount); 2940 if (m_handlingPreventableTouchStartCount) 2941 --m_handlingPreventableTouchStartCount; 2943 2942 2944 2943 bool handledOrFailedWithError = handled || error != CallbackBase::Error::None || m_handledSynchronousTouchEventWhileDispatchingPreventableTouchStart; … … 2951 2950 didReceiveEvent(event.type(), handledOrFailedWithError); 2952 2951 pageClient().doneWithTouchEvent(event, handledOrFailedWithError); 2953 2954 if (didFinishDeferringTouchStart) 2955 pageClient().doneDeferringTouchStart(handledOrFailedWithError); 2952 if (!isHandlingPreventableTouchStart()) 2953 pageClient().doneDeferringNativeGestures(handledOrFailedWithError); 2956 2954 }; 2957 2955 … … 2970 2968 pageClient().doneWithTouchEvent(event, handled); 2971 2969 if (!isHandlingPreventableTouchStart()) 2972 pageClient().doneDeferring TouchStart(handled);2970 pageClient().doneDeferringNativeGestures(handled); 2973 2971 else if (handled) 2974 2972 m_handledSynchronousTouchEventWhileDispatchingPreventableTouchStart = true; -
branches/safari-611.1.21.0-branch/Source/WebKit/UIProcess/ios/PageClientImplIOS.h
r271193 r274245 113 113 #endif 114 114 #if ENABLE(IOS_TOUCH_EVENTS) 115 void doneDeferring TouchStart(bool preventNativeGestures) override;115 void doneDeferringNativeGestures(bool preventNativeGestures) override; 116 116 #endif 117 117 RefPtr<WebPopupMenuProxy> createPopupMenuProxy(WebPageProxy&) override; -
branches/safari-611.1.21.0-branch/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm
r271193 r274245 448 448 #if ENABLE(IOS_TOUCH_EVENTS) 449 449 450 void PageClientImpl::doneDeferring TouchStart(bool preventNativeGestures)451 { 452 [m_contentView _doneDeferring TouchStart:preventNativeGestures];450 void PageClientImpl::doneDeferringNativeGestures(bool preventNativeGestures) 451 { 452 [m_contentView _doneDeferringNativeGestures:preventNativeGestures]; 453 453 } 454 454 -
branches/safari-611.1.21.0-branch/Source/WebKit/UIProcess/ios/WKContentViewInteraction.h
r271193 r274245 243 243 @interface WKContentView () { 244 244 #if ENABLE(IOS_TOUCH_EVENTS) 245 RetainPtr<WKDeferringGestureRecognizer> _ touchStartDeferringGestureRecognizerForImmediatelyResettableGestures;246 RetainPtr<WKDeferringGestureRecognizer> _ touchStartDeferringGestureRecognizerForDelayedResettableGestures;247 RetainPtr<WKDeferringGestureRecognizer> _ touchStartDeferringGestureRecognizerForSyntheticTapGestures;245 RetainPtr<WKDeferringGestureRecognizer> _deferringGestureRecognizerForImmediatelyResettableGestures; 246 RetainPtr<WKDeferringGestureRecognizer> _deferringGestureRecognizerForDelayedResettableGestures; 247 RetainPtr<WKDeferringGestureRecognizer> _deferringGestureRecognizerForSyntheticTapGestures; 248 248 #endif 249 249 RetainPtr<UIWebTouchEventsGestureRecognizer> _touchEventGestureRecognizer; … … 540 540 #endif 541 541 #if ENABLE(IOS_TOUCH_EVENTS) 542 - (void)_doneDeferring TouchStart:(BOOL)preventNativeGestures;542 - (void)_doneDeferringNativeGestures:(BOOL)preventNativeGestures; 543 543 #endif 544 544 - (void)_commitPotentialTapFailed; -
branches/safari-611.1.21.0-branch/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm
r271828 r274245 765 765 766 766 #if ENABLE(IOS_TOUCH_EVENTS) 767 _ touchStartDeferringGestureRecognizerForImmediatelyResettableGestures = adoptNS([[WKDeferringGestureRecognizer alloc] initWithDeferringGestureDelegate:self]);768 [_ touchStartDeferringGestureRecognizerForImmediatelyResettableGestures setName:@"Touch start deferrer (immediate reset)"];769 770 _ touchStartDeferringGestureRecognizerForDelayedResettableGestures = adoptNS([[WKDeferringGestureRecognizer alloc] initWithDeferringGestureDelegate:self]);771 [_ touchStartDeferringGestureRecognizerForDelayedResettableGestures setName:@"Touch start deferrer (delayed reset)"];772 773 _ touchStartDeferringGestureRecognizerForSyntheticTapGestures = adoptNS([[WKDeferringGestureRecognizer alloc] initWithDeferringGestureDelegate:self]);774 [_ touchStartDeferringGestureRecognizerForSyntheticTapGestures setName:@"Touch start deferrer (synthetic tap)"];775 776 for (WKDeferringGestureRecognizer *gesture in self._ touchStartDeferringGestures) {767 _deferringGestureRecognizerForImmediatelyResettableGestures = adoptNS([[WKDeferringGestureRecognizer alloc] initWithDeferringGestureDelegate:self]); 768 [_deferringGestureRecognizerForImmediatelyResettableGestures setName:@"Touch event deferrer (immediate reset)"]; 769 770 _deferringGestureRecognizerForDelayedResettableGestures = adoptNS([[WKDeferringGestureRecognizer alloc] initWithDeferringGestureDelegate:self]); 771 [_deferringGestureRecognizerForDelayedResettableGestures setName:@"Touch event deferrer (delayed reset)"]; 772 773 _deferringGestureRecognizerForSyntheticTapGestures = adoptNS([[WKDeferringGestureRecognizer alloc] initWithDeferringGestureDelegate:self]); 774 [_deferringGestureRecognizerForSyntheticTapGestures setName:@"Touch event deferrer (synthetic tap)"]; 775 776 for (WKDeferringGestureRecognizer *gesture in self._deferringGestureRecognizers) { 777 777 gesture.delegate = self; 778 778 [self addGestureRecognizer:gesture]; 779 779 } 780 #endif // ENABLE(IOS_TOUCH_EVENTS)780 #endif 781 781 782 782 _touchEventGestureRecognizer = adoptNS([[UIWebTouchEventsGestureRecognizer alloc] initWithTarget:self action:@selector(_webTouchEventsRecognized:) touchDelegate:self]); … … 954 954 955 955 #if ENABLE(IOS_TOUCH_EVENTS) 956 for (WKDeferringGestureRecognizer *gesture in self._ touchStartDeferringGestures) {956 for (WKDeferringGestureRecognizer *gesture in self._deferringGestureRecognizers) { 957 957 gesture.delegate = nil; 958 958 [self removeGestureRecognizer:gesture]; … … 1085 1085 { 1086 1086 #if ENABLE(IOS_TOUCH_EVENTS) 1087 for (WKDeferringGestureRecognizer *gesture in self._ touchStartDeferringGestures)1087 for (WKDeferringGestureRecognizer *gesture in self._deferringGestureRecognizers) 1088 1088 [self removeGestureRecognizer:gesture]; 1089 1089 #endif … … 1112 1112 { 1113 1113 #if ENABLE(IOS_TOUCH_EVENTS) 1114 for (WKDeferringGestureRecognizer *gesture in self._ touchStartDeferringGestures)1114 for (WKDeferringGestureRecognizer *gesture in self._deferringGestureRecognizers) 1115 1115 [self addGestureRecognizer:gesture]; 1116 1116 #endif … … 1549 1549 if (nativeWebTouchEvent.isPotentialTap() && self.hasHiddenContentEditable && self._hasFocusedElement && !self.window.keyWindow) 1550 1550 [self.window makeKeyWindow]; 1551 1552 #if ENABLE(IOS_TOUCH_EVENTS) 1553 if (!_page->isHandlingPreventableTouchStart()) { 1554 for (WKDeferringGestureRecognizer *gesture in self._touchStartDeferringGestures) { 1555 if (gesture.state == UIGestureRecognizerStatePossible) 1556 gesture.state = UIGestureRecognizerStateFailed; 1557 } 1558 } 1559 #endif // ENABLE(IOS_TOUCH_EVENTS) 1560 } 1561 #endif // ENABLE(TOUCH_EVENTS) 1551 } 1552 #endif 1562 1553 } 1563 1554 … … 1737 1728 #if ENABLE(IOS_TOUCH_EVENTS) 1738 1729 1739 - (NSArray<WKDeferringGestureRecognizer *> *)_ touchStartDeferringGestures1730 - (NSArray<WKDeferringGestureRecognizer *> *)_deferringGestureRecognizers 1740 1731 { 1741 1732 WKDeferringGestureRecognizer *recognizers[3]; … … 1745 1736 recognizers[count++] = recognizer.get(); 1746 1737 }; 1747 add(_ touchStartDeferringGestureRecognizerForImmediatelyResettableGestures);1748 add(_ touchStartDeferringGestureRecognizerForDelayedResettableGestures);1749 add(_ touchStartDeferringGestureRecognizerForSyntheticTapGestures);1738 add(_deferringGestureRecognizerForImmediatelyResettableGestures); 1739 add(_deferringGestureRecognizerForDelayedResettableGestures); 1740 add(_deferringGestureRecognizerForSyntheticTapGestures); 1750 1741 return [NSArray arrayWithObjects:recognizers count:count]; 1751 1742 } 1752 1743 1753 - (void)_doneDeferring TouchStart:(BOOL)preventNativeGestures1754 { 1755 for (WKDeferringGestureRecognizer *gesture in self._ touchStartDeferringGestures)1744 - (void)_doneDeferringNativeGestures:(BOOL)preventNativeGestures 1745 { 1746 for (WKDeferringGestureRecognizer *gesture in self._deferringGestureRecognizers) 1756 1747 [gesture setDefaultPrevented:preventNativeGestures]; 1757 1748 } … … 2154 2145 { 2155 2146 #if ENABLE(IOS_TOUCH_EVENTS) 2156 for (WKDeferringGestureRecognizer *gesture in self._ touchStartDeferringGestures) {2147 for (WKDeferringGestureRecognizer *gesture in self._deferringGestureRecognizers) { 2157 2148 if (isSamePair(gestureRecognizer, otherGestureRecognizer, _touchEventGestureRecognizer.get(), gesture)) 2158 2149 return YES; … … 7289 7280 } 7290 7281 7282 - (BOOL)deferringGestureRecognizer:(WKDeferringGestureRecognizer *)deferringGestureRecognizer shouldDeferGesturesAfterEndingTouchesWithEvent:(UIEvent *)event 7283 { 7284 return _page->isHandlingPreventableTouchStart(); 7285 } 7286 7291 7287 - (BOOL)deferringGestureRecognizer:(WKDeferringGestureRecognizer *)deferringGestureRecognizer shouldDeferOtherGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer 7292 7288 { … … 7340 7336 }; 7341 7337 7342 if ( [gestureRecognizer isKindOfClass:WKSyntheticTapGestureRecognizer.class])7343 return deferringGestureRecognizer == _ touchStartDeferringGestureRecognizerForSyntheticTapGestures;7338 if (gestureRecognizer == _doubleTapGestureRecognizer || gestureRecognizer == _singleTapGestureRecognizer) 7339 return deferringGestureRecognizer == _deferringGestureRecognizerForSyntheticTapGestures; 7344 7340 7345 7341 if (mayDelayResetOfContainingSubgraph(gestureRecognizer)) 7346 return deferringGestureRecognizer == _ touchStartDeferringGestureRecognizerForDelayedResettableGestures;7347 7348 return deferringGestureRecognizer == _ touchStartDeferringGestureRecognizerForImmediatelyResettableGestures;7342 return deferringGestureRecognizer == _deferringGestureRecognizerForDelayedResettableGestures; 7343 7344 return deferringGestureRecognizer == _deferringGestureRecognizerForImmediatelyResettableGestures; 7349 7345 #else 7350 7346 UNUSED_PARAM(deferringGestureRecognizer); -
branches/safari-611.1.21.0-branch/Source/WebKit/UIProcess/ios/WKDeferringGestureRecognizer.h
r271193 r274245 31 31 32 32 @protocol WKDeferringGestureRecognizerDelegate 33 - (BOOL)deferringGestureRecognizer:(WKDeferringGestureRecognizer *)deferringGestureRecognizer shouldDeferGesturesAfterEndingTouchesWithEvent:(UIEvent *)event; 33 34 - (BOOL)deferringGestureRecognizer:(WKDeferringGestureRecognizer *)deferringGestureRecognizer shouldDeferGesturesAfterBeginningTouchesWithEvent:(UIEvent *)event; 34 35 - (BOOL)deferringGestureRecognizer:(WKDeferringGestureRecognizer *)deferringGestureRecognizer shouldDeferOtherGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer; -
branches/safari-611.1.21.0-branch/Source/WebKit/UIProcess/ios/WKDeferringGestureRecognizer.mm
r271193 r274245 56 56 } 57 57 58 - (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event 59 { 60 [super touchesEnded:touches withEvent:event]; 61 62 if (self.state != UIGestureRecognizerStatePossible) 63 return; 64 65 if ([_deferringGestureDelegate deferringGestureRecognizer:self shouldDeferGesturesAfterEndingTouchesWithEvent:event]) 66 return; 67 68 self.state = UIGestureRecognizerStateFailed; 69 } 70 58 71 - (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event 59 72 {
Note:
See TracChangeset
for help on using the changeset viewer.