Diff
Modified: branches/safari-601.1.46-branch/Source/WebKit2/ChangeLog (187978 => 187979)
--- branches/safari-601.1.46-branch/Source/WebKit2/ChangeLog 2015-08-05 19:57:16 UTC (rev 187978)
+++ branches/safari-601.1.46-branch/Source/WebKit2/ChangeLog 2015-08-05 19:57:19 UTC (rev 187979)
@@ -1,5 +1,43 @@
2015-08-05 Matthew Hanson <matthew_han...@apple.com>
+ Merge r187764. rdar://problem/22077836
+
+ 2015-08-03 Beth Dakin <bda...@apple.com>
+
+ Need WKWebView API to enable/disable link preview
+ https://bugs.webkit.org/show_bug.cgi?id=147573
+ -and corresponding-
+ rdar://problem/22077836
+
+ Reviewed by Dan Bernstein.
+
+ WKView implementation.
+ * UIProcess/API/Cocoa/WKViewPrivate.h:
+
+ New API. Call into WKView to handle Mac.
+ * UIProcess/API/Cocoa/WKWebView.h:
+ * UIProcess/API/Cocoa/WKWebView.mm:
+ (-[WKWebView initWithFrame:configuration:]):
+ (-[WKWebView allowsLinkPreview]):
+ (-[WKWebView setAllowsLinkPreview:]):
+
+ Remove the SPI declaration from WKWebViewPrivate in order to make this API.
+ * UIProcess/API/Cocoa/WKWebViewPrivate.h:
+
+ Handle the Mac side.
+ * UIProcess/API/mac/WKView.mm:
+ (-[WKView viewDidMoveToWindow]):
+ (-[WKView initWithFrame:processPool:configuration:webView:]):
+ (-[WKView allowsBackForwardNavigationGestures]):
+ (-[WKView allowsLinkPreview]):
+ (-[WKView setAllowsLinkPreview:]):
+
+ Don’t register previews when link preview is prevented.
+ * UIProcess/ios/WKContentViewInteraction.mm:
+ (-[WKContentView _registerPreview]):
+
+2015-08-05 Matthew Hanson <matthew_han...@apple.com>
+
Merge r187756. rdar://problem/22119648
2015-08-03 Tim Horton <timothy_hor...@apple.com>
Modified: branches/safari-601.1.46-branch/Source/WebKit2/UIProcess/API/Cocoa/WKViewPrivate.h (187978 => 187979)
--- branches/safari-601.1.46-branch/Source/WebKit2/UIProcess/API/Cocoa/WKViewPrivate.h 2015-08-05 19:57:16 UTC (rev 187978)
+++ branches/safari-601.1.46-branch/Source/WebKit2/UIProcess/API/Cocoa/WKViewPrivate.h 2015-08-05 19:57:19 UTC (rev 187979)
@@ -129,6 +129,9 @@
- (void)setMagnification:(double)magnification centeredAtPoint:(NSPoint)point;
+- (void)setAllowsLinkPreview:(BOOL)allowsLinkPreview;
+- (BOOL)allowsLinkPreview;
+
- (void)saveBackForwardSnapshotForCurrentItem;
- (void)saveBackForwardSnapshotForItem:(WKBackForwardListItemRef)item;
Modified: branches/safari-601.1.46-branch/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.h (187978 => 187979)
--- branches/safari-601.1.46-branch/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.h 2015-08-05 19:57:16 UTC (rev 187978)
+++ branches/safari-601.1.46-branch/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.h 2015-08-05 19:57:19 UTC (rev 187979)
@@ -231,6 +231,12 @@
*/
@property (WK_NULLABLE_PROPERTY nonatomic, copy) NSString *customUserAgent WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA);
+/*! @abstract A Boolean value indicating whether link preview is allowed for any
+ links inside this WKWebView.
+ @discussion The default value is NO on iOS and YES on Mac.
+ */
+@property (nonatomic) BOOL allowsLinkPreview WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA);
+
#if TARGET_OS_IPHONE
/*! @abstract The scroll view associated with the web view.
*/
Modified: branches/safari-601.1.46-branch/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm (187978 => 187979)
--- branches/safari-601.1.46-branch/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm 2015-08-05 19:57:16 UTC (rev 187978)
+++ branches/safari-601.1.46-branch/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm 2015-08-05 19:57:19 UTC (rev 187979)
@@ -351,7 +351,6 @@
[self _updateScrollViewBackground];
_viewportMetaTagWidth = -1;
- _allowsLinkPreview = YES;
[self _frameOrBoundsChanged];
@@ -659,6 +658,35 @@
return toAPI(_page.get());
}
+- (BOOL)allowsLinkPreview
+{
+#if PLATFORM(MAC)
+ return [_wkView allowsLinkPreview];
+#elif PLATFORM(IOS)
+ return _allowsLinkPreview;
+#endif
+}
+
+- (void)setAllowsLinkPreview:(BOOL)allowsLinkPreview
+{
+#if PLATFORM(MAC)
+ [_wkView setAllowsLinkPreview:allowsLinkPreview];
+ return;
+#elif PLATFORM(IOS)
+ if (_allowsLinkPreview == allowsLinkPreview)
+ return;
+
+ _allowsLinkPreview = allowsLinkPreview;
+
+#if HAVE(LINK_PREVIEW)
+ if (_allowsLinkPreview)
+ [_contentView _registerPreview];
+ else
+ [_contentView _unregisterPreview];
+#endif // HAVE(LINK_PREVIEW)
+#endif // PLATFORM(IOS)
+}
+
#pragma mark iOS-specific methods
#if PLATFORM(IOS)
@@ -3026,21 +3054,8 @@
return (_WKWebViewPrintFormatter *)viewPrintFormatter;
}
-- (BOOL)_allowsLinkPreview
-{
- return _allowsLinkPreview;
-}
+#else // #if PLATFORM(IOS)
-- (void)_setAllowsLinkPreview:(BOOL)allowsLinkPreview
-{
- if (_allowsLinkPreview == allowsLinkPreview)
- return;
-
- _allowsLinkPreview = allowsLinkPreview;
-}
-
-#else
-
#pragma mark - OS X-specific methods
- (NSColor *)_pageExtendedBackgroundColor
Modified: branches/safari-601.1.46-branch/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h (187978 => 187979)
--- branches/safari-601.1.46-branch/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h 2015-08-05 19:57:16 UTC (rev 187978)
+++ branches/safari-601.1.46-branch/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h 2015-08-05 19:57:19 UTC (rev 187979)
@@ -131,9 +131,6 @@
@property (nonatomic, readonly) _WKWebViewPrintFormatter *_webViewPrintFormatter;
-// Indicating whether link preview is allowed. The default value is YES.
-@property (nonatomic, getter=_allowsLinkPreview, setter=_setAllowsLinkPreview:) BOOL _allowsLinkPreview WK_AVAILABLE(NA, WK_IOS_TBA);
-
- (void)_beginInteractiveObscuredInsetsChange;
- (void)_endInteractiveObscuredInsetsChange;
- (void)_hideContentUntilNextUpdate;
Modified: branches/safari-601.1.46-branch/Source/WebKit2/UIProcess/API/mac/WKView.mm (187978 => 187979)
--- branches/safari-601.1.46-branch/Source/WebKit2/UIProcess/API/mac/WKView.mm 2015-08-05 19:57:16 UTC (rev 187978)
+++ branches/safari-601.1.46-branch/Source/WebKit2/UIProcess/API/mac/WKView.mm 2015-08-05 19:57:19 UTC (rev 187979)
@@ -261,6 +261,7 @@
BOOL _ignoresNonWheelEvents;
BOOL _ignoresAllEvents;
BOOL _allowsBackForwardNavigationGestures;
+ BOOL _allowsLinkPreview;
RetainPtr<WKViewLayoutStrategy> _layoutStrategy;
CGSize _minimumViewSize;
@@ -2706,7 +2707,7 @@
[self _accessibilityRegisterUIProcessTokens];
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 101000
- if (_data->_immediateActionGestureRecognizer && ![[self gestureRecognizers] containsObject:_data->_immediateActionGestureRecognizer.get()] && !_data->_ignoresNonWheelEvents)
+ if (_data->_immediateActionGestureRecognizer && ![[self gestureRecognizers] containsObject:_data->_immediateActionGestureRecognizer.get()] && !_data->_ignoresNonWheelEvents && _data->_allowsLinkPreview)
[self addGestureRecognizer:_data->_immediateActionGestureRecognizer.get()];
#endif
} else {
@@ -3797,6 +3798,8 @@
[workspaceNotificationCenter addObserver:self selector:@selector(_activeSpaceDidChange:) name:NSWorkspaceActiveSpaceDidChangeNotification object:nil];
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 101000
+ _data->_allowsLinkPreview = YES;
+
if (Class gestureClass = NSClassFromString(@"NSImmediateActionGestureRecognizer")) {
_data->_immediateActionGestureRecognizer = adoptNS([(NSImmediateActionGestureRecognizer *)[gestureClass alloc] init]);
_data->_immediateActionController = adoptNS([[WKImmediateActionController alloc] initWithPage:*_data->_page view:self recognizer:_data->_immediateActionGestureRecognizer.get()]);
@@ -4221,6 +4224,26 @@
return _data->_allowsBackForwardNavigationGestures;
}
+- (BOOL)allowsLinkPreview
+{
+ return _data->_allowsLinkPreview;
+}
+
+- (void)setAllowsLinkPreview:(BOOL)allowsLinkPreview
+{
+ if (_data->_allowsLinkPreview == allowsLinkPreview)
+ return;
+
+ _data->_allowsLinkPreview = allowsLinkPreview;
+
+#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 101000
+ if (!allowsLinkPreview)
+ [self removeGestureRecognizer:_data->_immediateActionGestureRecognizer.get()];
+ else if (NSGestureRecognizer *immediateActionRecognizer = _data->_immediateActionGestureRecognizer.get())
+ [self addGestureRecognizer:immediateActionRecognizer];
+#endif
+}
+
- (void)_setIgnoresAllEvents:(BOOL)ignoresAllEvents
{
_data->_ignoresAllEvents = ignoresAllEvents;
@@ -4244,8 +4267,10 @@
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 101000
if (ignoresNonWheelEvents)
[self removeGestureRecognizer:_data->_immediateActionGestureRecognizer.get()];
- else if (NSGestureRecognizer *immediateActionRecognizer = _data->_immediateActionGestureRecognizer.get())
- [self addGestureRecognizer:immediateActionRecognizer];
+ else if (NSGestureRecognizer *immediateActionRecognizer = _data->_immediateActionGestureRecognizer.get()) {
+ if (_data->_allowsLinkPreview)
+ [self addGestureRecognizer:immediateActionRecognizer];
+ }
#endif
}
Modified: branches/safari-601.1.46-branch/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm (187978 => 187979)
--- branches/safari-601.1.46-branch/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm 2015-08-05 19:57:16 UTC (rev 187978)
+++ branches/safari-601.1.46-branch/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm 2015-08-05 19:57:19 UTC (rev 187979)
@@ -3200,6 +3200,9 @@
- (void)_registerPreview
{
+ if (!_webView.allowsLinkPreview)
+ return;
+
_previewItemController = adoptNS([[UIPreviewItemController alloc] initWithView:self]);
[_previewItemController setDelegate:self];
_previewGestureRecognizer = _previewItemController.get().presentationGestureRecognizer;