Title: [187979] branches/safari-601.1.46-branch/Source/WebKit2

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;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to