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

Reply via email to