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

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

Issue 1963293002: Replacing Indexed DB Chromium IPC with Mojo Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Refactoring after Passing URLRequestContextGetter. Created 4 years, 4 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/IDBOpenDBRequest.cpp
diff --git a/third_party/WebKit/Source/modules/indexeddb/IDBOpenDBRequest.cpp b/third_party/WebKit/Source/modules/indexeddb/IDBOpenDBRequest.cpp
index 9be4f6b841f3de036df3f91fb97889ee27c4c58d..1aeb14636ad9e9597951d114acb33c8477b60c64 100644
--- a/third_party/WebKit/Source/modules/indexeddb/IDBOpenDBRequest.cpp
+++ b/third_party/WebKit/Source/modules/indexeddb/IDBOpenDBRequest.cpp
@@ -30,27 +30,29 @@
#include "core/dom/ExceptionCode.h"
#include "core/dom/ExecutionContext.h"
#include "modules/indexeddb/IDBDatabase.h"
-#include "modules/indexeddb/IDBDatabaseCallbacks.h"
+#include "modules/indexeddb/IDBDatabaseObserverImpl.h"
+#include "modules/indexeddb/IDBDatabaseProxy.h"
+#include "modules/indexeddb/IDBMojoUtil.h"
#include "modules/indexeddb/IDBTracing.h"
#include "modules/indexeddb/IDBVersionChangeEvent.h"
#include <memory>
-using blink::WebIDBDatabase;
+using blink::IDBDatabaseProxy;
namespace blink {
-IDBOpenDBRequest* IDBOpenDBRequest::create(ScriptState* scriptState, IDBDatabaseCallbacks* callbacks, int64_t transactionId, int64_t version)
+IDBOpenDBRequest* IDBOpenDBRequest::create(ScriptState* scriptState, int64_t transactionId, int64_t version, indexed_db::mojom::blink::OpenRequestObserverRequest request)
{
- IDBOpenDBRequest* request = new IDBOpenDBRequest(scriptState, callbacks, transactionId, version);
- request->suspendIfNeeded();
- return request;
+ IDBOpenDBRequest* idbRequest = new IDBOpenDBRequest(scriptState, transactionId, version, std::move(request));
+ idbRequest->suspendIfNeeded();
+ return idbRequest;
}
-IDBOpenDBRequest::IDBOpenDBRequest(ScriptState* scriptState, IDBDatabaseCallbacks* callbacks, int64_t transactionId, int64_t version)
+IDBOpenDBRequest::IDBOpenDBRequest(ScriptState* scriptState, int64_t transactionId, int64_t version, indexed_db::mojom::blink::OpenRequestObserverRequest request)
: IDBRequest(scriptState, IDBAny::createNull(), nullptr)
- , m_databaseCallbacks(callbacks)
, m_transactionId(transactionId)
, m_version(version)
+ , m_binding(this, std::move(request))
{
ASSERT(!resultAsAny());
}
@@ -61,7 +63,6 @@ IDBOpenDBRequest::~IDBOpenDBRequest()
DEFINE_TRACE(IDBOpenDBRequest)
{
- visitor->trace(m_databaseCallbacks);
IDBRequest::trace(visitor);
}
@@ -79,21 +80,26 @@ void IDBOpenDBRequest::onBlocked(int64_t oldVersion)
enqueueEvent(IDBVersionChangeEvent::create(EventTypeNames::blocked, oldVersion, newVersionNullable));
}
-void IDBOpenDBRequest::onUpgradeNeeded(int64_t oldVersion, std::unique_ptr<WebIDBDatabase> backend, const IDBDatabaseMetadata& metadata, WebIDBDataLoss dataLoss, String dataLossMessage)
+IDBDatabase* IDBOpenDBRequest::getDatabase() const
+{
+ if (resultAsAny())
+ return resultAsAny()->idbDatabase();
+ return nullptr;
+}
+
+void IDBOpenDBRequest::onUpgradeNeeded(int64_t oldVersion, std::unique_ptr<IDBDatabaseProxy> backend, const IDBDatabaseMetadata& metadata, WebIDBDataLoss dataLoss, String dataLossMessage)
{
IDB_TRACE("IDBOpenDBRequest::onUpgradeNeeded()");
if (m_contextStopped || !getExecutionContext()) {
- std::unique_ptr<WebIDBDatabase> db = std::move(backend);
- db->abort(m_transactionId);
- db->close();
+ std::unique_ptr<IDBDatabaseProxy> db = std::move(backend);
+ db->Abort(m_transactionId);
+ db->Close();
return;
}
if (!shouldEnqueueEvent())
return;
- ASSERT(m_databaseCallbacks);
-
- IDBDatabase* idbDatabase = IDBDatabase::create(getExecutionContext(), std::move(backend), m_databaseCallbacks.release());
+ IDBDatabase* idbDatabase = IDBDatabase::create(getExecutionContext(), std::move(backend));
idbDatabase->setMetadata(metadata);
if (oldVersion == IDBDatabaseMetadata::NoVersion) {
@@ -111,13 +117,13 @@ void IDBOpenDBRequest::onUpgradeNeeded(int64_t oldVersion, std::unique_ptr<WebID
enqueueEvent(IDBVersionChangeEvent::create(EventTypeNames::upgradeneeded, oldVersion, m_version, dataLoss, dataLossMessage));
}
-void IDBOpenDBRequest::onSuccess(std::unique_ptr<WebIDBDatabase> backend, const IDBDatabaseMetadata& metadata)
+void IDBOpenDBRequest::onSuccess(std::unique_ptr<IDBDatabaseProxy> backend, const IDBDatabaseMetadata& metadata)
{
IDB_TRACE("IDBOpenDBRequest::onSuccess()");
if (m_contextStopped || !getExecutionContext()) {
- std::unique_ptr<WebIDBDatabase> db = std::move(backend);
+ std::unique_ptr<IDBDatabaseProxy> db = std::move(backend);
if (db)
- db->close();
+ db->Close();
return;
}
if (!shouldEnqueueEvent())
@@ -129,11 +135,9 @@ void IDBOpenDBRequest::onSuccess(std::unique_ptr<WebIDBDatabase> backend, const
ASSERT(!backend.get());
idbDatabase = resultAsAny()->idbDatabase();
ASSERT(idbDatabase);
- ASSERT(!m_databaseCallbacks);
} else {
ASSERT(backend.get());
- ASSERT(m_databaseCallbacks);
- idbDatabase = IDBDatabase::create(getExecutionContext(), std::move(backend), m_databaseCallbacks.release());
+ idbDatabase = IDBDatabase::create(getExecutionContext(), std::move(backend));
setResult(IDBAny::create(idbDatabase));
}
idbDatabase->setMetadata(metadata);
@@ -177,4 +181,40 @@ DispatchEventResult IDBOpenDBRequest::dispatchEventInternal(Event* event)
return IDBRequest::dispatchEventInternal(event);
}
+void IDBOpenDBRequest::onOpenResult(indexed_db::mojom::blink::OpenResultPtr result)
+{
+ if (result->is_error()) {
+ // TODO(cmumford): Finish this.
+ NOTREACHED();
+ } else if (result->is_data()) {
+ // Fix this.
+ bool updateWasCalled = true;
+ // TODO(cmumford): Get the metadata.
+ IDBDatabaseMetadata metadata;
+ convertMetadata(&metadata, result->get_data()->metadata);
+ if (updateWasCalled) {
+ onSuccess(nullptr, metadata);
+ } else {
+ std::unique_ptr<IDBDatabaseProxy> proxy(IDBDatabaseProxy::create(std::move(result->get_data()->database)));
+ onSuccess(std::move(proxy), metadata);
+ }
+ } else {
+ // TODO(cmumford): Finish this.
+ NOTREACHED();
+ }
+}
+
+void IDBOpenDBRequest::OnBlocked(int64_t oldVersion)
+{
+ // TODO(cmumford): Combine this and onBlocked().
+ onBlocked(oldVersion);
+}
+
+void IDBOpenDBRequest::OnUpgradeNeeded(int64_t oldVersion, indexed_db::mojom::blink::DatabasePtr database, indexed_db::mojom::blink::DatabaseMetadataPtr metadata, indexed_db::mojom::blink::DataLossInfoPtr dataLossInfo)
+{
+ // TODO(cmumford): Combine this and onUpgradeNeeded().
+ std::unique_ptr<IDBDatabaseProxy> openRequestProxy(IDBDatabaseProxy::create(std::move(database)));
+ onUpgradeNeeded(oldVersion, std::move(openRequestProxy), IDBDatabaseMetadata(std::move(metadata)), dataLossInfo->status, dataLossInfo->message);
+}
+
} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698