| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2010 Google Inc. All rights reserved. | 2 * Copyright (C) 2010 Google 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 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 101 | 101 |
| 102 Persistent<IDBTransaction> m_transaction; | 102 Persistent<IDBTransaction> m_transaction; |
| 103 }; | 103 }; |
| 104 | 104 |
| 105 } // namespace | 105 } // namespace |
| 106 | 106 |
| 107 IDBTransaction::IDBTransaction(ExecutionContext* executionContext, | 107 IDBTransaction::IDBTransaction(ExecutionContext* executionContext, |
| 108 int64_t id, | 108 int64_t id, |
| 109 const HashSet<String>& scope, | 109 const HashSet<String>& scope, |
| 110 IDBDatabase* db) | 110 IDBDatabase* db) |
| 111 : ContextClient(executionContext), | 111 : ContextLifecycleObserver(executionContext), |
| 112 m_id(id), | 112 m_id(id), |
| 113 m_database(db), | 113 m_database(db), |
| 114 m_mode(WebIDBTransactionModeReadOnly), | 114 m_mode(WebIDBTransactionModeReadOnly), |
| 115 m_scope(scope), | 115 m_scope(scope), |
| 116 m_state(Active) { | 116 m_state(Active) { |
| 117 DCHECK(m_database); | 117 DCHECK(m_database); |
| 118 DCHECK(!m_scope.isEmpty()) << "Observer transactions must operate " | 118 DCHECK(!m_scope.isEmpty()) << "Observer transactions must operate " |
| 119 "on a well-defined set of stores"; | 119 "on a well-defined set of stores"; |
| 120 m_database->transactionCreated(this); | 120 m_database->transactionCreated(this); |
| 121 } | 121 } |
| 122 | 122 |
| 123 IDBTransaction::IDBTransaction(ScriptState* scriptState, | 123 IDBTransaction::IDBTransaction(ScriptState* scriptState, |
| 124 int64_t id, | 124 int64_t id, |
| 125 const HashSet<String>& scope, | 125 const HashSet<String>& scope, |
| 126 WebIDBTransactionMode mode, | 126 WebIDBTransactionMode mode, |
| 127 IDBDatabase* db) | 127 IDBDatabase* db) |
| 128 : ContextClient(scriptState->getExecutionContext()), | 128 : ContextLifecycleObserver(scriptState->getExecutionContext()), |
| 129 m_id(id), | 129 m_id(id), |
| 130 m_database(db), | 130 m_database(db), |
| 131 m_mode(mode), | 131 m_mode(mode), |
| 132 m_scope(scope) { | 132 m_scope(scope) { |
| 133 DCHECK(m_database); | 133 DCHECK(m_database); |
| 134 DCHECK(!m_scope.isEmpty()) << "Non-versionchange transactions must operate " | 134 DCHECK(!m_scope.isEmpty()) << "Non-versionchange transactions must operate " |
| 135 "on a well-defined set of stores"; | 135 "on a well-defined set of stores"; |
| 136 DCHECK(m_mode == WebIDBTransactionModeReadOnly || | 136 DCHECK(m_mode == WebIDBTransactionModeReadOnly || |
| 137 m_mode == WebIDBTransactionModeReadWrite) | 137 m_mode == WebIDBTransactionModeReadWrite) |
| 138 << "Invalid transaction mode"; | 138 << "Invalid transaction mode"; |
| 139 | 139 |
| 140 DCHECK_EQ(m_state, Active); | 140 DCHECK_EQ(m_state, Active); |
| 141 V8PerIsolateData::from(scriptState->isolate()) | 141 V8PerIsolateData::from(scriptState->isolate()) |
| 142 ->addEndOfScopeTask(DeactivateTransactionTask::create(this)); | 142 ->addEndOfScopeTask(DeactivateTransactionTask::create(this)); |
| 143 | 143 |
| 144 m_database->transactionCreated(this); | 144 m_database->transactionCreated(this); |
| 145 } | 145 } |
| 146 | 146 |
| 147 IDBTransaction::IDBTransaction(ExecutionContext* executionContext, | 147 IDBTransaction::IDBTransaction(ExecutionContext* executionContext, |
| 148 int64_t id, | 148 int64_t id, |
| 149 IDBDatabase* db, | 149 IDBDatabase* db, |
| 150 IDBOpenDBRequest* openDBRequest, | 150 IDBOpenDBRequest* openDBRequest, |
| 151 const IDBDatabaseMetadata& oldMetadata) | 151 const IDBDatabaseMetadata& oldMetadata) |
| 152 : ContextClient(executionContext), | 152 : ContextLifecycleObserver(executionContext), |
| 153 m_id(id), | 153 m_id(id), |
| 154 m_database(db), | 154 m_database(db), |
| 155 m_openDBRequest(openDBRequest), | 155 m_openDBRequest(openDBRequest), |
| 156 m_mode(WebIDBTransactionModeVersionChange), | 156 m_mode(WebIDBTransactionModeVersionChange), |
| 157 m_state(Inactive), | 157 m_state(Inactive), |
| 158 m_oldDatabaseMetadata(oldMetadata) { | 158 m_oldDatabaseMetadata(oldMetadata) { |
| 159 DCHECK(m_database); | 159 DCHECK(m_database); |
| 160 DCHECK(m_openDBRequest); | 160 DCHECK(m_openDBRequest); |
| 161 DCHECK(m_scope.isEmpty()); | 161 DCHECK(m_scope.isEmpty()); |
| 162 | 162 |
| 163 m_database->transactionCreated(this); | 163 m_database->transactionCreated(this); |
| 164 } | 164 } |
| 165 | 165 |
| 166 IDBTransaction::~IDBTransaction() { | 166 IDBTransaction::~IDBTransaction() { |
| 167 // Note: IDBTransaction is a ContextLifecycleObserver (rather than |
| 168 // ContextClient) only in order to be able call upon getExecutionContext() |
| 169 // during this destructor. |
| 167 DCHECK(m_state == Finished || !getExecutionContext()); | 170 DCHECK(m_state == Finished || !getExecutionContext()); |
| 168 DCHECK(m_requestList.isEmpty() || !getExecutionContext()); | 171 DCHECK(m_requestList.isEmpty() || !getExecutionContext()); |
| 169 } | 172 } |
| 170 | 173 |
| 171 DEFINE_TRACE(IDBTransaction) { | 174 DEFINE_TRACE(IDBTransaction) { |
| 172 visitor->trace(m_database); | 175 visitor->trace(m_database); |
| 173 visitor->trace(m_openDBRequest); | 176 visitor->trace(m_openDBRequest); |
| 174 visitor->trace(m_error); | 177 visitor->trace(m_error); |
| 175 visitor->trace(m_requestList); | 178 visitor->trace(m_requestList); |
| 176 visitor->trace(m_objectStoreMap); | 179 visitor->trace(m_objectStoreMap); |
| 177 visitor->trace(m_oldStoreMetadata); | 180 visitor->trace(m_oldStoreMetadata); |
| 178 visitor->trace(m_deletedIndexes); | 181 visitor->trace(m_deletedIndexes); |
| 179 EventTargetWithInlineData::trace(visitor); | 182 EventTargetWithInlineData::trace(visitor); |
| 180 ContextClient::trace(visitor); | 183 ContextLifecycleObserver::trace(visitor); |
| 181 } | 184 } |
| 182 | 185 |
| 183 void IDBTransaction::setError(DOMException* error) { | 186 void IDBTransaction::setError(DOMException* error) { |
| 184 DCHECK_NE(m_state, Finished); | 187 DCHECK_NE(m_state, Finished); |
| 185 DCHECK(error); | 188 DCHECK(error); |
| 186 | 189 |
| 187 // The first error to be set is the true cause of the | 190 // The first error to be set is the true cause of the |
| 188 // transaction abort. | 191 // transaction abort. |
| 189 if (!m_error) | 192 if (!m_error) |
| 190 m_error = error; | 193 m_error = error; |
| (...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 472 objectStoreNames->append(objectStoreName); | 475 objectStoreNames->append(objectStoreName); |
| 473 objectStoreNames->sort(); | 476 objectStoreNames->sort(); |
| 474 return objectStoreNames; | 477 return objectStoreNames; |
| 475 } | 478 } |
| 476 | 479 |
| 477 const AtomicString& IDBTransaction::interfaceName() const { | 480 const AtomicString& IDBTransaction::interfaceName() const { |
| 478 return EventTargetNames::IDBTransaction; | 481 return EventTargetNames::IDBTransaction; |
| 479 } | 482 } |
| 480 | 483 |
| 481 ExecutionContext* IDBTransaction::getExecutionContext() const { | 484 ExecutionContext* IDBTransaction::getExecutionContext() const { |
| 482 return ContextClient::getExecutionContext(); | 485 return ContextLifecycleObserver::getExecutionContext(); |
| 483 } | 486 } |
| 484 | 487 |
| 485 DispatchEventResult IDBTransaction::dispatchEventInternal(Event* event) { | 488 DispatchEventResult IDBTransaction::dispatchEventInternal(Event* event) { |
| 486 IDB_TRACE("IDBTransaction::dispatchEvent"); | 489 IDB_TRACE("IDBTransaction::dispatchEvent"); |
| 487 if (!getExecutionContext()) { | 490 if (!getExecutionContext()) { |
| 488 m_state = Finished; | 491 m_state = Finished; |
| 489 return DispatchEventResult::CanceledBeforeDispatch; | 492 return DispatchEventResult::CanceledBeforeDispatch; |
| 490 } | 493 } |
| 491 DCHECK_NE(m_state, Finished); | 494 DCHECK_NE(m_state, Finished); |
| 492 DCHECK(m_hasPendingActivity); | 495 DCHECK(m_hasPendingActivity); |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 595 IDBObjectStore* objectStore = it.key; | 598 IDBObjectStore* objectStore = it.key; |
| 596 objectStore->clearIndexCache(); | 599 objectStore->clearIndexCache(); |
| 597 } | 600 } |
| 598 m_oldStoreMetadata.clear(); | 601 m_oldStoreMetadata.clear(); |
| 599 | 602 |
| 600 m_deletedIndexes.clear(); | 603 m_deletedIndexes.clear(); |
| 601 m_deletedObjectStores.clear(); | 604 m_deletedObjectStores.clear(); |
| 602 } | 605 } |
| 603 | 606 |
| 604 } // namespace blink | 607 } // namespace blink |
| OLD | NEW |