Move InProcessIDBServer to WebKitLegacy
https://bugs.webkit.org/show_bug.cgi?id=204896

Reviewed by Brady Eidson.

Source/WebCore:

We only use InProcessIDBServer in WebKitLegacy now.

No behavior change.

* Headers.cmake:
* Modules/indexeddb/server/IDBServer.h:
* Modules/indexeddb/shared/IDBRequestData.h:
* Modules/indexeddb/shared/IDBTransactionInfo.h:
* Modules/indexeddb/shared/InProcessIDBServer.h: Removed.
* Modules/mediastream/MediaStreamTrack.cpp:
* Modules/pictureinpicture/HTMLVideoElementPictureInPicture.cpp:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* loader/EmptyClients.cpp:
* page/Page.cpp:

Source/WebKit:

* WebProcess/Databases/WebDatabaseProvider.h:

Source/WebKitLegacy:

* CMakeLists.txt:
* Storage/InProcessIDBServer.cpp: Renamed from Source/WebCore/Modules/indexeddb/shared/InProcessIDBServer.cpp.
(InProcessIDBServer::create):
(InProcessIDBServer::quotaManager):
(storageQuotaManagerSpaceRequester):
(InProcessIDBServer::InProcessIDBServer):
(InProcessIDBServer::identifier const):
(InProcessIDBServer::connectionToServer const):
(InProcessIDBServer::connectionToClient const):
(InProcessIDBServer::deleteDatabase):
(InProcessIDBServer::didDeleteDatabase):
(InProcessIDBServer::openDatabase):
(InProcessIDBServer::didOpenDatabase):
(InProcessIDBServer::didAbortTransaction):
(InProcessIDBServer::didCommitTransaction):
(InProcessIDBServer::didCreateObjectStore):
(InProcessIDBServer::didDeleteObjectStore):
(InProcessIDBServer::didRenameObjectStore):
(InProcessIDBServer::didClearObjectStore):
(InProcessIDBServer::didCreateIndex):
(InProcessIDBServer::didDeleteIndex):
(InProcessIDBServer::didRenameIndex):
(InProcessIDBServer::didPutOrAdd):
(InProcessIDBServer::didGetRecord):
(InProcessIDBServer::didGetAllRecords):
(InProcessIDBServer::didGetCount):
(InProcessIDBServer::didDeleteRecord):
(InProcessIDBServer::didOpenCursor):
(InProcessIDBServer::didIterateCursor):
(InProcessIDBServer::abortTransaction):
(InProcessIDBServer::commitTransaction):
(InProcessIDBServer::didFinishHandlingVersionChangeTransaction):
(InProcessIDBServer::createObjectStore):
(InProcessIDBServer::deleteObjectStore):
(InProcessIDBServer::renameObjectStore):
(InProcessIDBServer::clearObjectStore):
(InProcessIDBServer::createIndex):
(InProcessIDBServer::deleteIndex):
(InProcessIDBServer::renameIndex):
(InProcessIDBServer::putOrAdd):
(InProcessIDBServer::getRecord):
(InProcessIDBServer::getAllRecords):
(InProcessIDBServer::getCount):
(InProcessIDBServer::deleteRecord):
(InProcessIDBServer::openCursor):
(InProcessIDBServer::iterateCursor):
(InProcessIDBServer::establishTransaction):
(InProcessIDBServer::fireVersionChangeEvent):
(InProcessIDBServer::didStartTransaction):
(InProcessIDBServer::didCloseFromServer):
(InProcessIDBServer::notifyOpenDBRequestBlocked):
(InProcessIDBServer::databaseConnectionPendingClose):
(InProcessIDBServer::databaseConnectionClosed):
(InProcessIDBServer::abortOpenAndUpgradeNeeded):
(InProcessIDBServer::didFireVersionChangeEvent):
(InProcessIDBServer::openDBRequestCancelled):
(InProcessIDBServer::confirmDidCloseFromServer):
(InProcessIDBServer::getAllDatabaseNames):
(InProcessIDBServer::didGetAllDatabaseNames):
* Storage/InProcessIDBServer.h: Added.
* Storage/WebDatabaseProvider.cpp:
(WebDatabaseProvider::idbConnectionToServerForSession):
(WebDatabaseProvider::deleteAllDatabases):
* Storage/WebDatabaseProvider.h:
* WebKitLegacy.xcodeproj/project.pbxproj:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@253178 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index 24257d7..8ac26df 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,5 +1,28 @@
 2019-12-05  Sihui Liu  <sihui_liu@apple.com>
 
+        Move InProcessIDBServer to WebKitLegacy
+        https://bugs.webkit.org/show_bug.cgi?id=204896
+
+        Reviewed by Brady Eidson.
+
+        We only use InProcessIDBServer in WebKitLegacy now.
+
+        No behavior change.
+
+        * Headers.cmake:
+        * Modules/indexeddb/server/IDBServer.h:
+        * Modules/indexeddb/shared/IDBRequestData.h:
+        * Modules/indexeddb/shared/IDBTransactionInfo.h:
+        * Modules/indexeddb/shared/InProcessIDBServer.h: Removed.
+        * Modules/mediastream/MediaStreamTrack.cpp:
+        * Modules/pictureinpicture/HTMLVideoElementPictureInPicture.cpp:
+        * Sources.txt:
+        * WebCore.xcodeproj/project.pbxproj:
+        * loader/EmptyClients.cpp:
+        * page/Page.cpp:
+
+2019-12-05  Sihui Liu  <sihui_liu@apple.com>
+
         Rename IDBDatabaseIdentifier::debugString to IDBDatabaseIdentifier::loggingString
         https://bugs.webkit.org/show_bug.cgi?id=204898
 
diff --git a/Source/WebCore/Headers.cmake b/Source/WebCore/Headers.cmake
index 882946b..137fc78f 100644
--- a/Source/WebCore/Headers.cmake
+++ b/Source/WebCore/Headers.cmake
@@ -79,7 +79,6 @@
     Modules/indexeddb/shared/IDBResourceIdentifier.h
     Modules/indexeddb/shared/IDBResultData.h
     Modules/indexeddb/shared/IDBTransactionInfo.h
-    Modules/indexeddb/shared/InProcessIDBServer.h
 
     Modules/mediasession/MediaSessionEvents.h
     Modules/mediasession/MediaSessionMetadata.h
diff --git a/Source/WebCore/Modules/indexeddb/server/IDBServer.h b/Source/WebCore/Modules/indexeddb/server/IDBServer.h
index fc1604f..88746ee 100644
--- a/Source/WebCore/Modules/indexeddb/server/IDBServer.h
+++ b/Source/WebCore/Modules/indexeddb/server/IDBServer.h
@@ -58,7 +58,7 @@
 class IDBServer : public RefCounted<IDBServer>, public CrossThreadTaskHandler, public CanMakeWeakPtr<IDBServer> {
 public:
     using StorageQuotaManagerSpaceRequester = Function<StorageQuotaManager::Decision(const ClientOrigin&, uint64_t spaceRequested)>;
-    static Ref<IDBServer> create(PAL::SessionID, StorageQuotaManagerSpaceRequester&&);
+    WEBCORE_EXPORT static Ref<IDBServer> create(PAL::SessionID, StorageQuotaManagerSpaceRequester&&);
     WEBCORE_EXPORT static Ref<IDBServer> create(PAL::SessionID, const String& databaseDirectoryPath, StorageQuotaManagerSpaceRequester&&);
 
     WEBCORE_EXPORT void registerConnection(IDBConnectionToClient&);
diff --git a/Source/WebCore/Modules/indexeddb/shared/IDBRequestData.h b/Source/WebCore/Modules/indexeddb/shared/IDBRequestData.h
index 53b7b62..a4c85f6 100644
--- a/Source/WebCore/Modules/indexeddb/shared/IDBRequestData.h
+++ b/Source/WebCore/Modules/indexeddb/shared/IDBRequestData.h
@@ -49,7 +49,7 @@
 public:
     IDBRequestData(const IDBClient::IDBConnectionProxy&, const IDBOpenDBRequest&);
     explicit IDBRequestData(IDBClient::TransactionOperation&);
-    IDBRequestData(const IDBRequestData&);
+    WEBCORE_EXPORT IDBRequestData(const IDBRequestData&);
     IDBRequestData(IDBRequestData&&) = default;
     IDBRequestData& operator=(IDBRequestData&&) = default;
 
diff --git a/Source/WebCore/Modules/indexeddb/shared/IDBTransactionInfo.h b/Source/WebCore/Modules/indexeddb/shared/IDBTransactionInfo.h
index 7b9477e..b8b48a9 100644
--- a/Source/WebCore/Modules/indexeddb/shared/IDBTransactionInfo.h
+++ b/Source/WebCore/Modules/indexeddb/shared/IDBTransactionInfo.h
@@ -49,7 +49,7 @@
     static IDBTransactionInfo clientTransaction(const IDBClient::IDBConnectionProxy&, const Vector<String>& objectStores, IDBTransactionMode);
     static IDBTransactionInfo versionChange(const IDBServer::IDBConnectionToClient&, const IDBDatabaseInfo& originalDatabaseInfo, uint64_t newVersion);
 
-    IDBTransactionInfo(const IDBTransactionInfo&);
+    WEBCORE_EXPORT IDBTransactionInfo(const IDBTransactionInfo&);
     IDBTransactionInfo(IDBTransactionInfo&&) = default;
     IDBTransactionInfo& operator=(IDBTransactionInfo&&) = default;
 
diff --git a/Source/WebCore/Modules/indexeddb/shared/InProcessIDBServer.h b/Source/WebCore/Modules/indexeddb/shared/InProcessIDBServer.h
deleted file mode 100644
index 8e736a7..0000000
--- a/Source/WebCore/Modules/indexeddb/shared/InProcessIDBServer.h
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * Copyright (C) 2015 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.
- */
-
-#pragma once
-
-#if ENABLE(INDEXED_DATABASE)
-
-#include "IDBConnectionToClient.h"
-#include "IDBConnectionToServer.h"
-#include "IDBServer.h"
-#include "StorageQuotaManager.h"
-#include <wtf/RefCounted.h>
-#include <wtf/RefPtr.h>
-#include <wtf/WeakPtr.h>
-
-namespace PAL {
-class SessionID;
-}
-
-namespace WebCore {
-
-struct ClientOrigin;
-
-namespace IDBClient {
-class IDBConnectionToServer;
-}
-
-namespace IDBServer {
-class IDBServer;
-}
-
-class InProcessIDBServer final : public IDBClient::IDBConnectionToServerDelegate, public IDBServer::IDBConnectionToClientDelegate, public RefCounted<InProcessIDBServer> {
-public:
-    using IDBClient::IDBConnectionToServerDelegate::weakPtrFactory;
-    using WeakValueType = IDBClient::IDBConnectionToServerDelegate::WeakValueType;
-
-    WEBCORE_EXPORT static Ref<InProcessIDBServer> create(PAL::SessionID);
-    WEBCORE_EXPORT static Ref<InProcessIDBServer> create(PAL::SessionID, const String& databaseDirectoryPath);
-
-    WEBCORE_EXPORT virtual ~InProcessIDBServer();
-
-    WEBCORE_EXPORT IDBClient::IDBConnectionToServer& connectionToServer() const;
-    IDBServer::IDBConnectionToClient& connectionToClient() const;
-    IDBServer::IDBServer& server() { return m_server.get(); }
-    IDBServer::IDBServer& idbServer() { return m_server.get(); }
-
-    // IDBConnectionToServer
-    void deleteDatabase(const IDBRequestData&) final;
-    void openDatabase(const IDBRequestData&) final;
-    void abortTransaction(const IDBResourceIdentifier&) final;
-    void commitTransaction(const IDBResourceIdentifier&) final;
-    void didFinishHandlingVersionChangeTransaction(uint64_t databaseConnectionIdentifier, const IDBResourceIdentifier&) final;
-    void createObjectStore(const IDBRequestData&, const IDBObjectStoreInfo&) final;
-    void deleteObjectStore(const IDBRequestData&, const String& objectStoreName) final;
-    void renameObjectStore(const IDBRequestData&, uint64_t objectStoreIdentifier, const String& newName) final;
-    void clearObjectStore(const IDBRequestData&, uint64_t objectStoreIdentifier) final;
-    void createIndex(const IDBRequestData&, const IDBIndexInfo&) final;
-    void deleteIndex(const IDBRequestData&, uint64_t objectStoreIdentifier, const String& indexName) final;
-    void renameIndex(const IDBRequestData&, uint64_t objectStoreIdentifier, uint64_t indexIdentifier, const String& newName) final;
-    void putOrAdd(const IDBRequestData&, const IDBKeyData&, const IDBValue&, const IndexedDB::ObjectStoreOverwriteMode) final;
-    void getRecord(const IDBRequestData&, const IDBGetRecordData&) final;
-    void getAllRecords(const IDBRequestData&, const IDBGetAllRecordsData&) final;
-    void getCount(const IDBRequestData&, const IDBKeyRangeData&) final;
-    void deleteRecord(const IDBRequestData&, const IDBKeyRangeData&) final;
-    void openCursor(const IDBRequestData&, const IDBCursorInfo&) final;
-    void iterateCursor(const IDBRequestData&, const IDBIterateCursorData&) final;
-    void establishTransaction(uint64_t databaseConnectionIdentifier, const IDBTransactionInfo&) final;
-    void databaseConnectionPendingClose(uint64_t databaseConnectionIdentifier) final;
-    void databaseConnectionClosed(uint64_t databaseConnectionIdentifier) final;
-    void abortOpenAndUpgradeNeeded(uint64_t databaseConnectionIdentifier, const IDBResourceIdentifier& transactionIdentifier) final;
-    void didFireVersionChangeEvent(uint64_t databaseConnectionIdentifier, const IDBResourceIdentifier& requestIdentifier, const IndexedDB::ConnectionClosedOnBehalfOfServer = IndexedDB::ConnectionClosedOnBehalfOfServer::No) final;
-    void openDBRequestCancelled(const IDBRequestData&) final;
-    void confirmDidCloseFromServer(uint64_t databaseConnectionIdentifier) final;
-    void getAllDatabaseNames(const SecurityOriginData& mainFrameOrigin, const SecurityOriginData& openingOrigin, uint64_t callbackID) final;
-
-    // IDBConnectionToClient
-    IDBConnectionIdentifier identifier() const final;
-    void didDeleteDatabase(const IDBResultData&) final;
-    void didOpenDatabase(const IDBResultData&) final;
-    void didAbortTransaction(const IDBResourceIdentifier& transactionIdentifier, const IDBError&) final;
-    void didCommitTransaction(const IDBResourceIdentifier& transactionIdentifier, const IDBError&) final;
-    void didCreateObjectStore(const IDBResultData&) final;
-    void didDeleteObjectStore(const IDBResultData&) final;
-    void didRenameObjectStore(const IDBResultData&) final;
-    void didClearObjectStore(const IDBResultData&) final;
-    void didCreateIndex(const IDBResultData&) final;
-    void didDeleteIndex(const IDBResultData&) final;
-    void didRenameIndex(const IDBResultData&) final;
-    void didPutOrAdd(const IDBResultData&) final;
-    void didGetRecord(const IDBResultData&) final;
-    void didGetAllRecords(const IDBResultData&) final;
-    void didGetCount(const IDBResultData&) final;
-    void didDeleteRecord(const IDBResultData&) final;
-    void didOpenCursor(const IDBResultData&) final;
-    void didIterateCursor(const IDBResultData&) final;
-    void fireVersionChangeEvent(IDBServer::UniqueIDBDatabaseConnection&, const IDBResourceIdentifier& requestIdentifier, uint64_t requestedVersion) final;
-    void didStartTransaction(const IDBResourceIdentifier& transactionIdentifier, const IDBError&) final;
-    void didCloseFromServer(IDBServer::UniqueIDBDatabaseConnection&, const IDBError&) final;
-    void notifyOpenDBRequestBlocked(const IDBResourceIdentifier& requestIdentifier, uint64_t oldVersion, uint64_t newVersion) final;
-    void didGetAllDatabaseNames(uint64_t callbackID, const Vector<String>& databaseNames) final;
-
-    void ref() override { RefCounted<InProcessIDBServer>::ref(); }
-    void deref() override { RefCounted<InProcessIDBServer>::deref(); }
-
-    StorageQuotaManager* quotaManager(const ClientOrigin&);
-
-private:
-    explicit InProcessIDBServer(PAL::SessionID);
-    InProcessIDBServer(PAL::SessionID, const String& databaseDirectoryPath);
-
-    Ref<IDBServer::IDBServer> m_server;
-    RefPtr<IDBClient::IDBConnectionToServer> m_connectionToServer;
-    RefPtr<IDBServer::IDBConnectionToClient> m_connectionToClient;
-
-    HashMap<ClientOrigin, RefPtr<StorageQuotaManager>> m_quotaManagers;
-};
-
-} // namespace WebCore
-
-#endif // ENABLE(INDEXED_DATABASE)
diff --git a/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp b/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp
index 8ae3d15..2dd6cc3 100644
--- a/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp
+++ b/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp
@@ -33,12 +33,15 @@
 #include "Document.h"
 #include "Event.h"
 #include "EventNames.h"
+#include "Frame.h"
+#include "FrameLoader.h"
 #include "JSDOMPromiseDeferred.h"
 #include "JSOverconstrainedError.h"
 #include "Logging.h"
 #include "MediaConstraints.h"
 #include "MediaStream.h"
 #include "MediaStreamPrivate.h"
+#include "NetworkingContext.h"
 #include "NotImplemented.h"
 #include "OverconstrainedError.h"
 #include "Page.h"
diff --git a/Source/WebCore/Modules/pictureinpicture/HTMLVideoElementPictureInPicture.cpp b/Source/WebCore/Modules/pictureinpicture/HTMLVideoElementPictureInPicture.cpp
index 02b73fb..6fd8d25 100644
--- a/Source/WebCore/Modules/pictureinpicture/HTMLVideoElementPictureInPicture.cpp
+++ b/Source/WebCore/Modules/pictureinpicture/HTMLVideoElementPictureInPicture.cpp
@@ -29,6 +29,7 @@
 
 #if ENABLE(PICTURE_IN_PICTURE_API)
 
+#include "EventNames.h"
 #include "HTMLVideoElement.h"
 #include "JSDOMPromiseDeferred.h"
 #include "JSPictureInPictureWindow.h"
diff --git a/Source/WebCore/Sources.txt b/Source/WebCore/Sources.txt
index cdd31a8..246c7ad 100644
--- a/Source/WebCore/Sources.txt
+++ b/Source/WebCore/Sources.txt
@@ -142,7 +142,6 @@
 Modules/indexeddb/shared/IDBResourceIdentifier.cpp
 Modules/indexeddb/shared/IDBResultData.cpp
 Modules/indexeddb/shared/IDBTransactionInfo.cpp
-Modules/indexeddb/shared/InProcessIDBServer.cpp
 Modules/indexeddb/shared/IndexKey.cpp
 
 Modules/mediacapabilities/MediaCapabilities.cpp
diff --git a/Source/WebCore/WebCore.xcodeproj/project.pbxproj b/Source/WebCore/WebCore.xcodeproj/project.pbxproj
index 2b2eb0d..2b61f35 100644
--- a/Source/WebCore/WebCore.xcodeproj/project.pbxproj
+++ b/Source/WebCore/WebCore.xcodeproj/project.pbxproj
@@ -1390,7 +1390,6 @@
 		51058AE21D67C229009A538C /* MockGamepadProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 51058ADA1D679257009A538C /* MockGamepadProvider.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		5105F0691D4BA9D900FB80BC /* IDBGetRecordData.h in Headers */ = {isa = PBXBuildFile; fileRef = 5105F0681D4BA54100FB80BC /* IDBGetRecordData.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		5106D7BE18BDB76F000AB166 /* ContextMenuContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 5106D7BC18BDB76F000AB166 /* ContextMenuContext.h */; settings = {ATTRIBUTES = (Private, ); }; };
-		510A58E51BAA40B100C19282 /* InProcessIDBServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 510A58E31BAA40AE00C19282 /* InProcessIDBServer.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		510A58FA1BACC7F200C19282 /* IDBRequestData.h in Headers */ = {isa = PBXBuildFile; fileRef = 510A58F61BACC4A500C19282 /* IDBRequestData.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		510D4A34103165EE0049EA54 /* SocketStreamError.h in Headers */ = {isa = PBXBuildFile; fileRef = 510D4A2E103165EE0049EA54 /* SocketStreamError.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		510D4A37103165EE0049EA54 /* SocketStreamHandle.h in Headers */ = {isa = PBXBuildFile; fileRef = 510D4A31103165EE0049EA54 /* SocketStreamHandle.h */; settings = {ATTRIBUTES = (Private, ); }; };
@@ -8051,8 +8050,6 @@
 		5105F06A1D4BB0BC00FB80BC /* IDBGetRecordData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBGetRecordData.cpp; sourceTree = "<group>"; };
 		5106D7BB18BDB76F000AB166 /* ContextMenuContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ContextMenuContext.cpp; sourceTree = "<group>"; };
 		5106D7BC18BDB76F000AB166 /* ContextMenuContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContextMenuContext.h; sourceTree = "<group>"; };
-		510A58E21BAA40AE00C19282 /* InProcessIDBServer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InProcessIDBServer.cpp; sourceTree = "<group>"; };
-		510A58E31BAA40AE00C19282 /* InProcessIDBServer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InProcessIDBServer.h; sourceTree = "<group>"; };
 		510A58EF1BAB720F00C19282 /* IDBServer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBServer.cpp; sourceTree = "<group>"; };
 		510A58F01BAB720F00C19282 /* IDBServer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBServer.h; sourceTree = "<group>"; };
 		510A58F51BACC4A500C19282 /* IDBRequestData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBRequestData.cpp; sourceTree = "<group>"; };
@@ -18937,8 +18934,6 @@
 				5198F7AB1BBDD3E300E2CC5F /* IDBTransactionInfo.h */,
 				517138ED1BED1D17000D5F01 /* IndexKey.cpp */,
 				517138EE1BED1D17000D5F01 /* IndexKey.h */,
-				510A58E21BAA40AE00C19282 /* InProcessIDBServer.cpp */,
-				510A58E31BAA40AE00C19282 /* InProcessIDBServer.h */,
 			);
 			path = shared;
 			sourceTree = "<group>";
@@ -30249,7 +30244,6 @@
 				BCEA485A097D93020094C9E4 /* InlineTextBox.h in Headers */,
 				1C010701192594DF008A4201 /* InlineTextBoxStyle.h in Headers */,
 				6F1CC1DE225F8B4900720AD2 /* InlineTextItem.h in Headers */,
-				510A58E51BAA40B100C19282 /* InProcessIDBServer.h in Headers */,
 				2EB767571DA19BDF003E23B5 /* InputEvent.h in Headers */,
 				E52EFDF42112875A00AD282A /* InputMode.h in Headers */,
 				37E3524D12450C6600BAF5D9 /* InputType.h in Headers */,
diff --git a/Source/WebCore/loader/EmptyClients.cpp b/Source/WebCore/loader/EmptyClients.cpp
index 600ef7b..779e914 100644
--- a/Source/WebCore/loader/EmptyClients.cpp
+++ b/Source/WebCore/loader/EmptyClients.cpp
@@ -50,7 +50,7 @@
 #include "FrameNetworkingContext.h"
 #include "HTMLFormElement.h"
 #include "HistoryItem.h"
-#include "InProcessIDBServer.h"
+#include "IDBConnectionToServer.h"
 #include "InspectorClient.h"
 #include "LibWebRTCProvider.h"
 #include "NetworkStorageSession.h"
@@ -123,10 +123,46 @@
 
 class EmptyDatabaseProvider final : public DatabaseProvider {
 #if ENABLE(INDEXED_DATABASE)
-    IDBClient::IDBConnectionToServer& idbConnectionToServerForSession(const PAL::SessionID& sessionID) final
+    struct EmptyIDBConnectionToServerDeletegate final : public IDBClient::IDBConnectionToServerDelegate {
+        IDBConnectionIdentifier identifier() const final { return { }; }
+        void deleteDatabase(const IDBRequestData&) final { }
+        void openDatabase(const IDBRequestData&) final { }
+        void abortTransaction(const IDBResourceIdentifier&) final { }
+        void commitTransaction(const IDBResourceIdentifier&) final { }
+        void didFinishHandlingVersionChangeTransaction(uint64_t, const IDBResourceIdentifier&) final { }
+        void createObjectStore(const IDBRequestData&, const IDBObjectStoreInfo&) final { }
+        void deleteObjectStore(const IDBRequestData&, const String&) final { }
+        void renameObjectStore(const IDBRequestData&, uint64_t, const String&) final { }
+        void clearObjectStore(const IDBRequestData&, uint64_t) final { }
+        void createIndex(const IDBRequestData&, const IDBIndexInfo&) final { }
+        void deleteIndex(const IDBRequestData&, uint64_t, const String&) final { }
+        void renameIndex(const IDBRequestData&, uint64_t, uint64_t, const String&) final { }
+        void putOrAdd(const IDBRequestData&, const IDBKeyData&, const IDBValue&, const IndexedDB::ObjectStoreOverwriteMode) final { }
+        void getRecord(const IDBRequestData&, const IDBGetRecordData&) final { }
+        void getAllRecords(const IDBRequestData&, const IDBGetAllRecordsData&) final { }
+        void getCount(const IDBRequestData&, const IDBKeyRangeData&) final { }
+        void deleteRecord(const IDBRequestData&, const IDBKeyRangeData&) final { }
+        void openCursor(const IDBRequestData&, const IDBCursorInfo&) final { }
+        void iterateCursor(const IDBRequestData&, const IDBIterateCursorData&) final { }
+        void establishTransaction(uint64_t, const IDBTransactionInfo&) final { }
+        void databaseConnectionPendingClose(uint64_t) final { }
+        void databaseConnectionClosed(uint64_t) final { }
+        void abortOpenAndUpgradeNeeded(uint64_t, const IDBResourceIdentifier&) final { }
+        void didFireVersionChangeEvent(uint64_t, const IDBResourceIdentifier&, const IndexedDB::ConnectionClosedOnBehalfOfServer) final { }
+        void openDBRequestCancelled(const IDBRequestData&) final { }
+        void getAllDatabaseNames(const SecurityOriginData&, const SecurityOriginData&, uint64_t) final { }
+        ~EmptyIDBConnectionToServerDeletegate() { }
+        
+        void confirmDidCloseFromServer(uint64_t) final { }
+        void ref() { }
+        void deref() { }
+    };
+
+    IDBClient::IDBConnectionToServer& idbConnectionToServerForSession(const PAL::SessionID&) final
     {
-        static auto& sharedConnection = InProcessIDBServer::create(sessionID).leakRef();
-        return sharedConnection.connectionToServer();
+        static NeverDestroyed<EmptyIDBConnectionToServerDeletegate> emptyDelegate;
+        static auto& emptyConnection = IDBClient::IDBConnectionToServer::create(emptyDelegate.get()).leakRef();
+        return emptyConnection;
     }
 #endif
 };
diff --git a/Source/WebCore/page/Page.cpp b/Source/WebCore/page/Page.cpp
index 7f0e00d..203f5ae 100644
--- a/Source/WebCore/page/Page.cpp
+++ b/Source/WebCore/page/Page.cpp
@@ -150,7 +150,6 @@
 
 #if ENABLE(INDEXED_DATABASE)
 #include "IDBConnectionToServer.h"
-#include "InProcessIDBServer.h"
 #endif
 
 #if ENABLE(DATA_INTERACTION)
diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog
index a8e21dd..cdcfaa1 100644
--- a/Source/WebKit/ChangeLog
+++ b/Source/WebKit/ChangeLog
@@ -1,5 +1,14 @@
 2019-12-05  Sihui Liu  <sihui_liu@apple.com>
 
+        Move InProcessIDBServer to WebKitLegacy
+        https://bugs.webkit.org/show_bug.cgi?id=204896
+
+        Reviewed by Brady Eidson.
+
+        * WebProcess/Databases/WebDatabaseProvider.h:
+
+2019-12-05  Sihui Liu  <sihui_liu@apple.com>
+
         Add ThreadMessageReceiver to IPC::Connection
         https://bugs.webkit.org/show_bug.cgi?id=204908
 
diff --git a/Source/WebKit/WebProcess/Databases/WebDatabaseProvider.h b/Source/WebKit/WebProcess/Databases/WebDatabaseProvider.h
index d4e7f1c..8e9f28b 100644
--- a/Source/WebKit/WebProcess/Databases/WebDatabaseProvider.h
+++ b/Source/WebKit/WebProcess/Databases/WebDatabaseProvider.h
@@ -27,7 +27,6 @@
 #define WebDatabaseProvider_h
 
 #include <WebCore/DatabaseProvider.h>
-#include <WebCore/InProcessIDBServer.h>
 #include <wtf/HashMap.h>
 
 namespace WebKit {
diff --git a/Source/WebKitLegacy/CMakeLists.txt b/Source/WebKitLegacy/CMakeLists.txt
index 0c3f524..02665bd 100644
--- a/Source/WebKitLegacy/CMakeLists.txt
+++ b/Source/WebKitLegacy/CMakeLists.txt
@@ -3,6 +3,7 @@
 set_property(DIRECTORY . PROPERTY FOLDER "WebKitLegacy")
 
 set(WebKitLegacy_SOURCES
+    Storage/InprocessIDBServer.cpp
     Storage/StorageAreaImpl.cpp
     Storage/StorageAreaSync.cpp
     Storage/StorageNamespaceImpl.cpp
diff --git a/Source/WebKitLegacy/ChangeLog b/Source/WebKitLegacy/ChangeLog
index df9835b..73af834 100644
--- a/Source/WebKitLegacy/ChangeLog
+++ b/Source/WebKitLegacy/ChangeLog
@@ -1,3 +1,76 @@
+2019-12-05  Sihui Liu  <sihui_liu@apple.com>
+
+        Move InProcessIDBServer to WebKitLegacy
+        https://bugs.webkit.org/show_bug.cgi?id=204896
+
+        Reviewed by Brady Eidson.
+
+        * CMakeLists.txt:
+        * Storage/InProcessIDBServer.cpp: Renamed from Source/WebCore/Modules/indexeddb/shared/InProcessIDBServer.cpp.
+        (InProcessIDBServer::create):
+        (InProcessIDBServer::quotaManager):
+        (storageQuotaManagerSpaceRequester):
+        (InProcessIDBServer::InProcessIDBServer):
+        (InProcessIDBServer::identifier const):
+        (InProcessIDBServer::connectionToServer const):
+        (InProcessIDBServer::connectionToClient const):
+        (InProcessIDBServer::deleteDatabase):
+        (InProcessIDBServer::didDeleteDatabase):
+        (InProcessIDBServer::openDatabase):
+        (InProcessIDBServer::didOpenDatabase):
+        (InProcessIDBServer::didAbortTransaction):
+        (InProcessIDBServer::didCommitTransaction):
+        (InProcessIDBServer::didCreateObjectStore):
+        (InProcessIDBServer::didDeleteObjectStore):
+        (InProcessIDBServer::didRenameObjectStore):
+        (InProcessIDBServer::didClearObjectStore):
+        (InProcessIDBServer::didCreateIndex):
+        (InProcessIDBServer::didDeleteIndex):
+        (InProcessIDBServer::didRenameIndex):
+        (InProcessIDBServer::didPutOrAdd):
+        (InProcessIDBServer::didGetRecord):
+        (InProcessIDBServer::didGetAllRecords):
+        (InProcessIDBServer::didGetCount):
+        (InProcessIDBServer::didDeleteRecord):
+        (InProcessIDBServer::didOpenCursor):
+        (InProcessIDBServer::didIterateCursor):
+        (InProcessIDBServer::abortTransaction):
+        (InProcessIDBServer::commitTransaction):
+        (InProcessIDBServer::didFinishHandlingVersionChangeTransaction):
+        (InProcessIDBServer::createObjectStore):
+        (InProcessIDBServer::deleteObjectStore):
+        (InProcessIDBServer::renameObjectStore):
+        (InProcessIDBServer::clearObjectStore):
+        (InProcessIDBServer::createIndex):
+        (InProcessIDBServer::deleteIndex):
+        (InProcessIDBServer::renameIndex):
+        (InProcessIDBServer::putOrAdd):
+        (InProcessIDBServer::getRecord):
+        (InProcessIDBServer::getAllRecords):
+        (InProcessIDBServer::getCount):
+        (InProcessIDBServer::deleteRecord):
+        (InProcessIDBServer::openCursor):
+        (InProcessIDBServer::iterateCursor):
+        (InProcessIDBServer::establishTransaction):
+        (InProcessIDBServer::fireVersionChangeEvent):
+        (InProcessIDBServer::didStartTransaction):
+        (InProcessIDBServer::didCloseFromServer):
+        (InProcessIDBServer::notifyOpenDBRequestBlocked):
+        (InProcessIDBServer::databaseConnectionPendingClose):
+        (InProcessIDBServer::databaseConnectionClosed):
+        (InProcessIDBServer::abortOpenAndUpgradeNeeded):
+        (InProcessIDBServer::didFireVersionChangeEvent):
+        (InProcessIDBServer::openDBRequestCancelled):
+        (InProcessIDBServer::confirmDidCloseFromServer):
+        (InProcessIDBServer::getAllDatabaseNames):
+        (InProcessIDBServer::didGetAllDatabaseNames):
+        * Storage/InProcessIDBServer.h: Added.
+        * Storage/WebDatabaseProvider.cpp:
+        (WebDatabaseProvider::idbConnectionToServerForSession):
+        (WebDatabaseProvider::deleteAllDatabases):
+        * Storage/WebDatabaseProvider.h:
+        * WebKitLegacy.xcodeproj/project.pbxproj:
+
 2019-12-04  Chris Dumez  <cdumez@apple.com>
 
         PageConfiguration::progressTrackerClient should use a smart pointer
diff --git a/Source/WebCore/Modules/indexeddb/shared/InProcessIDBServer.cpp b/Source/WebKitLegacy/Storage/InProcessIDBServer.cpp
similarity index 97%
rename from Source/WebCore/Modules/indexeddb/shared/InProcessIDBServer.cpp
rename to Source/WebKitLegacy/Storage/InProcessIDBServer.cpp
index d65bd5a..9fe3b8f 100644
--- a/Source/WebCore/Modules/indexeddb/shared/InProcessIDBServer.cpp
+++ b/Source/WebKitLegacy/Storage/InProcessIDBServer.cpp
@@ -23,27 +23,22 @@
  * THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include "config.h"
 #include "InProcessIDBServer.h"
 
 #if ENABLE(INDEXED_DATABASE)
 
-#include "IDBConnectionToClient.h"
-#include "IDBConnectionToServer.h"
-#include "IDBCursorInfo.h"
-#include "IDBGetRecordData.h"
-#include "IDBIterateCursorData.h"
-#include "IDBKeyRangeData.h"
-#include "IDBOpenDBRequest.h"
-#include "IDBRequestData.h"
-#include "IDBResultData.h"
-#include "IDBValue.h"
-#include "Logging.h"
-#include "ProcessIdentifier.h"
-#include <wtf/FileSystem.h>
+#include <WebCore/IDBCursorInfo.h>
+#include <WebCore/IDBGetRecordData.h>
+#include <WebCore/IDBIterateCursorData.h>
+#include <WebCore/IDBKeyRangeData.h>
+#include <WebCore/IDBOpenDBRequest.h>
+#include <WebCore/IDBRequestData.h>
+#include <WebCore/IDBResultData.h>
+#include <WebCore/IDBTransactionInfo.h>
+#include <WebCore/IDBValue.h>
 #include <wtf/RunLoop.h>
 
-namespace WebCore {
+using namespace WebCore;
 
 Ref<InProcessIDBServer> InProcessIDBServer::create(PAL::SessionID sessionID)
 {
@@ -465,6 +460,4 @@
     });
 }
 
-} // namespace WebCore
-
 #endif // ENABLE(INDEXED_DATABASE)
diff --git a/Source/WebKitLegacy/Storage/InProcessIDBServer.h b/Source/WebKitLegacy/Storage/InProcessIDBServer.h
new file mode 100644
index 0000000..ebea27e
--- /dev/null
+++ b/Source/WebKitLegacy/Storage/InProcessIDBServer.h
@@ -0,0 +1,139 @@
+/*
+ * Copyright (C) 2015 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.
+ */
+
+#pragma once
+
+#if ENABLE(INDEXED_DATABASE)
+
+#include <WebCore/IDBConnectionToClient.h>
+#include <WebCore/IDBConnectionToServer.h>
+#include <WebCore/IDBServer.h>
+#include <WebCore/StorageQuotaManager.h>
+#include <wtf/RefCounted.h>
+#include <wtf/RefPtr.h>
+#include <wtf/WeakPtr.h>
+
+namespace PAL {
+class SessionID;
+}
+
+namespace WebCore {
+struct ClientOrigin;
+
+namespace IDBClient {
+class IDBConnectionToServer;
+}
+
+namespace IDBServer {
+class IDBServer;
+}
+} // namespace WebCore
+
+class InProcessIDBServer final : public WebCore::IDBClient::IDBConnectionToServerDelegate, public WebCore::IDBServer::IDBConnectionToClientDelegate, public RefCounted<InProcessIDBServer> {
+public:
+    using WebCore::IDBClient::IDBConnectionToServerDelegate::weakPtrFactory;
+    using WeakValueType = WebCore::IDBClient::IDBConnectionToServerDelegate::WeakValueType;
+
+    WEBCORE_EXPORT static Ref<InProcessIDBServer> create(PAL::SessionID);
+    WEBCORE_EXPORT static Ref<InProcessIDBServer> create(PAL::SessionID, const String& databaseDirectoryPath);
+
+    WEBCORE_EXPORT virtual ~InProcessIDBServer();
+
+    WebCore::IDBClient::IDBConnectionToServer& connectionToServer() const;
+    WebCore::IDBServer::IDBConnectionToClient& connectionToClient() const;
+    WebCore::IDBServer::IDBServer& server() { return m_server.get(); }
+
+    // IDBConnectionToServer
+    void deleteDatabase(const WebCore::IDBRequestData&) final;
+    void openDatabase(const WebCore::IDBRequestData&) final;
+    void abortTransaction(const WebCore::IDBResourceIdentifier&) final;
+    void commitTransaction(const WebCore::IDBResourceIdentifier&) final;
+    void didFinishHandlingVersionChangeTransaction(uint64_t databaseConnectionIdentifier, const WebCore::IDBResourceIdentifier&) final;
+    void createObjectStore(const WebCore::IDBRequestData&, const WebCore::IDBObjectStoreInfo&) final;
+    void deleteObjectStore(const WebCore::IDBRequestData&, const String& objectStoreName) final;
+    void renameObjectStore(const WebCore::IDBRequestData&, uint64_t objectStoreIdentifier, const String& newName) final;
+    void clearObjectStore(const WebCore::IDBRequestData&, uint64_t objectStoreIdentifier) final;
+    void createIndex(const WebCore::IDBRequestData&, const WebCore::IDBIndexInfo&) final;
+    void deleteIndex(const WebCore::IDBRequestData&, uint64_t objectStoreIdentifier, const String& indexName) final;
+    void renameIndex(const WebCore::IDBRequestData&, uint64_t objectStoreIdentifier, uint64_t indexIdentifier, const String& newName) final;
+    void putOrAdd(const WebCore::IDBRequestData&, const WebCore::IDBKeyData&, const WebCore::IDBValue&, const WebCore::IndexedDB::ObjectStoreOverwriteMode) final;
+    void getRecord(const WebCore::IDBRequestData&, const WebCore::IDBGetRecordData&) final;
+    void getAllRecords(const WebCore::IDBRequestData&, const WebCore::IDBGetAllRecordsData&) final;
+    void getCount(const WebCore::IDBRequestData&, const WebCore::IDBKeyRangeData&) final;
+    void deleteRecord(const WebCore::IDBRequestData&, const WebCore::IDBKeyRangeData&) final;
+    void openCursor(const WebCore::IDBRequestData&, const WebCore::IDBCursorInfo&) final;
+    void iterateCursor(const WebCore::IDBRequestData&, const WebCore::IDBIterateCursorData&) final;
+    void establishTransaction(uint64_t databaseConnectionIdentifier, const WebCore::IDBTransactionInfo&) final;
+    void databaseConnectionPendingClose(uint64_t databaseConnectionIdentifier) final;
+    void databaseConnectionClosed(uint64_t databaseConnectionIdentifier) final;
+    void abortOpenAndUpgradeNeeded(uint64_t databaseConnectionIdentifier, const WebCore::IDBResourceIdentifier& transactionIdentifier) final;
+    void didFireVersionChangeEvent(uint64_t databaseConnectionIdentifier, const WebCore::IDBResourceIdentifier& requestIdentifier, const WebCore::IndexedDB::ConnectionClosedOnBehalfOfServer) final;
+    void openDBRequestCancelled(const WebCore::IDBRequestData&) final;
+    void confirmDidCloseFromServer(uint64_t databaseConnectionIdentifier) final;
+    void getAllDatabaseNames(const WebCore::SecurityOriginData& mainFrameOrigin, const WebCore::SecurityOriginData& openingOrigin, uint64_t callbackID) final;
+
+    // IDBConnectionToClient
+    WebCore::IDBConnectionIdentifier identifier() const final;
+    void didDeleteDatabase(const WebCore::IDBResultData&) final;
+    void didOpenDatabase(const WebCore::IDBResultData&) final;
+    void didAbortTransaction(const WebCore::IDBResourceIdentifier& transactionIdentifier, const WebCore::IDBError&) final;
+    void didCommitTransaction(const WebCore::IDBResourceIdentifier& transactionIdentifier, const WebCore::IDBError&) final;
+    void didCreateObjectStore(const WebCore::IDBResultData&) final;
+    void didDeleteObjectStore(const WebCore::IDBResultData&) final;
+    void didRenameObjectStore(const WebCore::IDBResultData&) final;
+    void didClearObjectStore(const WebCore::IDBResultData&) final;
+    void didCreateIndex(const WebCore::IDBResultData&) final;
+    void didDeleteIndex(const WebCore::IDBResultData&) final;
+    void didRenameIndex(const WebCore::IDBResultData&) final;
+    void didPutOrAdd(const WebCore::IDBResultData&) final;
+    void didGetRecord(const WebCore::IDBResultData&) final;
+    void didGetAllRecords(const WebCore::IDBResultData&) final;
+    void didGetCount(const WebCore::IDBResultData&) final;
+    void didDeleteRecord(const WebCore::IDBResultData&) final;
+    void didOpenCursor(const WebCore::IDBResultData&) final;
+    void didIterateCursor(const WebCore::IDBResultData&) final;
+    void fireVersionChangeEvent(WebCore::IDBServer::UniqueIDBDatabaseConnection&, const WebCore::IDBResourceIdentifier& requestIdentifier, uint64_t requestedVersion) final;
+    void didStartTransaction(const WebCore::IDBResourceIdentifier& transactionIdentifier, const WebCore::IDBError&) final;
+    void didCloseFromServer(WebCore::IDBServer::UniqueIDBDatabaseConnection&, const WebCore::IDBError&) final;
+    void notifyOpenDBRequestBlocked(const WebCore::IDBResourceIdentifier& requestIdentifier, uint64_t oldVersion, uint64_t newVersion) final;
+    void didGetAllDatabaseNames(uint64_t callbackID, const Vector<String>& databaseNames) final;
+
+    void ref() override { RefCounted<InProcessIDBServer>::ref(); }
+    void deref() override { RefCounted<InProcessIDBServer>::deref(); }
+
+    WebCore::StorageQuotaManager* quotaManager(const WebCore::ClientOrigin&);
+
+private:
+    explicit InProcessIDBServer(PAL::SessionID);
+    InProcessIDBServer(PAL::SessionID, const String& databaseDirectoryPath);
+
+    Ref<WebCore::IDBServer::IDBServer> m_server;
+    RefPtr<WebCore::IDBClient::IDBConnectionToServer> m_connectionToServer;
+    RefPtr<WebCore::IDBServer::IDBConnectionToClient> m_connectionToClient;
+
+    HashMap<WebCore::ClientOrigin, RefPtr<WebCore::StorageQuotaManager>> m_quotaManagers;
+};
+
+#endif // ENABLE(INDEXED_DATABASE)
diff --git a/Source/WebKitLegacy/Storage/WebDatabaseProvider.cpp b/Source/WebKitLegacy/Storage/WebDatabaseProvider.cpp
index 7f038f3..c2f71ba 100644
--- a/Source/WebKitLegacy/Storage/WebDatabaseProvider.cpp
+++ b/Source/WebKitLegacy/Storage/WebDatabaseProvider.cpp
@@ -46,14 +46,14 @@
 WebCore::IDBClient::IDBConnectionToServer& WebDatabaseProvider::idbConnectionToServerForSession(const PAL::SessionID& sessionID)
 {
     return m_idbServerMap.ensure(sessionID, [&sessionID] {
-        return sessionID.isEphemeral() ? WebCore::InProcessIDBServer::create(sessionID) : WebCore::InProcessIDBServer::create(sessionID, indexedDatabaseDirectoryPath());
+        return sessionID.isEphemeral() ? InProcessIDBServer::create(sessionID) : InProcessIDBServer::create(sessionID, indexedDatabaseDirectoryPath());
     }).iterator->value->connectionToServer();
 }
 
 void WebDatabaseProvider::deleteAllDatabases()
 {
     for (auto& server : m_idbServerMap.values())
-        server->idbServer().closeAndDeleteDatabasesModifiedSince(-WallTime::infinity(), [] { });
+        server->server().closeAndDeleteDatabasesModifiedSince(-WallTime::infinity(), [] { });
 }
 
 #endif
diff --git a/Source/WebKitLegacy/Storage/WebDatabaseProvider.h b/Source/WebKitLegacy/Storage/WebDatabaseProvider.h
index d667b86..ad9cb4f 100644
--- a/Source/WebKitLegacy/Storage/WebDatabaseProvider.h
+++ b/Source/WebKitLegacy/Storage/WebDatabaseProvider.h
@@ -31,7 +31,7 @@
 #include <wtf/RefPtr.h>
 
 #if ENABLE(INDEXED_DATABASE)
-#include <WebCore/InProcessIDBServer.h>
+#include "InProcessIDBServer.h"
 #endif
 
 class WebDatabaseProvider final : public WebCore::DatabaseProvider {
@@ -52,6 +52,6 @@
     static String indexedDatabaseDirectoryPath();
 
 #if ENABLE(INDEXED_DATABASE)
-    HashMap<PAL::SessionID, RefPtr<WebCore::InProcessIDBServer>> m_idbServerMap;
+    HashMap<PAL::SessionID, RefPtr<InProcessIDBServer>> m_idbServerMap;
 #endif
 };
diff --git a/Source/WebKitLegacy/WebKitLegacy.xcodeproj/project.pbxproj b/Source/WebKitLegacy/WebKitLegacy.xcodeproj/project.pbxproj
index ce6eb36..41b945c 100644
--- a/Source/WebKitLegacy/WebKitLegacy.xcodeproj/project.pbxproj
+++ b/Source/WebKitLegacy/WebKitLegacy.xcodeproj/project.pbxproj
@@ -227,6 +227,8 @@
 		934C11670D8710BB00C32ABD /* WebDynamicScrollBarsViewInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 934C11660D8710BB00C32ABD /* WebDynamicScrollBarsViewInternal.h */; };
 		934C4A910F01406C009372C0 /* WebNSObjectExtras.mm in Sources */ = {isa = PBXBuildFile; fileRef = 934C4A900F01406C009372C0 /* WebNSObjectExtras.mm */; };
 		934C4AA00F0141F7009372C0 /* WebResourceInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 934C4A9F0F0141F7009372C0 /* WebResourceInternal.h */; };
+		9364006E23996E81001E185E /* InProcessIDBServer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9364006C23996E80001E185E /* InProcessIDBServer.cpp */; };
+		9364006F23996E81001E185E /* InProcessIDBServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 9364006D23996E81001E185E /* InProcessIDBServer.h */; };
 		936A2DE80FD2D08000D312DB /* WebTextCompletionController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 936A2DE70FD2D08000D312DB /* WebTextCompletionController.mm */; };
 		936A2DEA0FD2D08400D312DB /* WebTextCompletionController.h in Headers */ = {isa = PBXBuildFile; fileRef = 936A2DE90FD2D08400D312DB /* WebTextCompletionController.h */; };
 		9391F275121B38BD00EBF7E8 /* WebFrameNetworkingContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 9391F273121B38BD00EBF7E8 /* WebFrameNetworkingContext.h */; };
@@ -1024,6 +1026,8 @@
 		934C11660D8710BB00C32ABD /* WebDynamicScrollBarsViewInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebDynamicScrollBarsViewInternal.h; sourceTree = "<group>"; };
 		934C4A900F01406C009372C0 /* WebNSObjectExtras.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebNSObjectExtras.mm; sourceTree = "<group>"; };
 		934C4A9F0F0141F7009372C0 /* WebResourceInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebResourceInternal.h; sourceTree = "<group>"; };
+		9364006C23996E80001E185E /* InProcessIDBServer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = InProcessIDBServer.cpp; path = Storage/InProcessIDBServer.cpp; sourceTree = SOURCE_ROOT; };
+		9364006D23996E81001E185E /* InProcessIDBServer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = InProcessIDBServer.h; path = Storage/InProcessIDBServer.h; sourceTree = SOURCE_ROOT; };
 		936A2DE70FD2D08000D312DB /* WebTextCompletionController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebTextCompletionController.mm; sourceTree = "<group>"; };
 		936A2DE90FD2D08400D312DB /* WebTextCompletionController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebTextCompletionController.h; sourceTree = "<group>"; };
 		9391F273121B38BD00EBF7E8 /* WebFrameNetworkingContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebFrameNetworkingContext.h; sourceTree = "<group>"; };
@@ -1833,6 +1837,8 @@
 		511F3FC30CECC7E200852565 /* Storage */ = {
 			isa = PBXGroup;
 			children = (
+				9364006C23996E80001E185E /* InProcessIDBServer.cpp */,
+				9364006D23996E81001E185E /* InProcessIDBServer.h */,
 				1A6B31241A51F3A900422975 /* StorageAreaImpl.cpp */,
 				1A6B31251A51F3A900422975 /* StorageAreaImpl.h */,
 				1A6B31261A51F3A900422975 /* StorageAreaSync.cpp */,
@@ -2881,6 +2887,7 @@
 				93D437991D57ABEF00AB85EA /* ExceptionHandlers.h in Headers */,
 				1A60519417502A5D00BC62F5 /* HistoryPropertyList.h in Headers */,
 				1A8DED500EE88B8A00F25022 /* HostedNetscapePluginStream.h in Headers */,
+				9364006F23996E81001E185E /* InProcessIDBServer.h in Headers */,
 				A10C1D3218202FC50036883A /* MemoryMeasure.h in Headers */,
 				1AAF5CEA0EDDE1FE008D883D /* NetscapePluginHostManager.h in Headers */,
 				1AAF5CEC0EDDE1FE008D883D /* NetscapePluginHostProxy.h in Headers */,
@@ -3402,6 +3409,7 @@
 				5C9A4E5322DE4627007DB353 /* DOMUIKitExtensions.mm in Sources */,
 				1A60519317502A5D00BC62F5 /* HistoryPropertyList.mm in Sources */,
 				1A8DED510EE88B8A00F25022 /* HostedNetscapePluginStream.mm in Sources */,
+				9364006E23996E81001E185E /* InProcessIDBServer.cpp in Sources */,
 				A10C1D3318202FC50036883A /* MemoryMeasure.mm in Sources */,
 				1AAF5CEB0EDDE1FE008D883D /* NetscapePluginHostManager.mm in Sources */,
 				1AAF5CED0EDDE1FE008D883D /* NetscapePluginHostProxy.mm in Sources */,