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

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

Issue 2815313002: Reland of Move ScriptState::GetExecutionContext (Part 5) (Closed)
Patch Set: Created 3 years, 8 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 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 IDBDatabase::kTransactionFinishedErrorMessage); 146 IDBDatabase::kTransactionFinishedErrorMessage);
147 return nullptr; 147 return nullptr;
148 } 148 }
149 if (!transaction_->IsActive()) { 149 if (!transaction_->IsActive()) {
150 exception_state.ThrowDOMException( 150 exception_state.ThrowDOMException(
151 kTransactionInactiveError, 151 kTransactionInactiveError,
152 IDBDatabase::kTransactionInactiveErrorMessage); 152 IDBDatabase::kTransactionInactiveErrorMessage);
153 return nullptr; 153 return nullptr;
154 } 154 }
155 IDBKeyRange* key_range = IDBKeyRange::FromScriptValue( 155 IDBKeyRange* key_range = IDBKeyRange::FromScriptValue(
156 script_state->GetExecutionContext(), key, exception_state); 156 ExecutionContext::From(script_state), key, exception_state);
157 if (exception_state.HadException()) 157 if (exception_state.HadException())
158 return nullptr; 158 return nullptr;
159 if (!key_range) { 159 if (!key_range) {
160 exception_state.ThrowDOMException( 160 exception_state.ThrowDOMException(
161 kDataError, IDBDatabase::kNoKeyOrKeyRangeErrorMessage); 161 kDataError, IDBDatabase::kNoKeyOrKeyRangeErrorMessage);
162 return nullptr; 162 return nullptr;
163 } 163 }
164 if (!BackendDB()) { 164 if (!BackendDB()) {
165 exception_state.ThrowDOMException(kInvalidStateError, 165 exception_state.ThrowDOMException(kInvalidStateError,
166 IDBDatabase::kDatabaseClosedErrorMessage); 166 IDBDatabase::kDatabaseClosedErrorMessage);
(...skipping 23 matching lines...) Expand all
190 IDBDatabase::kTransactionFinishedErrorMessage); 190 IDBDatabase::kTransactionFinishedErrorMessage);
191 return nullptr; 191 return nullptr;
192 } 192 }
193 if (!transaction_->IsActive()) { 193 if (!transaction_->IsActive()) {
194 exception_state.ThrowDOMException( 194 exception_state.ThrowDOMException(
195 kTransactionInactiveError, 195 kTransactionInactiveError,
196 IDBDatabase::kTransactionInactiveErrorMessage); 196 IDBDatabase::kTransactionInactiveErrorMessage);
197 return nullptr; 197 return nullptr;
198 } 198 }
199 IDBKeyRange* key_range = IDBKeyRange::FromScriptValue( 199 IDBKeyRange* key_range = IDBKeyRange::FromScriptValue(
200 script_state->GetExecutionContext(), key, exception_state); 200 ExecutionContext::From(script_state), key, exception_state);
201 if (exception_state.HadException()) 201 if (exception_state.HadException())
202 return nullptr; 202 return nullptr;
203 if (!key_range) { 203 if (!key_range) {
204 exception_state.ThrowDOMException( 204 exception_state.ThrowDOMException(
205 kDataError, IDBDatabase::kNoKeyOrKeyRangeErrorMessage); 205 kDataError, IDBDatabase::kNoKeyOrKeyRangeErrorMessage);
206 return nullptr; 206 return nullptr;
207 } 207 }
208 if (!BackendDB()) { 208 if (!BackendDB()) {
209 exception_state.ThrowDOMException(kInvalidStateError, 209 exception_state.ThrowDOMException(kInvalidStateError,
210 IDBDatabase::kDatabaseClosedErrorMessage); 210 IDBDatabase::kDatabaseClosedErrorMessage);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 IDBDatabase::kTransactionFinishedErrorMessage); 245 IDBDatabase::kTransactionFinishedErrorMessage);
246 return nullptr; 246 return nullptr;
247 } 247 }
248 if (!transaction_->IsActive()) { 248 if (!transaction_->IsActive()) {
249 exception_state.ThrowDOMException( 249 exception_state.ThrowDOMException(
250 kTransactionInactiveError, 250 kTransactionInactiveError,
251 IDBDatabase::kTransactionInactiveErrorMessage); 251 IDBDatabase::kTransactionInactiveErrorMessage);
252 return nullptr; 252 return nullptr;
253 } 253 }
254 IDBKeyRange* range = IDBKeyRange::FromScriptValue( 254 IDBKeyRange* range = IDBKeyRange::FromScriptValue(
255 script_state->GetExecutionContext(), key_range, exception_state); 255 ExecutionContext::From(script_state), key_range, exception_state);
256 if (exception_state.HadException()) 256 if (exception_state.HadException())
257 return nullptr; 257 return nullptr;
258 if (!BackendDB()) { 258 if (!BackendDB()) {
259 exception_state.ThrowDOMException(kInvalidStateError, 259 exception_state.ThrowDOMException(kInvalidStateError,
260 IDBDatabase::kDatabaseClosedErrorMessage); 260 IDBDatabase::kDatabaseClosedErrorMessage);
261 return nullptr; 261 return nullptr;
262 } 262 }
263 263
264 IDBRequest* request = IDBRequest::Create(script_state, IDBAny::Create(this), 264 IDBRequest* request = IDBRequest::Create(script_state, IDBAny::Create(this),
265 transaction_.Get()); 265 transaction_.Get());
(...skipping 29 matching lines...) Expand all
295 IDBDatabase::kTransactionFinishedErrorMessage); 295 IDBDatabase::kTransactionFinishedErrorMessage);
296 return nullptr; 296 return nullptr;
297 } 297 }
298 if (!transaction_->IsActive()) { 298 if (!transaction_->IsActive()) {
299 exception_state.ThrowDOMException( 299 exception_state.ThrowDOMException(
300 kTransactionInactiveError, 300 kTransactionInactiveError,
301 IDBDatabase::kTransactionInactiveErrorMessage); 301 IDBDatabase::kTransactionInactiveErrorMessage);
302 return nullptr; 302 return nullptr;
303 } 303 }
304 IDBKeyRange* range = IDBKeyRange::FromScriptValue( 304 IDBKeyRange* range = IDBKeyRange::FromScriptValue(
305 script_state->GetExecutionContext(), key_range, exception_state); 305 ExecutionContext::From(script_state), key_range, exception_state);
306 if (exception_state.HadException()) 306 if (exception_state.HadException())
307 return nullptr; 307 return nullptr;
308 if (!BackendDB()) { 308 if (!BackendDB()) {
309 exception_state.ThrowDOMException(kInvalidStateError, 309 exception_state.ThrowDOMException(kInvalidStateError,
310 IDBDatabase::kDatabaseClosedErrorMessage); 310 IDBDatabase::kDatabaseClosedErrorMessage);
311 return nullptr; 311 return nullptr;
312 } 312 }
313 313
314 IDBRequest* request = IDBRequest::Create(script_state, IDBAny::Create(this), 314 IDBRequest* request = IDBRequest::Create(script_state, IDBAny::Create(this),
315 transaction_.Get()); 315 transaction_.Get());
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
415 kReadOnlyError, IDBDatabase::kTransactionReadOnlyErrorMessage); 415 kReadOnlyError, IDBDatabase::kTransactionReadOnlyErrorMessage);
416 return nullptr; 416 return nullptr;
417 } 417 }
418 418
419 v8::Isolate* isolate = script_state->GetIsolate(); 419 v8::Isolate* isolate = script_state->GetIsolate();
420 DCHECK(isolate->InContext()); 420 DCHECK(isolate->InContext());
421 Vector<WebBlobInfo> blob_info; 421 Vector<WebBlobInfo> blob_info;
422 SerializedScriptValue::SerializeOptions options; 422 SerializedScriptValue::SerializeOptions options;
423 options.blob_info = &blob_info; 423 options.blob_info = &blob_info;
424 options.write_wasm_to_stream = 424 options.write_wasm_to_stream =
425 script_state->GetExecutionContext()->IsSecureContext(); 425 ExecutionContext::From(script_state)->IsSecureContext();
426 RefPtr<SerializedScriptValue> serialized_value = 426 RefPtr<SerializedScriptValue> serialized_value =
427 SerializedScriptValue::Serialize(isolate, value.V8Value(), options, 427 SerializedScriptValue::Serialize(isolate, value.V8Value(), options,
428 exception_state); 428 exception_state);
429 if (exception_state.HadException()) 429 if (exception_state.HadException())
430 return nullptr; 430 return nullptr;
431 431
432 // Keys that need to be extracted must be taken from a clone so that 432 // Keys that need to be extracted must be taken from a clone so that
433 // side effects (i.e. getters) are not triggered. Construct the 433 // side effects (i.e. getters) are not triggered. Construct the
434 // clone lazily since the operation may be expensive. 434 // clone lazily since the operation may be expensive.
435 ScriptValue clone; 435 ScriptValue clone;
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
576 IDBDatabase::kTransactionInactiveErrorMessage); 576 IDBDatabase::kTransactionInactiveErrorMessage);
577 return nullptr; 577 return nullptr;
578 } 578 }
579 if (transaction_->IsReadOnly()) { 579 if (transaction_->IsReadOnly()) {
580 exception_state.ThrowDOMException( 580 exception_state.ThrowDOMException(
581 kReadOnlyError, IDBDatabase::kTransactionReadOnlyErrorMessage); 581 kReadOnlyError, IDBDatabase::kTransactionReadOnlyErrorMessage);
582 return nullptr; 582 return nullptr;
583 } 583 }
584 584
585 IDBKeyRange* key_range = IDBKeyRange::FromScriptValue( 585 IDBKeyRange* key_range = IDBKeyRange::FromScriptValue(
586 script_state->GetExecutionContext(), key, exception_state); 586 ExecutionContext::From(script_state), key, exception_state);
587 if (exception_state.HadException()) 587 if (exception_state.HadException())
588 return nullptr; 588 return nullptr;
589 if (!key_range) { 589 if (!key_range) {
590 exception_state.ThrowDOMException( 590 exception_state.ThrowDOMException(
591 kDataError, IDBDatabase::kNoKeyOrKeyRangeErrorMessage); 591 kDataError, IDBDatabase::kNoKeyOrKeyRangeErrorMessage);
592 return nullptr; 592 return nullptr;
593 } 593 }
594 if (!BackendDB()) { 594 if (!BackendDB()) {
595 exception_state.ThrowDOMException(kInvalidStateError, 595 exception_state.ThrowDOMException(kInvalidStateError,
596 IDBDatabase::kDatabaseClosedErrorMessage); 596 IDBDatabase::kDatabaseClosedErrorMessage);
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
682 index_metadata_(std::move(index_metadata)) { 682 index_metadata_(std::move(index_metadata)) {
683 DCHECK(index_metadata_.Get()); 683 DCHECK(index_metadata_.Get());
684 } 684 }
685 685
686 const IDBIndexMetadata& IndexMetadata() const { return *index_metadata_; } 686 const IDBIndexMetadata& IndexMetadata() const { return *index_metadata_; }
687 687
688 void handleEvent(ExecutionContext* execution_context, Event* event) override { 688 void handleEvent(ExecutionContext* execution_context, Event* event) override {
689 if (!script_state_->ContextIsValid()) 689 if (!script_state_->ContextIsValid())
690 return; 690 return;
691 691
692 DCHECK_EQ(script_state_->GetExecutionContext(), execution_context); 692 DCHECK_EQ(ExecutionContext::From(script_state_.Get()), execution_context);
693 DCHECK_EQ(event->type(), EventTypeNames::success); 693 DCHECK_EQ(event->type(), EventTypeNames::success);
694 EventTarget* target = event->target(); 694 EventTarget* target = event->target();
695 IDBRequest* request = static_cast<IDBRequest*>(target); 695 IDBRequest* request = static_cast<IDBRequest*>(target);
696 696
697 if (!database_->Backend()) // If database is stopped? 697 if (!database_->Backend()) // If database is stopped?
698 return; 698 return;
699 699
700 ScriptState::Scope scope(script_state_.Get()); 700 ScriptState::Scope scope(script_state_.Get());
701 701
702 IDBAny* cursor_any = request->ResultAsAny(); 702 IDBAny* cursor_any = request->ResultAsAny();
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
923 if (!transaction_->IsActive()) { 923 if (!transaction_->IsActive()) {
924 exception_state.ThrowDOMException( 924 exception_state.ThrowDOMException(
925 kTransactionInactiveError, 925 kTransactionInactiveError,
926 IDBDatabase::kTransactionInactiveErrorMessage); 926 IDBDatabase::kTransactionInactiveErrorMessage);
927 return nullptr; 927 return nullptr;
928 } 928 }
929 929
930 WebIDBCursorDirection direction = 930 WebIDBCursorDirection direction =
931 IDBCursor::StringToDirection(direction_string); 931 IDBCursor::StringToDirection(direction_string);
932 IDBKeyRange* key_range = IDBKeyRange::FromScriptValue( 932 IDBKeyRange* key_range = IDBKeyRange::FromScriptValue(
933 script_state->GetExecutionContext(), range, exception_state); 933 ExecutionContext::From(script_state), range, exception_state);
934 if (exception_state.HadException()) 934 if (exception_state.HadException())
935 return nullptr; 935 return nullptr;
936 936
937 if (!BackendDB()) { 937 if (!BackendDB()) {
938 exception_state.ThrowDOMException(kInvalidStateError, 938 exception_state.ThrowDOMException(kInvalidStateError,
939 IDBDatabase::kDatabaseClosedErrorMessage); 939 IDBDatabase::kDatabaseClosedErrorMessage);
940 return nullptr; 940 return nullptr;
941 } 941 }
942 942
943 return openCursor(script_state, key_range, direction, kWebIDBTaskTypeNormal); 943 return openCursor(script_state, key_range, direction, kWebIDBTaskTypeNormal);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
976 if (!transaction_->IsActive()) { 976 if (!transaction_->IsActive()) {
977 exception_state.ThrowDOMException( 977 exception_state.ThrowDOMException(
978 kTransactionInactiveError, 978 kTransactionInactiveError,
979 IDBDatabase::kTransactionInactiveErrorMessage); 979 IDBDatabase::kTransactionInactiveErrorMessage);
980 return nullptr; 980 return nullptr;
981 } 981 }
982 982
983 WebIDBCursorDirection direction = 983 WebIDBCursorDirection direction =
984 IDBCursor::StringToDirection(direction_string); 984 IDBCursor::StringToDirection(direction_string);
985 IDBKeyRange* key_range = IDBKeyRange::FromScriptValue( 985 IDBKeyRange* key_range = IDBKeyRange::FromScriptValue(
986 script_state->GetExecutionContext(), range, exception_state); 986 ExecutionContext::From(script_state), range, exception_state);
987 if (exception_state.HadException()) 987 if (exception_state.HadException())
988 return nullptr; 988 return nullptr;
989 989
990 if (!BackendDB()) { 990 if (!BackendDB()) {
991 exception_state.ThrowDOMException(kInvalidStateError, 991 exception_state.ThrowDOMException(kInvalidStateError,
992 IDBDatabase::kDatabaseClosedErrorMessage); 992 IDBDatabase::kDatabaseClosedErrorMessage);
993 return nullptr; 993 return nullptr;
994 } 994 }
995 995
996 IDBRequest* request = IDBRequest::Create(script_state, IDBAny::Create(this), 996 IDBRequest* request = IDBRequest::Create(script_state, IDBAny::Create(this),
(...skipping 23 matching lines...) Expand all
1020 return nullptr; 1020 return nullptr;
1021 } 1021 }
1022 if (!transaction_->IsActive()) { 1022 if (!transaction_->IsActive()) {
1023 exception_state.ThrowDOMException( 1023 exception_state.ThrowDOMException(
1024 kTransactionInactiveError, 1024 kTransactionInactiveError,
1025 IDBDatabase::kTransactionInactiveErrorMessage); 1025 IDBDatabase::kTransactionInactiveErrorMessage);
1026 return nullptr; 1026 return nullptr;
1027 } 1027 }
1028 1028
1029 IDBKeyRange* key_range = IDBKeyRange::FromScriptValue( 1029 IDBKeyRange* key_range = IDBKeyRange::FromScriptValue(
1030 script_state->GetExecutionContext(), range, exception_state); 1030 ExecutionContext::From(script_state), range, exception_state);
1031 if (exception_state.HadException()) 1031 if (exception_state.HadException())
1032 return nullptr; 1032 return nullptr;
1033 1033
1034 if (!BackendDB()) { 1034 if (!BackendDB()) {
1035 exception_state.ThrowDOMException(kInvalidStateError, 1035 exception_state.ThrowDOMException(kInvalidStateError,
1036 IDBDatabase::kDatabaseClosedErrorMessage); 1036 IDBDatabase::kDatabaseClosedErrorMessage);
1037 return nullptr; 1037 return nullptr;
1038 } 1038 }
1039 1039
1040 IDBRequest* request = IDBRequest::Create(script_state, IDBAny::Create(this), 1040 IDBRequest* request = IDBRequest::Create(script_state, IDBAny::Create(this),
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
1143 } 1143 }
1144 } 1144 }
1145 return IDBIndexMetadata::kInvalidId; 1145 return IDBIndexMetadata::kInvalidId;
1146 } 1146 }
1147 1147
1148 WebIDBDatabase* IDBObjectStore::BackendDB() const { 1148 WebIDBDatabase* IDBObjectStore::BackendDB() const {
1149 return transaction_->BackendDB(); 1149 return transaction_->BackendDB();
1150 } 1150 }
1151 1151
1152 } // namespace blink 1152 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698