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 */,
