OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2010 Google Inc. All rights reserved. | 2 * Copyright (C) 2010 Google Inc. All rights reserved. |
3 * Copyright (C) 2013 Apple Inc. All rights reserved. | 3 * Copyright (C) 2013 Apple Inc. All rights reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions are | 6 * modification, are permitted provided that the following conditions are |
7 * met: | 7 * met: |
8 * | 8 * |
9 * * Redistributions of source code must retain the above copyright | 9 * * Redistributions of source code must retain the above copyright |
10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
44 #include "modules/webdatabase/SQLResultSet.h" | 44 #include "modules/webdatabase/SQLResultSet.h" |
45 #include "modules/webdatabase/SQLStatementSync.h" | 45 #include "modules/webdatabase/SQLStatementSync.h" |
46 #include "modules/webdatabase/SQLTransactionClient.h" | 46 #include "modules/webdatabase/SQLTransactionClient.h" |
47 #include "modules/webdatabase/SQLTransactionSync.h" | 47 #include "modules/webdatabase/SQLTransactionSync.h" |
48 #include "modules/webdatabase/SQLTransactionSyncCallback.h" | 48 #include "modules/webdatabase/SQLTransactionSyncCallback.h" |
49 #include "wtf/PassRefPtr.h" | 49 #include "wtf/PassRefPtr.h" |
50 #include "wtf/RefPtr.h" | 50 #include "wtf/RefPtr.h" |
51 | 51 |
52 namespace WebCore { | 52 namespace WebCore { |
53 | 53 |
54 SQLTransactionBackendSync::SQLTransactionBackendSync(DatabaseSync* db, PassRefPt
r<SQLTransactionSyncCallback> callback, bool readOnly) | 54 SQLTransactionBackendSync::SQLTransactionBackendSync(DatabaseSync* db, PassOwnPt
r<SQLTransactionSyncCallback> callback, bool readOnly) |
55 : m_database(db) | 55 : m_database(db) |
56 , m_callback(callback) | 56 , m_callback(callback) |
57 , m_readOnly(readOnly) | 57 , m_readOnly(readOnly) |
58 , m_hasVersionMismatch(false) | 58 , m_hasVersionMismatch(false) |
59 , m_modifiedDatabase(false) | 59 , m_modifiedDatabase(false) |
60 , m_transactionClient(adoptPtr(new SQLTransactionClient())) | 60 , m_transactionClient(adoptPtr(new SQLTransactionClient())) |
61 { | 61 { |
62 ASSERT(m_database->executionContext()->isContextThread()); | 62 ASSERT(m_database->executionContext()->isContextThread()); |
63 } | 63 } |
64 | 64 |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
176 m_hasVersionMismatch = !m_database->expectedVersion().isEmpty() && (m_databa
se->expectedVersion() != actualVersion); | 176 m_hasVersionMismatch = !m_database->expectedVersion().isEmpty() && (m_databa
se->expectedVersion() != actualVersion); |
177 m_database->reportStartTransactionResult(0, -1, 0); // OK | 177 m_database->reportStartTransactionResult(0, -1, 0); // OK |
178 } | 178 } |
179 | 179 |
180 void SQLTransactionBackendSync::execute(ExceptionState& exceptionState) | 180 void SQLTransactionBackendSync::execute(ExceptionState& exceptionState) |
181 { | 181 { |
182 ASSERT(m_database->executionContext()->isContextThread()); | 182 ASSERT(m_database->executionContext()->isContextThread()); |
183 if (!m_database->opened() || (m_callback && !m_callback->handleEvent(SQLTran
sactionSync::from(this)))) { | 183 if (!m_database->opened() || (m_callback && !m_callback->handleEvent(SQLTran
sactionSync::from(this)))) { |
184 if (m_database->lastErrorMessage().isEmpty()) | 184 if (m_database->lastErrorMessage().isEmpty()) |
185 m_database->setLastErrorMessage("failed to execute transaction callb
ack"); | 185 m_database->setLastErrorMessage("failed to execute transaction callb
ack"); |
186 m_callback = 0; | 186 m_callback.clear(); |
187 exceptionState.throwDOMException(UnknownError, SQLError::unknownErrorMes
sage); | 187 exceptionState.throwDOMException(UnknownError, SQLError::unknownErrorMes
sage); |
188 return; | 188 return; |
189 } | 189 } |
190 | 190 |
191 m_callback = 0; | 191 m_callback.clear(); |
192 } | 192 } |
193 | 193 |
194 void SQLTransactionBackendSync::commit(ExceptionState& exceptionState) | 194 void SQLTransactionBackendSync::commit(ExceptionState& exceptionState) |
195 { | 195 { |
196 ASSERT(m_database->executionContext()->isContextThread()); | 196 ASSERT(m_database->executionContext()->isContextThread()); |
197 if (!m_database->opened()) { | 197 if (!m_database->opened()) { |
198 m_database->reportCommitTransactionResult(1, SQLError::UNKNOWN_ERR, 0); | 198 m_database->reportCommitTransactionResult(1, SQLError::UNKNOWN_ERR, 0); |
199 m_database->setLastErrorMessage("unable to commit transaction because th
e database is not open."); | 199 m_database->setLastErrorMessage("unable to commit transaction because th
e database is not open."); |
200 exceptionState.throwDOMException(UnknownError, SQLError::unknownErrorMes
sage); | 200 exceptionState.throwDOMException(UnknownError, SQLError::unknownErrorMes
sage); |
201 return; | 201 return; |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
236 if (m_sqliteTransaction) { | 236 if (m_sqliteTransaction) { |
237 m_sqliteTransaction->rollback(); | 237 m_sqliteTransaction->rollback(); |
238 m_sqliteTransaction.clear(); | 238 m_sqliteTransaction.clear(); |
239 } | 239 } |
240 m_database->enableAuthorizer(); | 240 m_database->enableAuthorizer(); |
241 | 241 |
242 ASSERT(!m_database->sqliteDatabase().transactionInProgress()); | 242 ASSERT(!m_database->sqliteDatabase().transactionInProgress()); |
243 } | 243 } |
244 | 244 |
245 } // namespace WebCore | 245 } // namespace WebCore |
OLD | NEW |