Changeset 184061 in webkit
- Timestamp:
- May 10, 2015, 6:41:13 PM (11 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 6 edited
-
ChangeLog (modified) (1 diff)
-
UIProcess/API/Cocoa/WKWebView.mm (modified) (3 diffs)
-
UIProcess/API/Cocoa/WKWebViewPrivate.h (modified) (1 diff)
-
UIProcess/ios/WKContentView.mm (modified) (2 diffs)
-
UIProcess/ios/WKContentViewInteraction.h (modified) (2 diffs)
-
UIProcess/ios/WKContentViewInteraction.mm (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r184059 r184061 1 2015-05-10 Yongjun Zhang <yongjun_zhang@apple.com> 2 3 Use preview view controller from WebKitSystemInterface. 4 https://bugs.webkit.org/show_bug.cgi?id=144836 5 6 Add a property _allowsLinkPreview to WKWebView so that we can turn on/off preview at runtime. Also, 7 for client that doesn't provide preview view controller, use the default view controller prepared 8 by WebKitSystemInterface. 9 10 Reviewed by Dan Bernstein. 11 12 * UIProcess/API/Cocoa/WKWebView.mm: 13 (-[WKWebView initWithFrame:configuration:]): 14 (-[WKWebView _allowsLinkPreview]): 15 (-[WKWebView _setAllowsLinkPreview:]): 16 * UIProcess/API/Cocoa/WKWebViewPrivate.h: Add _allowsLinkPreview property 17 * UIProcess/ios/WKContentView.mm: 18 (-[WKContentView willMoveToWindow:]): 19 * UIProcess/ios/WKContentViewInteraction.h: 20 * UIProcess/ios/WKContentViewInteraction.mm: 21 (-[WKContentView _registerPreviewInWindow:]): 22 (-[WKContentView _unregisterPreviewInWindow:]): 23 (-[WKContentView previewViewControllerForPosition:inSourceView:]): : For client that doesn't provide 24 preview delegate, use preview view controller in WebKitSystemInterface. 25 (-[WKContentView commitPreviewViewController:]): 26 1 27 2015-05-10 Darin Adler <darin@apple.com> 2 28 -
trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm
r183841 r184061 170 170 CGRect _inputViewBounds; 171 171 CGFloat _viewportMetaTagWidth; 172 BOOL _allowsLinkPreview; 172 173 173 174 UIEdgeInsets _obscuredInsets; … … 332 333 333 334 _viewportMetaTagWidth = -1; 335 _allowsLinkPreview = YES; 334 336 335 337 [self _frameOrBoundsChanged]; … … 2797 2799 } 2798 2800 2801 - (BOOL)_allowsLinkPreview 2802 { 2803 return _allowsLinkPreview; 2804 } 2805 2806 - (void)_setAllowsLinkPreview:(BOOL)allowsLinkPreview 2807 { 2808 if (_allowsLinkPreview == allowsLinkPreview) 2809 return; 2810 2811 _allowsLinkPreview = allowsLinkPreview; 2812 #if HAVE(LINK_PREVIEW) 2813 if (_allowsLinkPreview) 2814 [_contentView _registerPreviewInWindow:[_contentView window]]; 2815 else 2816 [_contentView _unregisterPreviewInWindow:[_contentView window]]; 2817 #endif 2818 } 2819 2799 2820 #else 2800 2821 -
trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h
r183841 r184061 128 128 @property (nonatomic, readonly) _WKWebViewPrintFormatter *_webViewPrintFormatter; 129 129 130 // Indicating whether link preview is allowed. The default value is YES. 131 @property (nonatomic, getter=_allowsLinkPreview, setter=_setAllowsLinkPreview:) BOOL _allowsLinkPreview WK_AVAILABLE(NA, WK_IOS_TBA); 132 130 133 - (void)_beginInteractiveObscuredInsetsChange; 131 134 - (void)_endInteractiveObscuredInsetsChange; -
trunk/Source/WebKit2/UIProcess/ios/WKContentView.mm
r183909 r184061 270 270 if (window) { 271 271 [defaultCenter removeObserver:self name:UIWindowDidMoveToScreenNotification object:window]; 272 #if __IPHONE_OS_VERSION_MIN_REQUIRED >= 90000 273 [window.rootViewController unregisterPreviewSourceView:self]; 274 [_previewGestureRecognizer setDelegate:nil]; 275 _previewGestureRecognizer.clear(); 272 #if HAVE(LINK_PREVIEW) 273 if (_webView._allowsLinkPreview) 274 [self _unregisterPreviewInWindow:window]; 276 275 #endif 277 276 } … … 279 278 if (newWindow) { 280 279 [defaultCenter addObserver:self selector:@selector(_windowDidMoveToScreenNotification:) name:UIWindowDidMoveToScreenNotification object:newWindow]; 281 #if __IPHONE_OS_VERSION_MIN_REQUIRED >= 90000 282 [newWindow.rootViewController registerPreviewSourceView:self previewingDelegate:self]; 283 _previewGestureRecognizer = self.gestureRecognizers.lastObject; 284 [_previewGestureRecognizer setDelegate:self]; 280 #if HAVE(LINK_PREVIEW) 281 if (_webView._allowsLinkPreview) 282 [self _registerPreviewInWindow:newWindow]; 285 283 #endif 286 284 } -
trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.h
r182975 r184061 45 45 #import <wtf/text/WTFString.h> 46 46 47 #if USE(APPLE_INTERNAL_SDK) 48 #import <WebKitAdditions/LinkPreviewDefines.h> 49 #endif 50 47 51 namespace WebCore { 48 52 class Color; … … 201 205 @end 202 206 203 #if __IPHONE_OS_VERSION_MIN_REQUIRED >= 90000207 #if HAVE(LINK_PREVIEW) 204 208 @interface WKContentView (WKInteractionPreview) <UIViewControllerPreviewingDelegate> 209 210 - (void)_registerPreviewInWindow:(UIWindow *)window; 211 - (void)_unregisterPreviewInWindow:(UIWindow *)window; 205 212 @end 206 213 #endif -
trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm
r183780 r184061 62 62 #import <WebCore/WebEvent.h> 63 63 #import <WebKit/WebSelectionRect.h> // FIXME: WK2 should not include WebKit headers! 64 #import <WebKitSystemInterfaceIOS.h> 64 65 #import <wtf/RetainPtr.h> 65 66 … … 3098 3099 @end 3099 3100 3100 #if __IPHONE_OS_VERSION_MIN_REQUIRED >= 900003101 #if HAVE(LINK_PREVIEW) 3101 3102 3102 3103 @implementation WKContentView (WKInteractionPreview) 3104 3105 - (void)_registerPreviewInWindow:(UIWindow *)window 3106 { 3107 [window.rootViewController registerPreviewSourceView:self previewingDelegate:self]; 3108 _previewGestureRecognizer = self.gestureRecognizers.lastObject; 3109 [_previewGestureRecognizer setDelegate:self]; 3110 } 3111 3112 - (void)_unregisterPreviewInWindow:(UIWindow *)window 3113 { 3114 [window.rootViewController unregisterPreviewSourceView:self]; 3115 [_previewGestureRecognizer setDelegate:nil]; 3116 _previewGestureRecognizer = nil; 3117 } 3103 3118 3104 3119 - (UIViewController *)previewViewControllerForPosition:(CGPoint)position inSourceView:(UIView *)sourceView … … 3120 3135 return [uiDelegate _webView:_webView previewViewControllerForURL:targetURL]; 3121 3136 3122 return nil;3137 return WKGetPreviewViewController(targetURL); 3123 3138 } 3124 3139 … … 3126 3141 { 3127 3142 id<WKUIDelegatePrivate> uiDelegate = static_cast<id <WKUIDelegatePrivate>>([_webView UIDelegate]); 3128 if ([uiDelegate respondsToSelector:@selector(_webView:commitPreviewedViewController:)]) 3143 if ([uiDelegate respondsToSelector:@selector(_webView:commitPreviewedViewController:)]) { 3129 3144 [uiDelegate _webView:_webView commitPreviewedViewController:viewController]; 3145 return; 3146 } 3147 3148 UIViewController *presentingViewController = viewController.presentingViewController ?: self.window.rootViewController; 3149 WKWillCommitPreviewViewController(viewController); 3150 3151 viewController.transitioningDelegate = nil; 3152 viewController.modalPresentationStyle = UIModalPresentationFullScreen; 3153 [presentingViewController presentViewController:viewController animated:NO completion:nil]; 3130 3154 } 3131 3155
Note:
See TracChangeset
for help on using the changeset viewer.