Changeset 181858 in webkit
- Timestamp:
- Mar 23, 2015, 11:39:13 AM (11 years ago)
- Location:
- trunk/Source
- Files:
-
- 9 edited
-
WebCore/ChangeLog (modified) (1 diff)
-
WebCore/English.lproj/Localizable.strings (modified) (2 diffs)
-
WebCore/platform/spi/mac/NSMenuSPI.h (modified) (1 diff)
-
WebKit/mac/ChangeLog (modified) (1 diff)
-
WebKit/mac/WebView/WebActionMenuController.mm (modified) (6 diffs)
-
WebKit/mac/WebView/WebUIDelegatePrivate.h (modified) (1 diff)
-
WebKit2/ChangeLog (modified) (1 diff)
-
WebKit2/Shared/API/c/WKActionMenuItemTypes.h (modified) (1 diff)
-
WebKit2/UIProcess/mac/WKActionMenuController.mm (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r181857 r181858 1 2015-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 1 15 2015-03-23 David Kilzer <ddkilzer@apple.com> 2 16 -
trunk/Source/WebCore/English.lproj/Localizable.strings
r181403 r181858 1094 1094 "Save to Downloads (image action menu item)" = "Save to Downloads"; 1095 1095 1096 /* "Share" action menu item in image menu */1097 "Share (image action menu item)" = "Share";1098 1099 1096 /* "Copy" action menu item in text menu */ 1100 1097 "Copy (text action menu item)" = "Copy"; … … 1112 1109 "Copy (video action menu item)" = "Copy"; 1113 1110 1114 /* "Share" action menu item in video menu */1115 "Share (video action menu item)" = "Share";1116 1117 1111 /* "Save to Downloads" action menu item in video menu */ 1118 1112 "Save to Downloads (video action menu item)" = "Save to Downloads"; -
trunk/Source/WebCore/platform/spi/mac/NSMenuSPI.h
r181668 r181858 40 40 @interface NSMenuItem (Private) 41 41 + (QLPreviewMenuItem *)standardQuickLookMenuItem; 42 + (NSMenuItem *)standardShareMenuItemWithItems:(NSArray *)items; 42 43 @end -
trunk/Source/WebKit/mac/ChangeLog
r181846 r181858 1 2015-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 1 23 2015-03-22 Alexey Proskuryakov <ap@apple.com> 2 24 -
trunk/Source/WebKit/mac/WebView/WebActionMenuController.mm
r180119 r181858 267 267 RetainPtr<NSMenuItem> readingListItem = [self _createActionMenuItemForTag:WebActionMenuItemTagAddLinkToSafariReadingList]; 268 268 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() ]; 270 273 } 271 274 … … 307 310 [saveToDownloadsItem setEnabled:NO]; 308 311 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() ]]; 321 315 322 316 return @[ copyImageItem.get(), addToPhotosItem.get(), saveToDownloadsItem.get(), shareItem.get() ]; … … 429 423 [saveToDownloadsItem setEnabled:NO]; 430 424 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 ]]; 440 427 441 428 return @[ copyVideoURLItem.get(), [NSMenuItem separatorItem], saveToDownloadsItem.get(), shareItem.get() ]; … … 702 689 break; 703 690 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 709 691 case WebActionMenuItemTagCopyVideoURL: 710 692 selector = @selector(_copyVideoURL:); … … 717 699 title = WEB_UI_STRING_KEY("Save to Downloads", "Save to Downloads (video action menu item)", "video action menu item"); 718 700 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"];724 701 break; 725 702 … … 735 712 [item setEnabled:enabled]; 736 713 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; 737 725 } 738 726 -
trunk/Source/WebKit/mac/WebView/WebUIDelegatePrivate.h
r177323 r181858 128 128 WebActionMenuItemTagCopyVideoURL, 129 129 WebActionMenuItemTagSaveVideoToDownloads, 130 WebActionMenuItemTagShareVideo 130 WebActionMenuItemTagShareVideo, 131 WebActionMenuItemTagShareLink 131 132 }; 132 133 -
trunk/Source/WebKit2/ChangeLog
r181851 r181858 1 2015-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 1 27 2015-03-23 Zan Dobersek <zdobersek@igalia.com> 2 28 -
trunk/Source/WebKit2/Shared/API/c/WKActionMenuItemTypes.h
r175779 r181858 48 48 kWKContextActionItemTagCopyVideoURL, 49 49 kWKContextActionItemTagSaveVideoToDownloads, 50 kWKContextActionItemTagShareVideo 50 kWKContextActionItemTagShareVideo, 51 kWKContextActionItemTagShareLink 51 52 }; 52 53 -
trunk/Source/WebKit2/UIProcess/mac/WKActionMenuController.mm
r180119 r181858 181 181 #pragma mark Link actions 182 182 183 - (NSURL *)_hitLinkURL 184 { 185 RefPtr<WebHitTestResult> hitTestResult = [self _webHitTestResult]; 186 return [NSURL _web_URLWithWTFString:hitTestResult->absoluteLinkURL()]; 187 } 188 183 189 - (NSArray *)_defaultMenuItemsForLink 184 190 { 185 191 RetainPtr<NSMenuItem> openLinkItem = [self _createActionMenuItemForTag:kWKContextActionItemTagOpenLinkInDefaultBrowser]; 186 192 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() ]; 189 196 } 190 197 191 198 - (void)_openURLFromActionMenu:(id)sender 192 199 { 193 RefPtr<WebHitTestResult> hitTestResult = [self _webHitTestResult]; 194 [[NSWorkspace sharedWorkspace] openURL:[NSURL _web_URLWithWTFString:hitTestResult->absoluteLinkURL()]]; 200 [[NSWorkspace sharedWorkspace] openURL:[self _hitLinkURL]]; 195 201 } 196 202 197 203 - (void)_addToReadingListFromActionMenu:(id)sender 198 204 { 199 RefPtr<WebHitTestResult> hitTestResult = [self _webHitTestResult];200 205 NSSharingService *service = [NSSharingService sharingServiceNamed:NSSharingServiceNameAddToSafariReadingList]; 201 [service performWithItems:@[ [ NSURL _web_URLWithWTFString:hitTestResult->absoluteLinkURL()] ]];206 [service performWithItems:@[ [self _hitLinkURL] ]]; 202 207 } 203 208 … … 207 212 { 208 213 RetainPtr<NSMenuItem> copyVideoURLItem = [self _createActionMenuItemForTag:kWKContextActionItemTagCopyVideoURL]; 209 210 RefPtr<WebHitTestResult> hitTestResult = [self _webHitTestResult];211 214 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 ]]; 225 219 226 220 return @[ copyVideoURLItem.get(), [NSMenuItem separatorItem], saveToDownloadsItem.get(), shareItem.get() ]; … … 265 259 addToPhotosItem = [NSMenuItem separatorItem]; 266 260 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] ]]; 274 262 275 263 return @[ copyImageItem.get(), addToPhotosItem.get(), saveToDownloadsItem.get(), shareItem.get() ]; … … 605 593 break; 606 594 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 612 595 case kWKContextActionItemTagCopyText: 613 596 selector = @selector(_copySelection:); … … 638 621 title = WEB_UI_STRING_KEY("Save to Downloads", "Save to Downloads (video action menu item)", "video action menu item"); 639 622 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"];645 623 break; 646 624 … … 656 634 [item setEnabled:enabled]; 657 635 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; 658 647 } 659 648
Note:
See TracChangeset
for help on using the changeset viewer.