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

Side by Side Diff: Source/modules/webdatabase/SQLTransactionBackend.cpp

Issue 561143002: Web SQL: Remove unnecessary abstraction. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 3 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 | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2007, 2008, 2013 Apple Inc. All rights reserved. 2 * Copyright (C) 2007, 2008, 2013 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 14 matching lines...) Expand all
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */ 27 */
28 28
29 #include "config.h" 29 #include "config.h"
30 #include "modules/webdatabase/SQLTransactionBackend.h" 30 #include "modules/webdatabase/SQLTransactionBackend.h"
31 31
32 #include "platform/Logging.h" 32 #include "platform/Logging.h"
33 #include "modules/webdatabase/sqlite/SQLValue.h" 33 #include "modules/webdatabase/sqlite/SQLValue.h"
34 #include "modules/webdatabase/sqlite/SQLiteTransaction.h" 34 #include "modules/webdatabase/sqlite/SQLiteTransaction.h"
35 #include "modules/webdatabase/AbstractSQLTransaction.h"
36 #include "modules/webdatabase/Database.h" // FIXME: Should only be used in the f rontend. 35 #include "modules/webdatabase/Database.h" // FIXME: Should only be used in the f rontend.
37 #include "modules/webdatabase/DatabaseAuthorizer.h" 36 #include "modules/webdatabase/DatabaseAuthorizer.h"
38 #include "modules/webdatabase/DatabaseBackend.h" 37 #include "modules/webdatabase/DatabaseBackend.h"
39 #include "modules/webdatabase/DatabaseContext.h" 38 #include "modules/webdatabase/DatabaseContext.h"
40 #include "modules/webdatabase/DatabaseThread.h" 39 #include "modules/webdatabase/DatabaseThread.h"
41 #include "modules/webdatabase/DatabaseTracker.h" 40 #include "modules/webdatabase/DatabaseTracker.h"
42 #include "modules/webdatabase/SQLError.h" 41 #include "modules/webdatabase/SQLError.h"
43 #include "modules/webdatabase/SQLStatementBackend.h" 42 #include "modules/webdatabase/SQLStatementBackend.h"
43 #include "modules/webdatabase/SQLTransaction.h"
44 #include "modules/webdatabase/SQLTransactionClient.h" 44 #include "modules/webdatabase/SQLTransactionClient.h"
45 #include "modules/webdatabase/SQLTransactionCoordinator.h" 45 #include "modules/webdatabase/SQLTransactionCoordinator.h"
46 #include "wtf/StdLibExtras.h" 46 #include "wtf/StdLibExtras.h"
47 47
48 48
49 // How does a SQLTransaction work? 49 // How does a SQLTransaction work?
50 // ============================== 50 // ==============================
51 // The SQLTransaction is a state machine that executes a series of states / step s. 51 // The SQLTransaction is a state machine that executes a series of states / step s.
52 // 52 //
53 // The work of the transaction states are defined in section of 4.3.2 of the 53 // The work of the transaction states are defined in section of 4.3.2 of the
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 // 334 //
335 // Phase 5: After state CleanupAndTerminate 335 // Phase 5: After state CleanupAndTerminate
336 // 336 //
337 // - This is how a transaction ends normally. 337 // - This is how a transaction ends normally.
338 // - state CleanupAndTerminate calls doCleanup(). 338 // - state CleanupAndTerminate calls doCleanup().
339 339
340 340
341 namespace blink { 341 namespace blink {
342 342
343 PassRefPtrWillBeRawPtr<SQLTransactionBackend> SQLTransactionBackend::create(Data baseBackend* db, 343 PassRefPtrWillBeRawPtr<SQLTransactionBackend> SQLTransactionBackend::create(Data baseBackend* db,
344 PassRefPtrWillBeRawPtr<AbstractSQLTransaction> frontend, 344 PassRefPtrWillBeRawPtr<SQLTransaction> frontend,
345 PassRefPtrWillBeRawPtr<SQLTransactionWrapper> wrapper, 345 PassRefPtrWillBeRawPtr<SQLTransactionWrapper> wrapper,
346 bool readOnly) 346 bool readOnly)
347 { 347 {
348 return adoptRefWillBeNoop(new SQLTransactionBackend(db, frontend, wrapper, r eadOnly)); 348 return adoptRefWillBeNoop(new SQLTransactionBackend(db, frontend, wrapper, r eadOnly));
349 } 349 }
350 350
351 SQLTransactionBackend::SQLTransactionBackend(DatabaseBackend* db, 351 SQLTransactionBackend::SQLTransactionBackend(DatabaseBackend* db,
352 PassRefPtrWillBeRawPtr<AbstractSQLTransaction> frontend, 352 PassRefPtrWillBeRawPtr<SQLTransaction> frontend,
353 PassRefPtrWillBeRawPtr<SQLTransactionWrapper> wrapper, 353 PassRefPtrWillBeRawPtr<SQLTransactionWrapper> wrapper,
354 bool readOnly) 354 bool readOnly)
355 : m_frontend(frontend) 355 : m_frontend(frontend)
356 , m_database(db) 356 , m_database(db)
357 , m_wrapper(wrapper) 357 , m_wrapper(wrapper)
358 , m_hasCallback(m_frontend->hasCallback()) 358 , m_hasCallback(m_frontend->hasCallback())
359 , m_hasSuccessCallback(m_frontend->hasSuccessCallback()) 359 , m_hasSuccessCallback(m_frontend->hasSuccessCallback())
360 , m_hasErrorCallback(m_frontend->hasErrorCallback()) 360 , m_hasErrorCallback(m_frontend->hasErrorCallback())
361 , m_shouldRetryCurrentStatement(false) 361 , m_shouldRetryCurrentStatement(false)
362 , m_modifiedDatabase(false) 362 , m_modifiedDatabase(false)
(...skipping 11 matching lines...) Expand all
374 ASSERT(!m_sqliteTransaction); 374 ASSERT(!m_sqliteTransaction);
375 } 375 }
376 376
377 void SQLTransactionBackend::trace(Visitor* visitor) 377 void SQLTransactionBackend::trace(Visitor* visitor)
378 { 378 {
379 visitor->trace(m_frontend); 379 visitor->trace(m_frontend);
380 visitor->trace(m_currentStatementBackend); 380 visitor->trace(m_currentStatementBackend);
381 visitor->trace(m_database); 381 visitor->trace(m_database);
382 visitor->trace(m_wrapper); 382 visitor->trace(m_wrapper);
383 visitor->trace(m_statementQueue); 383 visitor->trace(m_statementQueue);
384 AbstractSQLTransactionBackend::trace(visitor);
385 } 384 }
386 385
387 void SQLTransactionBackend::doCleanup() 386 void SQLTransactionBackend::doCleanup()
388 { 387 {
389 if (!m_frontend) 388 if (!m_frontend)
390 return; 389 return;
391 m_frontend = nullptr; // Break the reference cycle. See comment about the li fe-cycle above. 390 m_frontend = nullptr; // Break the reference cycle. See comment about the li fe-cycle above.
392 391
393 ASSERT(database()->databaseContext()->databaseThread()->isDatabaseThread()); 392 ASSERT(database()->databaseContext()->databaseThread()->isDatabaseThread());
394 393
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
427 // This occurs if requests for transition to those states have already been 426 // This occurs if requests for transition to those states have already been
428 // registered with the frontend just prior to a clean up request arriving. 427 // registered with the frontend just prior to a clean up request arriving.
429 // 428 //
430 // So instead, let our destructor handle their clean up since this 429 // So instead, let our destructor handle their clean up since this
431 // SQLTransactionBackend is guaranteed to not destruct until the frontend 430 // SQLTransactionBackend is guaranteed to not destruct until the frontend
432 // is also destructing. 431 // is also destructing.
433 432
434 m_wrapper = nullptr; 433 m_wrapper = nullptr;
435 } 434 }
436 435
437 AbstractSQLStatement* SQLTransactionBackend::currentStatement() 436 SQLStatement* SQLTransactionBackend::currentStatement()
438 { 437 {
439 return m_currentStatementBackend->frontend(); 438 return m_currentStatementBackend->frontend();
440 } 439 }
441 440
442 SQLErrorData* SQLTransactionBackend::transactionError() 441 SQLErrorData* SQLTransactionBackend::transactionError()
443 { 442 {
444 return m_transactionError.get(); 443 return m_transactionError.get();
445 } 444 }
446 445
447 void SQLTransactionBackend::setShouldRetryCurrentStatement(bool shouldRetry) 446 void SQLTransactionBackend::setShouldRetryCurrentStatement(bool shouldRetry)
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
519 // Redirect to the end state to abort, clean up, and end the transaction. 518 // Redirect to the end state to abort, clean up, and end the transaction.
520 doCleanup(); 519 doCleanup();
521 } 520 }
522 521
523 void SQLTransactionBackend::performNextStep() 522 void SQLTransactionBackend::performNextStep()
524 { 523 {
525 computeNextStateAndCleanupIfNeeded(); 524 computeNextStateAndCleanupIfNeeded();
526 runStateMachine(); 525 runStateMachine();
527 } 526 }
528 527
529 void SQLTransactionBackend::executeSQL(PassOwnPtrWillBeRawPtr<AbstractSQLStateme nt> statement, 528 void SQLTransactionBackend::executeSQL(PassOwnPtrWillBeRawPtr<SQLStatement> stat ement,
530 const String& sqlStatement, const Vector<SQLValue>& arguments, int permissio ns) 529 const String& sqlStatement, const Vector<SQLValue>& arguments, int permissio ns)
531 { 530 {
532 enqueueStatementBackend(SQLStatementBackend::create(statement, sqlStatement, arguments, permissions)); 531 enqueueStatementBackend(SQLStatementBackend::create(statement, sqlStatement, arguments, permissions));
533 } 532 }
534 533
535 void SQLTransactionBackend::notifyDatabaseThreadIsShuttingDown() 534 void SQLTransactionBackend::notifyDatabaseThreadIsShuttingDown()
536 { 535 {
537 ASSERT(database()->databaseContext()->databaseThread()->isDatabaseThread()); 536 ASSERT(database()->databaseContext()->databaseThread()->isDatabaseThread());
538 537
539 // If the transaction is in progress, we should roll it back here, since thi s 538 // If the transaction is in progress, we should roll it back here, since thi s
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after
827 } 826 }
828 827
829 SQLTransactionState SQLTransactionBackend::sendToFrontendState() 828 SQLTransactionState SQLTransactionBackend::sendToFrontendState()
830 { 829 {
831 ASSERT(m_nextState != SQLTransactionState::Idle); 830 ASSERT(m_nextState != SQLTransactionState::Idle);
832 m_frontend->requestTransitToState(m_nextState); 831 m_frontend->requestTransitToState(m_nextState);
833 return SQLTransactionState::Idle; 832 return SQLTransactionState::Idle;
834 } 833 }
835 834
836 } // namespace blink 835 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698