Title: [277389] trunk/Source/WebKit
Revision
277389
Author
wenson_hs...@apple.com
Date
2021-05-12 14:08:35 -0700 (Wed, 12 May 2021)

Log Message

Plumb some more metadata to QuickLook when revealing images
https://bugs.webkit.org/show_bug.cgi?id=225709
rdar://77864866

Reviewed by Devin Rousso.

Add plumbing to supply QuickLook with some additional information about the image URL and current page URL when
revealing images.

* UIProcess/Cocoa/WebPageProxyCocoa.mm:
(WebKit::WebPageProxy::handleContextMenuRevealImage):
* UIProcess/ios/WKActionSheetAssistant.h:
* UIProcess/ios/WKActionSheetAssistant.mm:
(-[WKActionSheetAssistant handleElementActionWithType:element:needsInteraction:]):
* UIProcess/mac/WKImageExtractionPreviewController.h:
* UIProcess/mac/WKImageExtractionPreviewController.mm:
(-[WKImageExtractionPreviewItem initWithFileURL:title:imageURL:pageURL:]):
(-[WKImageExtractionPreviewItem dealloc]):
(-[WKImageExtractionPreviewItem previewItemURL]):
(-[WKImageExtractionPreviewItem previewOptions]):
(-[WKImageExtractionPreviewController initWithPage:fileURL:title:imageURL:]):

Rename the `URL` argument to `fileURL`, to avoid confusion with the new `imageURL` that's passed in. Note that
this is temporary, since we'll adopt new QuickLook SPI on macOS once the fix for rdar://74299451 is available.

(-[WKImageExtractionPreviewItem initWithURL:title:]): Deleted.
(-[WKImageExtractionPreviewController initWithPage:url:title:]): Deleted.

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (277388 => 277389)


--- trunk/Source/WebKit/ChangeLog	2021-05-12 21:06:35 UTC (rev 277388)
+++ trunk/Source/WebKit/ChangeLog	2021-05-12 21:08:35 UTC (rev 277389)
@@ -1,3 +1,33 @@
+2021-05-12  Wenson Hsieh  <wenson_hs...@apple.com>
+
+        Plumb some more metadata to QuickLook when revealing images
+        https://bugs.webkit.org/show_bug.cgi?id=225709
+        rdar://77864866
+
+        Reviewed by Devin Rousso.
+
+        Add plumbing to supply QuickLook with some additional information about the image URL and current page URL when
+        revealing images.
+
+        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
+        (WebKit::WebPageProxy::handleContextMenuRevealImage):
+        * UIProcess/ios/WKActionSheetAssistant.h:
+        * UIProcess/ios/WKActionSheetAssistant.mm:
+        (-[WKActionSheetAssistant handleElementActionWithType:element:needsInteraction:]):
+        * UIProcess/mac/WKImageExtractionPreviewController.h:
+        * UIProcess/mac/WKImageExtractionPreviewController.mm:
+        (-[WKImageExtractionPreviewItem initWithFileURL:title:imageURL:pageURL:]):
+        (-[WKImageExtractionPreviewItem dealloc]):
+        (-[WKImageExtractionPreviewItem previewItemURL]):
+        (-[WKImageExtractionPreviewItem previewOptions]):
+        (-[WKImageExtractionPreviewController initWithPage:fileURL:title:imageURL:]):
+
+        Rename the `URL` argument to `fileURL`, to avoid confusion with the new `imageURL` that's passed in. Note that
+        this is temporary, since we'll adopt new QuickLook SPI on macOS once the fix for rdar://74299451 is available.
+
+        (-[WKImageExtractionPreviewItem initWithURL:title:]): Deleted.
+        (-[WKImageExtractionPreviewController initWithPage:url:title:]): Deleted.
+
 2021-05-12  Aditya Keerthi  <akeer...@apple.com>
 
         REGRESSION (r275297): Unexpected autofocus when switching tabs

Modified: trunk/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm (277388 => 277389)


--- trunk/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm	2021-05-12 21:06:35 UTC (rev 277388)
+++ trunk/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm	2021-05-12 21:08:35 UTC (rev 277389)
@@ -614,7 +614,7 @@
     if (!result.imageBitmap)
         return;
 
-    revealExtractedImageInPreviewPanel(*result.imageBitmap, result.toolTipText);
+    revealExtractedImageInPreviewPanel(*result.imageBitmap, result.toolTipText, URL { URL { }, result.absoluteImageURL });
 }
 
 #endif // ENABLE(IMAGE_EXTRACTION)

Modified: trunk/Source/WebKit/UIProcess/ios/WKActionSheetAssistant.h (277388 => 277389)


--- trunk/Source/WebKit/UIProcess/ios/WKActionSheetAssistant.h	2021-05-12 21:06:35 UTC (rev 277388)
+++ trunk/Source/WebKit/UIProcess/ios/WKActionSheetAssistant.h	2021-05-12 21:08:35 UTC (rev 277389)
@@ -81,9 +81,9 @@
 - (void)actionSheetAssistant:(WKActionSheetAssistant *)assistant shareElementWithImage:(UIImage *)image rect:(CGRect)boundingRect;
 #if ENABLE(IMAGE_EXTRACTION)
 - (BOOL)actionSheetAssistant:(WKActionSheetAssistant *)assistant shouldIncludeImageExtractionActionForElement:(_WKActivatedElementInfo *)element;
-- (void)actionSheetAssistant:(WKActionSheetAssistant *)assistant handleImageExtraction:(UIImage *)image title:(NSString *)title;
+- (void)actionSheetAssistant:(WKActionSheetAssistant *)assistant handleImageExtraction:(UIImage *)image imageURL:(NSURL *)imageURL title:(NSString *)title;
 - (BOOL)actionSheetAssistant:(WKActionSheetAssistant *)assistant shouldIncludeRevealImageActionForElement:(_WKActivatedElementInfo *)element;
-- (void)actionSheetAssistant:(WKActionSheetAssistant *)assistant handleRevealImage:(UIImage *)image title:(NSString *)title;
+- (void)actionSheetAssistant:(WKActionSheetAssistant *)assistant handleRevealImage:(UIImage *)image imageURL:(NSURL *)imageURL title:(NSString *)title;
 #endif
 @end
 

Modified: trunk/Source/WebKit/UIProcess/ios/WKActionSheetAssistant.mm (277388 => 277389)


--- trunk/Source/WebKit/UIProcess/ios/WKActionSheetAssistant.mm	2021-05-12 21:06:35 UTC (rev 277388)
+++ trunk/Source/WebKit/UIProcess/ios/WKActionSheetAssistant.mm	2021-05-12 21:08:35 UTC (rev 277389)
@@ -1016,12 +1016,12 @@
         break;
     case _WKElementActionTypeImageExtraction:
 #if ENABLE(IMAGE_EXTRACTION)
-        [delegate actionSheetAssistant:self handleImageExtraction:element.image title:element.title];
+        [delegate actionSheetAssistant:self handleImageExtraction:element.image imageURL:element.imageURL title:element.title];
 #endif
         break;
     case _WKElementActionTypeRevealImage:
 #if ENABLE(IMAGE_EXTRACTION)
-        [delegate actionSheetAssistant:self handleRevealImage:element.image title:element.title];
+        [delegate actionSheetAssistant:self handleRevealImage:element.image imageURL:element.imageURL title:element.title];
 #endif
         break;
     default:

Modified: trunk/Source/WebKit/UIProcess/mac/WKImageExtractionPreviewController.h (277388 => 277389)


--- trunk/Source/WebKit/UIProcess/mac/WKImageExtractionPreviewController.h	2021-05-12 21:06:35 UTC (rev 277388)
+++ trunk/Source/WebKit/UIProcess/mac/WKImageExtractionPreviewController.h	2021-05-12 21:08:35 UTC (rev 277389)
@@ -34,11 +34,11 @@
 }
 
 @interface WKImageExtractionPreviewItem : NSObject <QLPreviewItem>
-- (instancetype)initWithURL:(NSURL *)url title:(NSString *)title;
+- (instancetype)initWithFileURL:(NSURL *)fileURL title:(NSString *)title imageURL:(NSURL *)imageURL pageURL:(NSURL *)pageURL;
 @end
 
 @interface WKImageExtractionPreviewController : NSObject <QLPreviewPanelDelegate, QLPreviewPanelDataSource>
-- (instancetype)initWithPage:(WebKit::WebPageProxy&)page url:(NSURL *)url title:(NSString *)title;
+- (instancetype)initWithPage:(WebKit::WebPageProxy&)page fileURL:(NSURL *)fileURL title:(NSString *)title imageURL:(NSURL *)imageURL;
 @end
 
 #endif // PLATFORM(MAC) && ENABLE(IMAGE_EXTRACTION)

Modified: trunk/Source/WebKit/UIProcess/mac/WKImageExtractionPreviewController.mm (277388 => 277389)


--- trunk/Source/WebKit/UIProcess/mac/WKImageExtractionPreviewController.mm	2021-05-12 21:06:35 UTC (rev 277388)
+++ trunk/Source/WebKit/UIProcess/mac/WKImageExtractionPreviewController.mm	2021-05-12 21:08:35 UTC (rev 277389)
@@ -34,17 +34,21 @@
 #import <wtf/WeakPtr.h>
 
 @implementation WKImageExtractionPreviewItem {
-    RetainPtr<NSURL> _url;
+    RetainPtr<NSURL> _fileURL;
     RetainPtr<NSString> _title;
+    RetainPtr<NSURL> _imageURL;
+    RetainPtr<NSURL> _pageURL;
 }
 
-- (instancetype)initWithURL:(NSURL *)url title:(NSString *)title
+- (instancetype)initWithFileURL:(NSURL *)fileURL title:(NSString *)title imageURL:(NSURL *)imageURL pageURL:(NSURL *)pageURL
 {
     if (!(self = [super init]))
         return nil;
 
-    _url = url;
+    _fileURL = fileURL;
     _title = adoptNS([title copy]);
+    _imageURL = imageURL;
+    _pageURL = pageURL;
 
     return self;
 }
@@ -51,7 +55,7 @@
 
 - (void)dealloc
 {
-    FileSystem::deleteFile([_url path]);
+    FileSystem::deleteFile([_fileURL path]);
 
     [super dealloc];
 }
@@ -60,7 +64,7 @@
 
 - (NSURL *)previewItemURL
 {
-    return _url.get();
+    return _fileURL.get();
 }
 
 - (NSString *)previewItemTitle
@@ -68,6 +72,19 @@
     return _title.get();
 }
 
+- (NSDictionary *)previewOptions
+{
+    if (!_imageURL && !_pageURL)
+        return nil;
+
+    auto previewOptions = adoptNS([[NSMutableDictionary alloc] initWithCapacity:2]);
+    if (_imageURL)
+        [previewOptions setObject:_imageURL.get() forKey:@"imageURL"];
+    if (_pageURL)
+        [previewOptions setObject:_pageURL.get() forKey:@"pageURL"];
+    return previewOptions.autorelease();
+}
+
 @end
 
 @implementation WKImageExtractionPreviewController {
@@ -75,14 +92,16 @@
     RetainPtr<WKImageExtractionPreviewItem> _previewItem;
 }
 
-- (instancetype)initWithPage:(WebKit::WebPageProxy&)page url:(NSURL *)url title:(NSString *)title
+- (instancetype)initWithPage:(WebKit::WebPageProxy&)page fileURL:(NSURL *)fileURL title:(NSString *)title imageURL:(NSURL *)imageURL
 {
     if (!(self = [super init]))
         return nil;
 
     _page = makeWeakPtr(page);
-    _previewItem = adoptNS([[WKImageExtractionPreviewItem alloc] initWithURL:url title:title]);
 
+    // FIXME: We should turn `_previewItem` into a QLItem once the fix for rdar://74299451 is available.
+    _previewItem = adoptNS([[WKImageExtractionPreviewItem alloc] initWithFileURL:fileURL title:title imageURL:imageURL pageURL:URL { URL { }, page.currentURL() }]);
+
     return self;
 }
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to