Diff
Modified: trunk/Source/WebCore/ChangeLog (159610 => 159611)
--- trunk/Source/WebCore/ChangeLog 2013-11-21 07:00:09 UTC (rev 159610)
+++ trunk/Source/WebCore/ChangeLog 2013-11-21 07:04:12 UTC (rev 159611)
@@ -1,3 +1,12 @@
+2013-11-20 Brady Eidson <[email protected]>
+
+ Add more infrastructure for ServerConnection communication between Web and Database processes
+ https://bugs.webkit.org/show_bug.cgi?id=124693
+
+ Reviewed by Anders Carlsson.
+
+ * WebCore.exp.in:
+
2013-11-20 Ryosuke Niwa <[email protected]>
Hoist <template> to head when found between </head> and <body> for consistency with <script>
Modified: trunk/Source/WebCore/WebCore.exp.in (159610 => 159611)
--- trunk/Source/WebCore/WebCore.exp.in 2013-11-21 07:00:09 UTC (rev 159610)
+++ trunk/Source/WebCore/WebCore.exp.in 2013-11-21 07:04:12 UTC (rev 159611)
@@ -2897,6 +2897,8 @@
#endif
#if ENABLE(INDEXED_DATABASE)
+__ZN7WebCore10IDBKeyPathC1ERKN3WTF6StringE
+__ZN7WebCore10IDBKeyPathC1ERKN3WTF6VectorINS1_6StringELm0ENS1_15CrashOnOverflowEEE
__ZN7WebCore18IDBDatabaseBackend14openConnectionEN3WTF10PassRefPtrINS_12IDBCallbacksEEENS2_INS_20IDBDatabaseCallbacksEEExy
__ZN7WebCore18IDBDatabaseBackend6createERKN3WTF6StringES4_PNS_26IDBFactoryBackendInterfaceERNS_19IDBServerConnectionE
__ZN7WebCore18IDBDatabaseBackendD1Ev
Modified: trunk/Source/WebKit2/ChangeLog (159610 => 159611)
--- trunk/Source/WebKit2/ChangeLog 2013-11-21 07:00:09 UTC (rev 159610)
+++ trunk/Source/WebKit2/ChangeLog 2013-11-21 07:04:12 UTC (rev 159611)
@@ -1,3 +1,50 @@
+2013-11-20 Brady Eidson <[email protected]>
+
+ Add more infrastructure for ServerConnection communication between Web and Database processes
+ https://bugs.webkit.org/show_bug.cgi?id=124693
+
+ Reviewed by Anders Carlsson.
+
+ * DatabaseProcess/DatabaseToWebProcessConnection.cpp:
+ (WebKit::DatabaseToWebProcessConnection::establishIDBConnection):
+ (WebKit::DatabaseToWebProcessConnection::removeDatabaseProcessIDBConnection): Added for WebProcess to be able
+ to invalidate the DatabaseProcess side of a server connection.
+ * DatabaseProcess/DatabaseToWebProcessConnection.h:
+ * DatabaseProcess/DatabaseToWebProcessConnection.messages.in:
+
+ * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.cpp:
+ (WebKit::DatabaseProcessIDBConnection::DatabaseProcessIDBConnection):
+ (WebKit::DatabaseProcessIDBConnection::disconnectedFromWebProcess): Added for future cleanup.
+ (WebKit::DatabaseProcessIDBConnection::establishConnection):
+ (WebKit::DatabaseProcessIDBConnection::getOrEstablishIDBDatabaseMetadata): Callback to the WebProcess, even if
+ it is just dummy data for now.
+ * DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.h:
+ (WebKit::DatabaseProcessIDBConnection::create):
+
+ * WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:
+ (WebKit::WebIDBServerConnection::create): Register the new object with the WebToDatabaseProcessConnection.
+ (WebKit::WebIDBServerConnection::~WebIDBServerConnection): Remove from the WebToDatabaseProcessConnection.
+ (WebKit::WebIDBServerConnection::getOrEstablishIDBDatabaseMetadata):
+ (WebKit::WebIDBServerConnection::didGetOrEstablishIDBDatabaseMetadata): Callback from the DatabaseProcess,
+ a no-op for now.
+ * WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:
+ * WebProcess/Databases/IndexedDB/WebIDBServerConnection.messages.in: Copied from Source/WebKit2/DatabaseProcess/DatabaseToWebProcessConnection.messages.in.
+
+ * WebProcess/Databases/WebToDatabaseProcessConnection.cpp:
+ (WebKit::WebToDatabaseProcessConnection::didReceiveMessage):
+ (WebKit::WebToDatabaseProcessConnection::didClose):
+ (WebKit::WebToDatabaseProcessConnection::registerWebIDBServerConnection): Hold a collection of all
+ server connections for messaging.
+ (WebKit::WebToDatabaseProcessConnection::removeWebIDBServerConnection): Remove a connection from the collection,
+ and also message the DatabaseProcess that it’s gone away.
+ * WebProcess/Databases/WebToDatabaseProcessConnection.h:
+
+ Project files, etc etc:
+ * DerivedSources.make:
+ * Scripts/webkit2/messages.py:
+ (struct_or_class):
+ * WebKit2.xcodeproj/project.pbxproj:
+
2013-11-18 Sam Weinig <[email protected]>
WebPageGroup's should keep track of what processes they are being used by
Modified: trunk/Source/WebKit2/DatabaseProcess/DatabaseToWebProcessConnection.cpp (159610 => 159611)
--- trunk/Source/WebKit2/DatabaseProcess/DatabaseToWebProcessConnection.cpp 2013-11-21 07:00:09 UTC (rev 159610)
+++ trunk/Source/WebKit2/DatabaseProcess/DatabaseToWebProcessConnection.cpp 2013-11-21 07:04:12 UTC (rev 159611)
@@ -81,10 +81,19 @@
void DatabaseToWebProcessConnection::establishIDBConnection(uint64_t serverConnectionIdentifier)
{
- RefPtr<DatabaseProcessIDBConnection> connection = DatabaseProcessIDBConnection::create(serverConnectionIdentifier);
- m_idbConnections.set(serverConnectionIdentifier, connection.release());
+ RefPtr<DatabaseProcessIDBConnection> idbConnection = DatabaseProcessIDBConnection::create(*this, serverConnectionIdentifier);
+ m_idbConnections.set(serverConnectionIdentifier, idbConnection.release());
}
+void DatabaseToWebProcessConnection::removeDatabaseProcessIDBConnection(uint64_t serverConnectionIdentifier)
+{
+ ASSERT(m_idbConnections.contains(serverConnectionIdentifier));
+
+ RefPtr<DatabaseProcessIDBConnection> idbConnection = m_idbConnections.take(serverConnectionIdentifier);
+ idbConnection->disconnectedFromWebProcess();
+}
+
+
} // namespace WebKit
#endif // ENABLE(DATABASE_PROCESS)
Modified: trunk/Source/WebKit2/DatabaseProcess/DatabaseToWebProcessConnection.h (159610 => 159611)
--- trunk/Source/WebKit2/DatabaseProcess/DatabaseToWebProcessConnection.h 2013-11-21 07:00:09 UTC (rev 159610)
+++ trunk/Source/WebKit2/DatabaseProcess/DatabaseToWebProcessConnection.h 2013-11-21 07:04:12 UTC (rev 159611)
@@ -60,6 +60,7 @@
#if ENABLE(INDEXED_DATABASE)
// Messages handlers
void establishIDBConnection(uint64_t serverConnectionIdentifier);
+ void removeDatabaseProcessIDBConnection(uint64_t serverConnectionIdentifier);
typedef HashMap<uint64_t, RefPtr<DatabaseProcessIDBConnection>> IDBConnectionMap;
IDBConnectionMap m_idbConnections;
Modified: trunk/Source/WebKit2/DatabaseProcess/DatabaseToWebProcessConnection.messages.in (159610 => 159611)
--- trunk/Source/WebKit2/DatabaseProcess/DatabaseToWebProcessConnection.messages.in 2013-11-21 07:00:09 UTC (rev 159610)
+++ trunk/Source/WebKit2/DatabaseProcess/DatabaseToWebProcessConnection.messages.in 2013-11-21 07:04:12 UTC (rev 159611)
@@ -26,6 +26,7 @@
#if ENABLE(INDEXED_DATABASE)
# Creates a connection for communication with a WebProcess
EstablishIDBConnection(uint64_t serverConnectionIdentifier)
+ RemoveDatabaseProcessIDBConnection(uint64_t serverConnectionIdentifier)
#endif
}
Modified: trunk/Source/WebKit2/DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.cpp (159610 => 159611)
--- trunk/Source/WebKit2/DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.cpp 2013-11-21 07:00:09 UTC (rev 159610)
+++ trunk/Source/WebKit2/DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.cpp 2013-11-21 07:04:12 UTC (rev 159611)
@@ -26,14 +26,20 @@
#include "config.h"
#include "DatabaseProcessIDBConnection.h"
+#if ENABLE(INDEXED_DATABASE) && ENABLE(DATABASE_PROCESS)
+
#include "DatabaseToWebProcessConnection.h"
+#include "WebCoreArgumentCoders.h"
+#include "WebIDBServerConnectionMessages.h"
+#include <WebCore/IDBDatabaseMetadata.h>
-#if ENABLE(INDEXED_DATABASE) && ENABLE(DATABASE_PROCESS)
+using namespace WebCore;
namespace WebKit {
-DatabaseProcessIDBConnection::DatabaseProcessIDBConnection(uint64_t serverConnectionIdentifier)
- : m_serverConnectionIdentifier(serverConnectionIdentifier)
+DatabaseProcessIDBConnection::DatabaseProcessIDBConnection(DatabaseToWebProcessConnection& connection, uint64_t serverConnectionIdentifier)
+ : m_connection(connection)
+ , m_serverConnectionIdentifier(serverConnectionIdentifier)
{
}
@@ -41,16 +47,30 @@
{
}
+void DatabaseProcessIDBConnection::disconnectedFromWebProcess()
+{
+ // Do any necessary cleanup work here.
+}
+
void DatabaseProcessIDBConnection::establishConnection(const String& databaseName, const SecurityOriginData& openingOrigin, const SecurityOriginData& mainFrameOrigin)
{
- // FIXME: This method is successfully called by messaging from the WebProcess.
- // Now implement it.
+ // This method should only be called once, so the stored database name should still be null.
+ // Also, it is invalid to set the stored database name to the null string.
+ ASSERT(m_databaseName.isNull());
+ ASSERT(!databaseName.isNull());
+
+ m_databaseName = databaseName;
+ m_openingOrigin = openingOrigin;
+ m_mainFrameOrigin = mainFrameOrigin;
}
void DatabaseProcessIDBConnection::getOrEstablishIDBDatabaseMetadata()
{
- // FIXME: This method is successfully called by messaging from the WebProcess.
- // Now implement it.
+ // FIXME: This method is successfully called by messaging from the WebProcess, and calls back with dummy data.
+ // Needs real implementation.
+
+ IDBDatabaseMetadata data;
+ send(Messages::WebIDBServerConnection::DidGetOrEstablishIDBDatabaseMetadata(false, data));
}
CoreIPC::Connection* DatabaseProcessIDBConnection::messageSenderConnection()
Modified: trunk/Source/WebKit2/DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.h (159610 => 159611)
--- trunk/Source/WebKit2/DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.h 2013-11-21 07:00:09 UTC (rev 159610)
+++ trunk/Source/WebKit2/DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.h 2013-11-21 07:04:12 UTC (rev 159611)
@@ -30,17 +30,18 @@
#if ENABLE(INDEXED_DATABASE) && ENABLE(DATABASE_PROCESS)
+#include "SecurityOriginData.h"
+#include <wtf/text/WTFString.h>
+
namespace WebKit {
class DatabaseToWebProcessConnection;
-struct SecurityOriginData;
-
class DatabaseProcessIDBConnection : public RefCounted<DatabaseProcessIDBConnection>, public CoreIPC::MessageSender {
public:
- static RefPtr<DatabaseProcessIDBConnection> create(uint64_t serverConnectionIdentifier)
+ static RefPtr<DatabaseProcessIDBConnection> create(DatabaseToWebProcessConnection& connection, uint64_t serverConnectionIdentifier)
{
- return adoptRef(new DatabaseProcessIDBConnection(serverConnectionIdentifier));
+ return adoptRef(new DatabaseProcessIDBConnection(connection, serverConnectionIdentifier));
}
virtual ~DatabaseProcessIDBConnection();
@@ -48,8 +49,10 @@
// Message handlers.
void didReceiveDatabaseProcessIDBConnectionMessage(CoreIPC::Connection*, CoreIPC::MessageDecoder&);
+ void disconnectedFromWebProcess();
+
private:
- DatabaseProcessIDBConnection(uint64_t serverConnectionIdentifier);
+ DatabaseProcessIDBConnection(DatabaseToWebProcessConnection&, uint64_t idbConnectionIdentifier);
// CoreIPC::MessageSender
virtual CoreIPC::Connection* messageSenderConnection() OVERRIDE;
@@ -59,8 +62,12 @@
void establishConnection(const String& databaseName, const SecurityOriginData& openingOrigin, const SecurityOriginData& mainFrameOrigin);
void getOrEstablishIDBDatabaseMetadata();
- RefPtr<DatabaseToWebProcessConnection> m_connection;
+ Ref<DatabaseToWebProcessConnection> m_connection;
uint64_t m_serverConnectionIdentifier;
+
+ String m_databaseName;
+ SecurityOriginData m_openingOrigin;
+ SecurityOriginData m_mainFrameOrigin;
};
} // namespace WebKit
Modified: trunk/Source/WebKit2/DerivedSources.make (159610 => 159611)
--- trunk/Source/WebKit2/DerivedSources.make 2013-11-21 07:00:09 UTC (rev 159610)
+++ trunk/Source/WebKit2/DerivedSources.make 2013-11-21 07:04:12 UTC (rev 159611)
@@ -35,6 +35,7 @@
$(WebKit2)/Shared/Network/CustomProtocols \
$(WebKit2)/WebProcess/ApplicationCache \
$(WebKit2)/WebProcess/Cookies \
+ $(WebKit2)/WebProcess/Databases/IndexedDB \
$(WebKit2)/WebProcess/FullScreen \
$(WebKit2)/WebProcess/Geolocation \
$(WebKit2)/WebProcess/IconDatabase \
@@ -67,39 +68,40 @@
DatabaseProcessIDBConnection \
DatabaseProcessProxy \
DatabaseToWebProcessConnection \
+ DownloadProxy \
DrawingArea \
DrawingAreaProxy \
- DownloadProxy \
EventDispatcher \
+ NPObjectMessageReceiver \
+ NetworkConnectionToWebProcess \
NetworkProcess \
NetworkProcessConnection \
NetworkProcessProxy \
NetworkResourceLoader \
- NPObjectMessageReceiver \
PluginControllerProxy \
PluginProcess \
PluginProcessConnection \
PluginProcessConnectionManager \
PluginProcessProxy \
PluginProxy \
+ RemoteLayerTreeHost \
+ SecItemShim \
+ SecItemShimProxy \
+ StorageAreaMap \
StorageManager \
WebApplicationCacheManager \
WebApplicationCacheManagerProxy \
+ WebConnection \
+ WebContext \
WebCookieManager \
WebCookieManagerProxy \
- WebConnection \
- NetworkConnectionToWebProcess \
- RemoteLayerTreeHost \
- SecItemShim \
- SecItemShimProxy \
- StorageAreaMap \
- WebContext \
WebDatabaseManager \
WebDatabaseManagerProxy \
WebFullScreenManager \
WebFullScreenManagerProxy \
WebGeolocationManager \
WebGeolocationManagerProxy \
+ WebIDBServerConnection \
WebIconDatabase \
WebIconDatabaseProxy \
WebInspector \
Modified: trunk/Source/WebKit2/Scripts/webkit2/messages.py (159610 => 159611)
--- trunk/Source/WebKit2/Scripts/webkit2/messages.py 2013-11-21 07:00:09 UTC (rev 159610)
+++ trunk/Source/WebKit2/Scripts/webkit2/messages.py 2013-11-21 07:04:12 UTC (rev 159611)
@@ -176,6 +176,7 @@
'WebCore::FloatPoint3D',
'WebCore::FileChooserSettings',
'WebCore::GrammarDetail',
+ 'WebCore::IDBDatabaseMetadata',
'WebCore::IdentityTransformOperation',
'WebCore::KeypressCommand',
'WebCore::Length',
Modified: trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj (159610 => 159611)
--- trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj 2013-11-21 07:00:09 UTC (rev 159610)
+++ trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj 2013-11-21 07:04:12 UTC (rev 159611)
@@ -591,6 +591,8 @@
51B15A8513843A3900321AD8 /* EnvironmentUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 51B15A8313843A3900321AD8 /* EnvironmentUtilities.h */; };
51B3005012529D0E000B5CA0 /* WebBackForwardListCF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51B3004E12529D0E000B5CA0 /* WebBackForwardListCF.cpp */; };
51B3005112529D0E000B5CA0 /* WebPageProxyCF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51B3004F12529D0E000B5CA0 /* WebPageProxyCF.cpp */; };
+ 51C96118183D294700D2002E /* WebIDBServerConnectionMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51C96116183D294700D2002E /* WebIDBServerConnectionMessageReceiver.cpp */; };
+ 51C96119183D294700D2002E /* WebIDBServerConnectionMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 51C96117183D294700D2002E /* WebIDBServerConnectionMessages.h */; };
51CBBA0F165219B6005BE8FD /* NetworkResourceLoadParameters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51CBBA0D165219B6005BE8FD /* NetworkResourceLoadParameters.cpp */; };
51CBBA10165219B6005BE8FD /* NetworkResourceLoadParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = 51CBBA0E165219B6005BE8FD /* NetworkResourceLoadParameters.h */; };
51D02F64132EC5B900BEAA96 /* WebIconDatabaseMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51D02F63132EC5B900BEAA96 /* WebIconDatabaseMessageReceiver.cpp */; };
@@ -2112,6 +2114,9 @@
51B15A8313843A3900321AD8 /* EnvironmentUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EnvironmentUtilities.h; path = unix/EnvironmentUtilities.h; sourceTree = "<group>"; };
51B3004E12529D0E000B5CA0 /* WebBackForwardListCF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebBackForwardListCF.cpp; path = cf/WebBackForwardListCF.cpp; sourceTree = "<group>"; };
51B3004F12529D0E000B5CA0 /* WebPageProxyCF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebPageProxyCF.cpp; path = cf/WebPageProxyCF.cpp; sourceTree = "<group>"; };
+ 51C96115183C95FF00D2002E /* WebIDBServerConnection.messages.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = WebIDBServerConnection.messages.in; sourceTree = "<group>"; };
+ 51C96116183D294700D2002E /* WebIDBServerConnectionMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebIDBServerConnectionMessageReceiver.cpp; sourceTree = "<group>"; };
+ 51C96117183D294700D2002E /* WebIDBServerConnectionMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebIDBServerConnectionMessages.h; sourceTree = "<group>"; };
51CBBA0D165219B6005BE8FD /* NetworkResourceLoadParameters.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NetworkResourceLoadParameters.cpp; path = Network/NetworkResourceLoadParameters.cpp; sourceTree = "<group>"; };
51CBBA0E165219B6005BE8FD /* NetworkResourceLoadParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NetworkResourceLoadParameters.h; path = Network/NetworkResourceLoadParameters.h; sourceTree = "<group>"; };
51D02F63132EC5B900BEAA96 /* WebIconDatabaseMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebIconDatabaseMessageReceiver.cpp; sourceTree = "<group>"; };
@@ -3834,6 +3839,7 @@
51290991183ACEAF005522A6 /* WebIDBServerConnection.h */,
51E351F1180F5C7500E53BE9 /* WebIDBFactoryBackend.cpp */,
51E351F2180F5C7500E53BE9 /* WebIDBFactoryBackend.h */,
+ 51C96115183C95FF00D2002E /* WebIDBServerConnection.messages.in */,
);
path = IndexedDB;
sourceTree = "<group>";
@@ -5230,10 +5236,6 @@
C0CE729D1247E71D00BC0EC4 /* Derived Sources */ = {
isa = PBXGroup;
children = (
- 75E749E5180DBB9800088BA6 /* WebOriginDataManagerMessageReceiver.cpp */,
- 75E749E6180DBB9800088BA6 /* WebOriginDataManagerMessages.h */,
- 75E749E7180DBB9800088BA6 /* WebOriginDataManagerProxyMessageReceiver.cpp */,
- 75E749E8180DBB9800088BA6 /* WebOriginDataManagerProxyMessages.h */,
512F58A012A883AD00629530 /* AuthenticationManagerMessageReceiver.cpp */,
512F58A112A883AD00629530 /* AuthenticationManagerMessages.h */,
E17AE2C216B9C63A001C42F1 /* com.apple.WebKit.NetworkProcess.sb */,
@@ -5316,6 +5318,8 @@
BC0E606012D6BA910012A72A /* WebGeolocationManagerMessages.h */,
BC0E618012D6CB1D0012A72A /* WebGeolocationManagerProxyMessageReceiver.cpp */,
BC0E618112D6CB1D0012A72A /* WebGeolocationManagerProxyMessages.h */,
+ 51C96116183D294700D2002E /* WebIDBServerConnectionMessageReceiver.cpp */,
+ 51C96117183D294700D2002E /* WebIDBServerConnectionMessages.h */,
51D02F63132EC5B900BEAA96 /* WebIconDatabaseMessageReceiver.cpp */,
51D02F67132EC73700BEAA96 /* WebIconDatabaseMessages.h */,
51D02F68132EC73700BEAA96 /* WebIconDatabaseProxyMessageReceiver.cpp */,
@@ -5330,6 +5334,10 @@
33D3A3C71339617900709BE4 /* WebMediaCacheManagerProxyMessages.h */,
31BA9248148830810062EDB5 /* WebNotificationManagerMessageReceiver.cpp */,
31BA9249148830810062EDB5 /* WebNotificationManagerMessages.h */,
+ 75E749E5180DBB9800088BA6 /* WebOriginDataManagerMessageReceiver.cpp */,
+ 75E749E6180DBB9800088BA6 /* WebOriginDataManagerMessages.h */,
+ 75E749E7180DBB9800088BA6 /* WebOriginDataManagerProxyMessageReceiver.cpp */,
+ 75E749E8180DBB9800088BA6 /* WebOriginDataManagerProxyMessages.h */,
29D55DEF161BF9F10031A2E3 /* WebPageGroupProxyMessageReceiver.cpp */,
29D55DF0161BF9F10031A2E3 /* WebPageGroupProxyMessages.h */,
C0CE729E1247E71D00BC0EC4 /* WebPageMessageReceiver.cpp */,
@@ -5865,6 +5873,7 @@
BCA0EF7F12331E78007D3CFB /* WebUndoStep.h in Headers */,
1AC7537C183A9FDB0072CB15 /* PageLoadState.h in Headers */,
BCDB86C11200FB97007254BE /* WebURL.h in Headers */,
+ 51C96119183D294700D2002E /* WebIDBServerConnectionMessages.h in Headers */,
BCE2315D122C30CA00D5C35A /* WebURLRequest.h in Headers */,
BC90A1D2122DD55E00CC8C50 /* WebURLResponse.h in Headers */,
F6113E25126CE1820057D0A7 /* WebUserContentURLPattern.h in Headers */,
@@ -7211,6 +7220,7 @@
29CD55AB128E294F00133C85 /* WKAccessibilityWebPageObject.mm in Sources */,
1AC7537F183BE50F0072CB15 /* DataReference.cpp in Sources */,
512E34E4130B4D0500ABD19A /* WKApplicationCacheManager.cpp in Sources */,
+ 51C96118183D294700D2002E /* WebIDBServerConnectionMessageReceiver.cpp in Sources */,
BC4075F3124FF0270068F20A /* WKArray.cpp in Sources */,
512F58F512A88A5400629530 /* WKAuthenticationChallenge.cpp in Sources */,
51E351CA180F2CCC00E53BE9 /* IDBUtilities.cpp in Sources */,
Modified: trunk/Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp (159610 => 159611)
--- trunk/Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp 2013-11-21 07:00:09 UTC (rev 159610)
+++ trunk/Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp 2013-11-21 07:04:12 UTC (rev 159611)
@@ -35,6 +35,7 @@
#include "WebProcess.h"
#include "WebToDatabaseProcessConnection.h"
+#include <WebCore/IDBDatabaseMetadata.h>
#include <WebCore/SecurityOrigin.h>
using namespace WebCore;
@@ -48,6 +49,13 @@
return ++identifier;
}
+PassRefPtr<WebIDBServerConnection> WebIDBServerConnection::create(const String& databaseName, const SecurityOrigin& openingOrigin, const SecurityOrigin& mainFrameOrigin)
+{
+ RefPtr<WebIDBServerConnection> result = adoptRef(new WebIDBServerConnection(databaseName, openingOrigin, mainFrameOrigin));
+ WebProcess::shared().webToDatabaseProcessConnection()->registerWebIDBServerConnection(*result);
+ return result.release();
+}
+
WebIDBServerConnection::WebIDBServerConnection(const String& databaseName, const SecurityOrigin& openingOrigin, const SecurityOrigin& mainFrameOrigin)
: m_serverConnectionIdentifier(generateServerConnectionIdentifier())
, m_databaseName(databaseName)
@@ -60,6 +68,7 @@
WebIDBServerConnection::~WebIDBServerConnection()
{
+ WebProcess::shared().webToDatabaseProcessConnection()->removeWebIDBServerConnection(*this);
}
bool WebIDBServerConnection::isClosed()
@@ -73,9 +82,15 @@
void WebIDBServerConnection::getOrEstablishIDBDatabaseMetadata(GetIDBDatabaseMetadataFunction completionCallback)
{
+ // FIXME: Save the completionCallback to perform this request is complete.
send(Messages::DatabaseProcessIDBConnection::GetOrEstablishIDBDatabaseMetadata());
}
+void WebIDBServerConnection::didGetOrEstablishIDBDatabaseMetadata(bool, const IDBDatabaseMetadata&)
+{
+ // FIXME: Lookup the appropriate completionCallback to perform with these results.
+}
+
void WebIDBServerConnection::close()
{
}
Modified: trunk/Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.h (159610 => 159611)
--- trunk/Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.h 2013-11-21 07:00:09 UTC (rev 159610)
+++ trunk/Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.h 2013-11-21 07:04:12 UTC (rev 159611)
@@ -30,16 +30,14 @@
#if ENABLE(INDEXED_DATABASE) && ENABLE(DATABASE_PROCESS)
#include "MessageSender.h"
+#include <WebCore/IDBDatabaseMetadata.h>
#include <WebCore/IDBServerConnection.h>
namespace WebKit {
class WebIDBServerConnection FINAL : public WebCore::IDBServerConnection, public CoreIPC::MessageSender {
public:
- static PassRefPtr<WebIDBServerConnection> create(const String& databaseName, const WebCore::SecurityOrigin& openingOrigin, const WebCore::SecurityOrigin& mainFrameOrigin)
- {
- return adoptRef(new WebIDBServerConnection(databaseName, openingOrigin, mainFrameOrigin));
- }
+ static PassRefPtr<WebIDBServerConnection> create(const String& databaseName, const WebCore::SecurityOrigin& openingOrigin, const WebCore::SecurityOrigin& mainFrameOrigin);
virtual ~WebIDBServerConnection();
@@ -81,13 +79,20 @@
virtual void cursorPrefetchIteration(WebCore::IDBCursorBackend&, const WebCore::CursorPrefetchIterationOperation&, std::function<void()> completionCallback) OVERRIDE;
virtual void cursorPrefetchReset(WebCore::IDBCursorBackend&, int usedPrefetches) OVERRIDE;
+ // Message handlers.
+ void didReceiveWebIDBServerConnectionMessage(CoreIPC::Connection*, CoreIPC::MessageDecoder&);
+
+ // CoreIPC::MessageSender
+ virtual uint64_t messageSenderDestinationID() OVERRIDE { return m_serverConnectionIdentifier; }
+
private:
WebIDBServerConnection(const String& databaseName, const WebCore::SecurityOrigin& openingOrigin, const WebCore::SecurityOrigin& mainFrameOrigin);
// CoreIPC::MessageSender
virtual CoreIPC::Connection* messageSenderConnection() OVERRIDE;
- virtual uint64_t messageSenderDestinationID() OVERRIDE { return m_serverConnectionIdentifier; }
+ void didGetOrEstablishIDBDatabaseMetadata(bool success, const WebCore::IDBDatabaseMetadata&);
+
uint64_t m_serverConnectionIdentifier;
String m_databaseName;
Copied: trunk/Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.messages.in (from rev 159610, trunk/Source/WebKit2/DatabaseProcess/DatabaseToWebProcessConnection.messages.in) (0 => 159611)
--- trunk/Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.messages.in (rev 0)
+++ trunk/Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.messages.in 2013-11-21 07:04:12 UTC (rev 159611)
@@ -0,0 +1,29 @@
+# Copyright (C) 2013 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.
+
+#if ENABLE(INDEXED_DATABASE) && ENABLE(DATABASE_PROCESS)
+
+messages -> WebIDBServerConnection LegacyReceiver {
+ DidGetOrEstablishIDBDatabaseMetadata(bool success, WebCore::IDBDatabaseMetadata metadata)
+}
+
+#endif // ENABLE(INDEXED_DATABASE) && ENABLE(DATABASE_PROCESS)
Modified: trunk/Source/WebKit2/WebProcess/Databases/WebToDatabaseProcessConnection.cpp (159610 => 159611)
--- trunk/Source/WebKit2/WebProcess/Databases/WebToDatabaseProcessConnection.cpp 2013-11-21 07:00:09 UTC (rev 159610)
+++ trunk/Source/WebKit2/WebProcess/Databases/WebToDatabaseProcessConnection.cpp 2013-11-21 07:04:12 UTC (rev 159611)
@@ -28,6 +28,8 @@
#include "WebToDatabaseProcessConnection.h"
#include "DatabaseToWebProcessConnectionMessages.h"
+#include "WebIDBServerConnection.h"
+#include "WebIDBServerConnectionMessages.h"
#include "WebProcess.h"
#include <wtf/RunLoop.h>
@@ -47,11 +49,19 @@
{
}
-void WebToDatabaseProcessConnection::didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageDecoder&)
+void WebToDatabaseProcessConnection::didReceiveMessage(CoreIPC::Connection* connection, CoreIPC::MessageDecoder& decoder)
{
+ if (decoder.messageReceiverName() == Messages::WebIDBServerConnection::messageReceiverName()) {
+ HashMap<uint64_t, WebIDBServerConnection*>::iterator connectionIterator = m_webIDBServerConnections.find(decoder.destinationID());
+ if (connectionIterator != m_webIDBServerConnections.end())
+ connectionIterator->value->didReceiveWebIDBServerConnectionMessage(connection, decoder);
+ return;
+ }
+
+ ASSERT_NOT_REACHED();
}
-void WebToDatabaseProcessConnection::didClose(CoreIPC::Connection*)
+void WebToDatabaseProcessConnection::didClose(CoreIPC::Connection* connection)
{
WebProcess::shared().webToDatabaseProcessConnectionClosed(this);
}
@@ -60,6 +70,22 @@
{
}
+void WebToDatabaseProcessConnection::registerWebIDBServerConnection(WebIDBServerConnection& connection)
+{
+ ASSERT(!m_webIDBServerConnections.contains(connection.messageSenderDestinationID()));
+ m_webIDBServerConnections.set(connection.messageSenderDestinationID(), &connection);
+
+}
+
+void WebToDatabaseProcessConnection::removeWebIDBServerConnection(WebIDBServerConnection& connection)
+{
+ ASSERT(m_webIDBServerConnections.contains(connection.messageSenderDestinationID()));
+
+ send(Messages::DatabaseToWebProcessConnection::RemoveDatabaseProcessIDBConnection(connection.messageSenderDestinationID()));
+
+ m_webIDBServerConnections.remove(connection.messageSenderDestinationID());
+}
+
} // namespace WebKit
#endif // ENABLE(INDEXED_DATABASE)
Modified: trunk/Source/WebKit2/WebProcess/Databases/WebToDatabaseProcessConnection.h (159610 => 159611)
--- trunk/Source/WebKit2/WebProcess/Databases/WebToDatabaseProcessConnection.h 2013-11-21 07:00:09 UTC (rev 159610)
+++ trunk/Source/WebKit2/WebProcess/Databases/WebToDatabaseProcessConnection.h 2013-11-21 07:04:12 UTC (rev 159611)
@@ -35,6 +35,7 @@
namespace WebKit {
+class WebIDBServerConnection;
class WebProcessIDBDatabaseBackend;
class WebToDatabaseProcessConnection : public RefCounted<WebToDatabaseProcessConnection>, public CoreIPC::Connection::Client, public CoreIPC::MessageSender {
@@ -47,7 +48,8 @@
CoreIPC::Connection* connection() const { return m_connection.get(); }
- void didReceiveNetworkProcessConnectionMessage(CoreIPC::Connection*, CoreIPC::MessageDecoder&);
+ void registerWebIDBServerConnection(WebIDBServerConnection&);
+ void removeWebIDBServerConnection(WebIDBServerConnection&);
private:
WebToDatabaseProcessConnection(CoreIPC::Connection::Identifier);
@@ -62,6 +64,8 @@
virtual uint64_t messageSenderDestinationID() OVERRIDE { return 0; }
RefPtr<CoreIPC::Connection> m_connection;
+
+ HashMap<uint64_t, WebIDBServerConnection*> m_webIDBServerConnections;
};
} // namespace WebKit