Changeset 246626 in webkit
- Timestamp:
- Jun 19, 2019 7:17:53 PM (5 years ago)
- Location:
- trunk/Source
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WTF/wtf/spi/darwin/dyldSPI.h
r234778 r246626 42 42 #endif 43 43 44 #ifndef DYLD_IOS_VERSION_13_0 45 #define DYLD_IOS_VERSION_13_0 0x000D0000 46 #endif 47 44 48 #ifndef DYLD_MACOSX_VERSION_10_13 45 49 #define DYLD_MACOSX_VERSION_10_13 0x000A0D00 … … 62 66 #define DYLD_IOS_VERSION_11_3 0x000B0300 63 67 #define DYLD_IOS_VERSION_12_0 0x000C0000 68 #define DYLD_IOS_VERSION_13_0 0x000D0000 64 69 65 70 #define DYLD_MACOSX_VERSION_10_11 0x000A0B00 -
trunk/Source/WebKit/ChangeLog
r246622 r246626 1 2019-06-19 Dean Jackson <dino@apple.com> 2 3 No menu pop-up when long pressing on a link in Firefox app 4 https://bugs.webkit.org/show_bug.cgi?id=199045 5 <rdar://problem/51422407> 6 7 Reviewed by Tim Horton. 8 9 Add a version check for linking on-or-after iOS 13. When 10 that isn't true, we don't use UIContextMenuInteraction 11 and instead fall back on the legacy UIPreviewItem API. 12 13 * UIProcess/Cocoa/VersionChecks.h: Add FirstThatHasUIContextMenuInteraction. 14 * UIProcess/ios/WKContentViewInteraction.h: 15 * UIProcess/ios/WKContentViewInteraction.mm: 16 (-[WKContentView _shouldUseContextMenus]): New method to decide if we should 17 use context menus or preview items. 18 (-[WKContentView setupInteraction]): Make the decision at runtime rather than 19 compile time. 20 (-[WKContentView _contentsOfUserInterfaceItem:]): Ditto. 21 (-[WKContentView _registerPreview]): Ditto. 22 (-[WKContentView _unregisterPreview]): Ditto. 23 1 24 2019-06-19 Andy Estes <aestes@apple.com> 2 25 -
trunk/Source/WebKit/UIProcess/Cocoa/VersionChecks.h
r244512 r246626 73 73 FirstWithExceptionsForRelatedWebViewsUsingDifferentDataStores = DYLD_IOS_VERSION_FIRST_WITH_EXCEPTIONS_FOR_RELATED_WEBVIEWS_USING_DIFFERENT_DATA_STORES, 74 74 FirstWithModernCompabilityModeByDefault = DYLD_IOS_VERSION_FIRST_WITH_MODERN_COMPATIBILITY_MODE_BY_DEFAULT, 75 FirstThatHasUIContextMenuInteraction = DYLD_IOS_VERSION_13_0, 75 76 #elif PLATFORM(MAC) 76 77 FirstWithNetworkCache = DYLD_MACOSX_VERSION_10_11, -
trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.h
r246622 r246626 252 252 BOOL _contextMenuHasRequestedLegacyData; 253 253 RetainPtr<UITargetedPreview> _contextMenuInteractionTargetedPreview; 254 #e lse254 #endif 255 255 RetainPtr<UIPreviewItemController> _previewItemController; 256 #endif257 256 #endif 258 257 … … 538 537 #if HAVE(LINK_PREVIEW) 539 538 #if USE(UICONTEXTMENU) 540 @interface WKContentView (WKInteractionPreview) <UIContextMenuInteractionDelegate >539 @interface WKContentView (WKInteractionPreview) <UIContextMenuInteractionDelegate, UIPreviewItemDelegate> 541 540 #else 542 541 @interface WKContentView (WKInteractionPreview) <UIPreviewItemDelegate> 543 542 #endif 543 - (bool)_shouldUseContextMenus; 544 544 - (void)_registerPreview; 545 545 - (void)_unregisterPreview; -
trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm
r246622 r246626 43 43 #import "TextInputSPI.h" 44 44 #import "UIKitSPI.h" 45 #import "VersionChecks.h" 45 46 #import "WKActionSheetAssistant.h" 46 47 #import "WKContextMenuElementInfoInternal.h" … … 769 770 [_highlightLongPressGestureRecognizer setDelegate:self]; 770 771 771 #if HAVE(LINK_PREVIEW) && !USE(UICONTEXTMENU) 772 [self addGestureRecognizer:_highlightLongPressGestureRecognizer.get()]; 773 [self _createAndConfigureLongPressGestureRecognizer]; 772 #if HAVE(LINK_PREVIEW) 773 if (![self _shouldUseContextMenus]) { 774 [self addGestureRecognizer:_highlightLongPressGestureRecognizer.get()]; 775 [self _createAndConfigureLongPressGestureRecognizer]; 776 } 774 777 #endif 775 778 … … 7368 7371 #if HAVE(LINK_PREVIEW) 7369 7372 if ([userInterfaceItem isEqualToString:@"linkPreviewPopoverContents"]) { 7370 #if USE(UICONTEXTMENU)7371 return @{ userInterfaceItem: @{ @"pageURL": WTF::userVisibleString(_positionInformation.url) } };7372 #else 7373 if ([self _shouldUseContextMenus]) 7374 return @{ userInterfaceItem: @{ @"pageURL": WTF::userVisibleString(_positionInformation.url) } }; 7375 7373 7376 NSString *url = [_previewItemController previewData][UIPreviewDataLink]; 7374 7377 return @{ userInterfaceItem: @{ @"pageURL": url } }; 7375 #endif7376 7378 } 7377 7379 #endif … … 7412 7414 } 7413 7415 7416 @implementation WKContentView (WKInteractionPreview) 7417 7418 - (bool)_shouldUseContextMenus 7419 { 7414 7420 #if USE(UICONTEXTMENU) 7415 7416 @implementation WKContentView (WKInteractionPreview) 7421 return linkedOnOrAfter(WebKit::SDKVersion::FirstThatHasUIContextMenuInteraction); 7422 #endif 7423 return false; 7424 } 7417 7425 7418 7426 - (void)_registerPreview … … 7421 7429 return; 7422 7430 7423 _contextMenuInteraction = adoptNS([[UIContextMenuInteraction alloc] initWithDelegate:self]); 7424 _contextMenuHasRequestedLegacyData = NO; 7425 [self addInteraction:_contextMenuInteraction.get()]; 7426 7427 [self _showLinkPreviewsPreferenceChanged:nil]; 7428 7429 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_showLinkPreviewsPreferenceChanged:) name:webkitShowLinkPreviewsPreferenceChangedNotification object:nil]; 7431 #if USE(UICONTEXTMENU) 7432 if ([self _shouldUseContextMenus]) { 7433 _contextMenuInteraction = adoptNS([[UIContextMenuInteraction alloc] initWithDelegate:self]); 7434 _contextMenuHasRequestedLegacyData = NO; 7435 [self addInteraction:_contextMenuInteraction.get()]; 7436 7437 [self _showLinkPreviewsPreferenceChanged:nil]; 7438 7439 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_showLinkPreviewsPreferenceChanged:) name:webkitShowLinkPreviewsPreferenceChangedNotification object:nil]; 7440 7441 return; 7442 } 7443 #endif 7444 7445 if (!_webView.allowsLinkPreview) 7446 return; 7447 7448 _previewItemController = adoptNS([[UIPreviewItemController alloc] initWithView:self]); 7449 [_previewItemController setDelegate:self]; 7450 _previewGestureRecognizer = _previewItemController.get().presentationGestureRecognizer; 7451 if ([_previewItemController respondsToSelector:@selector(presentationSecondaryGestureRecognizer)]) 7452 _previewSecondaryGestureRecognizer = _previewItemController.get().presentationSecondaryGestureRecognizer; 7430 7453 } 7431 7454 7432 7455 - (void)_unregisterPreview 7433 7456 { 7434 if (!_contextMenuInteraction) 7435 return; 7436 7437 [self removeInteraction:_contextMenuInteraction.get()]; 7438 _contextMenuInteraction = nil; 7439 7440 [[NSNotificationCenter defaultCenter] removeObserver:self name:webkitShowLinkPreviewsPreferenceChangedNotification object:nil]; 7441 } 7457 #if USE(UICONTEXTMENU) 7458 if ([self _shouldUseContextMenus]) { 7459 if (!_contextMenuInteraction) 7460 return; 7461 7462 [self removeInteraction:_contextMenuInteraction.get()]; 7463 _contextMenuInteraction = nil; 7464 7465 [[NSNotificationCenter defaultCenter] removeObserver:self name:webkitShowLinkPreviewsPreferenceChangedNotification object:nil]; 7466 return; 7467 } 7468 #endif 7469 7470 [_previewItemController setDelegate:nil]; 7471 _previewGestureRecognizer = nil; 7472 _previewSecondaryGestureRecognizer = nil; 7473 _previewItemController = nil; 7474 } 7475 7476 #if USE(UICONTEXTMENU) 7442 7477 7443 7478 - (void)_showLinkPreviewsPreferenceChanged:(NSNotification *)notification … … 8005 8040 } 8006 8041 8007 @end 8008 8009 #else 8010 8011 @implementation WKContentView (WKInteractionPreview) 8012 8013 - (void)_registerPreview 8014 { 8015 if (!_webView.allowsLinkPreview) 8016 return; 8017 8018 _previewItemController = adoptNS([[UIPreviewItemController alloc] initWithView:self]); 8019 [_previewItemController setDelegate:self]; 8020 _previewGestureRecognizer = _previewItemController.get().presentationGestureRecognizer; 8021 if ([_previewItemController respondsToSelector:@selector(presentationSecondaryGestureRecognizer)]) 8022 _previewSecondaryGestureRecognizer = _previewItemController.get().presentationSecondaryGestureRecognizer; 8023 } 8024 8025 - (void)_unregisterPreview 8026 { 8027 [_previewItemController setDelegate:nil]; 8028 _previewGestureRecognizer = nil; 8029 _previewSecondaryGestureRecognizer = nil; 8030 _previewItemController = nil; 8031 } 8042 #endif // USE(UICONTEXTMENU) 8032 8043 8033 8044 - (BOOL)_interactionShouldBeginFromPreviewItemController:(UIPreviewItemController *)controller forPosition:(CGPoint)position … … 8355 8366 @end 8356 8367 8357 #endif // USE(UICONTEXTMENU)8358 8359 8368 #endif // HAVE(LINK_PREVIEW) 8360 8369
Note: See TracChangeset
for help on using the changeset viewer.