Chromium Code Reviews| Index: Source/modules/webdatabase/DatabaseSync.cpp |
| diff --git a/Source/modules/webdatabase/DatabaseSync.cpp b/Source/modules/webdatabase/DatabaseSync.cpp |
| index f546ed4cdfa00fbba39f01322b9737c05cefa76c..7c4297406792d6fe12d83ff4d646e6622cddd36c 100644 |
| --- a/Source/modules/webdatabase/DatabaseSync.cpp |
| +++ b/Source/modules/webdatabase/DatabaseSync.cpp |
| @@ -84,7 +84,7 @@ void DatabaseSync::changeVersion(const String& oldVersion, const String& newVers |
| return; |
| } |
| - RefPtr<SQLTransactionSync> transaction = SQLTransactionSync::create(this, changeVersionCallback, false); |
| + RefPtrWillBeRawPtr<SQLTransactionSync> transaction = SQLTransactionSync::create(this, changeVersionCallback, false); |
| transaction->begin(exceptionState); |
| if (exceptionState.hadException()) { |
| ASSERT(!lastErrorMessage().isEmpty()); |
| @@ -143,10 +143,10 @@ void DatabaseSync::readTransaction(PassOwnPtr<SQLTransactionSyncCallback> callba |
| runTransaction(callback, true, exceptionState); |
| } |
| -void DatabaseSync::rollbackTransaction(PassRefPtr<SQLTransactionSync> transaction) |
| +void DatabaseSync::rollbackTransaction(SQLTransactionSync& transaction) |
| { |
| ASSERT(!lastErrorMessage().isEmpty()); |
| - transaction->rollback(); |
| + transaction.rollback(); |
| setLastErrorMessage(""); |
| return; |
| } |
| @@ -161,22 +161,22 @@ void DatabaseSync::runTransaction(PassOwnPtr<SQLTransactionSyncCallback> callbac |
| return; |
| } |
| - RefPtr<SQLTransactionSync> transaction = SQLTransactionSync::create(this, callback, readOnly); |
| + RefPtrWillBeRawPtr<SQLTransactionSync> transaction = SQLTransactionSync::create(this, callback, readOnly); |
| transaction->begin(exceptionState); |
| if (exceptionState.hadException()) { |
| - rollbackTransaction(transaction); |
| + rollbackTransaction(*transaction); |
| return; |
| } |
| transaction->execute(exceptionState); |
| if (exceptionState.hadException()) { |
| - rollbackTransaction(transaction); |
| + rollbackTransaction(*transaction); |
| return; |
| } |
| transaction->commit(exceptionState); |
| if (exceptionState.hadException()) { |
| - rollbackTransaction(transaction); |
| + rollbackTransaction(*transaction); |
| return; |
| } |
| @@ -194,4 +194,18 @@ void DatabaseSync::closeImmediately() |
| closeDatabase(); |
| } |
| +void DatabaseSync::observeTransaction(SQLTransactionSync& transaction) |
| +{ |
| +#if ENABLE(OILPAN) |
| + m_observers.add(&transaction, adoptPtr(new TransactionObserver(transaction))); |
|
haraken
2014/03/18 09:59:09
Who removes an item from m_observers? I cannot fin
zerny-chromium
2014/03/18 10:09:09
They are removed as part of the weak processing of
haraken
2014/03/18 11:31:33
Makes sense.
|
| +#endif |
| +} |
| + |
| +#if ENABLE(OILPAN) |
| +DatabaseSync::TransactionObserver::~TransactionObserver() |
| +{ |
| + m_transaction.rollbackIfInProgress(); |
| +} |
| +#endif |
| + |
| } // namespace WebCore |