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

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

Issue 198213005: Oilpan: Prepare to move AbstractSQLTransactionBackend, SQLTransactionBackend, and SQLTransactionCoo… (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Back to inline allocation 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
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 322 matching lines...) Expand 10 before | Expand all | Expand 10 after
333 // notifyDatabaseThreadIsShuttingDown(). 333 // notifyDatabaseThreadIsShuttingDown().
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 WebCore { 341 namespace WebCore {
342 342
343 PassRefPtr<SQLTransactionBackend> SQLTransactionBackend::create(DatabaseBackend* db, 343 PassRefPtrWillBeRawPtr<SQLTransactionBackend> SQLTransactionBackend::create(Data baseBackend* db,
344 PassRefPtrWillBeRawPtr<AbstractSQLTransaction> frontend, PassRefPtr<SQLTrans actionWrapper> wrapper, bool readOnly) 344 PassRefPtrWillBeRawPtr<AbstractSQLTransaction> frontend, PassRefPtr<SQLTrans actionWrapper> wrapper, bool readOnly)
345 { 345 {
346 return adoptRef(new SQLTransactionBackend(db, frontend, wrapper, readOnly)); 346 return adoptRefWillBeNoop(new SQLTransactionBackend(db, frontend, wrapper, r eadOnly));
347 } 347 }
348 348
349 SQLTransactionBackend::SQLTransactionBackend(DatabaseBackend* db, 349 SQLTransactionBackend::SQLTransactionBackend(DatabaseBackend* db,
350 PassRefPtrWillBeRawPtr<AbstractSQLTransaction> frontend, PassRefPtr<SQLTrans actionWrapper> wrapper, bool readOnly) 350 PassRefPtrWillBeRawPtr<AbstractSQLTransaction> frontend, PassRefPtr<SQLTrans actionWrapper> wrapper, bool readOnly)
351 : m_frontend(frontend) 351 : m_frontend(frontend)
352 , m_database(db) 352 , m_database(db)
353 , m_wrapper(wrapper) 353 , m_wrapper(wrapper)
354 , m_hasCallback(m_frontend->hasCallback()) 354 , m_hasCallback(m_frontend->hasCallback())
355 , m_hasSuccessCallback(m_frontend->hasSuccessCallback()) 355 , m_hasSuccessCallback(m_frontend->hasSuccessCallback())
356 , m_hasErrorCallback(m_frontend->hasErrorCallback()) 356 , m_hasErrorCallback(m_frontend->hasErrorCallback())
357 , m_shouldRetryCurrentStatement(false) 357 , m_shouldRetryCurrentStatement(false)
358 , m_modifiedDatabase(false) 358 , m_modifiedDatabase(false)
359 , m_lockAcquired(false) 359 , m_lockAcquired(false)
360 , m_readOnly(readOnly) 360 , m_readOnly(readOnly)
361 , m_hasVersionMismatch(false) 361 , m_hasVersionMismatch(false)
362 { 362 {
363 ASSERT(m_database); 363 ASSERT(m_database);
364 m_frontend->setBackend(this); 364 m_frontend->setBackend(this);
365 m_requestedState = SQLTransactionState::AcquireLock; 365 m_requestedState = SQLTransactionState::AcquireLock;
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)
374 {
375 visitor->trace(m_frontend);
376 visitor->trace(m_database);
377 }
378
373 void SQLTransactionBackend::doCleanup() 379 void SQLTransactionBackend::doCleanup()
374 { 380 {
375 if (!m_frontend) 381 if (!m_frontend)
376 return; 382 return;
377 m_frontend = nullptr; // Break the reference cycle. See comment about the li fe-cycle above. 383 m_frontend = nullptr; // Break the reference cycle. See comment about the li fe-cycle above.
378 384
379 ASSERT(database()->databaseContext()->databaseThread()->isDatabaseThread()); 385 ASSERT(database()->databaseContext()->databaseThread()->isDatabaseThread());
380 386
381 MutexLocker locker(m_statementMutex); 387 MutexLocker locker(m_statementMutex);
382 m_statementQueue.clear(); 388 m_statementQueue.clear();
(...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after
812 } 818 }
813 819
814 SQLTransactionState SQLTransactionBackend::sendToFrontendState() 820 SQLTransactionState SQLTransactionBackend::sendToFrontendState()
815 { 821 {
816 ASSERT(m_nextState != SQLTransactionState::Idle); 822 ASSERT(m_nextState != SQLTransactionState::Idle);
817 m_frontend->requestTransitToState(m_nextState); 823 m_frontend->requestTransitToState(m_nextState);
818 return SQLTransactionState::Idle; 824 return SQLTransactionState::Idle;
819 } 825 }
820 826
821 } // namespace WebCore 827 } // namespace WebCore
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698