Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(100)

Side by Side Diff: third_party/WebKit/Source/modules/indexeddb/IDBTransaction.cpp

Issue 2607533002: Prefer using ContextClient over ContextLifecycleObserver (Closed)
Patch Set: Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 Persistent<IDBTransaction> m_transaction; 90 Persistent<IDBTransaction> m_transaction;
91 }; 91 };
92 92
93 } // namespace 93 } // namespace
94 94
95 IDBTransaction::IDBTransaction(ScriptState* scriptState, 95 IDBTransaction::IDBTransaction(ScriptState* scriptState,
96 int64_t id, 96 int64_t id,
97 const HashSet<String>& scope, 97 const HashSet<String>& scope,
98 WebIDBTransactionMode mode, 98 WebIDBTransactionMode mode,
99 IDBDatabase* db) 99 IDBDatabase* db)
100 : ContextLifecycleObserver(scriptState->getExecutionContext()), 100 : ContextClient(scriptState->getExecutionContext()),
sof 2017/01/05 15:12:08 This one is flakily repro'ing on the bots, https
101 m_id(id), 101 m_id(id),
102 m_database(db), 102 m_database(db),
103 m_mode(mode), 103 m_mode(mode),
104 m_scope(scope) { 104 m_scope(scope) {
105 DCHECK(m_database); 105 DCHECK(m_database);
106 DCHECK(!m_scope.isEmpty()) << "Non-versionchange transactions must operate " 106 DCHECK(!m_scope.isEmpty()) << "Non-versionchange transactions must operate "
107 "on a well-defined set of stores"; 107 "on a well-defined set of stores";
108 DCHECK(m_mode == WebIDBTransactionModeReadOnly || 108 DCHECK(m_mode == WebIDBTransactionModeReadOnly ||
109 m_mode == WebIDBTransactionModeReadWrite) 109 m_mode == WebIDBTransactionModeReadWrite)
110 << "Invalid transaction mode"; 110 << "Invalid transaction mode";
111 111
112 DCHECK_EQ(m_state, Active); 112 DCHECK_EQ(m_state, Active);
113 V8PerIsolateData::from(scriptState->isolate()) 113 V8PerIsolateData::from(scriptState->isolate())
114 ->addEndOfScopeTask(DeactivateTransactionTask::create(this)); 114 ->addEndOfScopeTask(DeactivateTransactionTask::create(this));
115 115
116 m_database->transactionCreated(this); 116 m_database->transactionCreated(this);
117 } 117 }
118 118
119 IDBTransaction::IDBTransaction(ExecutionContext* executionContext, 119 IDBTransaction::IDBTransaction(ExecutionContext* executionContext,
120 int64_t id, 120 int64_t id,
121 IDBDatabase* db, 121 IDBDatabase* db,
122 IDBOpenDBRequest* openDBRequest, 122 IDBOpenDBRequest* openDBRequest,
123 const IDBDatabaseMetadata& oldMetadata) 123 const IDBDatabaseMetadata& oldMetadata)
124 : ContextLifecycleObserver(executionContext), 124 : ContextClient(executionContext),
125 m_id(id), 125 m_id(id),
126 m_database(db), 126 m_database(db),
127 m_openDBRequest(openDBRequest), 127 m_openDBRequest(openDBRequest),
128 m_mode(WebIDBTransactionModeVersionChange), 128 m_mode(WebIDBTransactionModeVersionChange),
129 m_state(Inactive), 129 m_state(Inactive),
130 m_oldDatabaseMetadata(oldMetadata) { 130 m_oldDatabaseMetadata(oldMetadata) {
131 DCHECK(m_database); 131 DCHECK(m_database);
132 DCHECK(m_openDBRequest); 132 DCHECK(m_openDBRequest);
133 DCHECK(m_scope.isEmpty()); 133 DCHECK(m_scope.isEmpty());
134 134
135 m_database->transactionCreated(this); 135 m_database->transactionCreated(this);
136 } 136 }
137 137
138 IDBTransaction::~IDBTransaction() { 138 IDBTransaction::~IDBTransaction() {
139 DCHECK(m_state == Finished || !getExecutionContext()); 139 DCHECK(m_state == Finished || !getExecutionContext());
140 DCHECK(m_requestList.isEmpty() || !getExecutionContext()); 140 DCHECK(m_requestList.isEmpty() || !getExecutionContext());
141 } 141 }
142 142
143 DEFINE_TRACE(IDBTransaction) { 143 DEFINE_TRACE(IDBTransaction) {
144 visitor->trace(m_database); 144 visitor->trace(m_database);
145 visitor->trace(m_openDBRequest); 145 visitor->trace(m_openDBRequest);
146 visitor->trace(m_error); 146 visitor->trace(m_error);
147 visitor->trace(m_requestList); 147 visitor->trace(m_requestList);
148 visitor->trace(m_objectStoreMap); 148 visitor->trace(m_objectStoreMap);
149 visitor->trace(m_oldStoreMetadata); 149 visitor->trace(m_oldStoreMetadata);
150 visitor->trace(m_deletedIndexes); 150 visitor->trace(m_deletedIndexes);
151 EventTargetWithInlineData::trace(visitor); 151 EventTargetWithInlineData::trace(visitor);
152 ContextLifecycleObserver::trace(visitor); 152 ContextClient::trace(visitor);
153 } 153 }
154 154
155 void IDBTransaction::setError(DOMException* error) { 155 void IDBTransaction::setError(DOMException* error) {
156 DCHECK_NE(m_state, Finished); 156 DCHECK_NE(m_state, Finished);
157 DCHECK(error); 157 DCHECK(error);
158 158
159 // The first error to be set is the true cause of the 159 // The first error to be set is the true cause of the
160 // transaction abort. 160 // transaction abort.
161 if (!m_error) 161 if (!m_error)
162 m_error = error; 162 m_error = error;
(...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 objectStoreNames->append(objectStoreName); 445 objectStoreNames->append(objectStoreName);
446 objectStoreNames->sort(); 446 objectStoreNames->sort();
447 return objectStoreNames; 447 return objectStoreNames;
448 } 448 }
449 449
450 const AtomicString& IDBTransaction::interfaceName() const { 450 const AtomicString& IDBTransaction::interfaceName() const {
451 return EventTargetNames::IDBTransaction; 451 return EventTargetNames::IDBTransaction;
452 } 452 }
453 453
454 ExecutionContext* IDBTransaction::getExecutionContext() const { 454 ExecutionContext* IDBTransaction::getExecutionContext() const {
455 return ContextLifecycleObserver::getExecutionContext(); 455 return ContextClient::getExecutionContext();
456 } 456 }
457 457
458 DispatchEventResult IDBTransaction::dispatchEventInternal(Event* event) { 458 DispatchEventResult IDBTransaction::dispatchEventInternal(Event* event) {
459 IDB_TRACE("IDBTransaction::dispatchEvent"); 459 IDB_TRACE("IDBTransaction::dispatchEvent");
460 if (!getExecutionContext()) { 460 if (!getExecutionContext()) {
461 m_state = Finished; 461 m_state = Finished;
462 return DispatchEventResult::CanceledBeforeDispatch; 462 return DispatchEventResult::CanceledBeforeDispatch;
463 } 463 }
464 DCHECK_NE(m_state, Finished); 464 DCHECK_NE(m_state, Finished);
465 DCHECK(m_hasPendingActivity); 465 DCHECK(m_hasPendingActivity);
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
568 IDBObjectStore* objectStore = it.key; 568 IDBObjectStore* objectStore = it.key;
569 objectStore->clearIndexCache(); 569 objectStore->clearIndexCache();
570 } 570 }
571 m_oldStoreMetadata.clear(); 571 m_oldStoreMetadata.clear();
572 572
573 m_deletedIndexes.clear(); 573 m_deletedIndexes.clear();
574 m_deletedObjectStores.clear(); 574 m_deletedObjectStores.clear();
575 } 575 }
576 576
577 } // namespace blink 577 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698