OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2012 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 are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * 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 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
80 typedef blink::InspectorBackendDispatcher::IndexedDBCommandHandler::ClearObjectS
toreCallback ClearObjectStoreCallback; | 80 typedef blink::InspectorBackendDispatcher::IndexedDBCommandHandler::ClearObjectS
toreCallback ClearObjectStoreCallback; |
81 | 81 |
82 namespace blink { | 82 namespace blink { |
83 | 83 |
84 namespace IndexedDBAgentState { | 84 namespace IndexedDBAgentState { |
85 static const char indexedDBAgentEnabled[] = "indexedDBAgentEnabled"; | 85 static const char indexedDBAgentEnabled[] = "indexedDBAgentEnabled"; |
86 }; | 86 }; |
87 | 87 |
88 namespace { | 88 namespace { |
89 | 89 |
90 class GetDatabaseNamesCallback FINAL : public EventListener { | 90 class GetDatabaseNamesCallback final : public EventListener { |
91 WTF_MAKE_NONCOPYABLE(GetDatabaseNamesCallback); | 91 WTF_MAKE_NONCOPYABLE(GetDatabaseNamesCallback); |
92 public: | 92 public: |
93 static PassRefPtr<GetDatabaseNamesCallback> create(PassRefPtrWillBeRawPtr<Re
questDatabaseNamesCallback> requestCallback, const String& securityOrigin) | 93 static PassRefPtr<GetDatabaseNamesCallback> create(PassRefPtrWillBeRawPtr<Re
questDatabaseNamesCallback> requestCallback, const String& securityOrigin) |
94 { | 94 { |
95 return adoptRef(new GetDatabaseNamesCallback(requestCallback, securityOr
igin)); | 95 return adoptRef(new GetDatabaseNamesCallback(requestCallback, securityOr
igin)); |
96 } | 96 } |
97 | 97 |
98 virtual ~GetDatabaseNamesCallback() { } | 98 virtual ~GetDatabaseNamesCallback() { } |
99 | 99 |
100 virtual bool operator==(const EventListener& other) OVERRIDE | 100 virtual bool operator==(const EventListener& other) override |
101 { | 101 { |
102 return this == &other; | 102 return this == &other; |
103 } | 103 } |
104 | 104 |
105 virtual void handleEvent(ExecutionContext*, Event* event) OVERRIDE | 105 virtual void handleEvent(ExecutionContext*, Event* event) override |
106 { | 106 { |
107 if (!m_requestCallback->isActive()) | 107 if (!m_requestCallback->isActive()) |
108 return; | 108 return; |
109 if (event->type() != EventTypeNames::success) { | 109 if (event->type() != EventTypeNames::success) { |
110 m_requestCallback->sendFailure("Unexpected event type."); | 110 m_requestCallback->sendFailure("Unexpected event type."); |
111 return; | 111 return; |
112 } | 112 } |
113 | 113 |
114 IDBRequest* idbRequest = static_cast<IDBRequest*>(event->target()); | 114 IDBRequest* idbRequest = static_cast<IDBRequest*>(event->target()); |
115 IDBAny* requestResult = idbRequest->resultAsAny(); | 115 IDBAny* requestResult = idbRequest->resultAsAny(); |
(...skipping 25 matching lines...) Expand all Loading... |
141 virtual ~ExecutableWithDatabase() { }; | 141 virtual ~ExecutableWithDatabase() { }; |
142 void start(IDBFactory*, SecurityOrigin*, const String& databaseName); | 142 void start(IDBFactory*, SecurityOrigin*, const String& databaseName); |
143 virtual void execute(IDBDatabase*) = 0; | 143 virtual void execute(IDBDatabase*) = 0; |
144 virtual RequestCallback* requestCallback() = 0; | 144 virtual RequestCallback* requestCallback() = 0; |
145 ExecutionContext* context() const { return m_scriptState->executionContext()
; } | 145 ExecutionContext* context() const { return m_scriptState->executionContext()
; } |
146 ScriptState* scriptState() const { return m_scriptState.get(); } | 146 ScriptState* scriptState() const { return m_scriptState.get(); } |
147 private: | 147 private: |
148 RefPtr<ScriptState> m_scriptState; | 148 RefPtr<ScriptState> m_scriptState; |
149 }; | 149 }; |
150 | 150 |
151 class OpenDatabaseCallback FINAL : public EventListener { | 151 class OpenDatabaseCallback final : public EventListener { |
152 public: | 152 public: |
153 static PassRefPtr<OpenDatabaseCallback> create(ExecutableWithDatabase* execu
tableWithDatabase) | 153 static PassRefPtr<OpenDatabaseCallback> create(ExecutableWithDatabase* execu
tableWithDatabase) |
154 { | 154 { |
155 return adoptRef(new OpenDatabaseCallback(executableWithDatabase)); | 155 return adoptRef(new OpenDatabaseCallback(executableWithDatabase)); |
156 } | 156 } |
157 | 157 |
158 virtual ~OpenDatabaseCallback() { } | 158 virtual ~OpenDatabaseCallback() { } |
159 | 159 |
160 virtual bool operator==(const EventListener& other) OVERRIDE | 160 virtual bool operator==(const EventListener& other) override |
161 { | 161 { |
162 return this == &other; | 162 return this == &other; |
163 } | 163 } |
164 | 164 |
165 virtual void handleEvent(ExecutionContext* context, Event* event) OVERRIDE | 165 virtual void handleEvent(ExecutionContext* context, Event* event) override |
166 { | 166 { |
167 if (event->type() != EventTypeNames::success) { | 167 if (event->type() != EventTypeNames::success) { |
168 m_executableWithDatabase->requestCallback()->sendFailure("Unexpected
event type."); | 168 m_executableWithDatabase->requestCallback()->sendFailure("Unexpected
event type."); |
169 return; | 169 return; |
170 } | 170 } |
171 | 171 |
172 IDBOpenDBRequest* idbOpenDBRequest = static_cast<IDBOpenDBRequest*>(even
t->target()); | 172 IDBOpenDBRequest* idbOpenDBRequest = static_cast<IDBOpenDBRequest*>(even
t->target()); |
173 IDBAny* requestResult = idbOpenDBRequest->resultAsAny(); | 173 IDBAny* requestResult = idbOpenDBRequest->resultAsAny(); |
174 if (requestResult->type() != IDBAny::IDBDatabaseType) { | 174 if (requestResult->type() != IDBAny::IDBDatabaseType) { |
175 m_executableWithDatabase->requestCallback()->sendFailure("Unexpected
result type."); | 175 m_executableWithDatabase->requestCallback()->sendFailure("Unexpected
result type."); |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
248 keyPath->setArray(array); | 248 keyPath->setArray(array); |
249 break; | 249 break; |
250 } | 250 } |
251 default: | 251 default: |
252 ASSERT_NOT_REACHED(); | 252 ASSERT_NOT_REACHED(); |
253 } | 253 } |
254 | 254 |
255 return keyPath.release(); | 255 return keyPath.release(); |
256 } | 256 } |
257 | 257 |
258 class DatabaseLoader FINAL : public ExecutableWithDatabase { | 258 class DatabaseLoader final : public ExecutableWithDatabase { |
259 public: | 259 public: |
260 static PassRefPtr<DatabaseLoader> create(ScriptState* scriptState, PassRefPt
rWillBeRawPtr<RequestDatabaseCallback> requestCallback) | 260 static PassRefPtr<DatabaseLoader> create(ScriptState* scriptState, PassRefPt
rWillBeRawPtr<RequestDatabaseCallback> requestCallback) |
261 { | 261 { |
262 return adoptRef(new DatabaseLoader(scriptState, requestCallback)); | 262 return adoptRef(new DatabaseLoader(scriptState, requestCallback)); |
263 } | 263 } |
264 | 264 |
265 virtual ~DatabaseLoader() { } | 265 virtual ~DatabaseLoader() { } |
266 | 266 |
267 virtual void execute(IDBDatabase* idbDatabase) OVERRIDE | 267 virtual void execute(IDBDatabase* idbDatabase) override |
268 { | 268 { |
269 if (!requestCallback()->isActive()) | 269 if (!requestCallback()->isActive()) |
270 return; | 270 return; |
271 | 271 |
272 const IDBDatabaseMetadata databaseMetadata = idbDatabase->metadata(); | 272 const IDBDatabaseMetadata databaseMetadata = idbDatabase->metadata(); |
273 | 273 |
274 RefPtr<TypeBuilder::Array<TypeBuilder::IndexedDB::ObjectStore> > objectS
tores = TypeBuilder::Array<TypeBuilder::IndexedDB::ObjectStore>::create(); | 274 RefPtr<TypeBuilder::Array<TypeBuilder::IndexedDB::ObjectStore> > objectS
tores = TypeBuilder::Array<TypeBuilder::IndexedDB::ObjectStore>::create(); |
275 | 275 |
276 for (IDBDatabaseMetadata::ObjectStoreMap::const_iterator it = databaseMe
tadata.objectStores.begin(); it != databaseMetadata.objectStores.end(); ++it) { | 276 for (IDBDatabaseMetadata::ObjectStoreMap::const_iterator it = databaseMe
tadata.objectStores.begin(); it != databaseMetadata.objectStores.end(); ++it) { |
277 const IDBObjectStoreMetadata& objectStoreMetadata = it->value; | 277 const IDBObjectStoreMetadata& objectStoreMetadata = it->value; |
(...skipping 20 matching lines...) Expand all Loading... |
298 } | 298 } |
299 RefPtr<DatabaseWithObjectStores> result = DatabaseWithObjectStores::crea
te() | 299 RefPtr<DatabaseWithObjectStores> result = DatabaseWithObjectStores::crea
te() |
300 .setName(databaseMetadata.name) | 300 .setName(databaseMetadata.name) |
301 .setIntVersion(databaseMetadata.intVersion) | 301 .setIntVersion(databaseMetadata.intVersion) |
302 .setVersion(databaseMetadata.version) | 302 .setVersion(databaseMetadata.version) |
303 .setObjectStores(objectStores); | 303 .setObjectStores(objectStores); |
304 | 304 |
305 m_requestCallback->sendSuccess(result); | 305 m_requestCallback->sendSuccess(result); |
306 } | 306 } |
307 | 307 |
308 virtual RequestCallback* requestCallback() OVERRIDE { return m_requestCallba
ck.get(); } | 308 virtual RequestCallback* requestCallback() override { return m_requestCallba
ck.get(); } |
309 private: | 309 private: |
310 DatabaseLoader(ScriptState* scriptState, PassRefPtrWillBeRawPtr<RequestDatab
aseCallback> requestCallback) | 310 DatabaseLoader(ScriptState* scriptState, PassRefPtrWillBeRawPtr<RequestDatab
aseCallback> requestCallback) |
311 : ExecutableWithDatabase(scriptState) | 311 : ExecutableWithDatabase(scriptState) |
312 , m_requestCallback(requestCallback) { } | 312 , m_requestCallback(requestCallback) { } |
313 RefPtrWillBePersistent<RequestDatabaseCallback> m_requestCallback; | 313 RefPtrWillBePersistent<RequestDatabaseCallback> m_requestCallback; |
314 }; | 314 }; |
315 | 315 |
316 static IDBKey* idbKeyFromInspectorObject(JSONObject* key) | 316 static IDBKey* idbKeyFromInspectorObject(JSONObject* key) |
317 { | 317 { |
318 IDBKey* idbKey; | 318 IDBKey* idbKey; |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
379 bool upperOpen; | 379 bool upperOpen; |
380 if (!keyRange->getBoolean("upperOpen", &upperOpen)) | 380 if (!keyRange->getBoolean("upperOpen", &upperOpen)) |
381 return 0; | 381 return 0; |
382 IDBKeyRange::UpperBoundType upperBoundType = upperOpen ? IDBKeyRange::UpperB
oundOpen : IDBKeyRange::UpperBoundClosed; | 382 IDBKeyRange::UpperBoundType upperBoundType = upperOpen ? IDBKeyRange::UpperB
oundOpen : IDBKeyRange::UpperBoundClosed; |
383 | 383 |
384 return IDBKeyRange::create(idbLower, idbUpper, lowerBoundType, upperBoundTyp
e); | 384 return IDBKeyRange::create(idbLower, idbUpper, lowerBoundType, upperBoundTyp
e); |
385 } | 385 } |
386 | 386 |
387 class DataLoader; | 387 class DataLoader; |
388 | 388 |
389 class OpenCursorCallback FINAL : public EventListener { | 389 class OpenCursorCallback final : public EventListener { |
390 public: | 390 public: |
391 static PassRefPtr<OpenCursorCallback> create(ScriptState* scriptState, PassR
efPtrWillBeRawPtr<RequestDataCallback> requestCallback, int skipCount, unsigned
pageSize) | 391 static PassRefPtr<OpenCursorCallback> create(ScriptState* scriptState, PassR
efPtrWillBeRawPtr<RequestDataCallback> requestCallback, int skipCount, unsigned
pageSize) |
392 { | 392 { |
393 return adoptRef(new OpenCursorCallback(scriptState, requestCallback, ski
pCount, pageSize)); | 393 return adoptRef(new OpenCursorCallback(scriptState, requestCallback, ski
pCount, pageSize)); |
394 } | 394 } |
395 | 395 |
396 virtual ~OpenCursorCallback() { } | 396 virtual ~OpenCursorCallback() { } |
397 | 397 |
398 virtual bool operator==(const EventListener& other) OVERRIDE | 398 virtual bool operator==(const EventListener& other) override |
399 { | 399 { |
400 return this == &other; | 400 return this == &other; |
401 } | 401 } |
402 | 402 |
403 virtual void handleEvent(ExecutionContext*, Event* event) OVERRIDE | 403 virtual void handleEvent(ExecutionContext*, Event* event) override |
404 { | 404 { |
405 if (event->type() != EventTypeNames::success) { | 405 if (event->type() != EventTypeNames::success) { |
406 m_requestCallback->sendFailure("Unexpected event type."); | 406 m_requestCallback->sendFailure("Unexpected event type."); |
407 return; | 407 return; |
408 } | 408 } |
409 | 409 |
410 IDBRequest* idbRequest = static_cast<IDBRequest*>(event->target()); | 410 IDBRequest* idbRequest = static_cast<IDBRequest*>(event->target()); |
411 IDBAny* requestResult = idbRequest->resultAsAny(); | 411 IDBAny* requestResult = idbRequest->resultAsAny(); |
412 if (requestResult->type() == IDBAny::BufferType) { | 412 if (requestResult->type() == IDBAny::BufferType) { |
413 end(false); | 413 end(false); |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
480 m_result = Array<DataEntry>::create(); | 480 m_result = Array<DataEntry>::create(); |
481 } | 481 } |
482 | 482 |
483 RefPtr<ScriptState> m_scriptState; | 483 RefPtr<ScriptState> m_scriptState; |
484 RefPtrWillBePersistent<RequestDataCallback> m_requestCallback; | 484 RefPtrWillBePersistent<RequestDataCallback> m_requestCallback; |
485 int m_skipCount; | 485 int m_skipCount; |
486 unsigned m_pageSize; | 486 unsigned m_pageSize; |
487 RefPtr<Array<DataEntry> > m_result; | 487 RefPtr<Array<DataEntry> > m_result; |
488 }; | 488 }; |
489 | 489 |
490 class DataLoader FINAL : public ExecutableWithDatabase { | 490 class DataLoader final : public ExecutableWithDatabase { |
491 public: | 491 public: |
492 static PassRefPtr<DataLoader> create(ScriptState* scriptState, PassRefPtrWil
lBeRawPtr<RequestDataCallback> requestCallback, const String& objectStoreName, c
onst String& indexName, IDBKeyRange* idbKeyRange, int skipCount, unsigned pageSi
ze) | 492 static PassRefPtr<DataLoader> create(ScriptState* scriptState, PassRefPtrWil
lBeRawPtr<RequestDataCallback> requestCallback, const String& objectStoreName, c
onst String& indexName, IDBKeyRange* idbKeyRange, int skipCount, unsigned pageSi
ze) |
493 { | 493 { |
494 return adoptRef(new DataLoader(scriptState, requestCallback, objectStore
Name, indexName, idbKeyRange, skipCount, pageSize)); | 494 return adoptRef(new DataLoader(scriptState, requestCallback, objectStore
Name, indexName, idbKeyRange, skipCount, pageSize)); |
495 } | 495 } |
496 | 496 |
497 virtual ~DataLoader() { } | 497 virtual ~DataLoader() { } |
498 | 498 |
499 virtual void execute(IDBDatabase* idbDatabase) OVERRIDE | 499 virtual void execute(IDBDatabase* idbDatabase) override |
500 { | 500 { |
501 if (!requestCallback()->isActive()) | 501 if (!requestCallback()->isActive()) |
502 return; | 502 return; |
503 IDBTransaction* idbTransaction = transactionForDatabase(scriptState(), i
dbDatabase, m_objectStoreName); | 503 IDBTransaction* idbTransaction = transactionForDatabase(scriptState(), i
dbDatabase, m_objectStoreName); |
504 if (!idbTransaction) { | 504 if (!idbTransaction) { |
505 m_requestCallback->sendFailure("Could not get transaction"); | 505 m_requestCallback->sendFailure("Could not get transaction"); |
506 return; | 506 return; |
507 } | 507 } |
508 IDBObjectStore* idbObjectStore = objectStoreForTransaction(idbTransactio
n, m_objectStoreName); | 508 IDBObjectStore* idbObjectStore = objectStoreForTransaction(idbTransactio
n, m_objectStoreName); |
509 if (!idbObjectStore) { | 509 if (!idbObjectStore) { |
(...skipping 11 matching lines...) Expand all Loading... |
521 return; | 521 return; |
522 } | 522 } |
523 | 523 |
524 idbRequest = idbIndex->openCursor(scriptState(), m_idbKeyRange.get()
, WebIDBCursorDirectionNext); | 524 idbRequest = idbIndex->openCursor(scriptState(), m_idbKeyRange.get()
, WebIDBCursorDirectionNext); |
525 } else { | 525 } else { |
526 idbRequest = idbObjectStore->openCursor(scriptState(), m_idbKeyRange
.get(), WebIDBCursorDirectionNext); | 526 idbRequest = idbObjectStore->openCursor(scriptState(), m_idbKeyRange
.get(), WebIDBCursorDirectionNext); |
527 } | 527 } |
528 idbRequest->addEventListener(EventTypeNames::success, openCursorCallback
, false); | 528 idbRequest->addEventListener(EventTypeNames::success, openCursorCallback
, false); |
529 } | 529 } |
530 | 530 |
531 virtual RequestCallback* requestCallback() OVERRIDE { return m_requestCallba
ck.get(); } | 531 virtual RequestCallback* requestCallback() override { return m_requestCallba
ck.get(); } |
532 DataLoader(ScriptState* scriptState, PassRefPtrWillBeRawPtr<RequestDataCallb
ack> requestCallback, const String& objectStoreName, const String& indexName, ID
BKeyRange* idbKeyRange, int skipCount, unsigned pageSize) | 532 DataLoader(ScriptState* scriptState, PassRefPtrWillBeRawPtr<RequestDataCallb
ack> requestCallback, const String& objectStoreName, const String& indexName, ID
BKeyRange* idbKeyRange, int skipCount, unsigned pageSize) |
533 : ExecutableWithDatabase(scriptState) | 533 : ExecutableWithDatabase(scriptState) |
534 , m_requestCallback(requestCallback) | 534 , m_requestCallback(requestCallback) |
535 , m_objectStoreName(objectStoreName) | 535 , m_objectStoreName(objectStoreName) |
536 , m_indexName(indexName) | 536 , m_indexName(indexName) |
537 , m_idbKeyRange(idbKeyRange) | 537 , m_idbKeyRange(idbKeyRange) |
538 , m_skipCount(skipCount) | 538 , m_skipCount(skipCount) |
539 , m_pageSize(pageSize) | 539 , m_pageSize(pageSize) |
540 { | 540 { |
541 } | 541 } |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
678 *errorString = "Can not parse key range."; | 678 *errorString = "Can not parse key range."; |
679 return; | 679 return; |
680 } | 680 } |
681 | 681 |
682 ScriptState* scriptState = ScriptState::forMainWorld(frame); | 682 ScriptState* scriptState = ScriptState::forMainWorld(frame); |
683 ScriptState::Scope scope(scriptState); | 683 ScriptState::Scope scope(scriptState); |
684 RefPtr<DataLoader> dataLoader = DataLoader::create(scriptState, requestCallb
ack, objectStoreName, indexName, idbKeyRange, skipCount, pageSize); | 684 RefPtr<DataLoader> dataLoader = DataLoader::create(scriptState, requestCallb
ack, objectStoreName, indexName, idbKeyRange, skipCount, pageSize); |
685 dataLoader->start(idbFactory, document->securityOrigin(), databaseName); | 685 dataLoader->start(idbFactory, document->securityOrigin(), databaseName); |
686 } | 686 } |
687 | 687 |
688 class ClearObjectStoreListener FINAL : public EventListener { | 688 class ClearObjectStoreListener final : public EventListener { |
689 WTF_MAKE_NONCOPYABLE(ClearObjectStoreListener); | 689 WTF_MAKE_NONCOPYABLE(ClearObjectStoreListener); |
690 public: | 690 public: |
691 static PassRefPtr<ClearObjectStoreListener> create(PassRefPtrWillBeRawPtr<Cl
earObjectStoreCallback> requestCallback) | 691 static PassRefPtr<ClearObjectStoreListener> create(PassRefPtrWillBeRawPtr<Cl
earObjectStoreCallback> requestCallback) |
692 { | 692 { |
693 return adoptRef(new ClearObjectStoreListener(requestCallback)); | 693 return adoptRef(new ClearObjectStoreListener(requestCallback)); |
694 } | 694 } |
695 | 695 |
696 virtual ~ClearObjectStoreListener() { } | 696 virtual ~ClearObjectStoreListener() { } |
697 | 697 |
698 virtual bool operator==(const EventListener& other) OVERRIDE | 698 virtual bool operator==(const EventListener& other) override |
699 { | 699 { |
700 return this == &other; | 700 return this == &other; |
701 } | 701 } |
702 | 702 |
703 virtual void handleEvent(ExecutionContext*, Event* event) OVERRIDE | 703 virtual void handleEvent(ExecutionContext*, Event* event) override |
704 { | 704 { |
705 if (!m_requestCallback->isActive()) | 705 if (!m_requestCallback->isActive()) |
706 return; | 706 return; |
707 if (event->type() != EventTypeNames::complete) { | 707 if (event->type() != EventTypeNames::complete) { |
708 m_requestCallback->sendFailure("Unexpected event type."); | 708 m_requestCallback->sendFailure("Unexpected event type."); |
709 return; | 709 return; |
710 } | 710 } |
711 | 711 |
712 m_requestCallback->sendSuccess(); | 712 m_requestCallback->sendSuccess(); |
713 } | 713 } |
714 private: | 714 private: |
715 ClearObjectStoreListener(PassRefPtrWillBeRawPtr<ClearObjectStoreCallback> re
questCallback) | 715 ClearObjectStoreListener(PassRefPtrWillBeRawPtr<ClearObjectStoreCallback> re
questCallback) |
716 : EventListener(EventListener::CPPEventListenerType) | 716 : EventListener(EventListener::CPPEventListenerType) |
717 , m_requestCallback(requestCallback) | 717 , m_requestCallback(requestCallback) |
718 { | 718 { |
719 } | 719 } |
720 | 720 |
721 RefPtrWillBePersistent<ClearObjectStoreCallback> m_requestCallback; | 721 RefPtrWillBePersistent<ClearObjectStoreCallback> m_requestCallback; |
722 }; | 722 }; |
723 | 723 |
724 | 724 |
725 class ClearObjectStore FINAL : public ExecutableWithDatabase { | 725 class ClearObjectStore final : public ExecutableWithDatabase { |
726 public: | 726 public: |
727 static PassRefPtr<ClearObjectStore> create(ScriptState* scriptState, const S
tring& objectStoreName, PassRefPtrWillBeRawPtr<ClearObjectStoreCallback> request
Callback) | 727 static PassRefPtr<ClearObjectStore> create(ScriptState* scriptState, const S
tring& objectStoreName, PassRefPtrWillBeRawPtr<ClearObjectStoreCallback> request
Callback) |
728 { | 728 { |
729 return adoptRef(new ClearObjectStore(scriptState, objectStoreName, reque
stCallback)); | 729 return adoptRef(new ClearObjectStore(scriptState, objectStoreName, reque
stCallback)); |
730 } | 730 } |
731 | 731 |
732 ClearObjectStore(ScriptState* scriptState, const String& objectStoreName, Pa
ssRefPtrWillBeRawPtr<ClearObjectStoreCallback> requestCallback) | 732 ClearObjectStore(ScriptState* scriptState, const String& objectStoreName, Pa
ssRefPtrWillBeRawPtr<ClearObjectStoreCallback> requestCallback) |
733 : ExecutableWithDatabase(scriptState) | 733 : ExecutableWithDatabase(scriptState) |
734 , m_objectStoreName(objectStoreName) | 734 , m_objectStoreName(objectStoreName) |
735 , m_requestCallback(requestCallback) | 735 , m_requestCallback(requestCallback) |
736 { | 736 { |
737 } | 737 } |
738 | 738 |
739 virtual void execute(IDBDatabase* idbDatabase) OVERRIDE | 739 virtual void execute(IDBDatabase* idbDatabase) override |
740 { | 740 { |
741 if (!requestCallback()->isActive()) | 741 if (!requestCallback()->isActive()) |
742 return; | 742 return; |
743 IDBTransaction* idbTransaction = transactionForDatabase(scriptState(), i
dbDatabase, m_objectStoreName, IndexedDBNames::readwrite); | 743 IDBTransaction* idbTransaction = transactionForDatabase(scriptState(), i
dbDatabase, m_objectStoreName, IndexedDBNames::readwrite); |
744 if (!idbTransaction) { | 744 if (!idbTransaction) { |
745 m_requestCallback->sendFailure("Could not get transaction"); | 745 m_requestCallback->sendFailure("Could not get transaction"); |
746 return; | 746 return; |
747 } | 747 } |
748 IDBObjectStore* idbObjectStore = objectStoreForTransaction(idbTransactio
n, m_objectStoreName); | 748 IDBObjectStore* idbObjectStore = objectStoreForTransaction(idbTransactio
n, m_objectStoreName); |
749 if (!idbObjectStore) { | 749 if (!idbObjectStore) { |
750 m_requestCallback->sendFailure("Could not get object store"); | 750 m_requestCallback->sendFailure("Could not get object store"); |
751 return; | 751 return; |
752 } | 752 } |
753 | 753 |
754 TrackExceptionState exceptionState; | 754 TrackExceptionState exceptionState; |
755 idbObjectStore->clear(scriptState(), exceptionState); | 755 idbObjectStore->clear(scriptState(), exceptionState); |
756 ASSERT(!exceptionState.hadException()); | 756 ASSERT(!exceptionState.hadException()); |
757 if (exceptionState.hadException()) { | 757 if (exceptionState.hadException()) { |
758 ExceptionCode ec = exceptionState.code(); | 758 ExceptionCode ec = exceptionState.code(); |
759 m_requestCallback->sendFailure(String::format("Could not clear objec
t store '%s': %d", m_objectStoreName.utf8().data(), ec)); | 759 m_requestCallback->sendFailure(String::format("Could not clear objec
t store '%s': %d", m_objectStoreName.utf8().data(), ec)); |
760 return; | 760 return; |
761 } | 761 } |
762 idbTransaction->addEventListener(EventTypeNames::complete, ClearObjectSt
oreListener::create(m_requestCallback), false); | 762 idbTransaction->addEventListener(EventTypeNames::complete, ClearObjectSt
oreListener::create(m_requestCallback), false); |
763 } | 763 } |
764 | 764 |
765 virtual RequestCallback* requestCallback() OVERRIDE { return m_requestCallba
ck.get(); } | 765 virtual RequestCallback* requestCallback() override { return m_requestCallba
ck.get(); } |
766 private: | 766 private: |
767 const String m_objectStoreName; | 767 const String m_objectStoreName; |
768 RefPtrWillBePersistent<ClearObjectStoreCallback> m_requestCallback; | 768 RefPtrWillBePersistent<ClearObjectStoreCallback> m_requestCallback; |
769 }; | 769 }; |
770 | 770 |
771 void InspectorIndexedDBAgent::clearObjectStore(ErrorString* errorString, const S
tring& securityOrigin, const String& databaseName, const String& objectStoreName
, PassRefPtrWillBeRawPtr<ClearObjectStoreCallback> requestCallback) | 771 void InspectorIndexedDBAgent::clearObjectStore(ErrorString* errorString, const S
tring& securityOrigin, const String& databaseName, const String& objectStoreName
, PassRefPtrWillBeRawPtr<ClearObjectStoreCallback> requestCallback) |
772 { | 772 { |
773 LocalFrame* frame = findFrameWithSecurityOrigin(m_page, securityOrigin); | 773 LocalFrame* frame = findFrameWithSecurityOrigin(m_page, securityOrigin); |
774 Document* document = assertDocument(errorString, frame); | 774 Document* document = assertDocument(errorString, frame); |
775 if (!document) | 775 if (!document) |
776 return; | 776 return; |
777 IDBFactory* idbFactory = assertIDBFactory(errorString, document); | 777 IDBFactory* idbFactory = assertIDBFactory(errorString, document); |
778 if (!idbFactory) | 778 if (!idbFactory) |
779 return; | 779 return; |
780 | 780 |
781 ScriptState* scriptState = ScriptState::forMainWorld(frame); | 781 ScriptState* scriptState = ScriptState::forMainWorld(frame); |
782 ScriptState::Scope scope(scriptState); | 782 ScriptState::Scope scope(scriptState); |
783 RefPtr<ClearObjectStore> clearObjectStore = ClearObjectStore::create(scriptS
tate, objectStoreName, requestCallback); | 783 RefPtr<ClearObjectStore> clearObjectStore = ClearObjectStore::create(scriptS
tate, objectStoreName, requestCallback); |
784 clearObjectStore->start(idbFactory, document->securityOrigin(), databaseName
); | 784 clearObjectStore->start(idbFactory, document->securityOrigin(), databaseName
); |
785 } | 785 } |
786 | 786 |
787 void InspectorIndexedDBAgent::trace(Visitor* visitor) | 787 void InspectorIndexedDBAgent::trace(Visitor* visitor) |
788 { | 788 { |
789 visitor->trace(m_page); | 789 visitor->trace(m_page); |
790 InspectorBaseAgent::trace(visitor); | 790 InspectorBaseAgent::trace(visitor); |
791 } | 791 } |
792 | 792 |
793 } // namespace blink | 793 } // namespace blink |
OLD | NEW |