Diff
Modified: trunk/Source/WebKit2/ChangeLog (218260 => 218261)
--- trunk/Source/WebKit2/ChangeLog 2017-06-14 16:17:57 UTC (rev 218260)
+++ trunk/Source/WebKit2/ChangeLog 2017-06-14 16:21:28 UTC (rev 218261)
@@ -1,5 +1,37 @@
2017-06-14 Carlos Garcia Campos <[email protected]>
+ Add API::InjectedBundleClient
+ https://bugs.webkit.org/show_bug.cgi?id=173350
+
+ Reviewed by Alex Christensen.
+
+ It will be used by the GTK+ port instead of the C API.
+
+ * UIProcess/API/APIInjectedBundleClient.h: Copied from Source/WebKit2/UIProcess/WebContextInjectedBundleClient.h.
+ (API::InjectedBundleClient::didReceiveMessageFromInjectedBundle):
+ (API::InjectedBundleClient::didReceiveSynchronousMessageFromInjectedBundle):
+ (API::InjectedBundleClient::getInjectedBundleInitializationUserData):
+ * UIProcess/API/C/WKContext.cpp:
+ (WKContextSetInjectedBundleClient):
+ * UIProcess/API/gtk/WebKitWebContext.cpp:
+ (webkitWebContextDispose):
+ * UIProcess/WebContextInjectedBundleClient.cpp:
+ (WebKit::WebContextInjectedBundleClient::WebContextInjectedBundleClient):
+ (WebKit::WebContextInjectedBundleClient::didReceiveMessageFromInjectedBundle):
+ (WebKit::WebContextInjectedBundleClient::didReceiveSynchronousMessageFromInjectedBundle):
+ (WebKit::WebContextInjectedBundleClient::getInjectedBundleInitializationUserData):
+ * UIProcess/WebContextInjectedBundleClient.h:
+ * UIProcess/WebProcessPool.cpp:
+ (WebKit::WebProcessPool::WebProcessPool):
+ (WebKit::WebProcessPool::setInjectedBundleClient):
+ (WebKit::WebProcessPool::createNewWebProcess):
+ (WebKit::WebProcessPool::handleMessage):
+ (WebKit::WebProcessPool::handleSynchronousMessage):
+ * UIProcess/WebProcessPool.h:
+ * WebKit2.xcodeproj/project.pbxproj:
+
+2017-06-14 Carlos Garcia Campos <[email protected]>
+
Add API::NotificationProvider
https://bugs.webkit.org/show_bug.cgi?id=173309
Copied: trunk/Source/WebKit2/UIProcess/API/APIInjectedBundleClient.h (from rev 218260, trunk/Source/WebKit2/UIProcess/WebContextInjectedBundleClient.h) (0 => 218261)
--- trunk/Source/WebKit2/UIProcess/API/APIInjectedBundleClient.h (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/APIInjectedBundleClient.h 2017-06-14 16:21:28 UTC (rev 218261)
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2017 Igalia S.L.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include "APIObject.h"
+#include <wtf/Forward.h>
+
+namespace WebKit {
+class WebProcessPool;
+}
+
+namespace API {
+
+class InjectedBundleClient {
+public:
+ virtual ~InjectedBundleClient() = default;
+
+ virtual void didReceiveMessageFromInjectedBundle(WebKit::WebProcessPool&, const WTF::String&, API::Object*) { }
+ virtual void didReceiveSynchronousMessageFromInjectedBundle(WebKit::WebProcessPool&, const WTF::String&, API::Object*, RefPtr<API::Object>&) { }
+ virtual RefPtr<API::Object> getInjectedBundleInitializationUserData(WebKit::WebProcessPool&) { return nullptr; }
+};
+
+} // namespace API
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKContext.cpp (218260 => 218261)
--- trunk/Source/WebKit2/UIProcess/API/C/WKContext.cpp 2017-06-14 16:17:57 UTC (rev 218260)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKContext.cpp 2017-06-14 16:21:28 UTC (rev 218261)
@@ -39,6 +39,7 @@
#include "WKContextConfigurationRef.h"
#include "WKRetainPtr.h"
#include "WebCertificateInfo.h"
+#include "WebContextInjectedBundleClient.h"
#include "WebIconDatabase.h"
#include "WebProcessPool.h"
#include <wtf/RefPtr.h>
@@ -92,7 +93,7 @@
void WKContextSetInjectedBundleClient(WKContextRef contextRef, const WKContextInjectedBundleClientBase* wkClient)
{
- toImpl(contextRef)->initializeInjectedBundleClient(wkClient);
+ toImpl(contextRef)->setInjectedBundleClient(std::make_unique<WebContextInjectedBundleClient>(wkClient));
}
void WKContextSetHistoryClient(WKContextRef contextRef, const WKContextHistoryClientBase* wkClient)
Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp (218260 => 218261)
--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp 2017-06-14 16:17:57 UTC (rev 218260)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebContext.cpp 2017-06-14 16:21:28 UTC (rev 218261)
@@ -23,6 +23,7 @@
#include "APIAutomationClient.h"
#include "APICustomProtocolManagerClient.h"
#include "APIDownloadClient.h"
+#include "APIInjectedBundleClient.h"
#include "APIPageConfiguration.h"
#include "APIProcessPoolConfiguration.h"
#include "APIString.h"
@@ -335,7 +336,7 @@
WebKitWebContextPrivate* priv = WEBKIT_WEB_CONTEXT(object)->priv;
if (!priv->clientsDetached) {
priv->clientsDetached = true;
- priv->processPool->initializeInjectedBundleClient(nullptr);
+ priv->processPool->setInjectedBundleClient(nullptr);
priv->processPool->setDownloadClient(nullptr);
priv->processPool->setLegacyCustomProtocolManagerClient(nullptr);
}
Modified: trunk/Source/WebKit2/UIProcess/WebContextInjectedBundleClient.cpp (218260 => 218261)
--- trunk/Source/WebKit2/UIProcess/WebContextInjectedBundleClient.cpp 2017-06-14 16:17:57 UTC (rev 218260)
+++ trunk/Source/WebKit2/UIProcess/WebContextInjectedBundleClient.cpp 2017-06-14 16:21:28 UTC (rev 218261)
@@ -30,34 +30,37 @@
#include "WebProcessPool.h"
#include <wtf/text/WTFString.h>
-using namespace WebCore;
-
namespace WebKit {
-void WebContextInjectedBundleClient::didReceiveMessageFromInjectedBundle(WebProcessPool* processPool, const String& messageName, API::Object* messageBody)
+WebContextInjectedBundleClient::WebContextInjectedBundleClient(const WKContextInjectedBundleClientBase* client)
{
+ initialize(client);
+}
+
+void WebContextInjectedBundleClient::didReceiveMessageFromInjectedBundle(WebProcessPool& processPool, const String& messageName, API::Object* messageBody)
+{
if (!m_client.didReceiveMessageFromInjectedBundle)
return;
- m_client.didReceiveMessageFromInjectedBundle(toAPI(processPool), toAPI(messageName.impl()), toAPI(messageBody), m_client.base.clientInfo);
+ m_client.didReceiveMessageFromInjectedBundle(toAPI(&processPool), toAPI(messageName.impl()), toAPI(messageBody), m_client.base.clientInfo);
}
-void WebContextInjectedBundleClient::didReceiveSynchronousMessageFromInjectedBundle(WebProcessPool* processPool, const String& messageName, API::Object* messageBody, RefPtr<API::Object>& returnData)
+void WebContextInjectedBundleClient::didReceiveSynchronousMessageFromInjectedBundle(WebProcessPool& processPool, const String& messageName, API::Object* messageBody, RefPtr<API::Object>& returnData)
{
if (!m_client.didReceiveSynchronousMessageFromInjectedBundle)
return;
- WKTypeRef returnDataRef = 0;
- m_client.didReceiveSynchronousMessageFromInjectedBundle(toAPI(processPool), toAPI(messageName.impl()), toAPI(messageBody), &returnDataRef, m_client.base.clientInfo);
+ WKTypeRef returnDataRef = nullptr;
+ m_client.didReceiveSynchronousMessageFromInjectedBundle(toAPI(&processPool), toAPI(messageName.impl()), toAPI(messageBody), &returnDataRef, m_client.base.clientInfo);
returnData = adoptRef(toImpl(returnDataRef));
}
-RefPtr<API::Object> WebContextInjectedBundleClient::getInjectedBundleInitializationUserData(WebProcessPool* processPool)
+RefPtr<API::Object> WebContextInjectedBundleClient::getInjectedBundleInitializationUserData(WebProcessPool& processPool)
{
if (!m_client.getInjectedBundleInitializationUserData)
return nullptr;
- return adoptRef(toImpl(m_client.getInjectedBundleInitializationUserData(toAPI(processPool), m_client.base.clientInfo)));
+ return adoptRef(toImpl(m_client.getInjectedBundleInitializationUserData(toAPI(&processPool), m_client.base.clientInfo)));
}
} // namespace WebKit
Modified: trunk/Source/WebKit2/UIProcess/WebContextInjectedBundleClient.h (218260 => 218261)
--- trunk/Source/WebKit2/UIProcess/WebContextInjectedBundleClient.h 2017-06-14 16:17:57 UTC (rev 218260)
+++ trunk/Source/WebKit2/UIProcess/WebContextInjectedBundleClient.h 2017-06-14 16:21:28 UTC (rev 218261)
@@ -26,7 +26,8 @@
#pragma once
#include "APIClient.h"
-#include "WKContext.h"
+#include "APIInjectedBundleClient.h"
+#include "WKContextInjectedBundleClient.h"
#include <wtf/Forward.h>
namespace API {
@@ -41,11 +42,13 @@
class WebProcessPool;
-class WebContextInjectedBundleClient : public API::Client<WKContextInjectedBundleClientBase> {
+class WebContextInjectedBundleClient : public API::InjectedBundleClient, public API::Client<WKContextInjectedBundleClientBase> {
public:
- void didReceiveMessageFromInjectedBundle(WebProcessPool*, const String&, API::Object*);
- void didReceiveSynchronousMessageFromInjectedBundle(WebProcessPool*, const String&, API::Object*, RefPtr<API::Object>& returnData);
- RefPtr<API::Object> getInjectedBundleInitializationUserData(WebProcessPool*);
+ explicit WebContextInjectedBundleClient(const WKContextInjectedBundleClientBase*);
+
+ void didReceiveMessageFromInjectedBundle(WebProcessPool&, const WTF::String&, API::Object*) override;
+ void didReceiveSynchronousMessageFromInjectedBundle(WebProcessPool&, const WTF::String&, API::Object*, RefPtr<API::Object>&) override;
+ RefPtr<API::Object> getInjectedBundleInitializationUserData(WebProcessPool&) override;
};
} // namespace WebKit
Modified: trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp (218260 => 218261)
--- trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp 2017-06-14 16:17:57 UTC (rev 218260)
+++ trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp 2017-06-14 16:21:28 UTC (rev 218261)
@@ -31,6 +31,7 @@
#include "APICustomProtocolManagerClient.h"
#include "APIDownloadClient.h"
#include "APIHTTPCookieStore.h"
+#include "APIInjectedBundleClient.h"
#include "APILegacyContextHistoryClient.h"
#include "APIPageConfiguration.h"
#include "APIProcessPoolConfiguration.h"
@@ -217,6 +218,7 @@
, m_haveInitialEmptyProcess(false)
, m_processWithPageCache(0)
, m_defaultPageGroup(WebPageGroup::createNonNull())
+ , m_injectedBundleClient(std::make_unique<API::InjectedBundleClient>())
, m_automationClient(std::make_unique<API::AutomationClient>())
, m_downloadClient(std::make_unique<API::DownloadClient>())
, m_historyClient(std::make_unique<API::LegacyContextHistoryClient>())
@@ -330,9 +332,12 @@
m_client.initialize(client);
}
-void WebProcessPool::initializeInjectedBundleClient(const WKContextInjectedBundleClientBase* client)
+void WebProcessPool::setInjectedBundleClient(std::unique_ptr<API::InjectedBundleClient>&& client)
{
- m_injectedBundleClient.initialize(client);
+ if (!client)
+ m_injectedBundleClient = std::make_unique<API::InjectedBundleClient>();
+ else
+ m_injectedBundleClient = WTFMove(client);
}
void WebProcessPool::initializeConnectionClient(const WKContextConnectionClientBase* client)
@@ -756,7 +761,7 @@
// Add any platform specific parameters
platformInitializeWebProcess(parameters);
- RefPtr<API::Object> injectedBundleInitializationUserData = m_injectedBundleClient.getInjectedBundleInitializationUserData(this);
+ RefPtr<API::Object> injectedBundleInitializationUserData = m_injectedBundleClient->getInjectedBundleInitializationUserData(*this);
if (!injectedBundleInitializationUserData)
injectedBundleInitializationUserData = m_injectedBundleInitializationUserData;
parameters.initializationUserData = UserData(process->transformObjectsToHandles(injectedBundleInitializationUserData.get()));
@@ -1429,7 +1434,7 @@
auto* webProcessProxy = webProcessProxyFromConnection(connection, m_processes);
if (!webProcessProxy)
return;
- m_injectedBundleClient.didReceiveMessageFromInjectedBundle(this, messageName, webProcessProxy->transformHandlesToObjects(messageBody.object()).get());
+ m_injectedBundleClient->didReceiveMessageFromInjectedBundle(*this, messageName, webProcessProxy->transformHandlesToObjects(messageBody.object()).get());
}
void WebProcessPool::handleSynchronousMessage(IPC::Connection& connection, const String& messageName, const UserData& messageBody, UserData& returnUserData)
@@ -1439,7 +1444,7 @@
return;
RefPtr<API::Object> returnData;
- m_injectedBundleClient.didReceiveSynchronousMessageFromInjectedBundle(this, messageName, webProcessProxy->transformHandlesToObjects(messageBody.object()).get(), returnData);
+ m_injectedBundleClient->didReceiveSynchronousMessageFromInjectedBundle(*this, messageName, webProcessProxy->transformHandlesToObjects(messageBody.object()).get(), returnData);
returnUserData = UserData(webProcessProxy->transformObjectsToHandles(returnData.get()));
}
Modified: trunk/Source/WebKit2/UIProcess/WebProcessPool.h (218260 => 218261)
--- trunk/Source/WebKit2/UIProcess/WebProcessPool.h 2017-06-14 16:17:57 UTC (rev 218260)
+++ trunk/Source/WebKit2/UIProcess/WebProcessPool.h 2017-06-14 16:21:28 UTC (rev 218261)
@@ -42,7 +42,6 @@
#include "VisitedLinkStore.h"
#include "WebContextClient.h"
#include "WebContextConnectionClient.h"
-#include "WebContextInjectedBundleClient.h"
#include "WebProcessProxy.h"
#include <WebCore/LinkHash.h>
#include <WebCore/SessionID.h>
@@ -77,6 +76,7 @@
class CustomProtocolManagerClient;
class DownloadClient;
class HTTPCookieStore;
+class InjectedBundleClient;
class LegacyContextHistoryClient;
class PageConfiguration;
}
@@ -140,7 +140,7 @@
bool dispatchSyncMessage(IPC::Connection&, IPC::Decoder&, std::unique_ptr<IPC::Encoder>&);
void initializeClient(const WKContextClientBase*);
- void initializeInjectedBundleClient(const WKContextInjectedBundleClientBase*);
+ void setInjectedBundleClient(std::unique_ptr<API::InjectedBundleClient>&&);
void initializeConnectionClient(const WKContextConnectionClientBase*);
void setHistoryClient(std::unique_ptr<API::LegacyContextHistoryClient>&&);
void setDownloadClient(std::unique_ptr<API::DownloadClient>&&);
@@ -485,7 +485,7 @@
Ref<WebPageGroup> m_defaultPageGroup;
RefPtr<API::Object> m_injectedBundleInitializationUserData;
- WebContextInjectedBundleClient m_injectedBundleClient;
+ std::unique_ptr<API::InjectedBundleClient> m_injectedBundleClient;
WebContextClient m_client;
WebContextConnectionClient m_connectionClient;
Modified: trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj (218260 => 218261)
--- trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj 2017-06-14 16:17:57 UTC (rev 218260)
+++ trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj 2017-06-14 16:21:28 UTC (rev 218261)
@@ -1217,6 +1217,7 @@
7A821F4C1E2F673900604577 /* LegacyCustomProtocolManagerClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A821F4B1E2F664800604577 /* LegacyCustomProtocolManagerClient.h */; };
7A821F4E1E2F67A800604577 /* LegacyCustomProtocolManagerClient.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7A821F4D1E2F679E00604577 /* LegacyCustomProtocolManagerClient.mm */; };
7A821F501E2F7A7500604577 /* APICustomProtocolManagerClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A821F4F1E2F7A5C00604577 /* APICustomProtocolManagerClient.h */; };
+ 7A8A9D581EF119B0009801AE /* APIInjectedBundleClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A8A9D571EF119AA009801AE /* APIInjectedBundleClient.h */; };
7AAD175F1EA6AF99003B0894 /* WebResourceLoadStatisticsStoreCocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7AAD175E1EA6AF37003B0894 /* WebResourceLoadStatisticsStoreCocoa.mm */; };
7AB6EA451EEAAE3800037B2B /* APIIconDatabaseClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AB6EA441EEAAE2300037B2B /* APIIconDatabaseClient.h */; };
7AB6EA471EEAB6B800037B2B /* APIGeolocationProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AB6EA461EEAB6B000037B2B /* APIGeolocationProvider.h */; };
@@ -3504,6 +3505,7 @@
7A821F4B1E2F664800604577 /* LegacyCustomProtocolManagerClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LegacyCustomProtocolManagerClient.h; sourceTree = "<group>"; };
7A821F4D1E2F679E00604577 /* LegacyCustomProtocolManagerClient.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = LegacyCustomProtocolManagerClient.mm; sourceTree = "<group>"; };
7A821F4F1E2F7A5C00604577 /* APICustomProtocolManagerClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APICustomProtocolManagerClient.h; sourceTree = "<group>"; };
+ 7A8A9D571EF119AA009801AE /* APIInjectedBundleClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APIInjectedBundleClient.h; sourceTree = "<group>"; };
7A9CD8C01C77984900D9F6C7 /* WebResourceLoadStatisticsStore.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebResourceLoadStatisticsStore.cpp; sourceTree = "<group>"; };
7A9CD8C11C77984900D9F6C7 /* WebResourceLoadStatisticsStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebResourceLoadStatisticsStore.h; sourceTree = "<group>"; };
7A9CD8C21C779AD600D9F6C7 /* WebResourceLoadStatisticsStore.messages.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WebResourceLoadStatisticsStore.messages.in; sourceTree = "<group>"; };
@@ -6894,6 +6896,7 @@
51D124821E734AC8002B2820 /* APIHTTPCookieStore.cpp */,
51D124831E734AC8002B2820 /* APIHTTPCookieStore.h */,
5143B2611DDD0DA00014FAC6 /* APIIconLoadingClient.h */,
+ 7A8A9D571EF119AA009801AE /* APIInjectedBundleClient.h */,
7CE4D2061A46775700C7F152 /* APILegacyContextHistoryClient.h */,
1A2464F21891E45100234C5B /* APILoaderClient.h */,
7CD3A4801A5D02FA009623B8 /* APINavigation.cpp */,
@@ -8864,6 +8867,7 @@
BC20528111C94284008F3375 /* WKBundlePage.h in Headers */,
7CF47FF717275B71008ACB91 /* WKBundlePageBanner.h in Headers */,
7CF47FFF17276AE3008ACB91 /* WKBundlePageBannerMac.h in Headers */,
+ 7A8A9D581EF119B0009801AE /* APIInjectedBundleClient.h in Headers */,
1AB474E4184D44980051B622 /* WKBundlePageContextMenuClient.h in Headers */,
1AB474E0184D446A0051B622 /* WKBundlePageEditorClient.h in Headers */,
1AB474E2184D44800051B622 /* WKBundlePageFormClient.h in Headers */,