Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1263)

Unified Diff: third_party/WebKit/Source/modules/indexeddb/IDBDatabase.cpp

Issue 2320213004: Port IndexedDB open() and database callbacks to Mojo. (Closed)
Patch Set: Make DatabaseClient an associated interface. Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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())

Powered by Google App Engine
This is Rietveld 408576698