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

Changeset 181858 in webkit


Ignore:
Timestamp:
Mar 23, 2015, 11:39:13 AM (11 years ago)
Author:
timothy_horton@apple.com
Message:

Add a share item to the link action menu
https://bugs.webkit.org/show_bug.cgi?id=142961
<rdar://problem/19198374>

Reviewed by Beth Dakin.

  • UIProcess/mac/WKActionMenuController.mm:

(-[WKActionMenuController _hitLinkURL]):
Factor out _hitLinkURL from various places.

(-[WKActionMenuController _openURLFromActionMenu:]):
(-[WKActionMenuController _addToReadingListFromActionMenu:]):
(-[WKActionMenuController _defaultMenuItemsForVideo]):
(-[WKActionMenuController _defaultMenuItemsForImage]):
(-[WKActionMenuController _createActionMenuItemForTag:]):
(-[WKActionMenuController _createShareActionMenuItemForTag:withItems:]):
Adopt -[NSMenuItem standardShareMenuItemWithItems].
All of the null-checking is unnecessary as it's impossible to enter
these functions with a null image/etc.

(-[WKActionMenuController _defaultMenuItemsForLink]):

  • Shared/API/c/WKActionMenuItemTypes.h:

Add a 'Share' item to the link menu.

  • WebView/WebActionMenuController.mm:

(-[WebActionMenuController _defaultMenuItemsForImage]):
(-[WebActionMenuController _defaultMenuItemsForVideo]):
(-[WebActionMenuController _createActionMenuItemForTag:]):
(-[WebActionMenuController _createShareActionMenuItemForTag:withItems:]):
Adopt -[NSMenuItem standardShareMenuItemWithItems].
All of the null-checking is unnecessary as it's impossible to enter
these functions with a null image/etc.
Also, remove a duplicate isDownloadableMedia check for the 'save to downloads' item.

(-[WebActionMenuController _defaultMenuItemsForLink]):

  • WebView/WebUIDelegatePrivate.h:

Add a 'Share' item to the link menu.

  • English.lproj/Localizable.strings:

Remove some now-unused strings.

  • platform/spi/mac/NSMenuSPI.h:

Add some SPI.

Location:
trunk/Source
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r181857 r181858  
     12015-03-23  Tim Horton  <timothy_horton@apple.com>
     2
     3        Add a share item to the link action menu
     4        https://bugs.webkit.org/show_bug.cgi?id=142961
     5        <rdar://problem/19198374>
     6
     7        Reviewed by Beth Dakin.
     8
     9        * English.lproj/Localizable.strings:
     10        Remove some now-unused strings.
     11
     12        * platform/spi/mac/NSMenuSPI.h:
     13        Add some SPI.
     14
    1152015-03-23  David Kilzer  <ddkilzer@apple.com>
    216
  • trunk/Source/WebCore/English.lproj/Localizable.strings

    r181403 r181858  
    10941094"Save to Downloads (image action menu item)" = "Save to Downloads";
    10951095
    1096 /* "Share" action menu item in image menu */
    1097 "Share (image action menu item)" = "Share";
    1098 
    10991096/* "Copy" action menu item in text menu */
    11001097"Copy (text action menu item)" = "Copy";
     
    11121109"Copy (video action menu item)" = "Copy";
    11131110
    1114 /* "Share" action menu item in video menu */
    1115 "Share (video action menu item)" = "Share";
    1116 
    11171111/* "Save to Downloads" action menu item in video menu */
    11181112"Save to Downloads (video action menu item)" = "Save to Downloads";
  • trunk/Source/WebCore/platform/spi/mac/NSMenuSPI.h

    r181668 r181858  
    4040@interface NSMenuItem (Private)
    4141+ (QLPreviewMenuItem *)standardQuickLookMenuItem;
     42+ (NSMenuItem *)standardShareMenuItemWithItems:(NSArray *)items;
    4243@end
  • trunk/Source/WebKit/mac/ChangeLog

    r181846 r181858  
     12015-03-23  Tim Horton  <timothy_horton@apple.com>
     2
     3        Add a share item to the link action menu
     4        https://bugs.webkit.org/show_bug.cgi?id=142961
     5        <rdar://problem/19198374>
     6
     7        Reviewed by Beth Dakin.
     8
     9        * WebView/WebActionMenuController.mm:
     10        (-[WebActionMenuController _defaultMenuItemsForImage]):
     11        (-[WebActionMenuController _defaultMenuItemsForVideo]):
     12        (-[WebActionMenuController _createActionMenuItemForTag:]):
     13        (-[WebActionMenuController _createShareActionMenuItemForTag:withItems:]):
     14        Adopt -[NSMenuItem standardShareMenuItemWithItems].
     15        All of the null-checking is unnecessary as it's impossible to enter
     16        these functions with a null image/etc.
     17        Also, remove a duplicate isDownloadableMedia check for the 'save to downloads' item.
     18
     19        (-[WebActionMenuController _defaultMenuItemsForLink]):
     20        * WebView/WebUIDelegatePrivate.h:
     21        Add a 'Share' item to the link menu.
     22
    1232015-03-22  Alexey Proskuryakov  <ap@apple.com>
    224
  • trunk/Source/WebKit/mac/WebView/WebActionMenuController.mm

    r180119 r181858  
    267267    RetainPtr<NSMenuItem> readingListItem = [self _createActionMenuItemForTag:WebActionMenuItemTagAddLinkToSafariReadingList];
    268268
    269     return @[ openLinkItem.get(), [NSMenuItem separatorItem], [NSMenuItem separatorItem], readingListItem.get() ];
     269    NSURL *url = _hitTestResult.absoluteLinkURL();
     270    RetainPtr<NSMenuItem> shareItem = [self _createShareActionMenuItemForTag:WebActionMenuItemTagShareLink withItems:@[ url ]];
     271
     272    return @[ openLinkItem.get(), shareItem.get(), [NSMenuItem separatorItem], readingListItem.get() ];
    270273}
    271274
     
    307310        [saveToDownloadsItem setEnabled:NO];
    308311
    309     RetainPtr<NSMenuItem> shareItem = [self _createActionMenuItemForTag:WebActionMenuItemTagShareImage];
    310     if (Image* image = _hitTestResult.image()) {
    311         RefPtr<SharedBuffer> buffer = image->data();
    312         if (buffer) {
    313             RetainPtr<NSData> nsData = [NSData dataWithBytes:buffer->data() length:buffer->size()];
    314             RetainPtr<NSImage> nsImage = adoptNS([[NSImage alloc] initWithData:nsData.get()]);
    315             _sharingServicePicker = adoptNS([[NSSharingServicePicker alloc] initWithItems:@[ nsImage.get() ]]);
    316             [_sharingServicePicker setDelegate:self];
    317             [shareItem setSubmenu:[_sharingServicePicker menu]];
    318         } else
    319             [shareItem setEnabled:NO];
    320     }
     312    RefPtr<SharedBuffer> buffer = _hitTestResult.image()->data();
     313    RetainPtr<NSImage> nsImage = adoptNS([[NSImage alloc] initWithData:[NSData dataWithBytes:buffer->data() length:buffer->size()]]);
     314    RetainPtr<NSMenuItem> shareItem = [self _createShareActionMenuItemForTag:WebActionMenuItemTagShareImage withItems:@[ nsImage.get() ]];
    321315
    322316    return @[ copyImageItem.get(), addToPhotosItem.get(), saveToDownloadsItem.get(), shareItem.get() ];
     
    429423        [saveToDownloadsItem setEnabled:NO];
    430424
    431     RetainPtr<NSMenuItem> shareItem = [self _createActionMenuItemForTag:WebActionMenuItemTagShareVideo];
    432     NSString *urlToShare = _hitTestResult.absoluteMediaURL();
    433     if (!_hitTestResult.isDownloadableMedia()) {
    434         [saveToDownloadsItem setEnabled:NO];
    435         urlToShare = [_webView mainFrameURL];
    436     }
    437     _sharingServicePicker = adoptNS([[NSSharingServicePicker alloc] initWithItems:@[ urlToShare ]]);
    438     [_sharingServicePicker setDelegate:self];
    439     [shareItem setSubmenu:[_sharingServicePicker menu]];
     425    String urlToShare = _hitTestResult.isDownloadableMedia() ? _hitTestResult.absoluteMediaURL() : [_webView mainFrameURL];
     426    RetainPtr<NSMenuItem> shareItem = [self _createShareActionMenuItemForTag:WebActionMenuItemTagShareImage withItems:@[ urlToShare ]];
    440427
    441428    return @[ copyVideoURLItem.get(), [NSMenuItem separatorItem], saveToDownloadsItem.get(), shareItem.get() ];
     
    702689        break;
    703690
    704     case WebActionMenuItemTagShareImage:
    705         title = WEB_UI_STRING_KEY("Share (image action menu item)", "Share (image action menu item)", "image action menu item");
    706         image = [NSImage imageNamed:@"NSActionMenuShare"];
    707         break;
    708 
    709691    case WebActionMenuItemTagCopyVideoURL:
    710692        selector = @selector(_copyVideoURL:);
     
    717699        title = WEB_UI_STRING_KEY("Save to Downloads", "Save to Downloads (video action menu item)", "video action menu item");
    718700        image = [NSImage imageNamed:@"NSActionMenuSaveToDownloads"];
    719         break;
    720 
    721     case WebActionMenuItemTagShareVideo:
    722         title = WEB_UI_STRING_KEY("Share", "Share (video action menu item)", "video action menu item");
    723         image = [NSImage imageNamed:@"NSActionMenuShare"];
    724701        break;
    725702
     
    735712    [item setEnabled:enabled];
    736713    return item;
     714}
     715
     716- (RetainPtr<NSMenuItem>)_createShareActionMenuItemForTag:(uint32_t)tag withItems:(NSArray *)items
     717{
     718    RetainPtr<NSMenuItem> shareItem = [NSMenuItem standardShareMenuItemWithItems:items];
     719    [shareItem setTag:tag];
     720
     721    NSSharingServicePicker *sharingServicePicker = [shareItem representedObject];
     722    sharingServicePicker.delegate = self;
     723
     724    return shareItem;
    737725}
    738726
  • trunk/Source/WebKit/mac/WebView/WebUIDelegatePrivate.h

    r177323 r181858  
    128128    WebActionMenuItemTagCopyVideoURL,
    129129    WebActionMenuItemTagSaveVideoToDownloads,
    130     WebActionMenuItemTagShareVideo
     130    WebActionMenuItemTagShareVideo,
     131    WebActionMenuItemTagShareLink
    131132};
    132133
  • trunk/Source/WebKit2/ChangeLog

    r181851 r181858  
     12015-03-23  Tim Horton  <timothy_horton@apple.com>
     2
     3        Add a share item to the link action menu
     4        https://bugs.webkit.org/show_bug.cgi?id=142961
     5        <rdar://problem/19198374>
     6
     7        Reviewed by Beth Dakin.
     8
     9        * UIProcess/mac/WKActionMenuController.mm:
     10        (-[WKActionMenuController _hitLinkURL]):
     11        Factor out _hitLinkURL from various places.
     12
     13        (-[WKActionMenuController _openURLFromActionMenu:]):
     14        (-[WKActionMenuController _addToReadingListFromActionMenu:]):
     15        (-[WKActionMenuController _defaultMenuItemsForVideo]):
     16        (-[WKActionMenuController _defaultMenuItemsForImage]):
     17        (-[WKActionMenuController _createActionMenuItemForTag:]):
     18        (-[WKActionMenuController _createShareActionMenuItemForTag:withItems:]):
     19        Adopt -[NSMenuItem standardShareMenuItemWithItems].
     20        All of the null-checking is unnecessary as it's impossible to enter
     21        these functions with a null image/etc.
     22
     23        (-[WKActionMenuController _defaultMenuItemsForLink]):
     24        * Shared/API/c/WKActionMenuItemTypes.h:
     25        Add a 'Share' item to the link menu.
     26
    1272015-03-23  Zan Dobersek  <zdobersek@igalia.com>
    228
  • trunk/Source/WebKit2/Shared/API/c/WKActionMenuItemTypes.h

    r175779 r181858  
    4848    kWKContextActionItemTagCopyVideoURL,
    4949    kWKContextActionItemTagSaveVideoToDownloads,
    50     kWKContextActionItemTagShareVideo
     50    kWKContextActionItemTagShareVideo,
     51    kWKContextActionItemTagShareLink
    5152};
    5253
  • trunk/Source/WebKit2/UIProcess/mac/WKActionMenuController.mm

    r180119 r181858  
    181181#pragma mark Link actions
    182182
     183- (NSURL *)_hitLinkURL
     184{
     185    RefPtr<WebHitTestResult> hitTestResult = [self _webHitTestResult];
     186    return [NSURL _web_URLWithWTFString:hitTestResult->absoluteLinkURL()];
     187}
     188
    183189- (NSArray *)_defaultMenuItemsForLink
    184190{
    185191    RetainPtr<NSMenuItem> openLinkItem = [self _createActionMenuItemForTag:kWKContextActionItemTagOpenLinkInDefaultBrowser];
    186192    RetainPtr<NSMenuItem> readingListItem = [self _createActionMenuItemForTag:kWKContextActionItemTagAddLinkToSafariReadingList];
    187 
    188     return @[ openLinkItem.get(), [NSMenuItem separatorItem], [NSMenuItem separatorItem], readingListItem.get() ];
     193    RetainPtr<NSMenuItem> shareItem = [self _createShareActionMenuItemForTag:kWKContextActionItemTagShareLink withItems:@[ [self _hitLinkURL] ]];
     194
     195    return @[ openLinkItem.get(), shareItem.get(), [NSMenuItem separatorItem], readingListItem.get() ];
    189196}
    190197
    191198- (void)_openURLFromActionMenu:(id)sender
    192199{
    193     RefPtr<WebHitTestResult> hitTestResult = [self _webHitTestResult];
    194     [[NSWorkspace sharedWorkspace] openURL:[NSURL _web_URLWithWTFString:hitTestResult->absoluteLinkURL()]];
     200    [[NSWorkspace sharedWorkspace] openURL:[self _hitLinkURL]];
    195201}
    196202
    197203- (void)_addToReadingListFromActionMenu:(id)sender
    198204{
    199     RefPtr<WebHitTestResult> hitTestResult = [self _webHitTestResult];
    200205    NSSharingService *service = [NSSharingService sharingServiceNamed:NSSharingServiceNameAddToSafariReadingList];
    201     [service performWithItems:@[ [NSURL _web_URLWithWTFString:hitTestResult->absoluteLinkURL()] ]];
     206    [service performWithItems:@[ [self _hitLinkURL] ]];
    202207}
    203208
     
    207212{
    208213    RetainPtr<NSMenuItem> copyVideoURLItem = [self _createActionMenuItemForTag:kWKContextActionItemTagCopyVideoURL];
    209 
    210     RefPtr<WebHitTestResult> hitTestResult = [self _webHitTestResult];
    211214    RetainPtr<NSMenuItem> saveToDownloadsItem = [self _createActionMenuItemForTag:kWKContextActionItemTagSaveVideoToDownloads];
    212     RetainPtr<NSMenuItem> shareItem = [self _createActionMenuItemForTag:kWKContextActionItemTagShareVideo];
    213 
    214     String urlToShare = hitTestResult->absoluteMediaURL();
    215     if (!hitTestResult->isDownloadableMedia()) {
    216         [saveToDownloadsItem setEnabled:NO];
    217         urlToShare = _page->mainFrame()->url();
    218     }
    219 
    220     if (!urlToShare.isEmpty()) {
    221         _sharingServicePicker = adoptNS([[NSSharingServicePicker alloc] initWithItems:@[ urlToShare ]]);
    222         [_sharingServicePicker setDelegate:self];
    223         [shareItem setSubmenu:[_sharingServicePicker menu]];
    224     }
     215
     216    RefPtr<WebHitTestResult> hitTestResult = [self _webHitTestResult];
     217    String urlToShare = hitTestResult->isDownloadableMedia() ? hitTestResult->absoluteMediaURL() : _page->mainFrame()->url();
     218    RetainPtr<NSMenuItem> shareItem = [self _createShareActionMenuItemForTag:kWKContextActionItemTagShareVideo withItems:@[ urlToShare ]];
    225219
    226220    return @[ copyVideoURLItem.get(), [NSMenuItem separatorItem], saveToDownloadsItem.get(), shareItem.get() ];
     
    265259        addToPhotosItem = [NSMenuItem separatorItem];
    266260    RetainPtr<NSMenuItem> saveToDownloadsItem = [self _createActionMenuItemForTag:kWKContextActionItemTagSaveImageToDownloads];
    267     RetainPtr<NSMenuItem> shareItem = [self _createActionMenuItemForTag:kWKContextActionItemTagShareImage];
    268 
    269     if (RetainPtr<NSImage> image = [self _hitTestResultImage]) {
    270         _sharingServicePicker = adoptNS([[NSSharingServicePicker alloc] initWithItems:@[ image.get() ]]);
    271         [_sharingServicePicker setDelegate:self];
    272         [shareItem setSubmenu:[_sharingServicePicker menu]];
    273     }
     261    RetainPtr<NSMenuItem> shareItem = [self _createShareActionMenuItemForTag:kWKContextActionItemTagShareImage withItems:@[ [self _hitTestResultImage] ]];
    274262
    275263    return @[ copyImageItem.get(), addToPhotosItem.get(), saveToDownloadsItem.get(), shareItem.get() ];
     
    605593        break;
    606594
    607     case kWKContextActionItemTagShareImage:
    608         title = WEB_UI_STRING_KEY("Share (image action menu item)", "Share (image action menu item)", "image action menu item");
    609         image = [NSImage imageNamed:@"NSActionMenuShare"];
    610         break;
    611 
    612595    case kWKContextActionItemTagCopyText:
    613596        selector = @selector(_copySelection:);
     
    638621        title = WEB_UI_STRING_KEY("Save to Downloads", "Save to Downloads (video action menu item)", "video action menu item");
    639622        image = [NSImage imageNamed:@"NSActionMenuSaveToDownloads"];
    640         break;
    641 
    642     case kWKContextActionItemTagShareVideo:
    643         title = WEB_UI_STRING_KEY("Share", "Share (video action menu item)", "video action menu item");
    644         image = [NSImage imageNamed:@"NSActionMenuShare"];
    645623        break;
    646624
     
    656634    [item setEnabled:enabled];
    657635    return item;
     636}
     637
     638- (RetainPtr<NSMenuItem>)_createShareActionMenuItemForTag:(uint32_t)tag withItems:(NSArray *)items
     639{
     640    RetainPtr<NSMenuItem> shareItem = [NSMenuItem standardShareMenuItemWithItems:items];
     641    [shareItem setTag:tag];
     642
     643    NSSharingServicePicker *sharingServicePicker = [shareItem representedObject];
     644    sharingServicePicker.delegate = self;
     645
     646    return shareItem;
    658647}
    659648
Note: See TracChangeset for help on using the changeset viewer.