| 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 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 81 | 81 |
| 82 namespace IndexedDBAgentState { | 82 namespace IndexedDBAgentState { |
| 83 static const char indexedDBAgentEnabled[] = "indexedDBAgentEnabled"; | 83 static const char indexedDBAgentEnabled[] = "indexedDBAgentEnabled"; |
| 84 }; | 84 }; |
| 85 | 85 |
| 86 namespace { | 86 namespace { |
| 87 | 87 |
| 88 class GetDatabaseNamesCallback final : public EventListener { | 88 class GetDatabaseNamesCallback final : public EventListener { |
| 89 WTF_MAKE_NONCOPYABLE(GetDatabaseNamesCallback); | 89 WTF_MAKE_NONCOPYABLE(GetDatabaseNamesCallback); |
| 90 public: | 90 public: |
| 91 static PassRefPtrWillBeRawPtr<GetDatabaseNamesCallback> create(PassRefPtr<Re
questDatabaseNamesCallback> requestCallback, const String& securityOrigin) | 91 static RawPtr<GetDatabaseNamesCallback> create(PassRefPtr<RequestDatabaseNam
esCallback> requestCallback, const String& securityOrigin) |
| 92 { | 92 { |
| 93 return adoptRefWillBeNoop(new GetDatabaseNamesCallback(requestCallback,
securityOrigin)); | 93 return (new GetDatabaseNamesCallback(requestCallback, securityOrigin)); |
| 94 } | 94 } |
| 95 | 95 |
| 96 ~GetDatabaseNamesCallback() override { } | 96 ~GetDatabaseNamesCallback() override { } |
| 97 | 97 |
| 98 bool operator==(const EventListener& other) const override | 98 bool operator==(const EventListener& other) const override |
| 99 { | 99 { |
| 100 return this == &other; | 100 return this == &other; |
| 101 } | 101 } |
| 102 | 102 |
| 103 void handleEvent(ExecutionContext*, Event* event) override | 103 void handleEvent(ExecutionContext*, Event* event) override |
| 104 { | 104 { |
| 105 if (!m_requestCallback->isActive()) | 105 if (!m_requestCallback->isActive()) |
| 106 return; | 106 return; |
| 107 if (event->type() != EventTypeNames::success) { | 107 if (event->type() != EventTypeNames::success) { |
| 108 m_requestCallback->sendFailure("Unexpected event type."); | 108 m_requestCallback->sendFailure("Unexpected event type."); |
| 109 return; | 109 return; |
| 110 } | 110 } |
| 111 | 111 |
| 112 IDBRequest* idbRequest = static_cast<IDBRequest*>(event->target()); | 112 IDBRequest* idbRequest = static_cast<IDBRequest*>(event->target()); |
| 113 IDBAny* requestResult = idbRequest->resultAsAny(); | 113 IDBAny* requestResult = idbRequest->resultAsAny(); |
| 114 if (requestResult->type() != IDBAny::DOMStringListType) { | 114 if (requestResult->type() != IDBAny::DOMStringListType) { |
| 115 m_requestCallback->sendFailure("Unexpected result type."); | 115 m_requestCallback->sendFailure("Unexpected result type."); |
| 116 return; | 116 return; |
| 117 } | 117 } |
| 118 | 118 |
| 119 RefPtrWillBeRawPtr<DOMStringList> databaseNamesList = requestResult->dom
StringList(); | 119 RawPtr<DOMStringList> databaseNamesList = requestResult->domStringList()
; |
| 120 RefPtr<TypeBuilder::Array<String>> databaseNames = TypeBuilder::Array<St
ring>::create(); | 120 RefPtr<TypeBuilder::Array<String>> databaseNames = TypeBuilder::Array<St
ring>::create(); |
| 121 for (size_t i = 0; i < databaseNamesList->length(); ++i) | 121 for (size_t i = 0; i < databaseNamesList->length(); ++i) |
| 122 databaseNames->addItem(databaseNamesList->anonymousIndexedGetter(i))
; | 122 databaseNames->addItem(databaseNamesList->anonymousIndexedGetter(i))
; |
| 123 m_requestCallback->sendSuccess(databaseNames.release()); | 123 m_requestCallback->sendSuccess(databaseNames.release()); |
| 124 } | 124 } |
| 125 | 125 |
| 126 DEFINE_INLINE_VIRTUAL_TRACE() | 126 DEFINE_INLINE_VIRTUAL_TRACE() |
| 127 { | 127 { |
| 128 EventListener::trace(visitor); | 128 EventListener::trace(visitor); |
| 129 } | 129 } |
| (...skipping 16 matching lines...) Expand all Loading... |
| 146 virtual void execute(IDBDatabase*) = 0; | 146 virtual void execute(IDBDatabase*) = 0; |
| 147 virtual RequestCallback* requestCallback() = 0; | 147 virtual RequestCallback* requestCallback() = 0; |
| 148 ExecutionContext* context() const { return m_scriptState->executionContext()
; } | 148 ExecutionContext* context() const { return m_scriptState->executionContext()
; } |
| 149 ScriptState* scriptState() const { return m_scriptState.get(); } | 149 ScriptState* scriptState() const { return m_scriptState.get(); } |
| 150 private: | 150 private: |
| 151 RefPtr<ScriptState> m_scriptState; | 151 RefPtr<ScriptState> m_scriptState; |
| 152 }; | 152 }; |
| 153 | 153 |
| 154 class OpenDatabaseCallback final : public EventListener { | 154 class OpenDatabaseCallback final : public EventListener { |
| 155 public: | 155 public: |
| 156 static PassRefPtrWillBeRawPtr<OpenDatabaseCallback> create(ExecutableWithDat
abase* executableWithDatabase) | 156 static RawPtr<OpenDatabaseCallback> create(ExecutableWithDatabase* executabl
eWithDatabase) |
| 157 { | 157 { |
| 158 return adoptRefWillBeNoop(new OpenDatabaseCallback(executableWithDatabas
e)); | 158 return (new OpenDatabaseCallback(executableWithDatabase)); |
| 159 } | 159 } |
| 160 | 160 |
| 161 ~OpenDatabaseCallback() override { } | 161 ~OpenDatabaseCallback() override { } |
| 162 | 162 |
| 163 bool operator==(const EventListener& other) const override | 163 bool operator==(const EventListener& other) const override |
| 164 { | 164 { |
| 165 return this == &other; | 165 return this == &other; |
| 166 } | 166 } |
| 167 | 167 |
| 168 void handleEvent(ExecutionContext* context, Event* event) override | 168 void handleEvent(ExecutionContext* context, Event* event) override |
| (...skipping 18 matching lines...) Expand all Loading... |
| 187 | 187 |
| 188 private: | 188 private: |
| 189 OpenDatabaseCallback(ExecutableWithDatabase* executableWithDatabase) | 189 OpenDatabaseCallback(ExecutableWithDatabase* executableWithDatabase) |
| 190 : EventListener(EventListener::CPPEventListenerType) | 190 : EventListener(EventListener::CPPEventListenerType) |
| 191 , m_executableWithDatabase(executableWithDatabase) { } | 191 , m_executableWithDatabase(executableWithDatabase) { } |
| 192 RefPtr<ExecutableWithDatabase> m_executableWithDatabase; | 192 RefPtr<ExecutableWithDatabase> m_executableWithDatabase; |
| 193 }; | 193 }; |
| 194 | 194 |
| 195 class UpgradeDatabaseCallback final : public EventListener { | 195 class UpgradeDatabaseCallback final : public EventListener { |
| 196 public: | 196 public: |
| 197 static PassRefPtrWillBeRawPtr<UpgradeDatabaseCallback> create(ExecutableWith
Database* executableWithDatabase) | 197 static RawPtr<UpgradeDatabaseCallback> create(ExecutableWithDatabase* execut
ableWithDatabase) |
| 198 { | 198 { |
| 199 return adoptRefWillBeNoop(new UpgradeDatabaseCallback(executableWithData
base)); | 199 return (new UpgradeDatabaseCallback(executableWithDatabase)); |
| 200 } | 200 } |
| 201 | 201 |
| 202 ~UpgradeDatabaseCallback() override { } | 202 ~UpgradeDatabaseCallback() override { } |
| 203 | 203 |
| 204 bool operator==(const EventListener& other) const override | 204 bool operator==(const EventListener& other) const override |
| 205 { | 205 { |
| 206 return this == &other; | 206 return this == &other; |
| 207 } | 207 } |
| 208 | 208 |
| 209 void handleEvent(ExecutionContext* context, Event* event) override | 209 void handleEvent(ExecutionContext* context, Event* event) override |
| (...skipping 14 matching lines...) Expand all Loading... |
| 224 | 224 |
| 225 private: | 225 private: |
| 226 UpgradeDatabaseCallback(ExecutableWithDatabase* executableWithDatabase) | 226 UpgradeDatabaseCallback(ExecutableWithDatabase* executableWithDatabase) |
| 227 : EventListener(EventListener::CPPEventListenerType) | 227 : EventListener(EventListener::CPPEventListenerType) |
| 228 , m_executableWithDatabase(executableWithDatabase) { } | 228 , m_executableWithDatabase(executableWithDatabase) { } |
| 229 RefPtr<ExecutableWithDatabase> m_executableWithDatabase; | 229 RefPtr<ExecutableWithDatabase> m_executableWithDatabase; |
| 230 }; | 230 }; |
| 231 | 231 |
| 232 void ExecutableWithDatabase::start(IDBFactory* idbFactory, SecurityOrigin*, cons
t String& databaseName) | 232 void ExecutableWithDatabase::start(IDBFactory* idbFactory, SecurityOrigin*, cons
t String& databaseName) |
| 233 { | 233 { |
| 234 RefPtrWillBeRawPtr<OpenDatabaseCallback> openCallback = OpenDatabaseCallback
::create(this); | 234 RawPtr<OpenDatabaseCallback> openCallback = OpenDatabaseCallback::create(thi
s); |
| 235 RefPtrWillBeRawPtr<UpgradeDatabaseCallback> upgradeCallback = UpgradeDatabas
eCallback::create(this); | 235 RawPtr<UpgradeDatabaseCallback> upgradeCallback = UpgradeDatabaseCallback::c
reate(this); |
| 236 TrackExceptionState exceptionState; | 236 TrackExceptionState exceptionState; |
| 237 IDBOpenDBRequest* idbOpenDBRequest = idbFactory->open(scriptState(), databas
eName, exceptionState); | 237 IDBOpenDBRequest* idbOpenDBRequest = idbFactory->open(scriptState(), databas
eName, exceptionState); |
| 238 if (exceptionState.hadException()) { | 238 if (exceptionState.hadException()) { |
| 239 requestCallback()->sendFailure("Could not open database."); | 239 requestCallback()->sendFailure("Could not open database."); |
| 240 return; | 240 return; |
| 241 } | 241 } |
| 242 idbOpenDBRequest->addEventListener(EventTypeNames::upgradeneeded, upgradeCal
lback, false); | 242 idbOpenDBRequest->addEventListener(EventTypeNames::upgradeneeded, upgradeCal
lback, false); |
| 243 idbOpenDBRequest->addEventListener(EventTypeNames::success, openCallback, fa
lse); | 243 idbOpenDBRequest->addEventListener(EventTypeNames::success, openCallback, fa
lse); |
| 244 } | 244 } |
| 245 | 245 |
| (...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 425 return nullptr; | 425 return nullptr; |
| 426 IDBKeyRange::UpperBoundType upperBoundType = upperOpen ? IDBKeyRange::UpperB
oundOpen : IDBKeyRange::UpperBoundClosed; | 426 IDBKeyRange::UpperBoundType upperBoundType = upperOpen ? IDBKeyRange::UpperB
oundOpen : IDBKeyRange::UpperBoundClosed; |
| 427 | 427 |
| 428 return IDBKeyRange::create(idbLower, idbUpper, lowerBoundType, upperBoundTyp
e); | 428 return IDBKeyRange::create(idbLower, idbUpper, lowerBoundType, upperBoundTyp
e); |
| 429 } | 429 } |
| 430 | 430 |
| 431 class DataLoader; | 431 class DataLoader; |
| 432 | 432 |
| 433 class OpenCursorCallback final : public EventListener { | 433 class OpenCursorCallback final : public EventListener { |
| 434 public: | 434 public: |
| 435 static PassRefPtrWillBeRawPtr<OpenCursorCallback> create(ScriptState* script
State, PassRefPtr<RequestDataCallback> requestCallback, int skipCount, unsigned
pageSize) | 435 static RawPtr<OpenCursorCallback> create(ScriptState* scriptState, PassRefPt
r<RequestDataCallback> requestCallback, int skipCount, unsigned pageSize) |
| 436 { | 436 { |
| 437 return adoptRefWillBeNoop(new OpenCursorCallback(scriptState, requestCal
lback, skipCount, pageSize)); | 437 return (new OpenCursorCallback(scriptState, requestCallback, skipCount,
pageSize)); |
| 438 } | 438 } |
| 439 | 439 |
| 440 ~OpenCursorCallback() override { } | 440 ~OpenCursorCallback() override { } |
| 441 | 441 |
| 442 bool operator==(const EventListener& other) const override | 442 bool operator==(const EventListener& other) const override |
| 443 { | 443 { |
| 444 return this == &other; | 444 return this == &other; |
| 445 } | 445 } |
| 446 | 446 |
| 447 void handleEvent(ExecutionContext*, Event* event) override | 447 void handleEvent(ExecutionContext*, Event* event) override |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 554 if (!idbTransaction) { | 554 if (!idbTransaction) { |
| 555 m_requestCallback->sendFailure("Could not get transaction"); | 555 m_requestCallback->sendFailure("Could not get transaction"); |
| 556 return; | 556 return; |
| 557 } | 557 } |
| 558 IDBObjectStore* idbObjectStore = objectStoreForTransaction(idbTransactio
n, m_objectStoreName); | 558 IDBObjectStore* idbObjectStore = objectStoreForTransaction(idbTransactio
n, m_objectStoreName); |
| 559 if (!idbObjectStore) { | 559 if (!idbObjectStore) { |
| 560 m_requestCallback->sendFailure("Could not get object store"); | 560 m_requestCallback->sendFailure("Could not get object store"); |
| 561 return; | 561 return; |
| 562 } | 562 } |
| 563 | 563 |
| 564 RefPtrWillBeRawPtr<OpenCursorCallback> openCursorCallback = OpenCursorCa
llback::create(scriptState(), m_requestCallback, m_skipCount, m_pageSize); | 564 RawPtr<OpenCursorCallback> openCursorCallback = OpenCursorCallback::crea
te(scriptState(), m_requestCallback, m_skipCount, m_pageSize); |
| 565 | 565 |
| 566 IDBRequest* idbRequest; | 566 IDBRequest* idbRequest; |
| 567 if (!m_indexName.isEmpty()) { | 567 if (!m_indexName.isEmpty()) { |
| 568 IDBIndex* idbIndex = indexForObjectStore(idbObjectStore, m_indexName
); | 568 IDBIndex* idbIndex = indexForObjectStore(idbObjectStore, m_indexName
); |
| 569 if (!idbIndex) { | 569 if (!idbIndex) { |
| 570 m_requestCallback->sendFailure("Could not get index"); | 570 m_requestCallback->sendFailure("Could not get index"); |
| 571 return; | 571 return; |
| 572 } | 572 } |
| 573 | 573 |
| 574 idbRequest = idbIndex->openCursor(scriptState(), m_idbKeyRange.get()
, WebIDBCursorDirectionNext); | 574 idbRequest = idbIndex->openCursor(scriptState(), m_idbKeyRange.get()
, WebIDBCursorDirectionNext); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 594 String m_objectStoreName; | 594 String m_objectStoreName; |
| 595 String m_indexName; | 595 String m_indexName; |
| 596 Persistent<IDBKeyRange> m_idbKeyRange; | 596 Persistent<IDBKeyRange> m_idbKeyRange; |
| 597 int m_skipCount; | 597 int m_skipCount; |
| 598 unsigned m_pageSize; | 598 unsigned m_pageSize; |
| 599 }; | 599 }; |
| 600 | 600 |
| 601 } // namespace | 601 } // namespace |
| 602 | 602 |
| 603 // static | 603 // static |
| 604 PassOwnPtrWillBeRawPtr<InspectorIndexedDBAgent> InspectorIndexedDBAgent::create(
InspectedFrames* inspectedFrames) | 604 RawPtr<InspectorIndexedDBAgent> InspectorIndexedDBAgent::create(InspectedFrames*
inspectedFrames) |
| 605 { | 605 { |
| 606 return adoptPtrWillBeNoop(new InspectorIndexedDBAgent(inspectedFrames)); | 606 return (new InspectorIndexedDBAgent(inspectedFrames)); |
| 607 } | 607 } |
| 608 | 608 |
| 609 InspectorIndexedDBAgent::InspectorIndexedDBAgent(InspectedFrames* inspectedFrame
s) | 609 InspectorIndexedDBAgent::InspectorIndexedDBAgent(InspectedFrames* inspectedFrame
s) |
| 610 : InspectorBaseAgent<InspectorIndexedDBAgent, InspectorFrontend::IndexedDB>(
"IndexedDB") | 610 : InspectorBaseAgent<InspectorIndexedDBAgent, InspectorFrontend::IndexedDB>(
"IndexedDB") |
| 611 , m_inspectedFrames(inspectedFrames) | 611 , m_inspectedFrames(inspectedFrames) |
| 612 { | 612 { |
| 613 } | 613 } |
| 614 | 614 |
| 615 InspectorIndexedDBAgent::~InspectorIndexedDBAgent() | 615 InspectorIndexedDBAgent::~InspectorIndexedDBAgent() |
| 616 { | 616 { |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 720 if (!scriptState) | 720 if (!scriptState) |
| 721 return; | 721 return; |
| 722 ScriptState::Scope scope(scriptState); | 722 ScriptState::Scope scope(scriptState); |
| 723 RefPtr<DataLoader> dataLoader = DataLoader::create(scriptState, requestCallb
ack, objectStoreName, indexName, idbKeyRange, skipCount, pageSize); | 723 RefPtr<DataLoader> dataLoader = DataLoader::create(scriptState, requestCallb
ack, objectStoreName, indexName, idbKeyRange, skipCount, pageSize); |
| 724 dataLoader->start(idbFactory, document->securityOrigin(), databaseName); | 724 dataLoader->start(idbFactory, document->securityOrigin(), databaseName); |
| 725 } | 725 } |
| 726 | 726 |
| 727 class ClearObjectStoreListener final : public EventListener { | 727 class ClearObjectStoreListener final : public EventListener { |
| 728 WTF_MAKE_NONCOPYABLE(ClearObjectStoreListener); | 728 WTF_MAKE_NONCOPYABLE(ClearObjectStoreListener); |
| 729 public: | 729 public: |
| 730 static PassRefPtrWillBeRawPtr<ClearObjectStoreListener> create(PassRefPtr<Cl
earObjectStoreCallback> requestCallback) | 730 static RawPtr<ClearObjectStoreListener> create(PassRefPtr<ClearObjectStoreCa
llback> requestCallback) |
| 731 { | 731 { |
| 732 return adoptRefWillBeNoop(new ClearObjectStoreListener(requestCallback))
; | 732 return (new ClearObjectStoreListener(requestCallback)); |
| 733 } | 733 } |
| 734 | 734 |
| 735 ~ClearObjectStoreListener() override { } | 735 ~ClearObjectStoreListener() override { } |
| 736 | 736 |
| 737 bool operator==(const EventListener& other) const override | 737 bool operator==(const EventListener& other) const override |
| 738 { | 738 { |
| 739 return this == &other; | 739 return this == &other; |
| 740 } | 740 } |
| 741 | 741 |
| 742 void handleEvent(ExecutionContext*, Event* event) override | 742 void handleEvent(ExecutionContext*, Event* event) override |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 831 clearObjectStore->start(idbFactory, document->securityOrigin(), databaseName
); | 831 clearObjectStore->start(idbFactory, document->securityOrigin(), databaseName
); |
| 832 } | 832 } |
| 833 | 833 |
| 834 DEFINE_TRACE(InspectorIndexedDBAgent) | 834 DEFINE_TRACE(InspectorIndexedDBAgent) |
| 835 { | 835 { |
| 836 visitor->trace(m_inspectedFrames); | 836 visitor->trace(m_inspectedFrames); |
| 837 InspectorBaseAgent::trace(visitor); | 837 InspectorBaseAgent::trace(visitor); |
| 838 } | 838 } |
| 839 | 839 |
| 840 } // namespace blink | 840 } // namespace blink |
| OLD | NEW |