Changeset 191194 in webkit
- Timestamp:
- Oct 16, 2015 12:52:42 PM (9 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r191183 r191194 1 2015-10-16 Anders Carlsson <andersca@apple.com> 2 3 Move more code to WebContextMenuProxyMac 4 https://bugs.webkit.org/show_bug.cgi?id=150240 5 6 Reviewed by Tim Horton. 7 8 * UIProcess/WebContextMenuProxy.h: 9 * UIProcess/WebPageProxy.cpp: 10 (WebKit::WebPageProxy::internalShowContextMenu): 11 * UIProcess/WebPageProxy.h: 12 (WebKit::WebPageProxy::contextMenuClient): 13 * UIProcess/mac/WebContextMenuProxyMac.h: 14 * UIProcess/mac/WebContextMenuProxyMac.mm: 15 (WebKit::WebContextMenuProxyMac::initializeShareMenuItem): 16 (WebKit::WebContextMenuProxyMac::showContextMenu): 17 * UIProcess/mac/WebPageProxyMac.mm: 18 (WebKit::WebPageProxy::platformInitializeShareMenuItem): Deleted. 19 1 20 2015-10-16 Tim Horton <timothy_horton@apple.com> 2 21 -
trunk/Source/WebKit2/UIProcess/WebContextMenuProxy.h
r191146 r191194 41 41 virtual ~WebContextMenuProxy(); 42 42 43 virtual void showContextMenu( const Vector<RefPtr<WebContextMenuItem>>&) = 0;43 virtual void showContextMenu() = 0; 44 44 virtual void hideContextMenu() = 0; 45 45 virtual void cancelTracking() { } -
trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp
r191181 r191194 4210 4210 m_process->responsivenessTimer()->stop(); 4211 4211 4212 // Unless this is an image control, give the PageContextMenuClient one last swipe at changing the menu. 4213 bool askClientToChangeMenu = true; 4214 #if ENABLE(SERVICE_CONTROLS) 4215 if (contextMenuContextData.isServicesMenu() || contextMenuContextData.controlledImage()) 4216 askClientToChangeMenu = false; 4217 #endif 4218 4219 Vector<RefPtr<WebContextMenuItem>> proposedAPIItems; 4220 for (auto& item : contextMenuContextData.menuItems()) { 4221 if (item.action() != ContextMenuItemTagShareMenu) { 4222 proposedAPIItems.append(WebContextMenuItem::create(item)); 4223 continue; 4224 } 4225 4226 ContextMenuItem coreItem = platformInitializeShareMenuItem(contextMenuContextData); 4227 if (!coreItem.isNull()) 4228 proposedAPIItems.append(WebContextMenuItem::create(coreItem)); 4229 } 4230 4231 Vector<RefPtr<WebContextMenuItem>> clientItems; 4232 bool useProposedItems = true; 4233 4234 if (askClientToChangeMenu && m_contextMenuClient->getContextMenuFromProposedMenu(*this, proposedAPIItems, clientItems, contextMenuContextData.webHitTestResultData(), m_process->transformHandlesToObjects(userData.object()).get())) 4235 useProposedItems = false; 4236 4237 const Vector<RefPtr<WebContextMenuItem>>& itemsToShow = useProposedItems ? proposedAPIItems : clientItems; 4238 if (!m_contextMenuClient->showContextMenu(*this, contextMenuContextData.menuLocation(), itemsToShow)) 4239 m_activeContextMenu->showContextMenu(itemsToShow); 4240 4241 m_contextMenuClient->contextMenuDismissed(*this); 4242 } 4243 4244 #if !ENABLE(SERVICE_CONTROLS) 4245 ContextMenuItem WebPageProxy::platformInitializeShareMenuItem(const ContextMenuContextData&) 4246 { 4247 return ContextMenuItem(); 4248 } 4249 #endif 4212 m_activeContextMenu->showContextMenu(); 4213 } 4250 4214 4251 4215 void WebPageProxy::contextMenuItemSelected(const WebContextMenuItemData& item) -
trunk/Source/WebKit2/UIProcess/WebPageProxy.h
r191181 r191194 327 327 328 328 #if ENABLE(CONTEXT_MENUS) 329 API::ContextMenuClient& contextMenuClient() { return *m_contextMenuClient; } 329 330 void setContextMenuClient(std::unique_ptr<API::ContextMenuClient>); 330 331 #endif … … 1265 1266 void showContextMenu(const ContextMenuContextData&, const UserData&); 1266 1267 void internalShowContextMenu(const ContextMenuContextData&, const UserData&); 1267 WebCore::ContextMenuItem platformInitializeShareMenuItem(const ContextMenuContextData&);1268 1268 #endif 1269 1269 -
trunk/Source/WebKit2/UIProcess/mac/WebContextMenuProxyMac.h
r191144 r191194 51 51 ~WebContextMenuProxyMac(); 52 52 53 virtual void showContextMenu( const Vector<RefPtr<WebContextMenuItem>>&) override;53 virtual void showContextMenu() override; 54 54 55 55 virtual void hideContextMenu() override; … … 72 72 #if ENABLE(SERVICE_CONTROLS) 73 73 void setupServicesMenu(const ContextMenuContextData&); 74 WebCore::ContextMenuItem shareMenuItem(); 74 75 #endif 75 76 -
trunk/Source/WebKit2/UIProcess/mac/WebContextMenuProxyMac.mm
r191181 r191194 29 29 #if PLATFORM(MAC) 30 30 31 #import "APIContextMenuClient.h" 31 32 #import "DataReference.h" 32 33 #import "MenuUtilities.h" … … 252 253 253 254 #if ENABLE(SERVICE_CONTROLS) 254 255 255 void WebContextMenuProxyMac::setupServicesMenu(const ContextMenuContextData& context) 256 256 { … … 322 322 m_servicesMenu = nullptr; 323 323 } 324 325 ContextMenuItem WebContextMenuProxyMac::shareMenuItem() 326 { 327 const WebHitTestResultData& hitTestData = m_context.webHitTestResultData(); 328 329 URL absoluteLinkURL; 330 if (!hitTestData.absoluteLinkURL.isEmpty()) 331 absoluteLinkURL = URL(ParsedURLString, hitTestData.absoluteLinkURL); 332 333 URL downloadableMediaURL; 334 if (!hitTestData.absoluteMediaURL.isEmpty() && hitTestData.isDownloadableMedia) 335 downloadableMediaURL = URL(ParsedURLString, hitTestData.absoluteMediaURL); 336 337 RetainPtr<NSImage> image; 338 if (hitTestData.imageSharedMemory && hitTestData.imageSize) 339 image = adoptNS([[NSImage alloc] initWithData:[NSData dataWithBytes:(unsigned char*)hitTestData.imageSharedMemory->data() length:hitTestData.imageSize]]); 340 341 ContextMenuItem item = ContextMenuItem::shareMenuItem(absoluteLinkURL, downloadableMediaURL, image.get(), m_context.selectedText()); 342 343 NSMenuItem *nsItem = item.platformDescription(); 344 345 NSSharingServicePicker *sharingServicePicker = [nsItem representedObject]; 346 sharingServicePicker.delegate = [WKSharingServicePickerDelegate sharedSharingServicePickerDelegate]; 347 348 [[WKSharingServicePickerDelegate sharedSharingServicePickerDelegate] setFiltersEditingServices:NO]; 349 [[WKSharingServicePickerDelegate sharedSharingServicePickerDelegate] setHandlesEditingReplacement:NO]; 350 [[WKSharingServicePickerDelegate sharedSharingServicePickerDelegate] setMenuProxy:this]; 351 352 // Setting the picker lets the delegate retain it to keep it alive, but this picker is kept alive by the menu item. 353 [[WKSharingServicePickerDelegate sharedSharingServicePickerDelegate] setPicker:nil]; 354 355 return item; 356 } 324 357 #endif 325 358 … … 346 379 } 347 380 348 void WebContextMenuProxyMac::showContextMenu(const Vector<RefPtr<WebContextMenuItem>>& items) 349 { 381 void WebContextMenuProxyMac::showContextMenu() 382 { 383 // Unless this is an image control, give the PageContextMenuClient one last swipe at changing the menu. 384 bool askClientToChangeMenu = true; 385 #if ENABLE(SERVICE_CONTROLS) 386 if (m_context.isServicesMenu() || m_context.controlledImage()) 387 askClientToChangeMenu = false; 388 #endif 389 390 Vector<RefPtr<WebContextMenuItem>> proposedAPIItems; 391 for (auto& item : m_context.menuItems()) { 392 if (item.action() != ContextMenuItemTagShareMenu) { 393 proposedAPIItems.append(WebContextMenuItem::create(item)); 394 continue; 395 } 396 397 #if ENABLE(SERVICE_CONTROLS) 398 proposedAPIItems.append(WebContextMenuItem::create(shareMenuItem())); 399 #endif 400 } 401 402 Vector<RefPtr<WebContextMenuItem>> clientItems; 403 bool useProposedItems = true; 404 405 if (askClientToChangeMenu && m_page.contextMenuClient().getContextMenuFromProposedMenu(m_page, proposedAPIItems, clientItems, m_context.webHitTestResultData(), m_page.process().transformHandlesToObjects(m_userData.object()).get())) 406 useProposedItems = false; 407 408 const Vector<RefPtr<WebContextMenuItem>>& items = useProposedItems ? proposedAPIItems : clientItems; 409 350 410 #if ENABLE(SERVICE_CONTROLS) 351 411 if (items.isEmpty() && !m_context.isServicesMenu()) -
trunk/Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm
r191181 r191194 739 739 } 740 740 741 #if ENABLE(SERVICE_CONTROLS)742 ContextMenuItem WebPageProxy::platformInitializeShareMenuItem(const ContextMenuContextData& contextMenuContextData)743 {744 const WebHitTestResultData& hitTestData = contextMenuContextData.webHitTestResultData();745 746 URL absoluteLinkURL;747 if (!hitTestData.absoluteLinkURL.isEmpty())748 absoluteLinkURL = URL(ParsedURLString, hitTestData.absoluteLinkURL);749 750 URL downloadableMediaURL;751 if (!hitTestData.absoluteMediaURL.isEmpty() && hitTestData.isDownloadableMedia)752 downloadableMediaURL = URL(ParsedURLString, hitTestData.absoluteMediaURL);753 754 RetainPtr<NSImage> image;755 if (hitTestData.imageSharedMemory && hitTestData.imageSize)756 image = adoptNS([[NSImage alloc] initWithData:[NSData dataWithBytes:(unsigned char*)hitTestData.imageSharedMemory->data() length:hitTestData.imageSize]]);757 758 ContextMenuItem item = ContextMenuItem::shareMenuItem(absoluteLinkURL, downloadableMediaURL, image.get(), contextMenuContextData.selectedText());759 760 NSMenuItem *nsItem = item.platformDescription();761 762 NSSharingServicePicker *sharingServicePicker = [nsItem representedObject];763 sharingServicePicker.delegate = [WKSharingServicePickerDelegate sharedSharingServicePickerDelegate];764 765 [[WKSharingServicePickerDelegate sharedSharingServicePickerDelegate] setFiltersEditingServices:NO];766 [[WKSharingServicePickerDelegate sharedSharingServicePickerDelegate] setHandlesEditingReplacement:NO];767 [[WKSharingServicePickerDelegate sharedSharingServicePickerDelegate] setMenuProxy:static_cast<WebContextMenuProxyMac*>(m_activeContextMenu.get())];768 769 // Setting the picker lets the delegate retain it to keep it alive, but this picker is kept alive by the menu item.770 [[WKSharingServicePickerDelegate sharedSharingServicePickerDelegate] setPicker:nil];771 772 return item;773 }774 #endif775 776 741 } // namespace WebKit 777 742
Note: See TracChangeset
for help on using the changeset viewer.