Diff
Modified: trunk/Source/WebKit2/ChangeLog (138510 => 138511)
--- trunk/Source/WebKit2/ChangeLog 2012-12-27 18:57:59 UTC (rev 138510)
+++ trunk/Source/WebKit2/ChangeLog 2012-12-27 19:13:00 UTC (rev 138511)
@@ -1,3 +1,41 @@
+2012-12-26 Sam Weinig <[email protected]>
+
+ Add an initial stab at a generic supplemental interface for WebProcess
+ https://bugs.webkit.org/show_bug.cgi?id=105779
+
+ Reviewed by Darin Adler.
+
+ This starts the process of adding a mechanism to WebProcess to extend its
+ functionality without actually changing it (similar to the Supplement
+ mechanism in WebCore). This will make it possible for ports to add functionality
+ that might not be needed or wanted by other ports.
+
+ * WebKit2.xcodeproj/project.pbxproj:
+ * WebProcess/KeyValueStorage/WebKeyValueStorageManager.cpp:
+ (WebKit::WebKeyValueStorageManager::initialize):
+ (WebKit):
+ * WebProcess/KeyValueStorage/WebKeyValueStorageManager.h:
+ (WebKeyValueStorageManager):
+ (WebKit::WebKeyValueStorageManager::localStorageDirectory):
+ * WebProcess/WebCoreSupport/WebDatabaseManager.cpp:
+ (WebKit::WebDatabaseManager::WebDatabaseManager):
+ (WebKit::WebDatabaseManager::initialize):
+ * WebProcess/WebCoreSupport/WebDatabaseManager.h:
+ (WebDatabaseManager):
+ * WebProcess/WebPage/WebPage.cpp:
+ (WebKit::WebPage::updatePreferences):
+ * WebProcess/WebProcess.cpp:
+ (WebKit::WebProcess::initializeWebProcess):
+ (WebKit::WebProcess::keyValueStorageManager):
+ (WebKit):
+ * WebProcess/WebProcess.h:
+ (WebProcess):
+ * WebProcess/WebProcessSupplement.h: Added.
+ (WebKit):
+ (WebProcessSupplement):
+ (WebKit::WebProcessSupplement::~WebProcessSupplement):
+ (WebKit::WebProcessSupplement::initialize):
+
2012-12-27 Christophe Dumez <[email protected]>
[EFL][WK2] Regression(135935) layout tests snapshots are flaky
Modified: trunk/Source/WebKit2/GNUmakefile.list.am (138510 => 138511)
--- trunk/Source/WebKit2/GNUmakefile.list.am 2012-12-27 18:57:59 UTC (rev 138510)
+++ trunk/Source/WebKit2/GNUmakefile.list.am 2012-12-27 19:13:00 UTC (rev 138511)
@@ -1207,6 +1207,7 @@
Source/WebKit2/WebProcess/WebPage/WebUndoStep.h \
Source/WebKit2/WebProcess/WebConnectionToUIProcess.cpp \
Source/WebKit2/WebProcess/WebConnectionToUIProcess.h \
+ Source/WebKit2/WebProcess/WebProcessSupplement.h \
Source/WebKit2/WebProcess/WebProcess.cpp \
Source/WebKit2/WebProcess/WebProcess.h
Modified: trunk/Source/WebKit2/Target.pri (138510 => 138511)
--- trunk/Source/WebKit2/Target.pri 2012-12-27 18:57:59 UTC (rev 138510)
+++ trunk/Source/WebKit2/Target.pri 2012-12-27 19:13:00 UTC (rev 138511)
@@ -389,6 +389,7 @@
WebProcess/WebPage/WebPageGroupProxy.h \
WebProcess/WebPage/WebUndoStep.h \
WebProcess/WebConnectionToUIProcess.h \
+ WebProcess/WebProcessSupplement.h \
WebProcess/WebProcess.h \
WebProcess/qt/QtBuiltinBundle.h \
WebProcess/qt/QtBuiltinBundlePage.h \
Modified: trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj (138510 => 138511)
--- trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj 2012-12-27 18:57:59 UTC (rev 138510)
+++ trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj 2012-12-27 19:13:00 UTC (rev 138511)
@@ -934,6 +934,7 @@
BCDE0ABF13272708001259FB /* PluginProcess.app in CopyFiles */ = {isa = PBXBuildFile; fileRef = BCDE094213272496001259FB /* PluginProcess.app */; };
BCE0937714FB128C001138D9 /* LayerHostingContext.mm in Sources */ = {isa = PBXBuildFile; fileRef = BCE0937514FB128B001138D9 /* LayerHostingContext.mm */; };
BCE0937814FB128C001138D9 /* LayerHostingContext.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE0937614FB128B001138D9 /* LayerHostingContext.h */; };
+ BCE0E425168B7A280057E66A /* WebProcessSupplement.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE0E424168B7A280057E66A /* WebProcessSupplement.h */; };
BCE17B7D1381F1170012A641 /* WKPagePrivateMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCE17B7B1381F1170012A641 /* WKPagePrivateMac.cpp */; };
BCE17B7E1381F1170012A641 /* WKPagePrivateMac.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE17B7C1381F1170012A641 /* WKPagePrivateMac.h */; settings = {ATTRIBUTES = (Private, ); }; };
BCE2315D122C30CA00D5C35A /* WebURLRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE2315B122C30CA00D5C35A /* WebURLRequest.h */; };
@@ -2202,6 +2203,7 @@
BCDE094213272496001259FB /* PluginProcess.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = PluginProcess.app; sourceTree = BUILT_PRODUCTS_DIR; };
BCE0937514FB128B001138D9 /* LayerHostingContext.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = LayerHostingContext.mm; sourceTree = "<group>"; };
BCE0937614FB128B001138D9 /* LayerHostingContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LayerHostingContext.h; sourceTree = "<group>"; };
+ BCE0E424168B7A280057E66A /* WebProcessSupplement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebProcessSupplement.h; sourceTree = "<group>"; };
BCE17B7B1381F1170012A641 /* WKPagePrivateMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WKPagePrivateMac.cpp; path = mac/WKPagePrivateMac.cpp; sourceTree = "<group>"; };
BCE17B7C1381F1170012A641 /* WKPagePrivateMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WKPagePrivateMac.h; path = mac/WKPagePrivateMac.h; sourceTree = "<group>"; };
BCE2315B122C30CA00D5C35A /* WebURLRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebURLRequest.h; sourceTree = "<group>"; };
@@ -3377,6 +3379,7 @@
1A6FA31511E3923600DB1371 /* WebKitMain.cpp */,
BC111AE3112F5C2600337BAB /* WebProcess.cpp */,
BC032D9110F437AF0058C15A /* WebProcess.h */,
+ BCE0E424168B7A280057E66A /* WebProcessSupplement.h */,
BC3066B9125A436300E71278 /* WebProcess.messages.in */,
1A6FA01F11E1528700DB1371 /* WebProcessMain.h */,
);
@@ -5020,6 +5023,7 @@
1AD25E96167AB08100EA9BCD /* DownloadProxyMap.h in Headers */,
2989A414167D184B004F96D2 /* CustomProtocolManager.h in Headers */,
31A505FA1680025500A930EB /* WebContextClient.h in Headers */,
+ BCE0E425168B7A280057E66A /* WebProcessSupplement.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Modified: trunk/Source/WebKit2/WebProcess/KeyValueStorage/WebKeyValueStorageManager.cpp (138510 => 138511)
--- trunk/Source/WebKit2/WebProcess/KeyValueStorage/WebKeyValueStorageManager.cpp 2012-12-27 18:57:59 UTC (rev 138510)
+++ trunk/Source/WebKit2/WebProcess/KeyValueStorage/WebKeyValueStorageManager.cpp 2012-12-27 19:13:00 UTC (rev 138511)
@@ -30,6 +30,7 @@
#include "WebKeyValueStorageManagerMessages.h"
#include "WebKeyValueStorageManagerProxyMessages.h"
#include "WebProcess.h"
+#include "WebProcessCreationParameters.h"
#include <WebCore/SecurityOrigin.h>
#include <WebCore/SecurityOriginHash.h>
#include <WebCore/StorageTracker.h>
@@ -44,6 +45,12 @@
m_process->addMessageReceiver(Messages::WebKeyValueStorageManager::messageReceiverName(), this);
}
+void WebKeyValueStorageManager::initialize(const WebProcessCreationParameters& parameters)
+{
+ StorageTracker::initializeTracker(parameters.localStorageDirectory, this);
+ m_localStorageDirectory = parameters.localStorageDirectory;
+}
+
void WebKeyValueStorageManager::didReceiveMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::MessageDecoder& decoder)
{
didReceiveWebKeyValueStorageManagerMessage(connection, messageID, decoder);
Modified: trunk/Source/WebKit2/WebProcess/KeyValueStorage/WebKeyValueStorageManager.h (138510 => 138511)
--- trunk/Source/WebKit2/WebProcess/KeyValueStorage/WebKeyValueStorageManager.h 2012-12-27 18:57:59 UTC (rev 138510)
+++ trunk/Source/WebKit2/WebProcess/KeyValueStorage/WebKeyValueStorageManager.h 2012-12-27 19:13:00 UTC (rev 138511)
@@ -26,23 +26,30 @@
#ifndef WebKeyValueStorageManager_h
#define WebKeyValueStorageManager_h
-#include "MessageReceiver.h"
+#include "WebProcessSupplement.h"
#include <WebCore/StorageTrackerClient.h>
#include <wtf/Noncopyable.h>
#include <wtf/Vector.h>
+#include <wtf/text/WTFString.h>
namespace WebKit {
class WebProcess;
struct SecurityOriginData;
-class WebKeyValueStorageManager : public WebCore::StorageTrackerClient, private CoreIPC::MessageReceiver {
+class WebKeyValueStorageManager : public WebCore::StorageTrackerClient, public WebProcessSupplement {
WTF_MAKE_NONCOPYABLE(WebKeyValueStorageManager);
public:
explicit WebKeyValueStorageManager(WebProcess*);
+ // WebProcessSupplement
+ virtual void initialize(const WebProcessCreationParameters&) OVERRIDE;
+
+ const String& localStorageDirectory() const { return m_localStorageDirectory; }
+
private:
- void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::MessageDecoder&) OVERRIDE;
+ // CoreIPC::MessageReceiver
+ virtual void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::MessageDecoder&) OVERRIDE;
void didReceiveWebKeyValueStorageManagerMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::MessageDecoder&);
void getKeyValueStorageOrigins(uint64_t callbackID);
@@ -56,7 +63,7 @@
virtual void didFinishLoadingOrigins() OVERRIDE;
Vector<uint64_t> m_originsRequestCallbackIDs;
-
+ String m_localStorageDirectory;
WebProcess* m_process;
};
Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebDatabaseManager.cpp (138510 => 138511)
--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebDatabaseManager.cpp 2012-12-27 18:57:59 UTC (rev 138510)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebDatabaseManager.cpp 2012-12-27 19:13:00 UTC (rev 138511)
@@ -33,6 +33,7 @@
#include "WebDatabaseManagerMessages.h"
#include "WebDatabaseManagerProxyMessages.h"
#include "WebProcess.h"
+#include "WebProcessCreationParameters.h"
#include <WebCore/DatabaseDetails.h>
#include <WebCore/DatabaseManager.h>
#include <WebCore/SecurityOrigin.h>
@@ -45,12 +46,11 @@
: m_process(process)
{
m_process->addMessageReceiver(Messages::WebDatabaseManager::messageReceiverName(), this);
-
}
-void WebDatabaseManager::initialize(const String& databaseDirectory)
+void WebDatabaseManager::initialize(const WebProcessCreationParameters& parameters)
{
- DatabaseManager::manager().initialize(databaseDirectory);
+ DatabaseManager::manager().initialize(parameters.databaseDirectory);
DatabaseManager::manager().setClient(this);
}
Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebDatabaseManager.h (138510 => 138511)
--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebDatabaseManager.h 2012-12-27 18:57:59 UTC (rev 138510)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebDatabaseManager.h 2012-12-27 19:13:00 UTC (rev 138511)
@@ -28,7 +28,7 @@
#if ENABLE(SQL_DATABASE)
-#include "MessageReceiver.h"
+#include "WebProcessSupplement.h"
#include <WebCore/DatabaseManagerClient.h>
#include <stdint.h>
#include <wtf/Noncopyable.h>
@@ -37,12 +37,14 @@
class WebProcess;
-class WebDatabaseManager : public WebCore::DatabaseManagerClient, private CoreIPC::MessageReceiver {
+class WebDatabaseManager : public WebCore::DatabaseManagerClient, public WebProcessSupplement {
WTF_MAKE_NONCOPYABLE(WebDatabaseManager);
public:
- WebDatabaseManager(WebProcess*);
- void initialize(const String& databaseDirectory);
+ explicit WebDatabaseManager(WebProcess*);
+ // WebProcessSupplement
+ virtual void initialize(const WebProcessCreationParameters&) OVERRIDE;
+
void setQuotaForOrigin(const String& originIdentifier, unsigned long long quota) const;
void deleteAllDatabases() const;
Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (138510 => 138511)
--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp 2012-12-27 18:57:59 UTC (rev 138510)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp 2012-12-27 19:13:00 UTC (rev 138511)
@@ -68,6 +68,7 @@
#include "WebInspector.h"
#include "WebInspectorClient.h"
#include "WebInspectorMessages.h"
+#include "WebKeyValueStorageManager.h"
#include "WebNotificationClient.h"
#include "WebOpenPanelResultListener.h"
#include "WebPageCreationParameters.h"
@@ -107,6 +108,7 @@
#include <WebCore/PlatformKeyboardEvent.h>
#include <WebCore/PluginDocument.h>
#include <WebCore/PrintContext.h>
+#include <WebCore/Range.h>
#include <WebCore/RenderLayer.h>
#include <WebCore/RenderTreeAsText.h>
#include <WebCore/RenderView.h>
@@ -122,13 +124,11 @@
#include <WebCore/SharedBuffer.h>
#include <WebCore/SubstituteData.h>
#include <WebCore/TextIterator.h>
+#include <WebCore/VisiblePosition.h>
#include <WebCore/markup.h>
#include <runtime/JSLock.h>
#include <runtime/JSValue.h>
-#include <WebCore/Range.h>
-#include <WebCore/VisiblePosition.h>
-
#if ENABLE(MHTML)
#include <WebCore/MHTMLArchive.h>
#endif
@@ -2343,7 +2343,7 @@
settings->setFullScreenEnabled(store.getBoolValueForKey(WebPreferencesKey::fullScreenEnabledKey()));
#endif
- settings->setLocalStorageDatabasePath(WebProcess::shared().localStorageDirectory());
+ settings->setLocalStorageDatabasePath(WebProcess::shared().keyValueStorageManager().localStorageDirectory());
#if USE(AVFOUNDATION)
settings->setAVFoundationEnabled(store.getBoolValueForKey(WebPreferencesKey::isAVFoundationEnabledKey()));
Modified: trunk/Source/WebKit2/WebProcess/WebProcess.cpp (138510 => 138511)
--- trunk/Source/WebKit2/WebProcess/WebProcess.cpp 2012-12-27 18:57:59 UTC (rev 138510)
+++ trunk/Source/WebKit2/WebProcess/WebProcess.cpp 2012-12-27 19:13:00 UTC (rev 138511)
@@ -254,16 +254,14 @@
}
#if ENABLE(SQL_DATABASE)
- // Make sure the WebDatabaseManager is initialized so that the Database directory is set.
- m_databaseManager->initialize(parameters.databaseDirectory);
+ m_databaseManager->initialize(parameters);
#endif
#if ENABLE(ICONDATABASE)
m_iconDatabaseProxy->setEnabled(parameters.iconDatabaseEnabled);
#endif
- StorageTracker::initializeTracker(parameters.localStorageDirectory, m_keyValueStorageManager);
- m_localStorageDirectory = parameters.localStorageDirectory;
+ m_keyValueStorageManager->initialize(parameters);
if (!parameters.applicationCacheDirectory.isEmpty())
cacheStorage().setCacheDirectory(parameters.applicationCacheDirectory);
@@ -452,6 +450,11 @@
return *m_cookieManager;
}
+WebKeyValueStorageManager& WebProcess::keyValueStorageManager()
+{
+ return *m_keyValueStorageManager;
+}
+
DownloadManager& WebProcess::downloadManager()
{
#if ENABLE(NETWORK_PROCESS)
Modified: trunk/Source/WebKit2/WebProcess/WebProcess.h (138510 => 138511)
--- trunk/Source/WebKit2/WebProcess/WebProcess.h 2012-12-27 18:57:59 UTC (rev 138510)
+++ trunk/Source/WebKit2/WebProcess/WebProcess.h 2012-12-27 19:13:00 UTC (rev 138511)
@@ -183,6 +183,7 @@
WebApplicationCacheManager& applicationCacheManager();
WebResourceCacheManager& resourceCacheManager();
WebCookieManager& cookieManager();
+ WebKeyValueStorageManager& keyValueStorageManager();
DownloadManager& downloadManager();
AuthenticationManager& authenticationManager();
@@ -204,8 +205,6 @@
void clearResourceCaches(ResourceCachesToClear = AllResourceCaches);
- const String& localStorageDirectory() const { return m_localStorageDirectory; }
-
#if ENABLE(PLUGIN_PROCESS)
PluginProcessConnectionManager& pluginProcessConnectionManager();
#endif
@@ -398,8 +397,6 @@
WebNotificationManager* m_notificationManager;
#endif
WebIconDatabaseProxy* m_iconDatabaseProxy;
-
- String m_localStorageDirectory;
#if ENABLE(NETWORK_PROCESS)
void ensureNetworkProcessConnection();
Added: trunk/Source/WebKit2/WebProcess/WebProcessSupplement.h (0 => 138511)
--- trunk/Source/WebKit2/WebProcess/WebProcessSupplement.h (rev 0)
+++ trunk/Source/WebKit2/WebProcess/WebProcessSupplement.h 2012-12-27 19:13:00 UTC (rev 138511)
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2012 Apple Inc. All rights reserved.
+ *
+ * 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.
+ */
+
+#ifndef WebProcessSupplement_h
+#define WebProcessSupplement_h
+
+#include "MessageReceiver.h"
+
+namespace WebKit {
+
+struct WebProcessCreationParameters;
+
+class WebProcessSupplement : public CoreIPC::MessageReceiver {
+public:
+ virtual ~WebProcessSupplement()
+ {
+ }
+
+ virtual void initialize(const WebProcessCreationParameters&)
+ {
+ }
+};
+
+} // namespace WebKit
+
+#endif // WebProcessSupplement_h
Modified: trunk/Source/WebKit2/win/WebKit2.vcproj (138510 => 138511)
--- trunk/Source/WebKit2/win/WebKit2.vcproj 2012-12-27 18:57:59 UTC (rev 138510)
+++ trunk/Source/WebKit2/win/WebKit2.vcproj 2012-12-27 19:13:00 UTC (rev 138511)
@@ -1619,6 +1619,10 @@
>
</File>
<File
+ RelativePath="..\WebProcess\WebProcessSupplement.h"
+ >
+ </File>
+ <File
RelativePath="..\WebProcess\WebProcess.cpp"
>
</File>