Changeset 187764 in webkit


Ignore:
Timestamp:
Aug 3, 2015 2:27:19 PM (9 years ago)
Author:
Beth Dakin
Message:

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]):

Location:
trunk/Source/WebKit2
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r187756 r187764  
     12015-08-03  Beth Dakin  <bdakin@apple.com>
     2
     3        Need WKWebView API to enable/disable link preview
     4        https://bugs.webkit.org/show_bug.cgi?id=147573
     5        -and corresponding-
     6        rdar://problem/22077836
     7
     8        Reviewed by Dan Bernstein.
     9
     10        WKView implementation.
     11        * UIProcess/API/Cocoa/WKViewPrivate.h:
     12
     13        New API. Call into WKView to handle Mac.
     14        * UIProcess/API/Cocoa/WKWebView.h:
     15        * UIProcess/API/Cocoa/WKWebView.mm:
     16        (-[WKWebView initWithFrame:configuration:]):
     17        (-[WKWebView allowsLinkPreview]):
     18        (-[WKWebView setAllowsLinkPreview:]):
     19
     20        Remove the SPI declaration from WKWebViewPrivate in order to make this API.
     21        * UIProcess/API/Cocoa/WKWebViewPrivate.h:
     22
     23        Handle the Mac side.
     24        * UIProcess/API/mac/WKView.mm:
     25        (-[WKView viewDidMoveToWindow]):
     26        (-[WKView initWithFrame:processPool:configuration:webView:]):
     27        (-[WKView allowsBackForwardNavigationGestures]):
     28        (-[WKView allowsLinkPreview]):
     29        (-[WKView setAllowsLinkPreview:]):
     30
     31        Don’t register previews when link preview is prevented.
     32        * UIProcess/ios/WKContentViewInteraction.mm:
     33        (-[WKContentView _registerPreview]):
     34
    1352015-08-03  Tim Horton  <timothy_horton@apple.com>
    236
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKViewPrivate.h

    r184780 r187764  
    130130- (void)setMagnification:(double)magnification centeredAtPoint:(NSPoint)point;
    131131
     132- (void)setAllowsLinkPreview:(BOOL)allowsLinkPreview;
     133- (BOOL)allowsLinkPreview;
     134
    132135- (void)saveBackForwardSnapshotForCurrentItem;
    133136- (void)saveBackForwardSnapshotForItem:(WKBackForwardListItemRef)item;
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.h

    r185876 r187764  
    232232@property (WK_NULLABLE_PROPERTY nonatomic, copy) NSString *customUserAgent WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA);
    233233
     234/*! @abstract A Boolean value indicating whether link preview is allowed for any
     235 links inside this WKWebView.
     236 @discussion The default value is NO on iOS and YES on Mac.
     237 */
     238@property (nonatomic) BOOL allowsLinkPreview WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA);
     239
    234240#if TARGET_OS_IPHONE
    235241/*! @abstract The scroll view associated with the web view.
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm

    r187383 r187764  
    352352
    353353    _viewportMetaTagWidth = -1;
    354     _allowsLinkPreview = YES;
    355354
    356355    [self _frameOrBoundsChanged];
     
    658657{
    659658    return toAPI(_page.get());
     659}
     660
     661- (BOOL)allowsLinkPreview
     662{
     663#if PLATFORM(MAC)
     664    return [_wkView allowsLinkPreview];
     665#elif PLATFORM(IOS)
     666    return _allowsLinkPreview;
     667#endif
     668}
     669
     670- (void)setAllowsLinkPreview:(BOOL)allowsLinkPreview
     671{
     672#if PLATFORM(MAC)
     673    [_wkView setAllowsLinkPreview:allowsLinkPreview];
     674    return;
     675#elif PLATFORM(IOS)
     676    if (_allowsLinkPreview == allowsLinkPreview)
     677        return;
     678
     679    _allowsLinkPreview = allowsLinkPreview;
     680
     681#if HAVE(LINK_PREVIEW)
     682    if (_allowsLinkPreview)
     683        [_contentView _registerPreview];
     684    else
     685        [_contentView _unregisterPreview];
     686#endif // HAVE(LINK_PREVIEW)
     687#endif // PLATFORM(IOS)
    660688}
    661689
     
    30303058}
    30313059
    3032 - (BOOL)_allowsLinkPreview
    3033 {
    3034     return _allowsLinkPreview;
    3035 }
    3036 
    3037 - (void)_setAllowsLinkPreview:(BOOL)allowsLinkPreview
    3038 {
    3039     if (_allowsLinkPreview == allowsLinkPreview)
    3040         return;
    3041 
    3042     _allowsLinkPreview = allowsLinkPreview;
    3043 }
    3044 
    3045 #else
     3060#else // #if PLATFORM(IOS)
    30463061
    30473062#pragma mark - OS X-specific methods
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h

    r187252 r187764  
    132132@property (nonatomic, readonly) _WKWebViewPrintFormatter *_webViewPrintFormatter;
    133133
    134 // Indicating whether link preview is allowed. The default value is YES.
    135 @property (nonatomic, getter=_allowsLinkPreview, setter=_setAllowsLinkPreview:) BOOL _allowsLinkPreview WK_AVAILABLE(NA, WK_IOS_TBA);
    136 
    137134- (void)_beginInteractiveObscuredInsetsChange;
    138135- (void)_endInteractiveObscuredInsetsChange;
  • trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm

    r187135 r187764  
    262262    BOOL _ignoresAllEvents;
    263263    BOOL _allowsBackForwardNavigationGestures;
     264    BOOL _allowsLinkPreview;
    264265
    265266    RetainPtr<WKViewLayoutStrategy> _layoutStrategy;
     
    27072708
    27082709#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 101000
    2709         if (_data->_immediateActionGestureRecognizer && ![[self gestureRecognizers] containsObject:_data->_immediateActionGestureRecognizer.get()] && !_data->_ignoresNonWheelEvents)
     2710        if (_data->_immediateActionGestureRecognizer && ![[self gestureRecognizers] containsObject:_data->_immediateActionGestureRecognizer.get()] && !_data->_ignoresNonWheelEvents && _data->_allowsLinkPreview)
    27102711            [self addGestureRecognizer:_data->_immediateActionGestureRecognizer.get()];
    27112712#endif
     
    37983799
    37993800#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 101000
     3801    _data->_allowsLinkPreview = YES;
     3802
    38003803    if (Class gestureClass = NSClassFromString(@"NSImmediateActionGestureRecognizer")) {
    38013804        _data->_immediateActionGestureRecognizer = adoptNS([(NSImmediateActionGestureRecognizer *)[gestureClass alloc] init]);
     
    42224225}
    42234226
     4227- (BOOL)allowsLinkPreview
     4228{
     4229    return _data->_allowsLinkPreview;
     4230}
     4231
     4232- (void)setAllowsLinkPreview:(BOOL)allowsLinkPreview
     4233{
     4234    if (_data->_allowsLinkPreview == allowsLinkPreview)
     4235        return;
     4236
     4237    _data->_allowsLinkPreview = allowsLinkPreview;
     4238   
     4239#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 101000
     4240    if (!allowsLinkPreview)
     4241        [self removeGestureRecognizer:_data->_immediateActionGestureRecognizer.get()];
     4242    else if (NSGestureRecognizer *immediateActionRecognizer = _data->_immediateActionGestureRecognizer.get())
     4243        [self addGestureRecognizer:immediateActionRecognizer];
     4244#endif
     4245}
     4246
    42244247- (void)_setIgnoresAllEvents:(BOOL)ignoresAllEvents
    42254248{
     
    42454268    if (ignoresNonWheelEvents)
    42464269        [self removeGestureRecognizer:_data->_immediateActionGestureRecognizer.get()];
    4247     else if (NSGestureRecognizer *immediateActionRecognizer = _data->_immediateActionGestureRecognizer.get())
    4248         [self addGestureRecognizer:immediateActionRecognizer];
     4270    else if (NSGestureRecognizer *immediateActionRecognizer = _data->_immediateActionGestureRecognizer.get()) {
     4271        if (_data->_allowsLinkPreview)
     4272            [self addGestureRecognizer:immediateActionRecognizer];
     4273    }
    42494274#endif
    42504275}
  • trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm

    r187756 r187764  
    32123212- (void)_registerPreview
    32133213{
     3214    if (!_webView.allowsLinkPreview)
     3215        return;
     3216
    32143217    _previewItemController = adoptNS([[UIPreviewItemController alloc] initWithView:self]);
    32153218    [_previewItemController setDelegate:self];
Note: See TracChangeset for help on using the changeset viewer.