Index: third_party/WebKit/Source/modules/indexeddb/IDBDatabase.cpp |
diff --git a/third_party/WebKit/Source/modules/indexeddb/IDBDatabase.cpp b/third_party/WebKit/Source/modules/indexeddb/IDBDatabase.cpp |
index 224149e9c276ad000611f55260abc6c9cf0bdba0..79749a59af8b7b29e763926b9fb34fa49c6c50f3 100644 |
--- a/third_party/WebKit/Source/modules/indexeddb/IDBDatabase.cpp |
+++ b/third_party/WebKit/Source/modules/indexeddb/IDBDatabase.cpp |
@@ -30,6 +30,7 @@ |
#include "bindings/core/v8/Nullable.h" |
#include "bindings/core/v8/SerializedScriptValue.h" |
#include "bindings/modules/v8/V8BindingForModules.h" |
+#include "core/dom/DOMException.h" |
#include "core/dom/ExceptionCode.h" |
#include "core/dom/ExecutionContext.h" |
#include "core/events/EventQueue.h" |
@@ -39,7 +40,6 @@ |
#include "modules/indexeddb/IDBKeyPath.h" |
#include "modules/indexeddb/IDBTracing.h" |
#include "modules/indexeddb/IDBVersionChangeEvent.h" |
-#include "modules/indexeddb/WebIDBDatabaseCallbacksImpl.h" |
#include "platform/Histogram.h" |
#include "public/platform/modules/indexeddb/WebIDBKeyPath.h" |
#include "public/platform/modules/indexeddb/WebIDBTypes.h" |
@@ -67,20 +67,20 @@ const char IDBDatabase::transactionFinishedErrorMessage[] = "The transaction has |
const char IDBDatabase::transactionReadOnlyErrorMessage[] = "The transaction is read-only."; |
const char IDBDatabase::databaseClosedErrorMessage[] = "The database connection is closed."; |
-IDBDatabase* IDBDatabase::create(ExecutionContext* context, std::unique_ptr<WebIDBDatabase> database, IDBDatabaseCallbacks* callbacks) |
+IDBDatabase* IDBDatabase::create(ExecutionContext* context, std::unique_ptr<WebIDBDatabase> database, indexed_db::mojom::blink::DatabaseClientAssociatedRequest clientRequest) |
{ |
- IDBDatabase* idbDatabase = new IDBDatabase(context, std::move(database), callbacks); |
+ IDBDatabase* idbDatabase = new IDBDatabase(context, std::move(database), std::move(clientRequest)); |
idbDatabase->suspendIfNeeded(); |
return idbDatabase; |
} |
-IDBDatabase::IDBDatabase(ExecutionContext* context, std::unique_ptr<WebIDBDatabase> backend, IDBDatabaseCallbacks* callbacks) |
+IDBDatabase::IDBDatabase(ExecutionContext* context, std::unique_ptr<WebIDBDatabase> backend, indexed_db::mojom::blink::DatabaseClientAssociatedRequest clientRequest) |
: ActiveScriptWrappable(this) |
, ActiveDOMObject(context) |
, m_backend(std::move(backend)) |
- , m_databaseCallbacks(callbacks) |
+ , m_clientBinding(this, std::move(clientRequest)) |
{ |
- m_databaseCallbacks->connect(this); |
+ ThreadState::current()->registerPreFinalizer(this); |
} |
IDBDatabase::~IDBDatabase() |
@@ -94,11 +94,15 @@ DEFINE_TRACE(IDBDatabase) |
visitor->trace(m_versionChangeTransaction); |
visitor->trace(m_transactions); |
visitor->trace(m_enqueuedEvents); |
- visitor->trace(m_databaseCallbacks); |
EventTargetWithInlineData::trace(visitor); |
ActiveDOMObject::trace(visitor); |
} |
+void IDBDatabase::dispose() |
+{ |
+ m_clientBinding.Close(); |
+} |
+ |
int64_t IDBDatabase::nextTransactionId() |
{ |
// Only keep a 32-bit counter to allow ports to use the other 32 |
@@ -149,13 +153,13 @@ void IDBDatabase::transactionFinished(const IDBTransaction* transaction) |
closeConnection(); |
} |
-void IDBDatabase::onAbort(int64_t transactionId, DOMException* error) |
+void IDBDatabase::OnTransactionAborted(int64_t transactionId, indexed_db::mojom::blink::ErrorInfoPtr error) |
{ |
ASSERT(m_transactions.contains(transactionId)); |
- m_transactions.get(transactionId)->onAbort(error); |
+ m_transactions.get(transactionId)->onAbort(DOMException::create(error->code, error->message)); |
} |
-void IDBDatabase::onComplete(int64_t transactionId) |
+void IDBDatabase::OnTransactionCompleted(int64_t transactionId) |
{ |
ASSERT(m_transactions.contains(transactionId)); |
m_transactions.get(transactionId)->onComplete(); |
@@ -317,12 +321,12 @@ IDBTransaction* IDBDatabase::transaction(ScriptState* scriptState, const StringO |
} |
int64_t transactionId = nextTransactionId(); |
- m_backend->createTransaction(transactionId, WebIDBDatabaseCallbacksImpl::create(m_databaseCallbacks).release(), objectStoreIds, mode); |
+ m_backend->createTransaction(transactionId, objectStoreIds, mode); |
return IDBTransaction::create(scriptState, transactionId, scope, mode, this); |
} |
-void IDBDatabase::forceClose() |
+void IDBDatabase::OnForcedClosed() |
{ |
for (const auto& it : m_transactions) |
it.value->abort(IGNORE_EXCEPTION); |
@@ -366,7 +370,7 @@ void IDBDatabase::closeConnection() |
} |
} |
-void IDBDatabase::onVersionChange(int64_t oldVersion, int64_t newVersion) |
+void IDBDatabase::OnVersionChange(int64_t oldVersion, int64_t newVersion) |
{ |
IDB_TRACE("IDBDatabase::onVersionChange"); |
if (m_contextStopped || !getExecutionContext()) |