Diff
Modified: trunk/Source/WebKit2/ChangeLog (191193 => 191194)
--- trunk/Source/WebKit2/ChangeLog 2015-10-16 19:47:04 UTC (rev 191193)
+++ trunk/Source/WebKit2/ChangeLog 2015-10-16 19:52:42 UTC (rev 191194)
@@ -1,3 +1,22 @@
+2015-10-16 Anders Carlsson <ander...@apple.com>
+
+ Move more code to WebContextMenuProxyMac
+ https://bugs.webkit.org/show_bug.cgi?id=150240
+
+ Reviewed by Tim Horton.
+
+ * UIProcess/WebContextMenuProxy.h:
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::WebPageProxy::internalShowContextMenu):
+ * UIProcess/WebPageProxy.h:
+ (WebKit::WebPageProxy::contextMenuClient):
+ * UIProcess/mac/WebContextMenuProxyMac.h:
+ * UIProcess/mac/WebContextMenuProxyMac.mm:
+ (WebKit::WebContextMenuProxyMac::initializeShareMenuItem):
+ (WebKit::WebContextMenuProxyMac::showContextMenu):
+ * UIProcess/mac/WebPageProxyMac.mm:
+ (WebKit::WebPageProxy::platformInitializeShareMenuItem): Deleted.
+
2015-10-16 Tim Horton <timothy_hor...@apple.com>
Hook up autolayout intrinsic sizing for WKWebView
Modified: trunk/Source/WebKit2/UIProcess/WebContextMenuProxy.h (191193 => 191194)
--- trunk/Source/WebKit2/UIProcess/WebContextMenuProxy.h 2015-10-16 19:47:04 UTC (rev 191193)
+++ trunk/Source/WebKit2/UIProcess/WebContextMenuProxy.h 2015-10-16 19:52:42 UTC (rev 191194)
@@ -40,7 +40,7 @@
public:
virtual ~WebContextMenuProxy();
- virtual void showContextMenu(const Vector<RefPtr<WebContextMenuItem>>&) = 0;
+ virtual void showContextMenu() = 0;
virtual void hideContextMenu() = 0;
virtual void cancelTracking() { }
Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (191193 => 191194)
--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp 2015-10-16 19:47:04 UTC (rev 191193)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp 2015-10-16 19:52:42 UTC (rev 191194)
@@ -4209,45 +4209,9 @@
// Since showContextMenu() can spin a nested run loop we need to turn off the responsiveness timer.
m_process->responsivenessTimer()->stop();
- // Unless this is an image control, give the PageContextMenuClient one last swipe at changing the menu.
- bool askClientToChangeMenu = true;
-#if ENABLE(SERVICE_CONTROLS)
- if (contextMenuContextData.isServicesMenu() || contextMenuContextData.controlledImage())
- askClientToChangeMenu = false;
-#endif
-
- Vector<RefPtr<WebContextMenuItem>> proposedAPIItems;
- for (auto& item : contextMenuContextData.menuItems()) {
- if (item.action() != ContextMenuItemTagShareMenu) {
- proposedAPIItems.append(WebContextMenuItem::create(item));
- continue;
- }
-
- ContextMenuItem coreItem = platformInitializeShareMenuItem(contextMenuContextData);
- if (!coreItem.isNull())
- proposedAPIItems.append(WebContextMenuItem::create(coreItem));
- }
-
- Vector<RefPtr<WebContextMenuItem>> clientItems;
- bool useProposedItems = true;
-
- if (askClientToChangeMenu && m_contextMenuClient->getContextMenuFromProposedMenu(*this, proposedAPIItems, clientItems, contextMenuContextData.webHitTestResultData(), m_process->transformHandlesToObjects(userData.object()).get()))
- useProposedItems = false;
-
- const Vector<RefPtr<WebContextMenuItem>>& itemsToShow = useProposedItems ? proposedAPIItems : clientItems;
- if (!m_contextMenuClient->showContextMenu(*this, contextMenuContextData.menuLocation(), itemsToShow))
- m_activeContextMenu->showContextMenu(itemsToShow);
-
- m_contextMenuClient->contextMenuDismissed(*this);
+ m_activeContextMenu->showContextMenu();
}
-#if !ENABLE(SERVICE_CONTROLS)
-ContextMenuItem WebPageProxy::platformInitializeShareMenuItem(const ContextMenuContextData&)
-{
- return ContextMenuItem();
-}
-#endif
-
void WebPageProxy::contextMenuItemSelected(const WebContextMenuItemData& item)
{
// Application custom items don't need to round-trip through to WebCore in the WebProcess.
Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (191193 => 191194)
--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h 2015-10-16 19:47:04 UTC (rev 191193)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h 2015-10-16 19:52:42 UTC (rev 191194)
@@ -326,6 +326,7 @@
#endif
#if ENABLE(CONTEXT_MENUS)
+ API::ContextMenuClient& contextMenuClient() { return *m_contextMenuClient; }
void setContextMenuClient(std::unique_ptr<API::ContextMenuClient>);
#endif
API::FindClient& findClient() { return *m_findClient; }
@@ -1264,7 +1265,6 @@
#if ENABLE(CONTEXT_MENUS)
void showContextMenu(const ContextMenuContextData&, const UserData&);
void internalShowContextMenu(const ContextMenuContextData&, const UserData&);
- WebCore::ContextMenuItem platformInitializeShareMenuItem(const ContextMenuContextData&);
#endif
#if ENABLE(TELEPHONE_NUMBER_DETECTION)
Modified: trunk/Source/WebKit2/UIProcess/mac/WebContextMenuProxyMac.h (191193 => 191194)
--- trunk/Source/WebKit2/UIProcess/mac/WebContextMenuProxyMac.h 2015-10-16 19:47:04 UTC (rev 191193)
+++ trunk/Source/WebKit2/UIProcess/mac/WebContextMenuProxyMac.h 2015-10-16 19:52:42 UTC (rev 191194)
@@ -50,7 +50,7 @@
}
~WebContextMenuProxyMac();
- virtual void showContextMenu(const Vector<RefPtr<WebContextMenuItem>>&) override;
+ virtual void showContextMenu() override;
virtual void hideContextMenu() override;
virtual void cancelTracking() override;
@@ -71,6 +71,7 @@
#if ENABLE(SERVICE_CONTROLS)
void setupServicesMenu(const ContextMenuContextData&);
+ WebCore::ContextMenuItem shareMenuItem();
#endif
RetainPtr<NSPopUpButtonCell> m_popup;
Modified: trunk/Source/WebKit2/UIProcess/mac/WebContextMenuProxyMac.mm (191193 => 191194)
--- trunk/Source/WebKit2/UIProcess/mac/WebContextMenuProxyMac.mm 2015-10-16 19:47:04 UTC (rev 191193)
+++ trunk/Source/WebKit2/UIProcess/mac/WebContextMenuProxyMac.mm 2015-10-16 19:52:42 UTC (rev 191194)
@@ -28,6 +28,7 @@
#if PLATFORM(MAC)
+#import "APIContextMenuClient.h"
#import "DataReference.h"
#import "MenuUtilities.h"
#import "PageClientImpl.h"
@@ -251,7 +252,6 @@
}
#if ENABLE(SERVICE_CONTROLS)
-
void WebContextMenuProxyMac::setupServicesMenu(const ContextMenuContextData& context)
{
bool includeEditorServices = context.controlledDataIsEditable();
@@ -321,6 +321,39 @@
[[WKSharingServicePickerDelegate sharedSharingServicePickerDelegate] setPicker:nullptr];
m_servicesMenu = nullptr;
}
+
+ContextMenuItem WebContextMenuProxyMac::shareMenuItem()
+{
+ const WebHitTestResultData& hitTestData = m_context.webHitTestResultData();
+
+ URL absoluteLinkURL;
+ if (!hitTestData.absoluteLinkURL.isEmpty())
+ absoluteLinkURL = URL(ParsedURLString, hitTestData.absoluteLinkURL);
+
+ URL downloadableMediaURL;
+ if (!hitTestData.absoluteMediaURL.isEmpty() && hitTestData.isDownloadableMedia)
+ downloadableMediaURL = URL(ParsedURLString, hitTestData.absoluteMediaURL);
+
+ RetainPtr<NSImage> image;
+ if (hitTestData.imageSharedMemory && hitTestData.imageSize)
+ image = adoptNS([[NSImage alloc] initWithData:[NSData dataWithBytes:(unsigned char*)hitTestData.imageSharedMemory->data() length:hitTestData.imageSize]]);
+
+ ContextMenuItem item = ContextMenuItem::shareMenuItem(absoluteLinkURL, downloadableMediaURL, image.get(), m_context.selectedText());
+
+ NSMenuItem *nsItem = item.platformDescription();
+
+ NSSharingServicePicker *sharingServicePicker = [nsItem representedObject];
+ sharingServicePicker.delegate = [WKSharingServicePickerDelegate sharedSharingServicePickerDelegate];
+
+ [[WKSharingServicePickerDelegate sharedSharingServicePickerDelegate] setFiltersEditingServices:NO];
+ [[WKSharingServicePickerDelegate sharedSharingServicePickerDelegate] setHandlesEditingReplacement:NO];
+ [[WKSharingServicePickerDelegate sharedSharingServicePickerDelegate] setMenuProxy:this];
+
+ // Setting the picker lets the delegate retain it to keep it alive, but this picker is kept alive by the menu item.
+ [[WKSharingServicePickerDelegate sharedSharingServicePickerDelegate] setPicker:nil];
+
+ return item;
+}
#endif
void WebContextMenuProxyMac::populate(const Vector<RefPtr<WebContextMenuItem>>& items)
@@ -345,9 +378,36 @@
populateNSMenu(menu, nsMenuItemVector(items));
}
-void WebContextMenuProxyMac::showContextMenu(const Vector<RefPtr<WebContextMenuItem>>& items)
+void WebContextMenuProxyMac::showContextMenu()
{
+ // Unless this is an image control, give the PageContextMenuClient one last swipe at changing the menu.
+ bool askClientToChangeMenu = true;
#if ENABLE(SERVICE_CONTROLS)
+ if (m_context.isServicesMenu() || m_context.controlledImage())
+ askClientToChangeMenu = false;
+#endif
+
+ Vector<RefPtr<WebContextMenuItem>> proposedAPIItems;
+ for (auto& item : m_context.menuItems()) {
+ if (item.action() != ContextMenuItemTagShareMenu) {
+ proposedAPIItems.append(WebContextMenuItem::create(item));
+ continue;
+ }
+
+#if ENABLE(SERVICE_CONTROLS)
+ proposedAPIItems.append(WebContextMenuItem::create(shareMenuItem()));
+#endif
+ }
+
+ Vector<RefPtr<WebContextMenuItem>> clientItems;
+ bool useProposedItems = true;
+
+ if (askClientToChangeMenu && m_page.contextMenuClient().getContextMenuFromProposedMenu(m_page, proposedAPIItems, clientItems, m_context.webHitTestResultData(), m_page.process().transformHandlesToObjects(m_userData.object()).get()))
+ useProposedItems = false;
+
+ const Vector<RefPtr<WebContextMenuItem>>& items = useProposedItems ? proposedAPIItems : clientItems;
+
+#if ENABLE(SERVICE_CONTROLS)
if (items.isEmpty() && !m_context.isServicesMenu())
return;
#else
Modified: trunk/Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm (191193 => 191194)
--- trunk/Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm 2015-10-16 19:47:04 UTC (rev 191193)
+++ trunk/Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm 2015-10-16 19:52:42 UTC (rev 191194)
@@ -738,41 +738,6 @@
#endif
}
-#if ENABLE(SERVICE_CONTROLS)
-ContextMenuItem WebPageProxy::platformInitializeShareMenuItem(const ContextMenuContextData& contextMenuContextData)
-{
- const WebHitTestResultData& hitTestData = contextMenuContextData.webHitTestResultData();
-
- URL absoluteLinkURL;
- if (!hitTestData.absoluteLinkURL.isEmpty())
- absoluteLinkURL = URL(ParsedURLString, hitTestData.absoluteLinkURL);
-
- URL downloadableMediaURL;
- if (!hitTestData.absoluteMediaURL.isEmpty() && hitTestData.isDownloadableMedia)
- downloadableMediaURL = URL(ParsedURLString, hitTestData.absoluteMediaURL);
-
- RetainPtr<NSImage> image;
- if (hitTestData.imageSharedMemory && hitTestData.imageSize)
- image = adoptNS([[NSImage alloc] initWithData:[NSData dataWithBytes:(unsigned char*)hitTestData.imageSharedMemory->data() length:hitTestData.imageSize]]);
-
- ContextMenuItem item = ContextMenuItem::shareMenuItem(absoluteLinkURL, downloadableMediaURL, image.get(), contextMenuContextData.selectedText());
-
- NSMenuItem *nsItem = item.platformDescription();
-
- NSSharingServicePicker *sharingServicePicker = [nsItem representedObject];
- sharingServicePicker.delegate = [WKSharingServicePickerDelegate sharedSharingServicePickerDelegate];
-
- [[WKSharingServicePickerDelegate sharedSharingServicePickerDelegate] setFiltersEditingServices:NO];
- [[WKSharingServicePickerDelegate sharedSharingServicePickerDelegate] setHandlesEditingReplacement:NO];
- [[WKSharingServicePickerDelegate sharedSharingServicePickerDelegate] setMenuProxy:static_cast<WebContextMenuProxyMac*>(m_activeContextMenu.get())];
-
- // Setting the picker lets the delegate retain it to keep it alive, but this picker is kept alive by the menu item.
- [[WKSharingServicePickerDelegate sharedSharingServicePickerDelegate] setPicker:nil];
-
- return item;
-}
-#endif
-
} // namespace WebKit
#endif // PLATFORM(MAC)