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

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

Issue 205823002: Oilpan: Prepare to move AbstractSQLStatementBackend and SQLStatementBackend to Oilpan heap. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 9 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
« no previous file with comments | « Source/modules/webdatabase/SQLTransactionBackend.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 355 matching lines...) Expand 10 before | Expand all | Expand 10 after
366 } 366 }
367 367
368 SQLTransactionBackend::~SQLTransactionBackend() 368 SQLTransactionBackend::~SQLTransactionBackend()
369 { 369 {
370 ASSERT(!m_sqliteTransaction); 370 ASSERT(!m_sqliteTransaction);
371 } 371 }
372 372
373 void SQLTransactionBackend::trace(Visitor* visitor) 373 void SQLTransactionBackend::trace(Visitor* visitor)
374 { 374 {
375 visitor->trace(m_frontend); 375 visitor->trace(m_frontend);
376 visitor->trace(m_currentStatementBackend);
376 visitor->trace(m_database); 377 visitor->trace(m_database);
378 visitor->trace(m_statementQueue);
377 } 379 }
378 380
379 void SQLTransactionBackend::doCleanup() 381 void SQLTransactionBackend::doCleanup()
380 { 382 {
381 if (!m_frontend) 383 if (!m_frontend)
382 return; 384 return;
383 m_frontend = nullptr; // Break the reference cycle. See comment about the li fe-cycle above. 385 m_frontend = nullptr; // Break the reference cycle. See comment about the li fe-cycle above.
384 386
385 ASSERT(database()->databaseContext()->databaseThread()->isDatabaseThread()); 387 ASSERT(database()->databaseContext()->databaseThread()->isDatabaseThread());
386 388
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
459 &SQLTransactionBackend::sendToFrontendState, // 11. deliverQuota IncreaseCallback 461 &SQLTransactionBackend::sendToFrontendState, // 11. deliverQuota IncreaseCallback
460 &SQLTransactionBackend::sendToFrontendState // 12. deliverSucce ssCallback 462 &SQLTransactionBackend::sendToFrontendState // 12. deliverSucce ssCallback
461 }; 463 };
462 464
463 ASSERT(WTF_ARRAY_LENGTH(stateFunctions) == static_cast<int>(SQLTransactionSt ate::NumberOfStates)); 465 ASSERT(WTF_ARRAY_LENGTH(stateFunctions) == static_cast<int>(SQLTransactionSt ate::NumberOfStates));
464 ASSERT(state < SQLTransactionState::NumberOfStates); 466 ASSERT(state < SQLTransactionState::NumberOfStates);
465 467
466 return stateFunctions[static_cast<int>(state)]; 468 return stateFunctions[static_cast<int>(state)];
467 } 469 }
468 470
469 void SQLTransactionBackend::enqueueStatementBackend(PassRefPtr<SQLStatementBacke nd> statementBackend) 471 void SQLTransactionBackend::enqueueStatementBackend(PassRefPtrWillBeRawPtr<SQLSt atementBackend> statementBackend)
470 { 472 {
471 MutexLocker locker(m_statementMutex); 473 MutexLocker locker(m_statementMutex);
472 m_statementQueue.append(statementBackend); 474 m_statementQueue.append(statementBackend);
473 } 475 }
474 476
475 void SQLTransactionBackend::computeNextStateAndCleanupIfNeeded() 477 void SQLTransactionBackend::computeNextStateAndCleanupIfNeeded()
476 { 478 {
477 // Only honor the requested state transition if we're not supposed to be 479 // Only honor the requested state transition if we're not supposed to be
478 // cleaning up and shutting down: 480 // cleaning up and shutting down:
479 if (m_database->opened() && !m_database->isInterrupted()) { 481 if (m_database->opened() && !m_database->isInterrupted()) {
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
514 516
515 void SQLTransactionBackend::performNextStep() 517 void SQLTransactionBackend::performNextStep()
516 { 518 {
517 computeNextStateAndCleanupIfNeeded(); 519 computeNextStateAndCleanupIfNeeded();
518 runStateMachine(); 520 runStateMachine();
519 } 521 }
520 522
521 void SQLTransactionBackend::executeSQL(PassOwnPtr<AbstractSQLStatement> statemen t, 523 void SQLTransactionBackend::executeSQL(PassOwnPtr<AbstractSQLStatement> statemen t,
522 const String& sqlStatement, const Vector<SQLValue>& arguments, int permissio ns) 524 const String& sqlStatement, const Vector<SQLValue>& arguments, int permissio ns)
523 { 525 {
524 RefPtr<SQLStatementBackend> statementBackend; 526 enqueueStatementBackend(SQLStatementBackend::create(statement, sqlStatement, arguments, permissions));
525 statementBackend = SQLStatementBackend::create(statement, sqlStatement, argu ments, permissions);
526 enqueueStatementBackend(statementBackend);
527 } 527 }
528 528
529 void SQLTransactionBackend::notifyDatabaseThreadIsShuttingDown() 529 void SQLTransactionBackend::notifyDatabaseThreadIsShuttingDown()
530 { 530 {
531 ASSERT(database()->databaseContext()->databaseThread()->isDatabaseThread()); 531 ASSERT(database()->databaseContext()->databaseThread()->isDatabaseThread());
532 532
533 // If the transaction is in progress, we should roll it back here, since thi s 533 // If the transaction is in progress, we should roll it back here, since thi s
534 // is our last opportunity to do something related to this transaction on th e 534 // is our last opportunity to do something related to this transaction on th e
535 // DB thread. Amongst other work, doCleanup() will clear m_sqliteTransaction 535 // DB thread. Amongst other work, doCleanup() will clear m_sqliteTransaction
536 // which invokes SQLiteTransaction's destructor, which will do the roll back 536 // which invokes SQLiteTransaction's destructor, which will do the roll back
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after
818 } 818 }
819 819
820 SQLTransactionState SQLTransactionBackend::sendToFrontendState() 820 SQLTransactionState SQLTransactionBackend::sendToFrontendState()
821 { 821 {
822 ASSERT(m_nextState != SQLTransactionState::Idle); 822 ASSERT(m_nextState != SQLTransactionState::Idle);
823 m_frontend->requestTransitToState(m_nextState); 823 m_frontend->requestTransitToState(m_nextState);
824 return SQLTransactionState::Idle; 824 return SQLTransactionState::Idle;
825 } 825 }
826 826
827 } // namespace WebCore 827 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/modules/webdatabase/SQLTransactionBackend.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698