Title: [191402] trunk/Source/WebKit2
Revision
191402
Author
ander...@apple.com
Date
2015-10-21 14:26:41 -0700 (Wed, 21 Oct 2015)

Log Message

WebContextMenuProxy doesn't have to be ref-counted
https://bugs.webkit.org/show_bug.cgi?id=150415

Reviewed by Tim Horton.

Change WebContextMenuProxy to not inherit from RefCounted. Instead of using RefPtr, use std::unique_ptr.
Get rid of cancelTracking and hideContextMenu and dismiss the menu whenever the menu proxy is destroyed.
Also, rename showContextMenu to show.

* UIProcess/PageClient.h:
* UIProcess/WebContextMenuProxy.h:
(WebKit::WebContextMenuProxy::cancelTracking): Deleted.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::close):
(WebKit::WebPageProxy::internalShowContextMenu):
* UIProcess/WebPageProxy.h:
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::createContextMenuProxy):
* UIProcess/mac/PageClientImpl.h:
* UIProcess/mac/PageClientImpl.mm:
(WebKit::PageClientImpl::createContextMenuProxy):
* UIProcess/mac/WebContextMenuProxyMac.h:
(WebKit::WebContextMenuProxyMac::create): Deleted.
* UIProcess/mac/WebContextMenuProxyMac.mm:
(WebKit::WebContextMenuProxyMac::~WebContextMenuProxyMac):
(WebKit::WebContextMenuProxyMac::show):
(WebKit::WebContextMenuProxyMac::showContextMenu): Deleted.
(WebKit::WebContextMenuProxyMac::hideContextMenu): Deleted.
(WebKit::WebContextMenuProxyMac::cancelTracking): Deleted.

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (191401 => 191402)


--- trunk/Source/WebKit2/ChangeLog	2015-10-21 21:04:43 UTC (rev 191401)
+++ trunk/Source/WebKit2/ChangeLog	2015-10-21 21:26:41 UTC (rev 191402)
@@ -1,5 +1,38 @@
 2015-10-21  Anders Carlsson  <ander...@apple.com>
 
+        WebContextMenuProxy doesn't have to be ref-counted
+        https://bugs.webkit.org/show_bug.cgi?id=150415
+
+        Reviewed by Tim Horton.
+
+        Change WebContextMenuProxy to not inherit from RefCounted. Instead of using RefPtr, use std::unique_ptr.
+        Get rid of cancelTracking and hideContextMenu and dismiss the menu whenever the menu proxy is destroyed.
+        Also, rename showContextMenu to show.
+
+        * UIProcess/PageClient.h:
+        * UIProcess/WebContextMenuProxy.h:
+        (WebKit::WebContextMenuProxy::cancelTracking): Deleted.
+        * UIProcess/WebPageProxy.cpp:
+        (WebKit::WebPageProxy::close):
+        (WebKit::WebPageProxy::internalShowContextMenu):
+        * UIProcess/WebPageProxy.h:
+        * UIProcess/ios/PageClientImplIOS.h:
+        * UIProcess/ios/PageClientImplIOS.mm:
+        (WebKit::PageClientImpl::createContextMenuProxy):
+        * UIProcess/mac/PageClientImpl.h:
+        * UIProcess/mac/PageClientImpl.mm:
+        (WebKit::PageClientImpl::createContextMenuProxy):
+        * UIProcess/mac/WebContextMenuProxyMac.h:
+        (WebKit::WebContextMenuProxyMac::create): Deleted.
+        * UIProcess/mac/WebContextMenuProxyMac.mm:
+        (WebKit::WebContextMenuProxyMac::~WebContextMenuProxyMac):
+        (WebKit::WebContextMenuProxyMac::show):
+        (WebKit::WebContextMenuProxyMac::showContextMenu): Deleted.
+        (WebKit::WebContextMenuProxyMac::hideContextMenu): Deleted.
+        (WebKit::WebContextMenuProxyMac::cancelTracking): Deleted.
+
+2015-10-21  Anders Carlsson  <ander...@apple.com>
+
         Stop using a popup menu button cell(!) for context menus
         https://bugs.webkit.org/show_bug.cgi?id=150413
 

Modified: trunk/Source/WebKit2/UIProcess/PageClient.h (191401 => 191402)


--- trunk/Source/WebKit2/UIProcess/PageClient.h	2015-10-21 21:04:43 UTC (rev 191401)
+++ trunk/Source/WebKit2/UIProcess/PageClient.h	2015-10-21 21:26:41 UTC (rev 191402)
@@ -224,7 +224,7 @@
 
     virtual RefPtr<WebPopupMenuProxy> createPopupMenuProxy(WebPageProxy&) = 0;
 #if ENABLE(CONTEXT_MENUS)
-    virtual RefPtr<WebContextMenuProxy> createContextMenuProxy(WebPageProxy&, const ContextMenuContextData&, const UserData&) = 0;
+    virtual std::unique_ptr<WebContextMenuProxy> createContextMenuProxy(WebPageProxy&, const ContextMenuContextData&, const UserData&) = 0;
 #endif
 
 #if ENABLE(INPUT_TYPE_COLOR)

Modified: trunk/Source/WebKit2/UIProcess/WebContextMenuProxy.h (191401 => 191402)


--- trunk/Source/WebKit2/UIProcess/WebContextMenuProxy.h	2015-10-21 21:04:43 UTC (rev 191401)
+++ trunk/Source/WebKit2/UIProcess/WebContextMenuProxy.h	2015-10-21 21:26:41 UTC (rev 191402)
@@ -36,13 +36,11 @@
 
 class WebContextMenuItem;
 
-class WebContextMenuProxy : public RefCounted<WebContextMenuProxy> {
+class WebContextMenuProxy {
 public:
     virtual ~WebContextMenuProxy();
 
-    virtual void showContextMenu() = 0;
-    virtual void hideContextMenu() = 0;
-    virtual void cancelTracking() { }
+    virtual void show() = 0;
 
 protected:
     WebContextMenuProxy(const ContextMenuContextData&, const UserData&);

Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (191401 => 191402)


--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp	2015-10-21 21:04:43 UTC (rev 191401)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp	2015-10-21 21:26:41 UTC (rev 191402)
@@ -817,8 +817,7 @@
         m_activePopupMenu->cancelTracking();
 
 #if ENABLE(CONTEXT_MENUS)
-    if (m_activeContextMenu)
-        m_activeContextMenu->cancelTracking();
+    m_activeContextMenu = nullptr;
 #endif
 
     m_backForwardList->pageClosed();
@@ -4197,11 +4196,6 @@
 {
     m_activeContextMenuContextData = contextMenuContextData;
 
-    if (!m_contextMenuClient->hideContextMenu(*this) && m_activeContextMenu) {
-        m_activeContextMenu->hideContextMenu();
-        m_activeContextMenu = nullptr;
-    }
-
     m_activeContextMenu = m_pageClient.createContextMenuProxy(*this, contextMenuContextData, userData);
     if (!m_activeContextMenu)
         return;
@@ -4209,7 +4203,7 @@
     // Since showContextMenu() can spin a nested run loop we need to turn off the responsiveness timer.
     m_process->responsivenessTimer()->stop();
 
-    m_activeContextMenu->showContextMenu();
+    m_activeContextMenu->show();
 }
 
 void WebPageProxy::contextMenuItemSelected(const WebContextMenuItemData& item)

Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (191401 => 191402)


--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h	2015-10-21 21:04:43 UTC (rev 191401)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h	2015-10-21 21:26:41 UTC (rev 191402)
@@ -1546,7 +1546,7 @@
 
     RefPtr<WebPopupMenuProxy> m_activePopupMenu;
 #if ENABLE(CONTEXT_MENUS)
-    RefPtr<WebContextMenuProxy> m_activeContextMenu;
+    std::unique_ptr<WebContextMenuProxy> m_activeContextMenu;
     ContextMenuContextData m_activeContextMenuContextData;
 #endif
     RefPtr<API::HitTestResult> m_lastMouseMoveHitTestResult;

Modified: trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.h (191401 => 191402)


--- trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.h	2015-10-21 21:04:43 UTC (rev 191401)
+++ trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.h	2015-10-21 21:26:41 UTC (rev 191402)
@@ -97,7 +97,7 @@
 #endif
     virtual RefPtr<WebPopupMenuProxy> createPopupMenuProxy(WebPageProxy&) override;
 #if ENABLE(CONTEXT_MENUS)
-    virtual RefPtr<WebContextMenuProxy> createContextMenuProxy(WebPageProxy&, const ContextMenuContextData&, const UserData&) override;
+    virtual std::unique_ptr<WebContextMenuProxy> createContextMenuProxy(WebPageProxy&, const ContextMenuContextData&, const UserData&) override;
 #endif
     virtual void setTextIndicator(Ref<WebCore::TextIndicator>, WebCore::TextIndicatorWindowLifetime) override;
     virtual void clearTextIndicator(WebCore::TextIndicatorWindowDismissalAnimation) override;

Modified: trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.mm (191401 => 191402)


--- trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.mm	2015-10-21 21:04:43 UTC (rev 191401)
+++ trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.mm	2015-10-21 21:26:41 UTC (rev 191402)
@@ -444,7 +444,7 @@
 }
 
 #if ENABLE(CONTEXT_MENUS)
-RefPtr<WebContextMenuProxy> PageClientImpl::createContextMenuProxy(WebPageProxy&, const UserData&)
+std::unique_ptr<WebContextMenuProxy> PageClientImpl::createContextMenuProxy(WebPageProxy&, const UserData&)
 {
     return nullptr;
 }

Modified: trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.h (191401 => 191402)


--- trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.h	2015-10-21 21:04:43 UTC (rev 191401)
+++ trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.h	2015-10-21 21:26:41 UTC (rev 191402)
@@ -127,7 +127,7 @@
 
     virtual RefPtr<WebPopupMenuProxy> createPopupMenuProxy(WebPageProxy&) override;
 #if ENABLE(CONTEXT_MENUS)
-    virtual RefPtr<WebContextMenuProxy> createContextMenuProxy(WebPageProxy&, const ContextMenuContextData&, const UserData&) override;
+    virtual std::unique_ptr<WebContextMenuProxy> createContextMenuProxy(WebPageProxy&, const ContextMenuContextData&, const UserData&) override;
 #endif
 
 #if ENABLE(INPUT_TYPE_COLOR)

Modified: trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.mm (191401 => 191402)


--- trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.mm	2015-10-21 21:04:43 UTC (rev 191401)
+++ trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.mm	2015-10-21 21:26:41 UTC (rev 191402)
@@ -500,9 +500,9 @@
 }
 
 #if ENABLE(CONTEXT_MENUS)
-RefPtr<WebContextMenuProxy> PageClientImpl::createContextMenuProxy(WebPageProxy& page, const ContextMenuContextData& context, const UserData& userData)
+std::unique_ptr<WebContextMenuProxy> PageClientImpl::createContextMenuProxy(WebPageProxy& page, const ContextMenuContextData& context, const UserData& userData)
 {
-    return WebContextMenuProxyMac::create(m_wkView, page, context, userData);
+    return std::make_unique<WebContextMenuProxyMac>(m_wkView, page, context, userData);
 }
 #endif
 

Modified: trunk/Source/WebKit2/UIProcess/mac/WebContextMenuProxyMac.h (191401 => 191402)


--- trunk/Source/WebKit2/UIProcess/mac/WebContextMenuProxyMac.h	2015-10-21 21:04:43 UTC (rev 191401)
+++ trunk/Source/WebKit2/UIProcess/mac/WebContextMenuProxyMac.h	2015-10-21 21:26:41 UTC (rev 191402)
@@ -44,17 +44,9 @@
 
 class WebContextMenuProxyMac : public WebContextMenuProxy {
 public:
-    static Ref<WebContextMenuProxyMac> create(WKView* webView, WebPageProxy& page, const ContextMenuContextData& context, const UserData& userData)
-    {
-        return adoptRef(*new WebContextMenuProxyMac(webView, page, context, userData));
-    }
+    WebContextMenuProxyMac(WKView*, WebPageProxy&, const ContextMenuContextData&, const UserData&);
     ~WebContextMenuProxyMac();
 
-    virtual void showContextMenu() override;
-
-    virtual void hideContextMenu() override;
-    virtual void cancelTracking() override;
-    
     void contextMenuItemSelected(const WebContextMenuItemData&);
 
 #if ENABLE(SERVICE_CONTROLS)
@@ -65,7 +57,7 @@
     NSWindow *window() const;
 
 private:
-    WebContextMenuProxyMac(WKView*, WebPageProxy&, const ContextMenuContextData&, const UserData&);
+    virtual void show() override;
 
     void populate(const Vector<RefPtr<WebContextMenuItem>>&);
 

Modified: trunk/Source/WebKit2/UIProcess/mac/WebContextMenuProxyMac.mm (191401 => 191402)


--- trunk/Source/WebKit2/UIProcess/mac/WebContextMenuProxyMac.mm	2015-10-21 21:04:43 UTC (rev 191401)
+++ trunk/Source/WebKit2/UIProcess/mac/WebContextMenuProxyMac.mm	2015-10-21 21:26:41 UTC (rev 191402)
@@ -160,6 +160,7 @@
 
 WebContextMenuProxyMac::~WebContextMenuProxyMac()
 {
+    [m_menu cancelTracking];
 }
 
 void WebContextMenuProxyMac::contextMenuItemSelected(const WebContextMenuItemData& item)
@@ -374,7 +375,7 @@
     populateNSMenu(m_menu.get(), nsMenuItemVector(items));
 }
 
-void WebContextMenuProxyMac::showContextMenu()
+void WebContextMenuProxyMac::show()
 {
     // Unless this is an image control, give the PageContextMenuClient one last swipe at changing the menu.
     bool askClientToChangeMenu = true;
@@ -422,23 +423,11 @@
         [[WKSharingServicePickerDelegate sharedSharingServicePickerDelegate] setMenuProxy:this];
 #endif
 
-    Ref<WebContextMenuProxyMac> protect(*this);
+    Ref<WebPageProxy> protect(m_page);
 
     [m_menu popUpMenuPositioningItem:nil atLocation:m_context.menuLocation() inView:m_webView];
-
-    hideContextMenu();
 }
 
-void WebContextMenuProxyMac::hideContextMenu()
-{
-    [m_menu cancelTracking];
-}
-
-void WebContextMenuProxyMac::cancelTracking()
-{
-    [m_menu cancelTracking];
-}
-
 NSWindow *WebContextMenuProxyMac::window() const
 {
     return [m_webView window];
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to