Diff
Modified: trunk/Source/WebCore/ChangeLog (200494 => 200495)
--- trunk/Source/WebCore/ChangeLog 2016-05-05 23:30:21 UTC (rev 200494)
+++ trunk/Source/WebCore/ChangeLog 2016-05-05 23:54:44 UTC (rev 200495)
@@ -1,3 +1,55 @@
+2016-05-05 Brady Eidson <beid...@apple.com>
+
+ Modern IDB (Workers): Remove the need for IDBConnectionProxy to expose its IDBConnectionToServer.
+ https://bugs.webkit.org/show_bug.cgi?id=157394
+
+ Reviewed by Alex Christensen.
+
+ No new tests (No current change in behavior, will be tested as bug 149953 makes progress).
+
+ * Modules/indexeddb/IDBDatabase.cpp:
+ (WebCore::IDBDatabase::transaction):
+ (WebCore::IDBDatabase::fireVersionChangeEvent):
+ (WebCore::IDBDatabase::dispatchEvent):
+ * Modules/indexeddb/IDBDatabase.h:
+ (WebCore::IDBDatabase::serverConnection): Deleted.
+
+ * Modules/indexeddb/IDBOpenDBRequest.cpp:
+ (WebCore::IDBOpenDBRequest::requestCompleted):
+
+ * Modules/indexeddb/IDBRequest.cpp:
+ (WebCore::IDBRequest::IDBRequest):
+
+ * Modules/indexeddb/IDBTransaction.cpp:
+ (WebCore::IDBTransaction::connectionProxy):
+ (WebCore::IDBTransaction::serverConnection): Deleted.
+ * Modules/indexeddb/IDBTransaction.h:
+
+ * Modules/indexeddb/client/IDBConnectionProxy.cpp:
+ (WebCore::IDBClient::IDBConnectionProxy::abortOpenAndUpgradeNeeded):
+ (WebCore::IDBClient::IDBConnectionProxy::connectionToServer): Deleted.
+ * Modules/indexeddb/client/IDBConnectionProxy.h:
+
+ * Modules/indexeddb/client/IDBConnectionToServer.cpp:
+ (WebCore::IDBClient::IDBConnectionToServer::abortOpenAndUpgradeNeeded):
+
+ * Modules/indexeddb/client/TransactionOperation.h:
+ (WebCore::IDBClient::TransactionOperation::TransactionOperation):
+
+ * Modules/indexeddb/shared/IDBCursorInfo.cpp:
+ (WebCore::IDBCursorInfo::IDBCursorInfo):
+
+ * Modules/indexeddb/shared/IDBRequestData.cpp:
+ (WebCore::IDBRequestData::IDBRequestData):
+
+ * Modules/indexeddb/shared/IDBResourceIdentifier.cpp:
+ (WebCore::IDBResourceIdentifier::IDBResourceIdentifier):
+ * Modules/indexeddb/shared/IDBResourceIdentifier.h:
+
+ * Modules/indexeddb/shared/IDBTransactionInfo.cpp:
+ (WebCore::IDBTransactionInfo::clientTransaction):
+ * Modules/indexeddb/shared/IDBTransactionInfo.h:
+
2016-05-05 Commit Queue <commit-qu...@webkit.org>
Unreviewed, rolling out r200479.
Modified: trunk/Source/WebCore/Modules/indexeddb/IDBDatabase.cpp (200494 => 200495)
--- trunk/Source/WebCore/Modules/indexeddb/IDBDatabase.cpp 2016-05-05 23:30:21 UTC (rev 200494)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBDatabase.cpp 2016-05-05 23:54:44 UTC (rev 200495)
@@ -189,7 +189,7 @@
return nullptr;
}
- auto info = IDBTransactionInfo::clientTransaction(m_connectionProxy->connectionToServer(), objectStores, mode);
+ auto info = IDBTransactionInfo::clientTransaction(m_connectionProxy.get(), objectStores, mode);
auto transaction = IDBTransaction::create(*this, info);
LOG(IndexedDB, "IDBDatabase::transaction - Added active transaction %s", info.identifier().loggingString().utf8().data());
@@ -427,7 +427,7 @@
ASSERT(currentThread() == m_originThreadID);
if (!scriptExecutionContext() || m_closePending) {
- serverConnection().didFireVersionChangeEvent(m_databaseConnectionIdentifier, requestIdentifier);
+ connectionProxy().didFireVersionChangeEvent(m_databaseConnectionIdentifier, requestIdentifier);
return;
}
@@ -444,7 +444,7 @@
bool result = EventTargetWithInlineData::dispatchEvent(event);
if (event.isVersionChangeEvent() && event.type() == eventNames().versionchangeEvent)
- serverConnection().didFireVersionChangeEvent(m_databaseConnectionIdentifier, downcast<IDBVersionChangeEvent>(event).requestIdentifier());
+ connectionProxy().didFireVersionChangeEvent(m_databaseConnectionIdentifier, downcast<IDBVersionChangeEvent>(event).requestIdentifier());
return result;
}
Modified: trunk/Source/WebCore/Modules/indexeddb/IDBDatabase.h (200494 => 200495)
--- trunk/Source/WebCore/Modules/indexeddb/IDBDatabase.h 2016-05-05 23:30:21 UTC (rev 200494)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBDatabase.h 2016-05-05 23:54:44 UTC (rev 200495)
@@ -89,9 +89,6 @@
IDBClient::IDBConnectionProxy& connectionProxy() { return m_connectionProxy.get(); }
- // FIXME: Remove the need for this accessor.
- IDBClient::IDBConnectionToServer& serverConnection() { return m_connectionProxy->connectionToServer(); }
-
void didCreateIndexInfo(const IDBIndexInfo&);
void didDeleteIndexInfo(const IDBIndexInfo&);
Modified: trunk/Source/WebCore/Modules/indexeddb/IDBOpenDBRequest.cpp (200494 => 200495)
--- trunk/Source/WebCore/Modules/indexeddb/IDBOpenDBRequest.cpp 2016-05-05 23:30:21 UTC (rev 200494)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBOpenDBRequest.cpp 2016-05-05 23:54:44 UTC (rev 200495)
@@ -184,10 +184,10 @@
if (m_contextStopped) {
switch (data.type()) {
case IDBResultType::OpenDatabaseSuccess:
- connectionProxy().connectionToServer().abortOpenAndUpgradeNeeded(data.databaseConnectionIdentifier(), IDBResourceIdentifier::emptyValue());
+ connectionProxy().abortOpenAndUpgradeNeeded(data.databaseConnectionIdentifier(), IDBResourceIdentifier::emptyValue());
break;
case IDBResultType::OpenDatabaseUpgradeNeeded:
- connectionProxy().connectionToServer().abortOpenAndUpgradeNeeded(data.databaseConnectionIdentifier(), data.transactionInfo().identifier());
+ connectionProxy().abortOpenAndUpgradeNeeded(data.databaseConnectionIdentifier(), data.transactionInfo().identifier());
break;
default:
break;
Modified: trunk/Source/WebCore/Modules/indexeddb/IDBRequest.cpp (200494 => 200495)
--- trunk/Source/WebCore/Modules/indexeddb/IDBRequest.cpp 2016-05-05 23:30:21 UTC (rev 200494)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBRequest.cpp 2016-05-05 23:54:44 UTC (rev 200495)
@@ -80,7 +80,7 @@
IDBRequest::IDBRequest(ScriptExecutionContext& context, IDBObjectStore& objectStore, IDBTransaction& transaction)
: ActiveDOMObject(&context)
, m_transaction(&transaction)
- , m_resourceIdentifier(transaction.serverConnection())
+ , m_resourceIdentifier(transaction.connectionProxy())
, m_objectStoreSource(&objectStore)
, m_connectionProxy(transaction.database().connectionProxy())
{
@@ -90,7 +90,7 @@
IDBRequest::IDBRequest(ScriptExecutionContext& context, IDBCursor& cursor, IDBTransaction& transaction)
: ActiveDOMObject(&context)
, m_transaction(&transaction)
- , m_resourceIdentifier(transaction.serverConnection())
+ , m_resourceIdentifier(transaction.connectionProxy())
, m_objectStoreSource(cursor.objectStore())
, m_indexSource(cursor.index())
, m_pendingCursor(&cursor)
@@ -104,7 +104,7 @@
IDBRequest::IDBRequest(ScriptExecutionContext& context, IDBIndex& index, IDBTransaction& transaction)
: ActiveDOMObject(&context)
, m_transaction(&transaction)
- , m_resourceIdentifier(transaction.serverConnection())
+ , m_resourceIdentifier(transaction.connectionProxy())
, m_indexSource(&index)
, m_connectionProxy(transaction.database().connectionProxy())
{
Modified: trunk/Source/WebCore/Modules/indexeddb/IDBTransaction.cpp (200494 => 200495)
--- trunk/Source/WebCore/Modules/indexeddb/IDBTransaction.cpp 2016-05-05 23:30:21 UTC (rev 200494)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBTransaction.cpp 2016-05-05 23:54:44 UTC (rev 200495)
@@ -157,6 +157,11 @@
ASSERT(currentThread() == m_database->originThreadID());
}
+IDBClient::IDBConnectionProxy& IDBTransaction::connectionProxy()
+{
+ return m_database->connectionProxy();
+}
+
const String& IDBTransaction::mode() const
{
ASSERT(currentThread() == m_database->originThreadID());
@@ -179,12 +184,6 @@
return &m_database.get();
}
-IDBClient::IDBConnectionToServer& IDBTransaction::serverConnection()
-{
- ASSERT(currentThread() == m_database->originThreadID());
- return m_database->serverConnection();
-}
-
RefPtr<DOMError> IDBTransaction::error() const
{
ASSERT(currentThread() == m_database->originThreadID());
Modified: trunk/Source/WebCore/Modules/indexeddb/IDBTransaction.h (200494 => 200495)
--- trunk/Source/WebCore/Modules/indexeddb/IDBTransaction.h 2016-05-05 23:30:21 UTC (rev 200494)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBTransaction.h 2016-05-05 23:54:44 UTC (rev 200495)
@@ -55,6 +55,7 @@
struct IDBKeyRangeData;
namespace IDBClient {
+class IDBConnectionProxy;
class TransactionOperation;
}
@@ -132,8 +133,6 @@
void abortDueToFailedRequest(DOMError&);
- IDBClient::IDBConnectionToServer& serverConnection();
-
void activate();
void deactivate();
@@ -142,6 +141,8 @@
bool isFinishedOrFinishing() const;
bool isFinished() const { return m_state == IndexedDB::TransactionState::Finished; }
+ IDBClient::IDBConnectionProxy& connectionProxy();
+
private:
IDBTransaction(IDBDatabase&, const IDBTransactionInfo&, IDBOpenDBRequest*);
Modified: trunk/Source/WebCore/Modules/indexeddb/client/IDBConnectionProxy.cpp (200494 => 200495)
--- trunk/Source/WebCore/Modules/indexeddb/client/IDBConnectionProxy.cpp 2016-05-05 23:30:21 UTC (rev 200494)
+++ trunk/Source/WebCore/Modules/indexeddb/client/IDBConnectionProxy.cpp 2016-05-05 23:54:44 UTC (rev 200495)
@@ -55,15 +55,6 @@
m_connectionToServer.deref();
}
-// FIXME: Temporarily required during bringup of IDB-in-Workers.
-// Once all IDB object reliance on the IDBConnectionToServer has been shifted to reliance on
-// IDBConnectionProxy, remove this.
-IDBConnectionToServer& IDBConnectionProxy::connectionToServer()
-{
- ASSERT(isMainThread());
- return m_connectionToServer;
-}
-
RefPtr<IDBOpenDBRequest> IDBConnectionProxy::openDatabase(ScriptExecutionContext& context, const IDBDatabaseIdentifier& databaseIdentifier, uint64_t version)
{
// FIXME: Handle Workers
@@ -267,6 +258,15 @@
operation->completed(resultData);
}
+void IDBConnectionProxy::abortOpenAndUpgradeNeeded(uint64_t databaseConnectionIdentifier, const IDBResourceIdentifier& transactionIdentifier)
+{
+ // FIXME: Handle workers
+ if (!isMainThread())
+ return;
+
+ m_connectionToServer.abortOpenAndUpgradeNeeded(databaseConnectionIdentifier, transactionIdentifier);
+}
+
void IDBConnectionProxy::fireVersionChangeEvent(uint64_t databaseConnectionIdentifier, const IDBResourceIdentifier& requestIdentifier, uint64_t requestedVersion)
{
ASSERT(isMainThread());
Modified: trunk/Source/WebCore/Modules/indexeddb/client/IDBConnectionProxy.h (200494 => 200495)
--- trunk/Source/WebCore/Modules/indexeddb/client/IDBConnectionProxy.h 2016-05-05 23:30:21 UTC (rev 200494)
+++ trunk/Source/WebCore/Modules/indexeddb/client/IDBConnectionProxy.h 2016-05-05 23:54:44 UTC (rev 200495)
@@ -89,15 +89,12 @@
void didFinishHandlingVersionChangeTransaction(IDBTransaction&);
void databaseConnectionClosed(IDBDatabase&);
+ void abortOpenAndUpgradeNeeded(uint64_t databaseConnectionIdentifier, const IDBResourceIdentifier& transactionIdentifier);
+
void completeOperation(const IDBResultData&);
uint64_t serverConnectionIdentifier() const { return m_serverConnectionIdentifier; }
- // FIXME: Temporarily required during bringup of IDB-in-Workers.
- // Once all IDB object reliance on the IDBConnectionToServer has been shifted to reliance on
- // IDBConnectionProxy, remove this.
- IDBConnectionToServer& connectionToServer();
-
void ref();
void deref();
Modified: trunk/Source/WebCore/Modules/indexeddb/client/IDBConnectionToServer.cpp (200494 => 200495)
--- trunk/Source/WebCore/Modules/indexeddb/client/IDBConnectionToServer.cpp 2016-05-05 23:30:21 UTC (rev 200494)
+++ trunk/Source/WebCore/Modules/indexeddb/client/IDBConnectionToServer.cpp 2016-05-05 23:54:44 UTC (rev 200495)
@@ -335,6 +335,7 @@
void IDBConnectionToServer::abortOpenAndUpgradeNeeded(uint64_t databaseConnectionIdentifier, const IDBResourceIdentifier& transactionIdentifier)
{
LOG(IndexedDB, "IDBConnectionToServer::abortOpenAndUpgradeNeeded");
+ ASSERT(isMainThread());
m_delegate->abortOpenAndUpgradeNeeded(databaseConnectionIdentifier, transactionIdentifier);
}
Modified: trunk/Source/WebCore/Modules/indexeddb/client/TransactionOperation.h (200494 => 200495)
--- trunk/Source/WebCore/Modules/indexeddb/client/TransactionOperation.h 2016-05-05 23:30:21 UTC (rev 200494)
+++ trunk/Source/WebCore/Modules/indexeddb/client/TransactionOperation.h 2016-05-05 23:54:44 UTC (rev 200495)
@@ -76,7 +76,7 @@
protected:
TransactionOperation(IDBTransaction& transaction)
: m_transaction(transaction)
- , m_identifier(transaction.serverConnection())
+ , m_identifier(transaction.connectionProxy())
{
}
Modified: trunk/Source/WebCore/Modules/indexeddb/shared/IDBCursorInfo.cpp (200494 => 200495)
--- trunk/Source/WebCore/Modules/indexeddb/shared/IDBCursorInfo.cpp 2016-05-05 23:30:21 UTC (rev 200494)
+++ trunk/Source/WebCore/Modules/indexeddb/shared/IDBCursorInfo.cpp 2016-05-05 23:54:44 UTC (rev 200495)
@@ -28,6 +28,7 @@
#if ENABLE(INDEXED_DATABASE)
+#include "IDBDatabase.h"
#include "IDBTransaction.h"
#include "IndexedDB.h"
@@ -48,7 +49,7 @@
}
IDBCursorInfo::IDBCursorInfo(IDBTransaction& transaction, uint64_t objectStoreIdentifier, const IDBKeyRangeData& range, IndexedDB::CursorDirection direction, IndexedDB::CursorType type)
- : m_cursorIdentifier(transaction.serverConnection())
+ : m_cursorIdentifier(transaction.database().connectionProxy())
, m_transactionIdentifier(transaction.info().identifier())
, m_objectStoreIdentifier(objectStoreIdentifier)
, m_sourceIdentifier(objectStoreIdentifier)
@@ -60,7 +61,7 @@
}
IDBCursorInfo::IDBCursorInfo(IDBTransaction& transaction, uint64_t objectStoreIdentifier, uint64_t indexIdentifier, const IDBKeyRangeData& range, IndexedDB::CursorDirection direction, IndexedDB::CursorType type)
- : m_cursorIdentifier(transaction.serverConnection())
+ : m_cursorIdentifier(transaction.database().connectionProxy())
, m_transactionIdentifier(transaction.info().identifier())
, m_objectStoreIdentifier(objectStoreIdentifier)
, m_sourceIdentifier(indexIdentifier)
Modified: trunk/Source/WebCore/Modules/indexeddb/shared/IDBRequestData.cpp (200494 => 200495)
--- trunk/Source/WebCore/Modules/indexeddb/shared/IDBRequestData.cpp 2016-05-05 23:30:21 UTC (rev 200494)
+++ trunk/Source/WebCore/Modules/indexeddb/shared/IDBRequestData.cpp 2016-05-05 23:54:44 UTC (rev 200495)
@@ -48,7 +48,7 @@
}
IDBRequestData::IDBRequestData(IDBClient::TransactionOperation& operation)
- : m_serverConnectionIdentifier(operation.transaction().database().serverConnection().identifier())
+ : m_serverConnectionIdentifier(operation.transaction().database().connectionProxy().serverConnectionIdentifier())
, m_requestIdentifier(std::make_unique<IDBResourceIdentifier>(operation.identifier()))
, m_transactionIdentifier(std::make_unique<IDBResourceIdentifier>(operation.transactionIdentifier()))
, m_objectStoreIdentifier(operation.objectStoreIdentifier())
Modified: trunk/Source/WebCore/Modules/indexeddb/shared/IDBResourceIdentifier.cpp (200494 => 200495)
--- trunk/Source/WebCore/Modules/indexeddb/shared/IDBResourceIdentifier.cpp 2016-05-05 23:30:21 UTC (rev 200494)
+++ trunk/Source/WebCore/Modules/indexeddb/shared/IDBResourceIdentifier.cpp 2016-05-05 23:54:44 UTC (rev 200495)
@@ -66,8 +66,8 @@
{
}
-IDBResourceIdentifier::IDBResourceIdentifier(const IDBClient::IDBConnectionToServer& connection)
- : m_idbConnectionIdentifier(connection.identifier())
+IDBResourceIdentifier::IDBResourceIdentifier(const IDBClient::IDBConnectionProxy& connectionProxy)
+ : m_idbConnectionIdentifier(connectionProxy.serverConnectionIdentifier())
, m_resourceNumber(nextClientResourceNumber())
{
}
Modified: trunk/Source/WebCore/Modules/indexeddb/shared/IDBResourceIdentifier.h (200494 => 200495)
--- trunk/Source/WebCore/Modules/indexeddb/shared/IDBResourceIdentifier.h 2016-05-05 23:30:21 UTC (rev 200494)
+++ trunk/Source/WebCore/Modules/indexeddb/shared/IDBResourceIdentifier.h 2016-05-05 23:54:44 UTC (rev 200495)
@@ -35,7 +35,6 @@
namespace IDBClient {
class IDBConnectionProxy;
-class IDBConnectionToServer;
}
namespace IDBServer {
@@ -44,7 +43,7 @@
class IDBResourceIdentifier {
public:
- explicit IDBResourceIdentifier(const IDBClient::IDBConnectionToServer&);
+ explicit IDBResourceIdentifier(const IDBClient::IDBConnectionProxy&);
IDBResourceIdentifier(const IDBClient::IDBConnectionProxy&, const IDBRequest&);
explicit IDBResourceIdentifier(const IDBServer::IDBConnectionToClient&);
Modified: trunk/Source/WebCore/Modules/indexeddb/shared/IDBTransactionInfo.cpp (200494 => 200495)
--- trunk/Source/WebCore/Modules/indexeddb/shared/IDBTransactionInfo.cpp 2016-05-05 23:30:21 UTC (rev 200494)
+++ trunk/Source/WebCore/Modules/indexeddb/shared/IDBTransactionInfo.cpp 2016-05-05 23:54:44 UTC (rev 200495)
@@ -41,9 +41,9 @@
{
}
-IDBTransactionInfo IDBTransactionInfo::clientTransaction(const IDBClient::IDBConnectionToServer& connection, const Vector<String>& objectStores, IndexedDB::TransactionMode mode)
+IDBTransactionInfo IDBTransactionInfo::clientTransaction(const IDBClient::IDBConnectionProxy& connectionProxy, const Vector<String>& objectStores, IndexedDB::TransactionMode mode)
{
- IDBTransactionInfo result((IDBResourceIdentifier(connection)));
+ IDBTransactionInfo result((IDBResourceIdentifier(connectionProxy)));
result.m_mode = mode;
result.m_objectStores = objectStores;
Modified: trunk/Source/WebCore/Modules/indexeddb/shared/IDBTransactionInfo.h (200494 => 200495)
--- trunk/Source/WebCore/Modules/indexeddb/shared/IDBTransactionInfo.h 2016-05-05 23:30:21 UTC (rev 200494)
+++ trunk/Source/WebCore/Modules/indexeddb/shared/IDBTransactionInfo.h 2016-05-05 23:54:44 UTC (rev 200495)
@@ -36,7 +36,7 @@
namespace WebCore {
namespace IDBClient {
-class IDBConnectionToServer;
+class IDBConnectionProxy;
}
namespace IDBServer {
@@ -45,7 +45,7 @@
class IDBTransactionInfo {
public:
- static IDBTransactionInfo clientTransaction(const IDBClient::IDBConnectionToServer&, const Vector<String>& objectStores, IndexedDB::TransactionMode);
+ static IDBTransactionInfo clientTransaction(const IDBClient::IDBConnectionProxy&, const Vector<String>& objectStores, IndexedDB::TransactionMode);
static IDBTransactionInfo versionChange(const IDBServer::IDBConnectionToClient&, const IDBDatabaseInfo& originalDatabaseInfo, uint64_t newVersion);
IDBTransactionInfo(const IDBTransactionInfo&);