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

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

Issue 110983004: IndexedDB: More database<->transaction relationship simplification (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased Created 7 years 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 | Annotate | Revision Log
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 "base/bind.h" 7 #include "base/bind.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 timeout_timer_.Stop(); 147 timeout_timer_.Stop();
148 148
149 state_ = FINISHED; 149 state_ = FINISHED;
150 should_process_queue_ = false; 150 should_process_queue_ = false;
151 151
152 if (backing_store_transaction_begun_) 152 if (backing_store_transaction_begun_)
153 transaction_->Rollback(); 153 transaction_->Rollback();
154 154
155 // Run the abort tasks, if any. 155 // Run the abort tasks, if any.
156 while (!abort_task_stack_.empty()) 156 while (!abort_task_stack_.empty())
157 abort_task_stack_.pop().Run(0); 157 abort_task_stack_.pop().Run(NULL);
158 158
159 preemptive_task_queue_.clear(); 159 preemptive_task_queue_.clear();
160 task_queue_.clear(); 160 task_queue_.clear();
161 161
162 // Backing store resources (held via cursors) must be released 162 // Backing store resources (held via cursors) must be released
163 // before script callbacks are fired, as the script callbacks may 163 // before script callbacks are fired, as the script callbacks may
164 // release references and allow the backing store itself to be 164 // release references and allow the backing store itself to be
165 // released, and order is critical. 165 // released, and order is critical.
166 CloseOpenCursors(); 166 CloseOpenCursors();
167 transaction_->Reset(); 167 transaction_->Reset();
(...skipping 27 matching lines...) Expand all
195 } 195 }
196 196
197 void IndexedDBTransaction::UnregisterOpenCursor(IndexedDBCursor* cursor) { 197 void IndexedDBTransaction::UnregisterOpenCursor(IndexedDBCursor* cursor) {
198 open_cursors_.erase(cursor); 198 open_cursors_.erase(cursor);
199 } 199 }
200 200
201 void IndexedDBTransaction::Start() { 201 void IndexedDBTransaction::Start() {
202 // TransactionCoordinator has started this transaction. 202 // TransactionCoordinator has started this transaction.
203 DCHECK_EQ(CREATED, state_); 203 DCHECK_EQ(CREATED, state_);
204 state_ = STARTED; 204 state_ = STARTED;
205 database_->TransactionStarted(this);
206 diagnostics_.start_time = base::Time::Now(); 205 diagnostics_.start_time = base::Time::Now();
207 206
208 if (!used_) 207 if (!used_)
209 return; 208 return;
210 209
211 RunTasksIfStarted(); 210 RunTasksIfStarted();
212 } 211 }
213 212
214 void IndexedDBTransaction::Commit() { 213 void IndexedDBTransaction::Commit() {
215 IDB_TRACE("IndexedDBTransaction::Commit"); 214 IDB_TRACE("IndexedDBTransaction::Commit");
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 // front-end is notified, as the transaction completion unblocks 250 // front-end is notified, as the transaction completion unblocks
252 // operations like closing connections. 251 // operations like closing connections.
253 database_->transaction_coordinator().DidFinishTransaction(this); 252 database_->transaction_coordinator().DidFinishTransaction(this);
254 253
255 if (committed) { 254 if (committed) {
256 abort_task_stack_.clear(); 255 abort_task_stack_.clear();
257 callbacks_->OnComplete(id_); 256 callbacks_->OnComplete(id_);
258 database_->TransactionFinished(this, true); 257 database_->TransactionFinished(this, true);
259 } else { 258 } else {
260 while (!abort_task_stack_.empty()) 259 while (!abort_task_stack_.empty())
261 abort_task_stack_.pop().Run(0); 260 abort_task_stack_.pop().Run(NULL);
262 261
263 callbacks_->OnAbort( 262 callbacks_->OnAbort(
264 id_, 263 id_,
265 IndexedDBDatabaseError(blink::WebIDBDatabaseExceptionUnknownError, 264 IndexedDBDatabaseError(blink::WebIDBDatabaseExceptionUnknownError,
266 "Internal error committing transaction.")); 265 "Internal error committing transaction."));
267 database_->TransactionFinished(this, false); 266 database_->TransactionFinished(this, false);
268 database_->TransactionCommitFailed(); 267 database_->TransactionCommitFailed();
269 } 268 }
270 269
271 database_ = NULL; 270 database_ = NULL;
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 333
335 void IndexedDBTransaction::CloseOpenCursors() { 334 void IndexedDBTransaction::CloseOpenCursors() {
336 for (std::set<IndexedDBCursor*>::iterator i = open_cursors_.begin(); 335 for (std::set<IndexedDBCursor*>::iterator i = open_cursors_.begin();
337 i != open_cursors_.end(); 336 i != open_cursors_.end();
338 ++i) 337 ++i)
339 (*i)->Close(); 338 (*i)->Close();
340 open_cursors_.clear(); 339 open_cursors_.clear();
341 } 340 }
342 341
343 } // namespace content 342 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/indexed_db/indexed_db_database.cc ('k') | content/browser/indexed_db/indexed_db_transaction_coordinator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698