summaryrefslogtreecommitdiff
path: root/chromium/content/browser/indexed_db/database_impl.cc
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-29 10:46:47 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2020-11-02 12:02:10 +0000
commit99677208ff3b216fdfec551fbe548da5520cd6fb (patch)
tree476a4865c10320249360e859d8fdd3e01833b03a /chromium/content/browser/indexed_db/database_impl.cc
parentc30a6232df03e1efbd9f3b226777b07e087a1122 (diff)
downloadqtwebengine-chromium-99677208ff3b216fdfec551fbe548da5520cd6fb.tar.gz
BASELINE: Update Chromium to 86.0.4240.124
Change-Id: Ide0ff151e94cd665ae6521a446995d34a9d1d644 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/content/browser/indexed_db/database_impl.cc')
-rw-r--r--chromium/content/browser/indexed_db/database_impl.cc31
1 files changed, 23 insertions, 8 deletions
diff --git a/chromium/content/browser/indexed_db/database_impl.cc b/chromium/content/browser/indexed_db/database_impl.cc
index 3dc21b2c64e..1bfbd8263fa 100644
--- a/chromium/content/browser/indexed_db/database_impl.cc
+++ b/chromium/content/browser/indexed_db/database_impl.cc
@@ -224,29 +224,44 @@ void DatabaseImpl::GetAll(int64_t transaction_id,
int64_t max_count,
blink::mojom::IDBDatabase::GetAllCallback callback) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+
if (!connection_->IsConnected()) {
+ // TODO(enne): see note below. It can be incorrect for result ordering to
+ // run the callback directly from this function.
+ mojo::Remote<blink::mojom::IDBDatabaseGetAllResultSink> result_sink;
+ auto receiver = result_sink.BindNewPipeAndPassReceiver();
+ std::move(callback).Run(std::move(receiver));
+
IndexedDBDatabaseError error(blink::mojom::IDBException::kUnknownError,
"Not connected.");
- std::move(callback).Run(
- blink::mojom::IDBDatabaseGetAllResult::NewErrorResult(
- blink::mojom::IDBError::New(error.code(), error.message())));
+ result_sink->OnError(
+ blink::mojom::IDBError::New(error.code(), error.message()));
return;
}
IndexedDBTransaction* transaction =
connection_->GetTransaction(transaction_id);
if (!transaction) {
+ mojo::Remote<blink::mojom::IDBDatabaseGetAllResultSink> result_sink;
+ auto receiver = result_sink.BindNewPipeAndPassReceiver();
+ std::move(callback).Run(std::move(receiver));
+
IndexedDBDatabaseError error(blink::mojom::IDBException::kUnknownError,
"Unknown transaction.");
- std::move(callback).Run(
- blink::mojom::IDBDatabaseGetAllResult::NewErrorResult(
- blink::mojom::IDBError::New(error.code(), error.message())));
+ result_sink->OnError(
+ blink::mojom::IDBError::New(error.code(), error.message()));
return;
}
+ // Hypothetically, this could pass the receiver to the callback immediately.
+ // However, for result ordering issues, we need to PostTask to mimic
+ // all of the other operations.
+ // TODO(enne): Consider rewriting the renderer side to order results based
+ // on initial request ordering and not on when the results are returned.
blink::mojom::IDBDatabase::GetAllCallback aborting_callback =
- CreateCallbackAbortOnDestruct<blink::mojom::IDBDatabase::GetAllCallback,
- blink::mojom::IDBDatabaseGetAllResultPtr>(
+ CreateCallbackAbortOnDestruct<
+ blink::mojom::IDBDatabase::GetAllCallback,
+ mojo::PendingReceiver<blink::mojom::IDBDatabaseGetAllResultSink>>(
std::move(callback), transaction->AsWeakPtr());
transaction->ScheduleTask(BindWeakOperation(