WebKit Bugzilla
Attachment 373566 Details for
Bug 199543
: [Pointer Events] Use a gesture recognizer to prevent pinch-to-zoom behavior
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-199543-20190706164506.patch (text/plain), 22.36 KB, created by
Antoine Quint
on 2019-07-06 07:45:07 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Antoine Quint
Created:
2019-07-06 07:45:07 PDT
Size:
22.36 KB
patch
obsolete
>Subversion Revision: 247150 >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index 9a39854285d381f6d12c7f1f03811802823981ba..9d62371febc78d999d823b706bfb87b6ec4a0843 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,49 @@ >+2019-07-06 Antoine Quint <graouts@apple.com> >+ >+ [Pointer Events] Use a gesture recognizer to prevent pinch-to-zoom behavior >+ https://bugs.webkit.org/show_bug.cgi?id=199543 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ We used to set the "enabled" property on the main UIScrollView's UIPinchGestureRecognizer to disable pinch-to-zoom >+ behavior based on the "touch-action" CSS property. This was sub-optimal since this gesture recognizer can be publicly >+ accessible by third-party developers, but also because it set state instead of a run-time solution. >+ >+ We now introduce a new WKTouchActionGestureRecognizer dedicated to preventing clearly identified gesture recognizers >+ from being recognized to disable some built-in behavior. As a new touch starts, we record the computed touch-action >+ property for the given touch identifier on the WKTouchActionGestureRecognizer, then WKTouchActionGestureRecognizer >+ determines, by implementing -[canPreventGestureRecognizer:], whether the possibly-prevented gesture recognizer >+ is known to lead to a pinch-to-zoom behavior and whether it contains a touch that should prevent it. >+ >+ To support the WKTouchActionGestureRecognizer, WKContentViewInteraction implements the new WKTouchActionGestureRecognizerDelegate >+ protocol to indicate whether the possibly-prevented gesture recognizer is the main UIScrollView's UIPinchGestureRecognizer. >+ >+ No new test since this changes the implementation of existing behavior. >+ >+ * SourcesCocoa.txt: >+ * UIProcess/ios/WKContentViewInteraction.h: >+ * UIProcess/ios/WKContentViewInteraction.mm: >+ (-[WKContentView setupInteraction]): >+ (-[WKContentView cleanupInteraction]): >+ (-[WKContentView _removeDefaultGestureRecognizers]): >+ (-[WKContentView _addDefaultGestureRecognizers]): >+ (-[WKContentView _handleTouchActionsForTouchEvent:]): >+ (-[WKContentView gestureRecognizerMayPinchToZoomWebView:]): >+ (-[WKContentView touchActionActiveTouches]): >+ * UIProcess/ios/WKTouchActionGestureRecognizer.h: Added. >+ * UIProcess/ios/WKTouchActionGestureRecognizer.mm: Added. >+ (-[WKTouchActionGestureRecognizer initWithTouchActionDelegate:]): >+ (-[WKTouchActionGestureRecognizer setTouchActions:forTouchIdentifier:]): >+ (-[WKTouchActionGestureRecognizer clearTouchActionsForTouchIdentifier:]): >+ (-[WKTouchActionGestureRecognizer touchesBegan:withEvent:]): >+ (-[WKTouchActionGestureRecognizer touchesMoved:withEvent:]): >+ (-[WKTouchActionGestureRecognizer touchesEnded:withEvent:]): >+ (-[WKTouchActionGestureRecognizer touchesCancelled:withEvent:]): >+ (-[WKTouchActionGestureRecognizer _updateState]): >+ (-[WKTouchActionGestureRecognizer canBePreventedByGestureRecognizer:]): >+ (-[WKTouchActionGestureRecognizer canPreventGestureRecognizer:]): >+ * WebKit.xcodeproj/project.pbxproj: >+ > 2019-07-04 Chris Dumez <cdumez@apple.com> > > Simplify logic that handles registering WebProcessProxy objects with their WebsiteDataStore >diff --git a/Source/WebKit/SourcesCocoa.txt b/Source/WebKit/SourcesCocoa.txt >index 27dcf0943a71a067360089671a72b7029ffd2b93..7628a26915c9ccd46ef192d16c196f972ce1b49c 100644 >--- a/Source/WebKit/SourcesCocoa.txt >+++ b/Source/WebKit/SourcesCocoa.txt >@@ -430,6 +430,7 @@ UIProcess/ios/WKScrollView.mm > UIProcess/ios/WKSyntheticFlagsChangedWebEvent.mm > UIProcess/ios/WKSyntheticTapGestureRecognizer.m > UIProcess/ios/WKSystemPreviewView.mm >+UIProcess/ios/WKTouchActionGestureRecognizer.m > UIProcess/ios/WKWebEvent.mm > > UIProcess/Launcher/mac/ProcessLauncherMac.mm >diff --git a/Source/WebKit/UIProcess/ios/WKContentViewInteraction.h b/Source/WebKit/UIProcess/ios/WKContentViewInteraction.h >index 438e4b18630ca709ea313b9464e75c5491714496..560cd342d51c7d6c4c9bf2c9864fff3500695882 100644 >--- a/Source/WebKit/UIProcess/ios/WKContentViewInteraction.h >+++ b/Source/WebKit/UIProcess/ios/WKContentViewInteraction.h >@@ -46,6 +46,7 @@ > #import "WKKeyboardScrollingAnimator.h" > #import "WKShareSheet.h" > #import "WKSyntheticTapGestureRecognizer.h" >+#import "WKTouchActionGestureRecognizer.h" > #import "_WKFormInputSession.h" > #import <UIKit/UIView.h> > #import <WebCore/ActivityState.h> >@@ -220,6 +221,10 @@ struct WKAutoCorrectionData { > RetainPtr<UITapGestureRecognizer> _stylusSingleTapGestureRecognizer; > RetainPtr<WKInspectorNodeSearchGestureRecognizer> _inspectorNodeSearchGestureRecognizer; > >+#if ENABLE(POINTER_EVENTS) >+ RetainPtr<WKTouchActionGestureRecognizer> _touchActionGestureRecognizer; >+#endif >+ > #if PLATFORM(MACCATALYST) > RetainPtr<UIHoverGestureRecognizer> _hoverGestureRecognizer; > RetainPtr<_UILookupGestureRecognizer> _lookupGestureRecognizer; >@@ -384,6 +389,9 @@ struct WKAutoCorrectionData { > #if ENABLE(DATA_INTERACTION) > , UIDragInteractionDelegate, UIDropInteractionDelegate > #endif >+#if ENABLE(POINTER_EVENTS) >+ , WKTouchActionGestureRecognizerDelegate >+#endif > > > > @property (nonatomic, readonly) CGPoint lastInteractionLocation; >diff --git a/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm b/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm >index 9f1c50f076af87cd9dea2a63d31a8ab4bdcf75cb..c84940a041df4a5b2542427843424a6e910ec121 100644 >--- a/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm >+++ b/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm >@@ -143,6 +143,7 @@ > > #if ENABLE(POINTER_EVENTS) > #import "RemoteScrollingCoordinatorProxy.h" >+#import "ScrollingTreeScrollingNodeDelegateIOS.h" > #import <WebCore/TouchAction.h> > #endif > >@@ -795,6 +796,11 @@ - (void)setupInteraction > [_stylusSingleTapGestureRecognizer setAllowedTouchTypes:@[ @(UITouchTypePencil) ]]; > [self addGestureRecognizer:_stylusSingleTapGestureRecognizer.get()]; > >+#if ENABLE(POINTER_EVENTS) >+ _touchActionGestureRecognizer = adoptNS([[WKTouchActionGestureRecognizer alloc] initWithTouchActionDelegate:self]); >+ [self addGestureRecognizer:_touchActionGestureRecognizer.get()]; >+#endif >+ > #if HAVE(LINK_PREVIEW) > [self _registerPreview]; > #endif >@@ -906,6 +912,10 @@ - (void)cleanupInteraction > [_stylusSingleTapGestureRecognizer setDelegate:nil]; > [self removeGestureRecognizer:_stylusSingleTapGestureRecognizer.get()]; > >+#if ENABLE(POINTER_EVENTS) >+ [self removeGestureRecognizer:_touchActionGestureRecognizer.get()]; >+#endif >+ > _layerTreeTransactionIdAtLastTouchStart = 0; > > #if ENABLE(DATA_INTERACTION) >@@ -976,6 +986,9 @@ - (void)_removeDefaultGestureRecognizers > [self removeGestureRecognizer:_hoverGestureRecognizer.get()]; > [self removeGestureRecognizer:_lookupGestureRecognizer.get()]; > #endif >+#if ENABLE(POINTER_EVENTS) >+ [self removeGestureRecognizer:_touchActionGestureRecognizer.get()]; >+#endif > } > > - (void)_addDefaultGestureRecognizers >@@ -992,6 +1005,9 @@ - (void)_addDefaultGestureRecognizers > [self addGestureRecognizer:_hoverGestureRecognizer.get()]; > [self addGestureRecognizer:_lookupGestureRecognizer.get()]; > #endif >+#if ENABLE(POINTER_EVENTS) >+ [self addGestureRecognizer:_touchActionGestureRecognizer.get()]; >+#endif > } > > - (UIView *)unscaledView >@@ -1358,20 +1374,34 @@ - (void)_handleTouchActionsForTouchEvent:(const WebKit::NativeWebTouchEvent&)tou > if (phase == WebKit::WebPlatformTouchPoint::TouchPressed) { > auto touchActions = WebKit::touchActionsForPoint(self, touchPoint.location()); > LOG_WITH_STREAM(UIHitTesting, stream << "touchActionsForPoint " << touchPoint.location() << " found " << touchActions); >- if (!touchActions || touchActions.containsAny({ WebCore::TouchAction::Auto, WebCore::TouchAction::Manipulation })) >+ if (!touchActions || touchActions.contains(WebCore::TouchAction::Auto)) > continue; >- >+ [_touchActionGestureRecognizer setTouchActions:touchActions forTouchIdentifier:touchPoint.identifier()]; > scrollingCoordinator->setTouchActionsForTouchIdentifier(touchActions, touchPoint.identifier()); >- >- if (!touchActions.contains(WebCore::TouchAction::PinchZoom)) >- _webView.scrollView.pinchGestureRecognizer.enabled = NO; >- _preventsPanningInXAxis = !touchActions.contains(WebCore::TouchAction::PanX); >- _preventsPanningInYAxis = !touchActions.contains(WebCore::TouchAction::PanY); >- >- } else if (phase == WebKit::WebPlatformTouchPoint::TouchReleased || phase == WebKit::WebPlatformTouchPoint::TouchCancelled) >+ _preventsPanningInXAxis = !touchActions.containsAny({ WebCore::TouchAction::PanX, WebCore::TouchAction::Manipulation }); >+ _preventsPanningInYAxis = !touchActions.containsAny({ WebCore::TouchAction::PanY, WebCore::TouchAction::Manipulation }); >+ } else if (phase == WebKit::WebPlatformTouchPoint::TouchReleased || phase == WebKit::WebPlatformTouchPoint::TouchCancelled) { >+ [_touchActionGestureRecognizer clearTouchActionsForTouchIdentifier:touchPoint.identifier()]; > scrollingCoordinator->clearTouchActionsForTouchIdentifier(touchPoint.identifier()); >+ } > } > } >+ >+#pragma mark - WKTouchActionGestureRecognizerDelegate implementation >+ >+- (BOOL)gestureRecognizerMayPinchToZoomWebView:(UIGestureRecognizer *)gestureRecognizer >+{ >+ // The gesture recognizer is the main UIScrollView's UIPinchGestureRecognizer. >+ return gestureRecognizer == [_webView scrollView].pinchGestureRecognizer; >+} >+ >+#if HAVE(UI_WEB_TOUCH_EVENTS_GESTURE_RECOGNIZER_WITH_ACTIVE_TOUCHES_BY_ID) >+- (NSMapTable<NSNumber *, UITouch *> *)touchActionActiveTouches >+{ >+ return [_touchEventGestureRecognizer activeTouchesByIdentifier]; >+} >+#endif >+ > #endif > > - (void)_resetPanningPreventionFlags >diff --git a/Source/WebKit/UIProcess/ios/WKTouchActionGestureRecognizer.h b/Source/WebKit/UIProcess/ios/WKTouchActionGestureRecognizer.h >new file mode 100644 >index 0000000000000000000000000000000000000000..7ce04dadba55a1cfd3a90119f152423e9c3edca2 >--- /dev/null >+++ b/Source/WebKit/UIProcess/ios/WKTouchActionGestureRecognizer.h >@@ -0,0 +1,47 @@ >+/* >+ * Copyright (C) 2019 Apple Inc. All rights reserved. >+ * >+ * Redistribution and use in source and binary forms, with or without >+ * modification, are permitted provided that the following conditions >+ * are met: >+ * 1. Redistributions of source code must retain the above copyright >+ * notice, this list of conditions and the following disclaimer. >+ * 2. Redistributions in binary form must reproduce the above copyright >+ * notice, this list of conditions and the following disclaimer in the >+ * documentation and/or other materials provided with the distribution. >+ * >+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' >+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, >+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS >+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR >+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF >+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS >+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN >+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) >+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF >+ * THE POSSIBILITY OF SUCH DAMAGE. >+ */ >+ >+#if PLATFORM(IOS_FAMILY) && ENABLE(POINTER_EVENTS) >+ >+#import "UIKitSPI.h" >+#import <WebCore/TouchAction.h> >+#import <wtf/OptionSet.h> >+ >+@protocol WKTouchActionGestureRecognizerDelegate; >+ >+@interface WKTouchActionGestureRecognizer : UIGestureRecognizer >+- (id)initWithTouchActionDelegate:(id <WKTouchActionGestureRecognizerDelegate>)touchActionDelegate; >+- (void)setTouchActions:(OptionSet<WebCore::TouchAction>)touchActions forTouchIdentifier:(unsigned)touchIdentifier; >+- (void)clearTouchActionsForTouchIdentifier:(unsigned)touchIdentifier; >+@end >+ >+@protocol WKTouchActionGestureRecognizerDelegate <NSObject> >+- (BOOL)gestureRecognizerMayPinchToZoomWebView:(UIGestureRecognizer *)gestureRecognizer; >+#if HAVE(UI_WEB_TOUCH_EVENTS_GESTURE_RECOGNIZER_WITH_ACTIVE_TOUCHES_BY_ID) >+- (NSMapTable<NSNumber *, UITouch *> *)touchActionActiveTouches; >+#endif >+@end >+ >+#endif >diff --git a/Source/WebKit/UIProcess/ios/WKTouchActionGestureRecognizer.mm b/Source/WebKit/UIProcess/ios/WKTouchActionGestureRecognizer.mm >new file mode 100644 >index 0000000000000000000000000000000000000000..0f6b934c8f3bd6f6313fc2309299e569128509dd >--- /dev/null >+++ b/Source/WebKit/UIProcess/ios/WKTouchActionGestureRecognizer.mm >@@ -0,0 +1,118 @@ >+/* >+ * Copyright (C) 2019 Apple Inc. All rights reserved. >+ * >+ * Redistribution and use in source and binary forms, with or without >+ * modification, are permitted provided that the following conditions >+ * are met: >+ * 1. Redistributions of source code must retain the above copyright >+ * notice, this list of conditions and the following disclaimer. >+ * 2. Redistributions in binary form must reproduce the above copyright >+ * notice, this list of conditions and the following disclaimer in the >+ * documentation and/or other materials provided with the distribution. >+ * >+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' >+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, >+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS >+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR >+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF >+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS >+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN >+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) >+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF >+ * THE POSSIBILITY OF SUCH DAMAGE. >+ */ >+ >+#import "config.h" >+#import "WKTouchActionGestureRecognizer.h" >+ >+#if PLATFORM(IOS_FAMILY) && ENABLE(POINTER_EVENTS) >+ >+#import <UIKit/UIGestureRecognizerSubclass.h> >+#import <wtf/HashMap.h> >+ >+@implementation WKTouchActionGestureRecognizer { >+ HashMap<unsigned, OptionSet<WebCore::TouchAction>> _touchActionsByTouchIdentifier; >+ id <WKTouchActionGestureRecognizerDelegate> _touchActionDelegate; >+} >+ >+- (id)initWithTouchActionDelegate:(id <WKTouchActionGestureRecognizerDelegate>)touchActionDelegate >+{ >+ if (self = [super init]) >+ _touchActionDelegate = touchActionDelegate; >+ return self; >+} >+ >+- (void)setTouchActions:(OptionSet<WebCore::TouchAction>)touchActions forTouchIdentifier:(unsigned)touchIdentifier >+{ >+ ASSERT(!touchActions.contains(WebCore::TouchAction::Auto)); >+ _touchActionsByTouchIdentifier.set(touchIdentifier, touchActions); >+} >+ >+- (void)clearTouchActionsForTouchIdentifier:(unsigned)touchIdentifier >+{ >+ _touchActionsByTouchIdentifier.remove(touchIdentifier); >+} >+ >+- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event >+{ >+ [self _updateState]; >+} >+ >+- (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event >+{ >+ [self _updateState]; >+} >+ >+- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event >+{ >+ [self _updateState]; >+} >+ >+- (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event >+{ >+ [self _updateState]; >+} >+ >+- (void)_updateState >+{ >+ // We always want to be in a recognized state so that we may always prevent another gesture recognizer. >+ [self setState:UIGestureRecognizerStateRecognized]; >+} >+ >+- (BOOL)canBePreventedByGestureRecognizer:(UIGestureRecognizer *)preventingGestureRecognizer >+{ >+ // This allows this gesture recognizer to persist, even if other gesture recognizers are recognized. >+ return NO; >+} >+ >+#if HAVE(UI_WEB_TOUCH_EVENTS_GESTURE_RECOGNIZER_WITH_ACTIVE_TOUCHES_BY_ID) >+- (BOOL)canPreventGestureRecognizer:(UIGestureRecognizer *)preventedGestureRecognizer >+{ >+ if (_touchActionsByTouchIdentifier.isEmpty()) >+ return NO; >+ >+ if (![_touchActionDelegate gestureRecognizerMayPinchToZoomWebView:preventedGestureRecognizer]) >+ return NO; >+ >+ // Now that we've established that this gesture recognizer may yield an interaction that is preventable by the "touch-action" >+ // CSS property we iterate over all active touches, check whether that touch matches the gesture recognizer, see if we have >+ // any touch-action specified for it, and then check for each type of interaction whether the touch-action property has a >+ // value that should prevent the interaction. >+ auto* activeTouches = [_touchActionDelegate touchActionActiveTouches]; >+ for (NSNumber *touchIdentifier in activeTouches) { >+ auto iterator = _touchActionsByTouchIdentifier.find([touchIdentifier unsignedIntegerValue]); >+ if (iterator != _touchActionsByTouchIdentifier.end() && [[activeTouches objectForKey:touchIdentifier].gestureRecognizers containsObject:preventedGestureRecognizer]) { >+ // Pinch-to-zoom is only allowed if "pinch-zoom" or "manipulation" is specified. >+ if (!iterator->value.containsAny({ WebCore::TouchAction::PinchZoom, WebCore::TouchAction::Manipulation })) >+ return YES; >+ } >+ } >+ >+ return NO; >+} >+#endif >+ >+@end >+ >+#endif >diff --git a/Source/WebKit/WebKit.xcodeproj/project.pbxproj b/Source/WebKit/WebKit.xcodeproj/project.pbxproj >index c3611cbfcb840829e42d1116e46c5b683144fc08..00e9e4623101b1468e1eb9111f011a623dd84427 100644 >--- a/Source/WebKit/WebKit.xcodeproj/project.pbxproj >+++ b/Source/WebKit/WebKit.xcodeproj/project.pbxproj >@@ -1139,6 +1139,8 @@ > 6BE969CD1E54E054008B7483 /* ResourceLoadStatisticsClassifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 6BE969CC1E54E054008B7483 /* ResourceLoadStatisticsClassifier.h */; }; > 6EE849C81368D9390038D481 /* WKInspectorPrivateMac.h in Headers */ = {isa = PBXBuildFile; fileRef = 6EE849C61368D92D0038D481 /* WKInspectorPrivateMac.h */; settings = {ATTRIBUTES = (Private, ); }; }; > 711725A9228D564300018514 /* WebsiteLegacyOverflowScrollingTouchPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 711725A8228D563A00018514 /* WebsiteLegacyOverflowScrollingTouchPolicy.h */; }; >+ 71A676A622C62325007D6295 /* WKTouchActionGestureRecognizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 71A676A422C62318007D6295 /* WKTouchActionGestureRecognizer.h */; }; >+ 71A676A722C6232F007D6295 /* WKTouchActionGestureRecognizer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 71A676A522C62318007D6295 /* WKTouchActionGestureRecognizer.mm */; }; > 71FB810B2260627E00323677 /* WebsiteSimulatedMouseEventsDispatchPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 71FB810A2260627A00323677 /* WebsiteSimulatedMouseEventsDispatchPolicy.h */; }; > 728E86F11795188C0087879E /* WebColorPickerMac.h in Headers */ = {isa = PBXBuildFile; fileRef = 728E86EF1795188C0087879E /* WebColorPickerMac.h */; }; > 75A8D2C8187CCFAB00C39C9E /* WKWebsiteDataStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 75A8D2C4187CCF9F00C39C9E /* WKWebsiteDataStore.h */; settings = {ATTRIBUTES = (Public, ); }; }; >@@ -3660,6 +3662,8 @@ > 6D8A91A511F0EFD100DD01FE /* com.apple.WebProcess.sb.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = com.apple.WebProcess.sb.in; path = WebProcess/com.apple.WebProcess.sb.in; sourceTree = "<group>"; }; > 6EE849C61368D92D0038D481 /* WKInspectorPrivateMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WKInspectorPrivateMac.h; path = mac/WKInspectorPrivateMac.h; sourceTree = "<group>"; }; > 711725A8228D563A00018514 /* WebsiteLegacyOverflowScrollingTouchPolicy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebsiteLegacyOverflowScrollingTouchPolicy.h; sourceTree = "<group>"; }; >+ 71A676A422C62318007D6295 /* WKTouchActionGestureRecognizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WKTouchActionGestureRecognizer.h; path = ios/WKTouchActionGestureRecognizer.h; sourceTree = "<group>"; }; >+ 71A676A522C62318007D6295 /* WKTouchActionGestureRecognizer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = WKTouchActionGestureRecognizer.mm; path = ios/WKTouchActionGestureRecognizer.mm; sourceTree = "<group>"; }; > 71FB810A2260627A00323677 /* WebsiteSimulatedMouseEventsDispatchPolicy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebsiteSimulatedMouseEventsDispatchPolicy.h; sourceTree = "<group>"; }; > 728E86EF1795188C0087879E /* WebColorPickerMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebColorPickerMac.h; sourceTree = "<group>"; }; > 728E86F01795188C0087879E /* WebColorPickerMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebColorPickerMac.mm; sourceTree = "<group>"; }; >@@ -6061,6 +6065,8 @@ > 26F10BE719187E2E001D0E68 /* WKSyntheticTapGestureRecognizer.m */, > 316B8B622054B55800BD4A62 /* WKSystemPreviewView.h */, > 316B8B612054B55800BD4A62 /* WKSystemPreviewView.mm */, >+ 71A676A422C62318007D6295 /* WKTouchActionGestureRecognizer.h */, >+ 71A676A522C62318007D6295 /* WKTouchActionGestureRecognizer.mm */, > 2D1E8221216FFF5000A15265 /* WKWebEvent.h */, > 2D1E8222216FFF5100A15265 /* WKWebEvent.mm */, > ); >@@ -10227,6 +10233,7 @@ > F4D5F51D206087A10038BBA8 /* WKTextInputListViewController.h in Headers */, > 0FCB4E6818BBE3D9000FCFC9 /* WKTextInputWindowController.h in Headers */, > 2EB6FC01203021960017E619 /* WKTimePickerViewController.h in Headers */, >+ 71A676A622C62325007D6295 /* WKTouchActionGestureRecognizer.h in Headers */, > BC407608124FF0270068F20A /* WKType.h in Headers */, > 7CD5EBBF1746B04C000C1C45 /* WKTypeRefWrapper.h in Headers */, > 1AD8790A18B6C38A006CAFD7 /* WKUIDelegate.h in Headers */, >@@ -11447,6 +11454,7 @@ > 1DB01944211CF005009FB3E8 /* WKShareSheet.mm in Sources */, > 7A78FF332241919B0096483E /* WKStorageAccessAlert.mm in Sources */, > 26F10BE919187E2E001D0E68 /* WKSyntheticTapGestureRecognizer.m in Sources */, >+ 71A676A722C6232F007D6295 /* WKTouchActionGestureRecognizer.mm in Sources */, > ); > runOnlyForDeploymentPostprocessing = 0; > };
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 199543
:
373566
|
373568
|
373582
|
373586