| Index: third_party/WebKit/Source/modules/indexeddb/IDBTransaction.cpp
|
| diff --git a/third_party/WebKit/Source/modules/indexeddb/IDBTransaction.cpp b/third_party/WebKit/Source/modules/indexeddb/IDBTransaction.cpp
|
| index e3d622e57ca74a29a728d1524fcf62f83446a246..bf696035da6218b402be065405a1cd57584dc62d 100644
|
| --- a/third_party/WebKit/Source/modules/indexeddb/IDBTransaction.cpp
|
| +++ b/third_party/WebKit/Source/modules/indexeddb/IDBTransaction.cpp
|
| @@ -176,6 +176,7 @@ DEFINE_TRACE(IDBTransaction) {
|
| visitor->Trace(open_db_request_);
|
| visitor->Trace(error_);
|
| visitor->Trace(request_list_);
|
| + visitor->Trace(result_queue_);
|
| visitor->Trace(object_store_map_);
|
| visitor->Trace(old_store_metadata_);
|
| visitor->Trace(deleted_indexes_);
|
| @@ -383,6 +384,24 @@ void IDBTransaction::UnregisterRequest(IDBRequest* request) {
|
| request_list_.erase(request);
|
| }
|
|
|
| +void IDBTransaction::EnqueueResult(IDBRequestQueueItem* result) {
|
| + DCHECK(result);
|
| + DCHECK(HasQueuedResult() || !result->IsReady());
|
| +
|
| + result_queue_.push_back(result);
|
| +}
|
| +
|
| +void IDBTransaction::OnResultReady() {
|
| + while (!result_queue_.empty()) {
|
| + IDBRequestQueueItem* result = result_queue_.front();
|
| + if (!result->IsReady())
|
| + break;
|
| +
|
| + result->FireCallback();
|
| + result_queue_.pop_front();
|
| + }
|
| +}
|
| +
|
| void IDBTransaction::OnAbort(DOMException* error) {
|
| IDB_TRACE("IDBTransaction::onAbort");
|
| if (!GetExecutionContext()) {
|
|
|