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

Side by Side Diff: content/browser/indexed_db/indexed_db_transaction.cc

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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/indexed_db/indexed_db_transaction.h" 5 #include "content/browser/indexed_db/indexed_db_transaction.h"
6 6
7 #include <utility>
8
7 #include "base/bind.h" 9 #include "base/bind.h"
8 #include "base/location.h" 10 #include "base/location.h"
9 #include "base/logging.h" 11 #include "base/logging.h"
10 #include "base/memory/ptr_util.h" 12 #include "base/memory/ptr_util.h"
11 #include "base/single_thread_task_runner.h" 13 #include "base/single_thread_task_runner.h"
12 #include "base/stl_util.h" 14 #include "base/stl_util.h"
13 #include "base/strings/utf_string_conversions.h" 15 #include "base/strings/utf_string_conversions.h"
14 #include "base/threading/thread_task_runner_handle.h" 16 #include "base/threading/thread_task_runner_handle.h"
15 #include "content/browser/indexed_db/indexed_db_backing_store.h" 17 #include "content/browser/indexed_db/indexed_db_backing_store.h"
18 #include "content/browser/indexed_db/indexed_db_change_handler.h"
16 #include "content/browser/indexed_db/indexed_db_cursor.h" 19 #include "content/browser/indexed_db/indexed_db_cursor.h"
17 #include "content/browser/indexed_db/indexed_db_database.h" 20 #include "content/browser/indexed_db/indexed_db_database.h"
18 #include "content/browser/indexed_db/indexed_db_database_callbacks.h"
19 #include "content/browser/indexed_db/indexed_db_observation.h" 21 #include "content/browser/indexed_db/indexed_db_observation.h"
20 #include "content/browser/indexed_db/indexed_db_observer_changes.h" 22 #include "content/browser/indexed_db/indexed_db_observer_changes.h"
21 #include "content/browser/indexed_db/indexed_db_tracing.h" 23 #include "content/browser/indexed_db/indexed_db_tracing.h"
22 #include "content/browser/indexed_db/indexed_db_transaction_coordinator.h" 24 #include "content/browser/indexed_db/indexed_db_transaction_coordinator.h"
23 #include "third_party/WebKit/public/platform/modules/indexeddb/WebIDBDatabaseExc eption.h" 25 #include "third_party/WebKit/public/platform/modules/indexeddb/WebIDBDatabaseExc eption.h"
24 #include "third_party/leveldatabase/env_chromium.h" 26 #include "third_party/leveldatabase/env_chromium.h"
25 27
26 namespace content { 28 namespace content {
27 29
28 namespace { 30 namespace {
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 object_store_ids_(object_store_ids), 80 object_store_ids_(object_store_ids),
79 mode_(mode), 81 mode_(mode),
80 used_(false), 82 used_(false),
81 state_(CREATED), 83 state_(CREATED),
82 commit_pending_(false), 84 commit_pending_(false),
83 connection_(std::move(connection)), 85 connection_(std::move(connection)),
84 transaction_(backing_store_transaction), 86 transaction_(backing_store_transaction),
85 backing_store_transaction_begun_(false), 87 backing_store_transaction_begun_(false),
86 should_process_queue_(false), 88 should_process_queue_(false),
87 pending_preemptive_events_(0) { 89 pending_preemptive_events_(0) {
88 callbacks_ = connection_->callbacks(); 90 change_handler_ = connection_->change_handler();
89 database_ = connection_->database(); 91 database_ = connection_->database();
90 92
91 database_->transaction_coordinator().DidCreateTransaction(this); 93 database_->transaction_coordinator().DidCreateTransaction(this);
92 94
93 diagnostics_.tasks_scheduled = 0; 95 diagnostics_.tasks_scheduled = 0;
94 diagnostics_.tasks_completed = 0; 96 diagnostics_.tasks_completed = 0;
95 diagnostics_.creation_time = base::Time::Now(); 97 diagnostics_.creation_time = base::Time::Now();
96 } 98 }
97 99
98 IndexedDBTransaction::~IndexedDBTransaction() { 100 IndexedDBTransaction::~IndexedDBTransaction() {
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 transaction_->Reset(); 186 transaction_->Reset();
185 187
186 // Transactions must also be marked as completed before the 188 // Transactions must also be marked as completed before the
187 // front-end is notified, as the transaction completion unblocks 189 // front-end is notified, as the transaction completion unblocks
188 // operations like closing connections. 190 // operations like closing connections.
189 database_->transaction_coordinator().DidFinishTransaction(this); 191 database_->transaction_coordinator().DidFinishTransaction(this);
190 #ifndef NDEBUG 192 #ifndef NDEBUG
191 DCHECK(!database_->transaction_coordinator().IsActive(this)); 193 DCHECK(!database_->transaction_coordinator().IsActive(this));
192 #endif 194 #endif
193 195
194 if (callbacks_.get()) 196 if (change_handler_.get())
195 callbacks_->OnAbort(id_, error); 197 change_handler_->OnAbort(id_, error);
196 198
197 database_->TransactionFinished(this, false); 199 database_->TransactionFinished(this, false);
198 200
199 database_ = NULL; 201 database_ = NULL;
200 connection_ = nullptr; 202 connection_ = nullptr;
201 pending_observers_.clear(); 203 pending_observers_.clear();
202 } 204 }
203 205
204 bool IndexedDBTransaction::IsTaskQueueEmpty() const { 206 bool IndexedDBTransaction::IsTaskQueueEmpty() const {
205 return preemptive_task_queue_.empty() && task_queue_.empty(); 207 return preemptive_task_queue_.empty() && task_queue_.empty();
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
352 // SendObservations must be called before OnComplete to ensure consistency 354 // SendObservations must be called before OnComplete to ensure consistency
353 // of callbacks at renderer. 355 // of callbacks at renderer.
354 if (!connection_changes_map_.empty()) { 356 if (!connection_changes_map_.empty()) {
355 database_->SendObservations(std::move(connection_changes_map_)); 357 database_->SendObservations(std::move(connection_changes_map_));
356 connection_changes_map_.clear(); 358 connection_changes_map_.clear();
357 } 359 }
358 { 360 {
359 IDB_TRACE1( 361 IDB_TRACE1(
360 "IndexedDBTransaction::CommitPhaseTwo.TransactionCompleteCallbacks", 362 "IndexedDBTransaction::CommitPhaseTwo.TransactionCompleteCallbacks",
361 "txn.id", id()); 363 "txn.id", id());
362 callbacks_->OnComplete(id_); 364 change_handler_->OnComplete(id_);
363 } 365 }
364 if (!pending_observers_.empty() && connection_) { 366 if (!pending_observers_.empty() && connection_) {
365 connection_->ActivatePendingObservers(std::move(pending_observers_)); 367 connection_->ActivatePendingObservers(std::move(pending_observers_));
366 pending_observers_.clear(); 368 pending_observers_.clear();
367 } 369 }
368 370
369 database_->TransactionFinished(this, true); 371 database_->TransactionFinished(this, true);
370 } else { 372 } else {
371 while (!abort_task_stack_.empty()) 373 while (!abort_task_stack_.empty())
372 abort_task_stack_.pop().Run(NULL); 374 abort_task_stack_.pop().Run(NULL);
373 375
374 IndexedDBDatabaseError error; 376 IndexedDBDatabaseError error;
375 if (leveldb_env::IndicatesDiskFull(s)) { 377 if (leveldb_env::IndicatesDiskFull(s)) {
376 error = IndexedDBDatabaseError( 378 error = IndexedDBDatabaseError(
377 blink::WebIDBDatabaseExceptionQuotaError, 379 blink::WebIDBDatabaseExceptionQuotaError,
378 "Encountered disk full while committing transaction."); 380 "Encountered disk full while committing transaction.");
379 } else { 381 } else {
380 error = IndexedDBDatabaseError(blink::WebIDBDatabaseExceptionUnknownError, 382 error = IndexedDBDatabaseError(blink::WebIDBDatabaseExceptionUnknownError,
381 "Internal error committing transaction."); 383 "Internal error committing transaction.");
382 } 384 }
383 callbacks_->OnAbort(id_, error); 385 change_handler_->OnAbort(id_, error);
384 386
385 database_->TransactionFinished(this, false); 387 database_->TransactionFinished(this, false);
386 database_->TransactionCommitFailed(s); 388 database_->TransactionCommitFailed(s);
387 } 389 }
388 390
389 database_ = NULL; 391 database_ = NULL;
390 return s; 392 return s;
391 } 393 }
392 394
393 void IndexedDBTransaction::ProcessTaskQueue() { 395 void IndexedDBTransaction::ProcessTaskQueue() {
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
498 500
499 void IndexedDBTransaction::RecordObserverForLastObservation( 501 void IndexedDBTransaction::RecordObserverForLastObservation(
500 int32_t connection_id, 502 int32_t connection_id,
501 int32_t observer_id) { 503 int32_t observer_id) {
502 auto it = connection_changes_map_.find(connection_id); 504 auto it = connection_changes_map_.find(connection_id);
503 DCHECK(it != connection_changes_map_.end()); 505 DCHECK(it != connection_changes_map_.end());
504 it->second->RecordObserverForLastObservation(observer_id); 506 it->second->RecordObserverForLastObservation(observer_id);
505 } 507 }
506 508
507 } // namespace content 509 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/indexed_db/indexed_db_transaction.h ('k') | content/browser/indexed_db/indexed_db_transaction_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698