12015-09-30 Brady Eidson <beidson@apple.com>
2
3 Add UniqueIDBDatabase object, IDBBackingStore objects, and a database operation thread.
4 https://bugs.webkit.org/show_bug.cgi?id=149678
5
6 Reviewed by NOBODY (OOPS!).
7
8 Test: storage/indexeddb/modern/opendatabase-request-event.html
9
10 - UniqueIDBDatabase represents a specific IDB database instance that can have multiple
11 connections to it.
12 - IDBBackingStore is an abstract representation of a unique database's backing store,
13 and has a concrete in-memory implementation for now.
14 - The database thread exists on IDBServer and is for offloading actual database I/O from
15 the main thread.
16
17 * CMakeLists.txt:
18
19 * Modules/indexeddb/IDBDatabaseIdentifier.cpp:
20 (WebCore::IDBDatabaseIdentifier::isolatedCopy):
21 * Modules/indexeddb/IDBDatabaseIdentifier.h:
22
23 * Modules/indexeddb/client/IDBConnectionToServer.cpp:
24 (WebCore::IDBClient::IDBConnectionToServer::openDatabase):
25 (WebCore::IDBClient::IDBConnectionToServer::didOpenDatabase):
26 * Modules/indexeddb/client/IDBConnectionToServer.h:
27 * Modules/indexeddb/client/IDBConnectionToServerDelegate.h:
28
29 * Modules/indexeddb/client/IDBFactoryImpl.cpp:
30 (WebCore::IDBClient::IDBFactory::openInternal):
31
32 * Modules/indexeddb/server/IDBBackingStore.h: Copied from Source/WebCore/Modules/indexeddb/server/IDBConnectionToClientDelegate.h.
33 (WebCore::IDBServer::IDBBackingStore::~IDBBackingStore):
34
35 * Modules/indexeddb/server/IDBConnectionToClient.cpp:
36 (WebCore::IDBServer::IDBConnectionToClient::didOpenDatabase):
37 * Modules/indexeddb/server/IDBConnectionToClient.h:
38 * Modules/indexeddb/server/IDBConnectionToClientDelegate.h:
39
40 * Modules/indexeddb/server/IDBServer.cpp:
41 (WebCore::IDBServer::IDBServer::IDBServer):
42 (WebCore::IDBServer::IDBServer::getOrCreateUniqueIDBDatabase):
43 (WebCore::IDBServer::IDBServer::createBackingStore):
44 (WebCore::IDBServer::IDBServer::openDatabase):
45 (WebCore::IDBServer::IDBServer::deleteDatabase):
46 (WebCore::IDBServer::IDBServer::postDatabaseTask):
47 (WebCore::IDBServer::IDBServer::postDatabaseTaskReply):
48 (WebCore::IDBServer::IDBServer::databaseThreadEntry):
49 (WebCore::IDBServer::IDBServer::databaseRunLoop):
50 (WebCore::IDBServer::IDBServer::handleTaskRepliesOnMainThread):
51 * Modules/indexeddb/server/IDBServer.h:
52
53 * Modules/indexeddb/server/IDBServerOperation.cpp: Copied from Source/WebCore/Modules/indexeddb/server/IDBConnectionToClientDelegate.h.
54 (WebCore::IDBServer::IDBServerOperation::create):
55 (WebCore::IDBServer::IDBServerOperation::IDBServerOperation):
56 * Modules/indexeddb/server/IDBServerOperation.h: Copied from Source/WebCore/Modules/indexeddb/server/IDBServer.h.
57 (WebCore::IDBServer::IDBServerOperation::connection):
58 (WebCore::IDBServer::IDBServerOperation::requestData):
59
60 * Modules/indexeddb/server/MemoryIDBBackingStore.cpp: Copied from Source/WebCore/Modules/indexeddb/server/IDBConnectionToClient.cpp.
61 (WebCore::IDBServer::MemoryIDBBackingStore::create):
62 (WebCore::IDBServer::MemoryIDBBackingStore::MemoryIDBBackingStore):
63 (WebCore::IDBServer::MemoryIDBBackingStore::~MemoryIDBBackingStore):
64 (WebCore::IDBServer::MemoryIDBBackingStore::getOrEstablishDatabaseInfo):
65 * Modules/indexeddb/server/MemoryIDBBackingStore.h: Copied from Source/WebCore/Modules/indexeddb/server/IDBConnectionToClient.h.
66
67 * Modules/indexeddb/server/UniqueIDBDatabase.cpp: Added.
68 (WebCore::IDBServer::UniqueIDBDatabase::UniqueIDBDatabase):
69 (WebCore::IDBServer::UniqueIDBDatabase::openDatabaseConnection):
70 (WebCore::IDBServer::UniqueIDBDatabase::handleOpenDatabaseOperations):
71 (WebCore::IDBServer::UniqueIDBDatabase::openBackingStore):
72 (WebCore::IDBServer::UniqueIDBDatabase::didOpenBackingStore):
73 * Modules/indexeddb/server/UniqueIDBDatabase.h: Copied from Source/WebCore/Modules/indexeddb/server/IDBServer.h.
74 (WebCore::IDBServer::UniqueIDBDatabase::create):
75
76 * Modules/indexeddb/shared/IDBDatabaseInfo.cpp: Copied from Source/WebCore/Modules/indexeddb/client/IDBConnectionToServerDelegate.h.
77 (WebCore::IDBDatabaseInfo::IDBDatabaseInfo):
78 (WebCore::IDBDatabaseInfo::isolatedCopy):
79 * Modules/indexeddb/shared/IDBDatabaseInfo.h: Copied from Source/WebCore/Modules/indexeddb/client/IDBConnectionToServerDelegate.h.
80 (WebCore::IDBDatabaseInfo::IDBDatabaseInfo):
81
82 * Modules/indexeddb/shared/InProcessIDBServer.cpp:
83 (WebCore::InProcessIDBServer::didDeleteDatabase):
84 (WebCore::InProcessIDBServer::openDatabase):
85 (WebCore::InProcessIDBServer::didOpenDatabase):
86 * Modules/indexeddb/shared/InProcessIDBServer.h:
87
88 * WebCore.xcodeproj/project.pbxproj:
89
90 * platform/CrossThreadCopier.cpp:
91 (WebCore::IDBDatabaseInfo>::copy):
92 (WebCore::IDBDatabaseIdentifier>::copy):
93 * platform/CrossThreadCopier.h:
94