Title: [214440] trunk/Source/WebKit2
- Revision
- 214440
- Author
- [email protected]
- Date
- 2017-03-27 16:32:56 -0700 (Mon, 27 Mar 2017)
Log Message
Add delegate method to let an WebKit client provide a custom image preview controller.
https://bugs.webkit.org/show_bug.cgi?id=170076
rdar://problem/31153051
Add a new delegate method (_webView:previewViewControllerForImage:alternateURL:defaultActions:elementInfo:) to
WKUIDelegatePrivate, an client can use this method to provide a custom image preview view controller if the image
has alternated URL or custom image info.
Patch by Yongjun Zhang <[email protected]> on 2017-03-27
Reviewed by Beth Dakin.
* UIProcess/API/Cocoa/WKUIDelegatePrivate.h: Add delegate method _webView:previewViewControllerForImage:alternateURL:defaultActions:elementInfo:.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _presentedViewControllerForPreviewItemController:]): If the image has alternated URL or custom info, try to use the client-provided
preview view controller. Otherwise, use the default WKImagePreviewViewController.
Modified Paths
Diff
Modified: trunk/Source/WebKit2/ChangeLog (214439 => 214440)
--- trunk/Source/WebKit2/ChangeLog 2017-03-27 23:31:01 UTC (rev 214439)
+++ trunk/Source/WebKit2/ChangeLog 2017-03-27 23:32:56 UTC (rev 214440)
@@ -1,3 +1,20 @@
+2017-03-27 Yongjun Zhang <[email protected]>
+
+ Add delegate method to let an WebKit client provide a custom image preview controller.
+ https://bugs.webkit.org/show_bug.cgi?id=170076
+ rdar://problem/31153051
+
+ Add a new delegate method (_webView:previewViewControllerForImage:alternateURL:defaultActions:elementInfo:) to
+ WKUIDelegatePrivate, an client can use this method to provide a custom image preview view controller if the image
+ has alternated URL or custom image info.
+
+ Reviewed by Beth Dakin.
+
+ * UIProcess/API/Cocoa/WKUIDelegatePrivate.h: Add delegate method _webView:previewViewControllerForImage:alternateURL:defaultActions:elementInfo:.
+ * UIProcess/ios/WKContentViewInteraction.mm:
+ (-[WKContentView _presentedViewControllerForPreviewItemController:]): If the image has alternated URL or custom info, try to use the client-provided
+ preview view controller. Otherwise, use the default WKImagePreviewViewController.
+
2017-03-27 Anders Carlsson <[email protected]>
Fix uses of deprecated API
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegatePrivate.h (214439 => 214440)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegatePrivate.h 2017-03-27 23:31:01 UTC (rev 214439)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKUIDelegatePrivate.h 2017-03-27 23:32:56 UTC (rev 214440)
@@ -89,6 +89,7 @@
- (UIViewController *)_presentingViewControllerForWebView:(WKWebView *)webView WK_API_AVAILABLE(ios(10.0));
- (void)_webView:(WKWebView *)webView getAlternateURLFromImage:(UIImage *)image completionHandler:(void (^)(NSURL *alternateURL, NSDictionary *userInfo))completionHandler WK_API_AVAILABLE(ios(WK_IOS_TBA));
- (NSURL *)_webView:(WKWebView *)webView alternateURLFromImage:(UIImage *)image userInfo:(NSDictionary **)userInfo WK_API_AVAILABLE(ios(WK_IOS_TBA));
+- (UIViewController *)_webView:(WKWebView *)webView previewViewControllerForImage:(UIImage *)image alternateURL:(NSURL *)url defaultActions:(NSArray<_WKElementAction *> *)actions elementInfo:(_WKActivatedElementInfo *)elementInfo WK_API_AVAILABLE(ios(WK_IOS_TBA));
- (NSArray<UIItemProvider *> *)_webView:(WKWebView *)webView adjustedDataInteractionItemProviders:(NSArray<UIItemProvider *> *)originalItemProviders WK_API_AVAILABLE(ios(WK_IOS_TBA));
- (BOOL)_webView:(WKWebView *)webView performDataInteractionOperationWithItemProviders:(NSArray<UIItemProvider *> *)itemProviders WK_API_AVAILABLE(ios(WK_IOS_TBA));
- (void)_webView:(WKWebView *)webView dataInteraction:(id)interaction sessionWillBegin:(id)session WK_API_AVAILABLE(ios(WK_IOS_TBA));
Modified: trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm (214439 => 214440)
--- trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm 2017-03-27 23:31:01 UTC (rev 214439)
+++ trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm 2017-03-27 23:32:56 UTC (rev 214440)
@@ -4356,8 +4356,11 @@
[uiDelegate _webView:_webView willPreviewImageWithURL:targetURL];
auto defaultActions = [_actionSheetAssistant defaultActionsForImageSheet:elementInfo.get()];
- if (imageInfo && [uiDelegate respondsToSelector:@selector(_webView:actionsForElement:defaultActions:)])
- defaultActions = [uiDelegate _webView:_webView actionsForElement:elementInfo.get() defaultActions:defaultActions.get()];
+ if (imageInfo && [uiDelegate respondsToSelector:@selector(_webView:previewViewControllerForImage:alternateURL:defaultActions:elementInfo:)]) {
+ UIViewController *previewViewController = [uiDelegate _webView:_webView previewViewControllerForImage:uiImage.get() alternateURL:alternateURL.get() defaultActions:defaultActions.get() elementInfo:elementInfo.get()];
+ if (previewViewController)
+ return previewViewController;
+ }
return [[[WKImagePreviewViewController alloc] initWithCGImage:cgImage defaultActions:defaultActions elementInfo:elementInfo] autorelease];
}
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes