⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 277389 in webkit


Ignore:
Timestamp:
May 12, 2021, 2:08:35 PM (5 years ago)
Author:
Wenson Hsieh
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.

Location:
trunk/Source/WebKit
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r277386 r277389  
     12021-05-12  Wenson Hsieh  <wenson_hsieh@apple.com>
     2
     3        Plumb some more metadata to QuickLook when revealing images
     4        https://bugs.webkit.org/show_bug.cgi?id=225709
     5        rdar://77864866
     6
     7        Reviewed by Devin Rousso.
     8
     9        Add plumbing to supply QuickLook with some additional information about the image URL and current page URL when
     10        revealing images.
     11
     12        * UIProcess/Cocoa/WebPageProxyCocoa.mm:
     13        (WebKit::WebPageProxy::handleContextMenuRevealImage):
     14        * UIProcess/ios/WKActionSheetAssistant.h:
     15        * UIProcess/ios/WKActionSheetAssistant.mm:
     16        (-[WKActionSheetAssistant handleElementActionWithType:element:needsInteraction:]):
     17        * UIProcess/mac/WKImageExtractionPreviewController.h:
     18        * UIProcess/mac/WKImageExtractionPreviewController.mm:
     19        (-[WKImageExtractionPreviewItem initWithFileURL:title:imageURL:pageURL:]):
     20        (-[WKImageExtractionPreviewItem dealloc]):
     21        (-[WKImageExtractionPreviewItem previewItemURL]):
     22        (-[WKImageExtractionPreviewItem previewOptions]):
     23        (-[WKImageExtractionPreviewController initWithPage:fileURL:title:imageURL:]):
     24
     25        Rename the `URL` argument to `fileURL`, to avoid confusion with the new `imageURL` that's passed in. Note that
     26        this is temporary, since we'll adopt new QuickLook SPI on macOS once the fix for rdar://74299451 is available.
     27
     28        (-[WKImageExtractionPreviewItem initWithURL:title:]): Deleted.
     29        (-[WKImageExtractionPreviewController initWithPage:url:title:]): Deleted.
     30
    1312021-05-12  Aditya Keerthi  <akeerthi@apple.com>
    232
  • trunk/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm

    r277196 r277389  
    615615        return;
    616616
    617     revealExtractedImageInPreviewPanel(*result.imageBitmap, result.toolTipText);
     617    revealExtractedImageInPreviewPanel(*result.imageBitmap, result.toolTipText, URL { URL { }, result.absoluteImageURL });
    618618}
    619619
  • trunk/Source/WebKit/UIProcess/ios/WKActionSheetAssistant.h

    r274521 r277389  
    8282#if ENABLE(IMAGE_EXTRACTION)
    8383- (BOOL)actionSheetAssistant:(WKActionSheetAssistant *)assistant shouldIncludeImageExtractionActionForElement:(_WKActivatedElementInfo *)element;
    84 - (void)actionSheetAssistant:(WKActionSheetAssistant *)assistant handleImageExtraction:(UIImage *)image title:(NSString *)title;
     84- (void)actionSheetAssistant:(WKActionSheetAssistant *)assistant handleImageExtraction:(UIImage *)image imageURL:(NSURL *)imageURL title:(NSString *)title;
    8585- (BOOL)actionSheetAssistant:(WKActionSheetAssistant *)assistant shouldIncludeRevealImageActionForElement:(_WKActivatedElementInfo *)element;
    86 - (void)actionSheetAssistant:(WKActionSheetAssistant *)assistant handleRevealImage:(UIImage *)image title:(NSString *)title;
     86- (void)actionSheetAssistant:(WKActionSheetAssistant *)assistant handleRevealImage:(UIImage *)image imageURL:(NSURL *)imageURL title:(NSString *)title;
    8787#endif
    8888@end
  • trunk/Source/WebKit/UIProcess/ios/WKActionSheetAssistant.mm

    r274521 r277389  
    10171017    case _WKElementActionTypeImageExtraction:
    10181018#if ENABLE(IMAGE_EXTRACTION)
    1019         [delegate actionSheetAssistant:self handleImageExtraction:element.image title:element.title];
     1019        [delegate actionSheetAssistant:self handleImageExtraction:element.image imageURL:element.imageURL title:element.title];
    10201020#endif
    10211021        break;
    10221022    case _WKElementActionTypeRevealImage:
    10231023#if ENABLE(IMAGE_EXTRACTION)
    1024         [delegate actionSheetAssistant:self handleRevealImage:element.image title:element.title];
     1024        [delegate actionSheetAssistant:self handleRevealImage:element.image imageURL:element.imageURL title:element.title];
    10251025#endif
    10261026        break;
  • trunk/Source/WebKit/UIProcess/mac/WKImageExtractionPreviewController.h

    r275913 r277389  
    3535
    3636@interface WKImageExtractionPreviewItem : NSObject <QLPreviewItem>
    37 - (instancetype)initWithURL:(NSURL *)url title:(NSString *)title;
     37- (instancetype)initWithFileURL:(NSURL *)fileURL title:(NSString *)title imageURL:(NSURL *)imageURL pageURL:(NSURL *)pageURL;
    3838@end
    3939
    4040@interface WKImageExtractionPreviewController : NSObject <QLPreviewPanelDelegate, QLPreviewPanelDataSource>
    41 - (instancetype)initWithPage:(WebKit::WebPageProxy&)page url:(NSURL *)url title:(NSString *)title;
     41- (instancetype)initWithPage:(WebKit::WebPageProxy&)page fileURL:(NSURL *)fileURL title:(NSString *)title imageURL:(NSURL *)imageURL;
    4242@end
    4343
  • trunk/Source/WebKit/UIProcess/mac/WKImageExtractionPreviewController.mm

    r275913 r277389  
    3535
    3636@implementation WKImageExtractionPreviewItem {
    37     RetainPtr<NSURL> _url;
     37    RetainPtr<NSURL> _fileURL;
    3838    RetainPtr<NSString> _title;
     39    RetainPtr<NSURL> _imageURL;
     40    RetainPtr<NSURL> _pageURL;
    3941}
    4042
    41 - (instancetype)initWithURL:(NSURL *)url title:(NSString *)title
     43- (instancetype)initWithFileURL:(NSURL *)fileURL title:(NSString *)title imageURL:(NSURL *)imageURL pageURL:(NSURL *)pageURL
    4244{
    4345    if (!(self = [super init]))
    4446        return nil;
    4547
    46     _url = url;
     48    _fileURL = fileURL;
    4749    _title = adoptNS([title copy]);
     50    _imageURL = imageURL;
     51    _pageURL = pageURL;
    4852
    4953    return self;
     
    5256- (void)dealloc
    5357{
    54     FileSystem::deleteFile([_url path]);
     58    FileSystem::deleteFile([_fileURL path]);
    5559
    5660    [super dealloc];
     
    6165- (NSURL *)previewItemURL
    6266{
    63     return _url.get();
     67    return _fileURL.get();
    6468}
    6569
     
    6771{
    6872    return _title.get();
     73}
     74
     75- (NSDictionary *)previewOptions
     76{
     77    if (!_imageURL && !_pageURL)
     78        return nil;
     79
     80    auto previewOptions = adoptNS([[NSMutableDictionary alloc] initWithCapacity:2]);
     81    if (_imageURL)
     82        [previewOptions setObject:_imageURL.get() forKey:@"imageURL"];
     83    if (_pageURL)
     84        [previewOptions setObject:_pageURL.get() forKey:@"pageURL"];
     85    return previewOptions.autorelease();
    6986}
    7087
     
    7693}
    7794
    78 - (instancetype)initWithPage:(WebKit::WebPageProxy&)page url:(NSURL *)url title:(NSString *)title
     95- (instancetype)initWithPage:(WebKit::WebPageProxy&)page fileURL:(NSURL *)fileURL title:(NSString *)title imageURL:(NSURL *)imageURL
    7996{
    8097    if (!(self = [super init]))
     
    8299
    83100    _page = makeWeakPtr(page);
    84     _previewItem = adoptNS([[WKImageExtractionPreviewItem alloc] initWithURL:url title:title]);
     101
     102    // FIXME: We should turn `_previewItem` into a QLItem once the fix for rdar://74299451 is available.
     103    _previewItem = adoptNS([[WKImageExtractionPreviewItem alloc] initWithFileURL:fileURL title:title imageURL:imageURL pageURL:URL { URL { }, page.currentURL() }]);
    85104
    86105    return self;
Note: See TracChangeset for help on using the changeset viewer.