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

Unified Diff: content/child/indexed_db/indexed_db_callbacks_impl.cc

Issue 2500263003: Port messages sent by WebIDBCursorImpl to Mojo. (Closed)
Patch Set: Address dcheng@'s comments. Created 4 years, 1 month 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: content/child/indexed_db/indexed_db_callbacks_impl.cc
diff --git a/content/child/indexed_db/indexed_db_callbacks_impl.cc b/content/child/indexed_db/indexed_db_callbacks_impl.cc
index 465cf5759bdcfb75407e1ad6b89f76cac771f626..344c79dcee3984396698b42401e4a8954ff6c012 100644
--- a/content/child/indexed_db/indexed_db_callbacks_impl.cc
+++ b/content/child/indexed_db/indexed_db_callbacks_impl.cc
@@ -8,7 +8,6 @@
#include "content/child/indexed_db/indexed_db_key_builders.h"
#include "content/child/indexed_db/webidbcursor_impl.h"
#include "content/child/indexed_db/webidbdatabase_impl.h"
-#include "content/child/thread_safe_sender.h"
#include "content/common/indexed_db/indexed_db_constants.h"
#include "third_party/WebKit/public/platform/modules/indexeddb/WebIDBCallbacks.h"
#include "third_party/WebKit/public/platform/modules/indexeddb/WebIDBDatabaseError.h"
@@ -100,12 +99,12 @@ void ConvertReturnValue(const indexed_db::mojom::ReturnValuePtr& value,
IndexedDBCallbacksImpl::IndexedDBCallbacksImpl(
std::unique_ptr<WebIDBCallbacks> callbacks,
int64_t transaction_id,
- scoped_refptr<base::SingleThreadTaskRunner> io_runner,
- scoped_refptr<ThreadSafeSender> thread_safe_sender)
+ const base::WeakPtr<WebIDBCursorImpl>& cursor,
+ scoped_refptr<base::SingleThreadTaskRunner> io_runner)
: internal_state_(new InternalState(std::move(callbacks),
transaction_id,
- std::move(io_runner),
- std::move(thread_safe_sender))),
+ cursor,
+ std::move(io_runner))),
callback_runner_(base::ThreadTaskRunnerHandle::Get()) {}
IndexedDBCallbacksImpl::~IndexedDBCallbacksImpl() {
@@ -155,14 +154,16 @@ void IndexedDBCallbacksImpl::SuccessDatabase(
base::Passed(&database), metadata));
}
-void IndexedDBCallbacksImpl::SuccessCursor(int32_t cursor_id,
- const IndexedDBKey& key,
- const IndexedDBKey& primary_key,
- indexed_db::mojom::ValuePtr value) {
+void IndexedDBCallbacksImpl::SuccessCursor(
+ indexed_db::mojom::CursorAssociatedPtrInfo cursor,
+ const IndexedDBKey& key,
+ const IndexedDBKey& primary_key,
+ indexed_db::mojom::ValuePtr value) {
callback_runner_->PostTask(
- FROM_HERE, base::Bind(&InternalState::SuccessCursor,
- base::Unretained(internal_state_), cursor_id, key,
- primary_key, base::Passed(&value)));
+ FROM_HERE,
+ base::Bind(&InternalState::SuccessCursor,
+ base::Unretained(internal_state_), base::Passed(&cursor), key,
+ primary_key, base::Passed(&value)));
}
void IndexedDBCallbacksImpl::SuccessValue(
@@ -173,6 +174,26 @@ void IndexedDBCallbacksImpl::SuccessValue(
base::Unretained(internal_state_), base::Passed(&value)));
}
+void IndexedDBCallbacksImpl::SuccessCursorContinue(
+ const IndexedDBKey& key,
+ const IndexedDBKey& primary_key,
+ indexed_db::mojom::ValuePtr value) {
+ callback_runner_->PostTask(
+ FROM_HERE, base::Bind(&InternalState::SuccessCursorContinue,
+ base::Unretained(internal_state_), key, primary_key,
+ base::Passed(&value)));
+}
+
+void IndexedDBCallbacksImpl::SuccessCursorPrefetch(
+ const std::vector<IndexedDBKey>& keys,
+ const std::vector<IndexedDBKey>& primary_keys,
+ std::vector<indexed_db::mojom::ValuePtr> values) {
+ callback_runner_->PostTask(FROM_HERE,
+ base::Bind(&InternalState::SuccessCursorPrefetch,
+ base::Unretained(internal_state_), keys,
+ primary_keys, base::Passed(&values)));
+}
+
void IndexedDBCallbacksImpl::SuccessArray(
std::vector<indexed_db::mojom::ReturnValuePtr> values) {
callback_runner_->PostTask(
@@ -202,21 +223,19 @@ void IndexedDBCallbacksImpl::Success() {
IndexedDBCallbacksImpl::InternalState::InternalState(
std::unique_ptr<blink::WebIDBCallbacks> callbacks,
int64_t transaction_id,
- scoped_refptr<base::SingleThreadTaskRunner> io_runner,
- scoped_refptr<ThreadSafeSender> thread_safe_sender)
+ const base::WeakPtr<WebIDBCursorImpl>& cursor,
+ scoped_refptr<base::SingleThreadTaskRunner> io_runner)
: callbacks_(std::move(callbacks)),
transaction_id_(transaction_id),
- io_runner_(std::move(io_runner)),
- thread_safe_sender_(std::move(thread_safe_sender)) {
- IndexedDBDispatcher* dispatcher =
- IndexedDBDispatcher::ThreadSpecificInstance(thread_safe_sender_.get());
- dispatcher->RegisterMojoOwnedCallbacks(this);
+ cursor_(cursor),
+ io_runner_(std::move(io_runner)) {
+ IndexedDBDispatcher::ThreadSpecificInstance()->RegisterMojoOwnedCallbacks(
+ this);
}
IndexedDBCallbacksImpl::InternalState::~InternalState() {
- IndexedDBDispatcher* dispatcher =
- IndexedDBDispatcher::ThreadSpecificInstance(thread_safe_sender_.get());
- dispatcher->UnregisterMojoOwnedCallbacks(this);
+ IndexedDBDispatcher::ThreadSpecificInstance()->UnregisterMojoOwnedCallbacks(
+ this);
}
void IndexedDBCallbacksImpl::InternalState::Error(
@@ -243,8 +262,8 @@ void IndexedDBCallbacksImpl::InternalState::UpgradeNeeded(
blink::WebIDBDataLoss data_loss,
const std::string& data_loss_message,
const content::IndexedDBDatabaseMetadata& metadata) {
- WebIDBDatabase* database = new WebIDBDatabaseImpl(
- std::move(database_info), io_runner_, thread_safe_sender_);
+ WebIDBDatabase* database =
+ new WebIDBDatabaseImpl(std::move(database_info), io_runner_);
WebIDBMetadata web_metadata;
ConvertDatabaseMetadata(metadata, &web_metadata);
callbacks_->onUpgradeNeeded(old_version, database, web_metadata, data_loss,
@@ -256,10 +275,9 @@ void IndexedDBCallbacksImpl::InternalState::SuccessDatabase(
DatabaseAssociatedPtrInfo database_info,
const content::IndexedDBDatabaseMetadata& metadata) {
WebIDBDatabase* database = nullptr;
- if (database_info.is_valid()) {
- database = new WebIDBDatabaseImpl(std::move(database_info), io_runner_,
- thread_safe_sender_);
- }
+ if (database_info.is_valid())
+ database = new WebIDBDatabaseImpl(std::move(database_info), io_runner_);
+
WebIDBMetadata web_metadata;
ConvertDatabaseMetadata(metadata, &web_metadata);
callbacks_->onSuccess(database, web_metadata);
@@ -267,7 +285,7 @@ void IndexedDBCallbacksImpl::InternalState::SuccessDatabase(
}
void IndexedDBCallbacksImpl::InternalState::SuccessCursor(
- int32_t cursor_id,
+ indexed_db::mojom::CursorAssociatedPtrInfo cursor_info,
const IndexedDBKey& key,
const IndexedDBKey& primary_key,
indexed_db::mojom::ValuePtr value) {
@@ -275,11 +293,8 @@ void IndexedDBCallbacksImpl::InternalState::SuccessCursor(
if (value)
ConvertValue(value, &web_value);
- WebIDBCursorImpl* cursor = new WebIDBCursorImpl(cursor_id, transaction_id_,
- thread_safe_sender_.get());
- IndexedDBDispatcher* dispatcher =
- IndexedDBDispatcher::ThreadSpecificInstance(thread_safe_sender_.get());
- dispatcher->RegisterCursor(cursor_id, cursor);
+ WebIDBCursorImpl* cursor =
+ new WebIDBCursorImpl(std::move(cursor_info), transaction_id_, io_runner_);
callbacks_->onSuccess(cursor, WebIDBKeyBuilder::Build(key),
WebIDBKeyBuilder::Build(primary_key), web_value);
callbacks_.reset();
@@ -300,6 +315,33 @@ void IndexedDBCallbacksImpl::InternalState::SuccessValue(
callbacks_.reset();
}
+void IndexedDBCallbacksImpl::InternalState::SuccessCursorContinue(
+ const IndexedDBKey& key,
+ const IndexedDBKey& primary_key,
+ indexed_db::mojom::ValuePtr value) {
+ WebIDBValue web_value;
+ if (value)
+ ConvertValue(value, &web_value);
+ callbacks_->onSuccess(WebIDBKeyBuilder::Build(key),
+ WebIDBKeyBuilder::Build(primary_key), web_value);
+ callbacks_.reset();
+}
+
+void IndexedDBCallbacksImpl::InternalState::SuccessCursorPrefetch(
+ const std::vector<IndexedDBKey>& keys,
+ const std::vector<IndexedDBKey>& primary_keys,
+ std::vector<indexed_db::mojom::ValuePtr> values) {
+ std::vector<WebIDBValue> web_values(values.size());
+ for (size_t i = 0; i < values.size(); ++i)
+ ConvertValue(values[i], &web_values[i]);
+
+ if (cursor_) {
+ cursor_->SetPrefetchData(keys, primary_keys, web_values);
+ cursor_->CachedContinue(callbacks_.get());
+ }
+ callbacks_.reset();
+}
+
void IndexedDBCallbacksImpl::InternalState::SuccessArray(
std::vector<indexed_db::mojom::ReturnValuePtr> values) {
blink::WebVector<WebIDBValue> web_values(values.size());
« no previous file with comments | « content/child/indexed_db/indexed_db_callbacks_impl.h ('k') | content/child/indexed_db/indexed_db_database_callbacks_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698