| 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 a185bada56400b81923430bf9060d55c968bcd7d..bc3ddd1bb2adda2ea5a89b34b9c736dc825e9319 100644
|
| --- a/third_party/WebKit/Source/modules/indexeddb/IDBDatabase.cpp
|
| +++ b/third_party/WebKit/Source/modules/indexeddb/IDBDatabase.cpp
|
| @@ -34,12 +34,12 @@
|
| #include "core/dom/ExecutionContext.h"
|
| #include "core/events/EventQueue.h"
|
| #include "modules/indexeddb/IDBAny.h"
|
| +#include "modules/indexeddb/IDBDatabaseProxy.h"
|
| #include "modules/indexeddb/IDBEventDispatcher.h"
|
| #include "modules/indexeddb/IDBIndex.h"
|
| #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"
|
| @@ -47,7 +47,8 @@
|
| #include <limits>
|
| #include <memory>
|
|
|
| -using blink::WebIDBDatabase;
|
| +using blink::IDBDatabaseProxy;
|
| +using indexed_db::mojom::blink::TransactionMode;
|
|
|
| namespace blink {
|
|
|
| @@ -67,26 +68,24 @@ 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<IDBDatabaseProxy> database)
|
| {
|
| - IDBDatabase* idbDatabase = new IDBDatabase(context, std::move(database), callbacks);
|
| + IDBDatabase* idbDatabase = new IDBDatabase(context, std::move(database));
|
| idbDatabase->suspendIfNeeded();
|
| return idbDatabase;
|
| }
|
|
|
| -IDBDatabase::IDBDatabase(ExecutionContext* context, std::unique_ptr<WebIDBDatabase> backend, IDBDatabaseCallbacks* callbacks)
|
| +IDBDatabase::IDBDatabase(ExecutionContext* context, std::unique_ptr<IDBDatabaseProxy> backend)
|
| : ActiveScriptWrappable(this)
|
| , ActiveDOMObject(context)
|
| , m_backend(std::move(backend))
|
| - , m_databaseCallbacks(callbacks)
|
| {
|
| - m_databaseCallbacks->connect(this);
|
| }
|
|
|
| IDBDatabase::~IDBDatabase()
|
| {
|
| if (!m_closePending && m_backend)
|
| - m_backend->close();
|
| + m_backend->Close();
|
| }
|
|
|
| DEFINE_TRACE(IDBDatabase)
|
| @@ -94,7 +93,6 @@ 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);
|
| }
|
| @@ -109,14 +107,14 @@ int64_t IDBDatabase::nextTransactionId()
|
|
|
| void IDBDatabase::indexCreated(int64_t objectStoreId, const IDBIndexMetadata& metadata)
|
| {
|
| - IDBDatabaseMetadata::ObjectStoreMap::iterator it = m_metadata.objectStores.find(objectStoreId);
|
| + auto it = m_metadata.objectStores.find(objectStoreId);
|
| ASSERT_WITH_SECURITY_IMPLICATION(it != m_metadata.objectStores.end());
|
| it->value.indexes.set(metadata.id, metadata);
|
| }
|
|
|
| void IDBDatabase::indexDeleted(int64_t objectStoreId, int64_t indexId)
|
| {
|
| - IDBDatabaseMetadata::ObjectStoreMap::iterator it = m_metadata.objectStores.find(objectStoreId);
|
| + auto it = m_metadata.objectStores.find(objectStoreId);
|
| ASSERT_WITH_SECURITY_IMPLICATION(it != m_metadata.objectStores.end());
|
| it->value.indexes.remove(indexId);
|
| }
|
| @@ -216,9 +214,9 @@ IDBObjectStore* IDBDatabase::createObjectStore(const String& name, const IDBKeyP
|
| }
|
|
|
| int64_t objectStoreId = m_metadata.maxObjectStoreId + 1;
|
| - m_backend->createObjectStore(m_versionChangeTransaction->id(), objectStoreId, name, keyPath, autoIncrement);
|
| + m_backend->CreateObjectStore(m_versionChangeTransaction->id(), objectStoreId, name, keyPath, autoIncrement);
|
|
|
| - IDBObjectStoreMetadata metadata(name, objectStoreId, keyPath, autoIncrement, WebIDBDatabase::minimumIndexId);
|
| + IDBObjectStoreMetadata metadata(name, objectStoreId, keyPath, autoIncrement, indexed_db::mojom::blink::Database::minimumIndexId);
|
| IDBObjectStore* objectStore = IDBObjectStore::create(metadata, m_versionChangeTransaction.get());
|
| m_metadata.objectStores.set(metadata.id, metadata);
|
| ++m_metadata.maxObjectStoreId;
|
| @@ -255,7 +253,7 @@ void IDBDatabase::deleteObjectStore(const String& name, ExceptionState& exceptio
|
| return;
|
| }
|
|
|
| - m_backend->deleteObjectStore(m_versionChangeTransaction->id(), objectStoreId);
|
| + m_backend->DeleteObjectStore(m_versionChangeTransaction->id(), objectStoreId);
|
| m_versionChangeTransaction->objectStoreDeleted(name);
|
| m_metadata.objectStores.remove(objectStoreId);
|
| }
|
| @@ -284,8 +282,8 @@ IDBTransaction* IDBDatabase::transaction(ScriptState* scriptState, const StringO
|
| return nullptr;
|
| }
|
|
|
| - WebIDBTransactionMode mode = IDBTransaction::stringToMode(modeString);
|
| - if (mode != WebIDBTransactionModeReadOnly && mode != WebIDBTransactionModeReadWrite) {
|
| + TransactionMode mode = IDBTransaction::stringToMode(modeString);
|
| + if (mode != TransactionMode::ReadOnly && mode != TransactionMode::ReadWrite) {
|
| exceptionState.throwTypeError("The mode provided ('" + modeString + "') is not one of 'readonly' or 'readwrite'.");
|
| return nullptr;
|
| }
|
| @@ -319,7 +317,7 @@ 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, std::move(objectStoreIds), mode);
|
|
|
| return IDBTransaction::create(scriptState, transactionId, scope, mode, this);
|
| }
|
| @@ -350,7 +348,7 @@ void IDBDatabase::closeConnection()
|
| ASSERT(m_transactions.isEmpty());
|
|
|
| if (m_backend) {
|
| - m_backend->close();
|
| + m_backend->Close();
|
| m_backend.reset();
|
| }
|
|
|
| @@ -371,6 +369,8 @@ void IDBDatabase::closeConnection()
|
| void IDBDatabase::onVersionChange(int64_t oldVersion, int64_t newVersion)
|
| {
|
| IDB_TRACE("IDBDatabase::onVersionChange");
|
| + // TODO(cmumford): Not currently called - fix this.
|
| + NOTREACHED();
|
| if (m_contextStopped || !getExecutionContext())
|
| return;
|
|
|
| @@ -378,7 +378,7 @@ void IDBDatabase::onVersionChange(int64_t oldVersion, int64_t newVersion)
|
| // If we're pending, that means there's a busy transaction. We won't
|
| // fire 'versionchange' but since we're not closing immediately the
|
| // back-end should still send out 'blocked'.
|
| - m_backend->versionChangeIgnored();
|
| + m_backend->VersionChangeIgnored();
|
| return;
|
| }
|
|
|
| @@ -409,7 +409,7 @@ DispatchEventResult IDBDatabase::dispatchEventInternal(Event* event)
|
|
|
| DispatchEventResult dispatchResult = EventTarget::dispatchEventInternal(event);
|
| if (event->type() == EventTypeNames::versionchange && !m_closePending && m_backend)
|
| - m_backend->versionChangeIgnored();
|
| + m_backend->VersionChangeIgnored();
|
| return dispatchResult;
|
| }
|
|
|
| @@ -439,7 +439,7 @@ void IDBDatabase::stop()
|
| // normal close() since that may wait on transactions which require a
|
| // round trip to the back-end to abort.
|
| if (m_backend) {
|
| - m_backend->close();
|
| + m_backend->Close();
|
| m_backend.reset();
|
| }
|
| }
|
|
|