void SQLTransaction::deliverStatementCallback() { // Spec 4.3.2.6.6 and 4.3.2.6.3: If the statement callback went wrong, jump to the transaction error callback // Otherwise, continue to loop through the statement queue m_executeSqlAllowed = true; SQLStatement* currentStatement = m_backend->currentStatement(); ASSERT(currentStatement); bool result = currentStatement->performCallback(this); m_executeSqlAllowed = false; if (result) { m_transactionError = SQLError::create(SQLError::UNKNOWN_ERR, "the statement callback raised an exception or statement error callback did not return false"); if (m_errorCallbackWrapper.hasCallback()) return deliverTransactionErrorCallback(); // No error callback, so fast-forward to: // Transaction Step 11 - Rollback the transaction. m_backend->requestTransitToState(SQLTransactionState::CleanupAfterTransactionErrorCallback); return; } m_backend->requestTransitToState(SQLTransactionState::RunStatements); }
void SQLTransaction::deliverTransactionCallback() { bool shouldDeliverErrorCallback = false; RefPtr<SQLTransactionCallback> callback = m_callbackWrapper.unwrap(); if (callback) { m_executeSqlAllowed = true; shouldDeliverErrorCallback = !callback->handleEvent(this); m_executeSqlAllowed = false; } // Transaction Step 5 - If the transaction callback was null or raised an exception, jump to the error callback if (shouldDeliverErrorCallback) { m_transactionError = SQLError::create(SQLError::UNKNOWN_ERR, "the SQLTransactionCallback was null or threw an exception"); deliverTransactionErrorCallback(); } else scheduleToRunStatements(); }
void SQLTransaction::deliverTransactionCallback() { bool shouldDeliverErrorCallback = false; if (m_callback) { m_executeSqlAllowed = true; shouldDeliverErrorCallback = !m_callback->handleEvent(m_database->scriptExecutionContext(), this); m_executeSqlAllowed = false; } else shouldDeliverErrorCallback = true; // Transaction Step 5 - If the transaction callback was null or raised an exception, jump to the error callback if (shouldDeliverErrorCallback) { m_transactionError = SQLError::create(SQLError::UNKNOWN_ERR, "the SQLTransactionCallback was null or threw an exception"); deliverTransactionErrorCallback(); } else scheduleToRunStatements(); }
void SQLTransaction::deliverTransactionCallback() { bool shouldDeliverErrorCallback = false; if (m_callback) { m_executeSqlAllowed = true; m_callback->handleEvent(this, shouldDeliverErrorCallback); m_executeSqlAllowed = false; } else shouldDeliverErrorCallback = true; // Transaction Step 5 - If the transaction callback was null or raised an exception, jump to the error callback if (shouldDeliverErrorCallback) { m_transactionError = SQLError::create(0, "the SQLTransactionCallback was null or threw an exception"); deliverTransactionErrorCallback(); } else scheduleToRunStatements(); }
void SQLTransaction::deliverTransactionCallback() { bool shouldDeliverErrorCallback = false; // Spec 4.3.2 4: Invoke the transaction callback with the new SQLTransaction object RefPtr<SQLTransactionCallback> callback = m_callbackWrapper.unwrap(); if (callback) { m_executeSqlAllowed = true; shouldDeliverErrorCallback = !callback->handleEvent(this); m_executeSqlAllowed = false; } // Spec 4.3.2 5: If the transaction callback was null or raised an exception, jump to the error callback if (shouldDeliverErrorCallback) { m_transactionError = SQLError::create(SQLError::UNKNOWN_ERR, "the SQLTransactionCallback was null or threw an exception"); return deliverTransactionErrorCallback(); } m_backend->requestTransitToState(SQLTransactionState::RunStatements); }
void SQLTransaction::handleTransactionError(bool inCallback) { if (m_errorCallbackWrapper.hasCallback()) { if (inCallback) deliverTransactionErrorCallback(); else { m_nextStep = &SQLTransaction::deliverTransactionErrorCallback; LOG(StorageAPI, "Scheduling deliverTransactionErrorCallback for transaction %p\n", this); m_database->scheduleTransactionCallback(this); } return; } // No error callback, so fast-forward to: // Transaction Step 12 - Rollback the transaction. if (inCallback) { m_nextStep = &SQLTransaction::cleanupAfterTransactionErrorCallback; LOG(StorageAPI, "Scheduling cleanupAfterTransactionErrorCallback for transaction %p\n", this); m_database->scheduleTransactionStep(this); } else { cleanupAfterTransactionErrorCallback(); } }