Title: [200603] trunk/Source/WebCore
Revision
200603
Author
beid...@apple.com
Date
2016-05-09 17:59:33 -0700 (Mon, 09 May 2016)

Log Message

Modern IDB: Have server database connections remember the OpenDB request that spawned them.
https://bugs.webkit.org/show_bug.cgi?id=157498

Reviewed by Tim Horton.

No new tests (No testable change in behavior, debug only for now).

* Modules/indexeddb/server/UniqueIDBDatabase.cpp:
(WebCore::IDBServer::UniqueIDBDatabase::performCurrentOpenOperation):

* Modules/indexeddb/server/UniqueIDBDatabaseConnection.cpp:
(WebCore::IDBServer::UniqueIDBDatabaseConnection::create):
(WebCore::IDBServer::UniqueIDBDatabaseConnection::UniqueIDBDatabaseConnection):
(WebCore::IDBServer::UniqueIDBDatabaseConnection::connectionClosedFromClient):
(WebCore::IDBServer::UniqueIDBDatabaseConnection::didFireVersionChangeEvent):
(WebCore::IDBServer::UniqueIDBDatabaseConnection::createVersionChangeTransaction):
(WebCore::IDBServer::UniqueIDBDatabaseConnection::establishTransaction):
(WebCore::IDBServer::UniqueIDBDatabaseConnection::didAbortTransaction):
(WebCore::IDBServer::UniqueIDBDatabaseConnection::didCommitTransaction):
* Modules/indexeddb/server/UniqueIDBDatabaseConnection.h:
(WebCore::IDBServer::UniqueIDBDatabaseConnection::openRequestIdentifier):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (200602 => 200603)


--- trunk/Source/WebCore/ChangeLog	2016-05-10 00:20:27 UTC (rev 200602)
+++ trunk/Source/WebCore/ChangeLog	2016-05-10 00:59:33 UTC (rev 200603)
@@ -1,3 +1,27 @@
+2016-05-09  Brady Eidson  <beid...@apple.com>
+
+        Modern IDB: Have server database connections remember the OpenDB request that spawned them.
+        https://bugs.webkit.org/show_bug.cgi?id=157498
+
+        Reviewed by Tim Horton.
+
+        No new tests (No testable change in behavior, debug only for now).
+
+        * Modules/indexeddb/server/UniqueIDBDatabase.cpp:
+        (WebCore::IDBServer::UniqueIDBDatabase::performCurrentOpenOperation):
+        
+        * Modules/indexeddb/server/UniqueIDBDatabaseConnection.cpp:
+        (WebCore::IDBServer::UniqueIDBDatabaseConnection::create):
+        (WebCore::IDBServer::UniqueIDBDatabaseConnection::UniqueIDBDatabaseConnection):
+        (WebCore::IDBServer::UniqueIDBDatabaseConnection::connectionClosedFromClient):
+        (WebCore::IDBServer::UniqueIDBDatabaseConnection::didFireVersionChangeEvent):
+        (WebCore::IDBServer::UniqueIDBDatabaseConnection::createVersionChangeTransaction):
+        (WebCore::IDBServer::UniqueIDBDatabaseConnection::establishTransaction):
+        (WebCore::IDBServer::UniqueIDBDatabaseConnection::didAbortTransaction):
+        (WebCore::IDBServer::UniqueIDBDatabaseConnection::didCommitTransaction):
+        * Modules/indexeddb/server/UniqueIDBDatabaseConnection.h:
+        (WebCore::IDBServer::UniqueIDBDatabaseConnection::openRequestIdentifier):
+
 2016-05-09  Simon Fraser  <simon.fra...@apple.com>
 
         [iOS] visibility:hidden -webkit-overflow-scrolling: touch divs can interfere with page scrolling

Modified: trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp (200602 => 200603)


--- trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp	2016-05-10 00:20:27 UTC (rev 200602)
+++ trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp	2016-05-10 00:59:33 UTC (rev 200603)
@@ -151,10 +151,10 @@
         return;
     }
 
-    Ref<UniqueIDBDatabaseConnection> connection = UniqueIDBDatabaseConnection::create(*this, m_currentOpenDBRequest->connection());
-    UniqueIDBDatabaseConnection* rawConnection = &connection.get();
+    Ref<UniqueIDBDatabaseConnection> connection = UniqueIDBDatabaseConnection::create(*this, *m_currentOpenDBRequest);
 
     if (requestedVersion == m_databaseInfo->version()) {
+        auto* rawConnection = &connection.get();
         addOpenDatabaseConnection(WTFMove(connection));
 
         auto result = IDBResultData::openDatabaseSuccess(m_currentOpenDBRequest->requestData().requestIdentifier(), *rawConnection);
@@ -165,7 +165,7 @@
     }
 
     ASSERT(!m_versionChangeDatabaseConnection);
-    m_versionChangeDatabaseConnection = rawConnection;
+    m_versionChangeDatabaseConnection = WTFMove(connection);
 
     // 3.3.7 "versionchange" transaction steps
     // If there's no other open connections to this database, the version change process can begin immediately.

Modified: trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseConnection.cpp (200602 => 200603)


--- trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseConnection.cpp	2016-05-10 00:20:27 UTC (rev 200602)
+++ trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseConnection.cpp	2016-05-10 00:59:33 UTC (rev 200603)
@@ -43,15 +43,16 @@
     return ++nextIdentifier;
 }
 
-Ref<UniqueIDBDatabaseConnection> UniqueIDBDatabaseConnection::create(UniqueIDBDatabase& database, IDBConnectionToClient& connection)
+Ref<UniqueIDBDatabaseConnection> UniqueIDBDatabaseConnection::create(UniqueIDBDatabase& database, ServerOpenDBRequest& request)
 {
-    return adoptRef(*new UniqueIDBDatabaseConnection(database, connection));
+    return adoptRef(*new UniqueIDBDatabaseConnection(database, request));
 }
 
-UniqueIDBDatabaseConnection::UniqueIDBDatabaseConnection(UniqueIDBDatabase& database, IDBConnectionToClient& connection)
+UniqueIDBDatabaseConnection::UniqueIDBDatabaseConnection(UniqueIDBDatabase& database, ServerOpenDBRequest& request)
     : m_identifier(nextDatabaseConnectionIdentifier())
     , m_database(database)
-    , m_connectionToClient(connection)
+    , m_connectionToClient(request.connection())
+    , m_openRequestIdentifier(request.requestData().requestIdentifier())
 {
     m_database.server().registerDatabaseConnection(*this);
 }
@@ -76,7 +77,7 @@
 
 void UniqueIDBDatabaseConnection::connectionClosedFromClient()
 {
-    LOG(IndexedDB, "UniqueIDBDatabaseConnection::connectionClosedFromClient - %" PRIu64, m_identifier);
+    LOG(IndexedDB, "UniqueIDBDatabaseConnection::connectionClosedFromClient - %s - %" PRIu64, m_openRequestIdentifier.loggingString().utf8().data(), m_identifier);
 
     m_closePending = true;
     m_database.connectionClosedFromClient(*this);
@@ -84,7 +85,7 @@
 
 void UniqueIDBDatabaseConnection::didFireVersionChangeEvent(const IDBResourceIdentifier& requestIdentifier)
 {
-    LOG(IndexedDB, "UniqueIDBDatabaseConnection::didFireVersionChangeEvent");
+    LOG(IndexedDB, "UniqueIDBDatabaseConnection::didFireVersionChangeEvent - %s - %" PRIu64, m_openRequestIdentifier.loggingString().utf8().data(), m_identifier);
 
     m_database.didFireVersionChangeEvent(*this, requestIdentifier);
 }
@@ -97,7 +98,7 @@
 
 UniqueIDBDatabaseTransaction& UniqueIDBDatabaseConnection::createVersionChangeTransaction(uint64_t newVersion)
 {
-    LOG(IndexedDB, "UniqueIDBDatabaseConnection::createVersionChangeTransaction");
+    LOG(IndexedDB, "UniqueIDBDatabaseConnection::createVersionChangeTransaction - %s - %" PRIu64, m_openRequestIdentifier.loggingString().utf8().data(), m_identifier);
     ASSERT(!m_closePending);
 
     IDBTransactionInfo info = IDBTransactionInfo::versionChange(m_connectionToClient, m_database.info(), newVersion);
@@ -110,7 +111,7 @@
 
 void UniqueIDBDatabaseConnection::establishTransaction(const IDBTransactionInfo& info)
 {
-    LOG(IndexedDB, "UniqueIDBDatabaseConnection::establishTransaction");
+    LOG(IndexedDB, "UniqueIDBDatabaseConnection::establishTransaction - %s - %" PRIu64, m_openRequestIdentifier.loggingString().utf8().data(), m_identifier);
 
     ASSERT(info.mode() != IndexedDB::TransactionMode::VersionChange);
 
@@ -125,7 +126,7 @@
 
 void UniqueIDBDatabaseConnection::didAbortTransaction(UniqueIDBDatabaseTransaction& transaction, const IDBError& error)
 {
-    LOG(IndexedDB, "UniqueIDBDatabaseConnection::didAbortTransaction");
+    LOG(IndexedDB, "UniqueIDBDatabaseConnection::didAbortTransaction - %s - %" PRIu64, m_openRequestIdentifier.loggingString().utf8().data(), m_identifier);
 
     auto transactionIdentifier = transaction.info().identifier();
 
@@ -137,7 +138,7 @@
 
 void UniqueIDBDatabaseConnection::didCommitTransaction(UniqueIDBDatabaseTransaction& transaction, const IDBError& error)
 {
-    LOG(IndexedDB, "UniqueIDBDatabaseConnection::didCommitTransaction");
+    LOG(IndexedDB, "UniqueIDBDatabaseConnection::didCommitTransaction - %s - %" PRIu64, m_openRequestIdentifier.loggingString().utf8().data(), m_identifier);
 
     auto transactionIdentifier = transaction.info().identifier();
 

Modified: trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseConnection.h (200602 => 200603)


--- trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseConnection.h	2016-05-10 00:20:27 UTC (rev 200602)
+++ trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseConnection.h	2016-05-10 00:59:33 UTC (rev 200603)
@@ -41,16 +41,18 @@
 namespace IDBServer {
 
 class IDBConnectionToClient;
+class ServerOpenDBRequest;
 class UniqueIDBDatabase;
 class UniqueIDBDatabaseTransaction;
 
 class UniqueIDBDatabaseConnection : public RefCounted<UniqueIDBDatabaseConnection> {
 public:
-    static Ref<UniqueIDBDatabaseConnection> create(UniqueIDBDatabase&, IDBConnectionToClient&);
+    static Ref<UniqueIDBDatabaseConnection> create(UniqueIDBDatabase&, ServerOpenDBRequest&);
 
     ~UniqueIDBDatabaseConnection();
 
     uint64_t identifier() const { return m_identifier; }
+    const IDBResourceIdentifier& openRequestIdentifier() { return m_openRequestIdentifier; }
     UniqueIDBDatabase& database() { return m_database; }
     IDBConnectionToClient& connectionToClient() { return m_connectionToClient; }
 
@@ -76,11 +78,12 @@
     void abortTransactionWithoutCallback(UniqueIDBDatabaseTransaction&);
 
 private:
-    UniqueIDBDatabaseConnection(UniqueIDBDatabase&, IDBConnectionToClient&);
+    UniqueIDBDatabaseConnection(UniqueIDBDatabase&, ServerOpenDBRequest&);
 
     uint64_t m_identifier { 0 };
     UniqueIDBDatabase& m_database;
     IDBConnectionToClient& m_connectionToClient;
+    IDBResourceIdentifier m_openRequestIdentifier;
 
     bool m_closePending { false };
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to