Title: [218323] trunk/Source/WebKit2
Revision
218323
Author
[email protected]
Date
2017-06-15 02:10:09 -0700 (Thu, 15 Jun 2017)

Log Message

[GTK] Use API::InjectedBundle::Client in WebKitWebExtension
https://bugs.webkit.org/show_bug.cgi?id=173358

Reviewed by Michael Catanzaro.

Instead of the C API.

* WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp:
(webkitWebExtensionCreate):
(webkitWebExtensionPageCreated): Deleted.
(webkitWebExtensionPageDestroy): Deleted.
(webkitWebExtensionDidReceiveMessage): Deleted.
(didCreatePage): Deleted.
(willDestroyPage): Deleted.
(didReceiveMessage): Deleted.
(didReceiveMessageToPage): Deleted.

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (218322 => 218323)


--- trunk/Source/WebKit2/ChangeLog	2017-06-15 08:31:58 UTC (rev 218322)
+++ trunk/Source/WebKit2/ChangeLog	2017-06-15 09:10:09 UTC (rev 218323)
@@ -1,3 +1,22 @@
+2017-06-14  Carlos Garcia Campos  <[email protected]>
+
+        [GTK] Use API::InjectedBundle::Client in WebKitWebExtension
+        https://bugs.webkit.org/show_bug.cgi?id=173358
+
+        Reviewed by Michael Catanzaro.
+
+        Instead of the C API.
+
+        * WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp:
+        (webkitWebExtensionCreate):
+        (webkitWebExtensionPageCreated): Deleted.
+        (webkitWebExtensionPageDestroy): Deleted.
+        (webkitWebExtensionDidReceiveMessage): Deleted.
+        (didCreatePage): Deleted.
+        (willDestroyPage): Deleted.
+        (didReceiveMessage): Deleted.
+        (didReceiveMessageToPage): Deleted.
+
 2017-06-15  Carlos Garcia Campos  <[email protected]>
 
         [GTK] Use API::NotificationProvider

Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp (218322 => 218323)


--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp	2017-06-15 08:31:58 UTC (rev 218322)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp	2017-06-15 09:10:09 UTC (rev 218323)
@@ -21,10 +21,8 @@
 #include "WebKitWebExtension.h"
 
 #include "APIDictionary.h"
+#include "APIInjectedBundleBundleClient.h"
 #include "APIString.h"
-#include "WKBundle.h"
-#include "WKBundleAPICast.h"
-#include "WKBundlePage.h"
 #include "WebKitPrivate.h"
 #include "WebKitWebExtensionPrivate.h"
 #include "WebKitWebPagePrivate.h"
@@ -146,67 +144,51 @@
         WEBKIT_TYPE_WEB_PAGE);
 }
 
-static void webkitWebExtensionPageCreated(WebKitWebExtension* extension, WebPage* page)
-{
-    GRefPtr<WebKitWebPage> webPage = adoptGRef(webkitWebPageCreate(page));
-    extension->priv->pages.add(page, webPage);
-    g_signal_emit(extension, signals[PAGE_CREATED], 0, webPage.get());
-}
+class WebExtensionInjectedBundleClient final : public API::InjectedBundle::Client {
+public:
+    explicit WebExtensionInjectedBundleClient(WebKitWebExtension* extension)
+        : m_extension(extension)
+    {
+    }
 
-static void webkitWebExtensionPageDestroy(WebKitWebExtension* extension, WebPage* page)
-{
-    extension->priv->pages.remove(page);
-}
+private:
+    void didCreatePage(InjectedBundle&, WebPage& page) override
+    {
+        GRefPtr<WebKitWebPage> webPage = adoptGRef(webkitWebPageCreate(&page));
+        m_extension->priv->pages.add(&page, webPage);
+        g_signal_emit(m_extension, signals[PAGE_CREATED], 0, webPage.get());
+    }
 
-static void webkitWebExtensionDidReceiveMessage(WebKitWebExtension*, const String& messageName, API::Dictionary& message)
-{
-    if (messageName == String::fromUTF8("PrefetchDNS")) {
-        API::String* hostname = static_cast<API::String*>(message.get(String::fromUTF8("Hostname")));
-        WebProcess::singleton().prefetchDNS(hostname->string());
-    } else
-        ASSERT_NOT_REACHED();
-}
+    void willDestroyPage(InjectedBundle&, WebPage& page) override
+    {
+        m_extension->priv->pages.remove(&page);
+    }
 
-static void didCreatePage(WKBundleRef, WKBundlePageRef page, const void* clientInfo)
-{
-    webkitWebExtensionPageCreated(WEBKIT_WEB_EXTENSION(clientInfo), toImpl(page));
-}
+    void didReceiveMessage(InjectedBundle&, const String& messageName, API::Object* messageBody) override
+    {
+        ASSERT(messageBody->type() == API::Object::Type::Dictionary);
+        API::Dictionary& message = *static_cast<API::Dictionary*>(messageBody);
+        if (messageName == String::fromUTF8("PrefetchDNS")) {
+            API::String* hostname = static_cast<API::String*>(message.get(String::fromUTF8("Hostname")));
+            WebProcess::singleton().prefetchDNS(hostname->string());
+        } else
+            ASSERT_NOT_REACHED();
+    }
 
-static void willDestroyPage(WKBundleRef, WKBundlePageRef page, const void* clientInfo)
-{
-    webkitWebExtensionPageDestroy(WEBKIT_WEB_EXTENSION(clientInfo), toImpl(page));
-}
+    void didReceiveMessageToPage(InjectedBundle&, WebPage& page, const String& messageName, API::Object* messageBody) override
+    {
+        ASSERT(messageBody->type() == API::Object::Type::Dictionary);
+        if (auto* webPage = m_extension->priv->pages.get(&page))
+            webkitWebPageDidReceiveMessage(webPage, messageName, *static_cast<API::Dictionary*>(messageBody));
+    }
 
-static void didReceiveMessage(WKBundleRef, WKStringRef name, WKTypeRef messageBody, const void* clientInfo)
-{
-    ASSERT(WKGetTypeID(messageBody) == WKDictionaryGetTypeID());
-    webkitWebExtensionDidReceiveMessage(WEBKIT_WEB_EXTENSION(clientInfo), toImpl(name)->string(), *toImpl(static_cast<WKDictionaryRef>(messageBody)));
-}
+    WebKitWebExtension* m_extension;
+};
 
-static void didReceiveMessageToPage(WKBundleRef, WKBundlePageRef page, WKStringRef name, WKTypeRef messageBody, const void* clientInfo)
-{
-    ASSERT(WKGetTypeID(messageBody) == WKDictionaryGetTypeID());
-    if (WebKitWebPage* webPage = WEBKIT_WEB_EXTENSION(clientInfo)->priv->pages.get(toImpl(page)))
-        webkitWebPageDidReceiveMessage(webPage, toImpl(name)->string(), *toImpl(static_cast<WKDictionaryRef>(messageBody)));
-}
-
 WebKitWebExtension* webkitWebExtensionCreate(InjectedBundle* bundle)
 {
     WebKitWebExtension* extension = WEBKIT_WEB_EXTENSION(g_object_new(WEBKIT_TYPE_WEB_EXTENSION, NULL));
-
-    WKBundleClientV1 wkBundleClient = {
-        {
-            1, // version
-            extension, // clientInfo
-        },
-        didCreatePage,
-        willDestroyPage,
-        0, // didInitializePageGroup
-        didReceiveMessage,
-        didReceiveMessageToPage
-    };
-    WKBundleSetClient(toAPI(bundle), &wkBundleClient.base);
-
+    bundle->setClient(std::make_unique<WebExtensionInjectedBundleClient>(extension));
     return extension;
 }
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to