| Index: Source/modules/webdatabase/DatabaseSync.cpp
|
| diff --git a/Source/modules/webdatabase/DatabaseSync.cpp b/Source/modules/webdatabase/DatabaseSync.cpp
|
| index f546ed4cdfa00fbba39f01322b9737c05cefa76c..5183c44023595183db86469649bb75f1a302f69b 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();
|
| }
|
|
|
| +#if ENABLE(OILPAN)
|
| +void DatabaseSync::registerTransaction(SQLTransactionSync* sync)
|
| +{
|
| + ObserverMap::AddResult result = m_observers.add(sync, nullptr);
|
| + ASSERT(result.isNewEntry);
|
| + result.storedValue->value = adoptPtr(new TransactionObserver(sync));
|
| +}
|
| +
|
| +DatabaseSync::TransactionObserver::~TransactionObserver()
|
| +{
|
| + m_sync->rollbackIfInProgress();
|
| +}
|
| +#endif
|
| +
|
| } // namespace WebCore
|
|
|