| 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 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 82 | 82 |
| 83 namespace IndexedDBAgentState { | 83 namespace IndexedDBAgentState { |
| 84 static const char indexedDBAgentEnabled[] = "indexedDBAgentEnabled"; | 84 static const char indexedDBAgentEnabled[] = "indexedDBAgentEnabled"; |
| 85 }; | 85 }; |
| 86 | 86 |
| 87 namespace { | 87 namespace { |
| 88 | 88 |
| 89 class GetDatabaseNamesCallback final : public EventListener { | 89 class GetDatabaseNamesCallback final : public EventListener { |
| 90 WTF_MAKE_NONCOPYABLE(GetDatabaseNamesCallback); | 90 WTF_MAKE_NONCOPYABLE(GetDatabaseNamesCallback); |
| 91 public: | 91 public: |
| 92 static PassRefPtr<GetDatabaseNamesCallback> create(PassRefPtrWillBeRawPtr<Re
questDatabaseNamesCallback> requestCallback, const String& securityOrigin) | 92 static PassRefPtrWillBeRawPtr<GetDatabaseNamesCallback> create(PassRefPtrWil
lBeRawPtr<RequestDatabaseNamesCallback> requestCallback, const String& securityO
rigin) |
| 93 { | 93 { |
| 94 return adoptRef(new GetDatabaseNamesCallback(requestCallback, securityOr
igin)); | 94 return adoptRefWillBeNoop(new GetDatabaseNamesCallback(requestCallback,
securityOrigin)); |
| 95 } | 95 } |
| 96 | 96 |
| 97 ~GetDatabaseNamesCallback() override { } | 97 ~GetDatabaseNamesCallback() override { } |
| 98 | 98 |
| 99 bool operator==(const EventListener& other) override | 99 bool operator==(const EventListener& other) override |
| 100 { | 100 { |
| 101 return this == &other; | 101 return this == &other; |
| 102 } | 102 } |
| 103 | 103 |
| 104 void handleEvent(ExecutionContext*, Event* event) override | 104 void handleEvent(ExecutionContext*, Event* event) override |
| (...skipping 12 matching lines...) Expand all Loading... |
| 117 return; | 117 return; |
| 118 } | 118 } |
| 119 | 119 |
| 120 RefPtrWillBeRawPtr<DOMStringList> databaseNamesList = requestResult->dom
StringList(); | 120 RefPtrWillBeRawPtr<DOMStringList> databaseNamesList = requestResult->dom
StringList(); |
| 121 RefPtr<TypeBuilder::Array<String>> databaseNames = TypeBuilder::Array<St
ring>::create(); | 121 RefPtr<TypeBuilder::Array<String>> databaseNames = TypeBuilder::Array<St
ring>::create(); |
| 122 for (size_t i = 0; i < databaseNamesList->length(); ++i) | 122 for (size_t i = 0; i < databaseNamesList->length(); ++i) |
| 123 databaseNames->addItem(databaseNamesList->anonymousIndexedGetter(i))
; | 123 databaseNames->addItem(databaseNamesList->anonymousIndexedGetter(i))
; |
| 124 m_requestCallback->sendSuccess(databaseNames.release()); | 124 m_requestCallback->sendSuccess(databaseNames.release()); |
| 125 } | 125 } |
| 126 | 126 |
| 127 DEFINE_INLINE_VIRTUAL_TRACE() |
| 128 { |
| 129 visitor->trace(m_requestCallback); |
| 130 EventListener::trace(visitor); |
| 131 } |
| 132 |
| 127 private: | 133 private: |
| 128 GetDatabaseNamesCallback(PassRefPtrWillBeRawPtr<RequestDatabaseNamesCallback
> requestCallback, const String& securityOrigin) | 134 GetDatabaseNamesCallback(PassRefPtrWillBeRawPtr<RequestDatabaseNamesCallback
> requestCallback, const String& securityOrigin) |
| 129 : EventListener(EventListener::CPPEventListenerType) | 135 : EventListener(EventListener::CPPEventListenerType) |
| 130 , m_requestCallback(requestCallback) | 136 , m_requestCallback(requestCallback) |
| 131 , m_securityOrigin(securityOrigin) { } | 137 , m_securityOrigin(securityOrigin) { } |
| 132 RefPtrWillBePersistent<RequestDatabaseNamesCallback> m_requestCallback; | 138 RefPtrWillBeMember<RequestDatabaseNamesCallback> m_requestCallback; |
| 133 String m_securityOrigin; | 139 String m_securityOrigin; |
| 134 }; | 140 }; |
| 135 | 141 |
| 136 class ExecutableWithDatabase : public RefCounted<ExecutableWithDatabase> { | 142 class ExecutableWithDatabase : public RefCounted<ExecutableWithDatabase> { |
| 137 public: | 143 public: |
| 138 ExecutableWithDatabase(ScriptState* scriptState) | 144 ExecutableWithDatabase(ScriptState* scriptState) |
| 139 : m_scriptState(scriptState) { } | 145 : m_scriptState(scriptState) { } |
| 140 virtual ~ExecutableWithDatabase() { } | 146 virtual ~ExecutableWithDatabase() { } |
| 141 void start(IDBFactory*, SecurityOrigin*, const String& databaseName); | 147 void start(IDBFactory*, SecurityOrigin*, const String& databaseName); |
| 142 virtual void execute(IDBDatabase*) = 0; | 148 virtual void execute(IDBDatabase*) = 0; |
| 143 virtual RequestCallback* requestCallback() = 0; | 149 virtual RequestCallback* requestCallback() = 0; |
| 144 ExecutionContext* context() const { return m_scriptState->executionContext()
; } | 150 ExecutionContext* context() const { return m_scriptState->executionContext()
; } |
| 145 ScriptState* scriptState() const { return m_scriptState.get(); } | 151 ScriptState* scriptState() const { return m_scriptState.get(); } |
| 146 private: | 152 private: |
| 147 RefPtr<ScriptState> m_scriptState; | 153 RefPtr<ScriptState> m_scriptState; |
| 148 }; | 154 }; |
| 149 | 155 |
| 150 class OpenDatabaseCallback final : public EventListener { | 156 class OpenDatabaseCallback final : public EventListener { |
| 151 public: | 157 public: |
| 152 static PassRefPtr<OpenDatabaseCallback> create(ExecutableWithDatabase* execu
tableWithDatabase) | 158 static PassRefPtrWillBeRawPtr<OpenDatabaseCallback> create(ExecutableWithDat
abase* executableWithDatabase) |
| 153 { | 159 { |
| 154 return adoptRef(new OpenDatabaseCallback(executableWithDatabase)); | 160 return adoptRefWillBeNoop(new OpenDatabaseCallback(executableWithDatabas
e)); |
| 155 } | 161 } |
| 156 | 162 |
| 157 ~OpenDatabaseCallback() override { } | 163 ~OpenDatabaseCallback() override { } |
| 158 | 164 |
| 159 bool operator==(const EventListener& other) override | 165 bool operator==(const EventListener& other) override |
| 160 { | 166 { |
| 161 return this == &other; | 167 return this == &other; |
| 162 } | 168 } |
| 163 | 169 |
| 164 void handleEvent(ExecutionContext* context, Event* event) override | 170 void handleEvent(ExecutionContext* context, Event* event) override |
| (...skipping 18 matching lines...) Expand all Loading... |
| 183 | 189 |
| 184 private: | 190 private: |
| 185 OpenDatabaseCallback(ExecutableWithDatabase* executableWithDatabase) | 191 OpenDatabaseCallback(ExecutableWithDatabase* executableWithDatabase) |
| 186 : EventListener(EventListener::CPPEventListenerType) | 192 : EventListener(EventListener::CPPEventListenerType) |
| 187 , m_executableWithDatabase(executableWithDatabase) { } | 193 , m_executableWithDatabase(executableWithDatabase) { } |
| 188 RefPtr<ExecutableWithDatabase> m_executableWithDatabase; | 194 RefPtr<ExecutableWithDatabase> m_executableWithDatabase; |
| 189 }; | 195 }; |
| 190 | 196 |
| 191 void ExecutableWithDatabase::start(IDBFactory* idbFactory, SecurityOrigin*, cons
t String& databaseName) | 197 void ExecutableWithDatabase::start(IDBFactory* idbFactory, SecurityOrigin*, cons
t String& databaseName) |
| 192 { | 198 { |
| 193 RefPtr<OpenDatabaseCallback> callback = OpenDatabaseCallback::create(this); | 199 RefPtrWillBeRawPtr<OpenDatabaseCallback> callback = OpenDatabaseCallback::cr
eate(this); |
| 194 TrackExceptionState exceptionState; | 200 TrackExceptionState exceptionState; |
| 195 IDBOpenDBRequest* idbOpenDBRequest = idbFactory->open(scriptState(), databas
eName, exceptionState); | 201 IDBOpenDBRequest* idbOpenDBRequest = idbFactory->open(scriptState(), databas
eName, exceptionState); |
| 196 if (exceptionState.hadException()) { | 202 if (exceptionState.hadException()) { |
| 197 requestCallback()->sendFailure("Could not open database."); | 203 requestCallback()->sendFailure("Could not open database."); |
| 198 return; | 204 return; |
| 199 } | 205 } |
| 200 idbOpenDBRequest->addEventListener(EventTypeNames::success, callback, false)
; | 206 idbOpenDBRequest->addEventListener(EventTypeNames::success, callback, false)
; |
| 201 } | 207 } |
| 202 | 208 |
| 203 static IDBTransaction* transactionForDatabase(ScriptState* scriptState, IDBDatab
ase* idbDatabase, const String& objectStoreName, const String& mode = IndexedDBN
ames::readonly) | 209 static IDBTransaction* transactionForDatabase(ScriptState* scriptState, IDBDatab
ase* idbDatabase, const String& objectStoreName, const String& mode = IndexedDBN
ames::readonly) |
| (...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 382 return nullptr; | 388 return nullptr; |
| 383 IDBKeyRange::UpperBoundType upperBoundType = upperOpen ? IDBKeyRange::UpperB
oundOpen : IDBKeyRange::UpperBoundClosed; | 389 IDBKeyRange::UpperBoundType upperBoundType = upperOpen ? IDBKeyRange::UpperB
oundOpen : IDBKeyRange::UpperBoundClosed; |
| 384 | 390 |
| 385 return IDBKeyRange::create(idbLower, idbUpper, lowerBoundType, upperBoundTyp
e); | 391 return IDBKeyRange::create(idbLower, idbUpper, lowerBoundType, upperBoundTyp
e); |
| 386 } | 392 } |
| 387 | 393 |
| 388 class DataLoader; | 394 class DataLoader; |
| 389 | 395 |
| 390 class OpenCursorCallback final : public EventListener { | 396 class OpenCursorCallback final : public EventListener { |
| 391 public: | 397 public: |
| 392 static PassRefPtr<OpenCursorCallback> create(ScriptState* scriptState, PassR
efPtrWillBeRawPtr<RequestDataCallback> requestCallback, int skipCount, unsigned
pageSize) | 398 static PassRefPtrWillBeRawPtr<OpenCursorCallback> create(ScriptState* script
State, PassRefPtrWillBeRawPtr<RequestDataCallback> requestCallback, int skipCoun
t, unsigned pageSize) |
| 393 { | 399 { |
| 394 return adoptRef(new OpenCursorCallback(scriptState, requestCallback, ski
pCount, pageSize)); | 400 return adoptRefWillBeNoop(new OpenCursorCallback(scriptState, requestCal
lback, skipCount, pageSize)); |
| 395 } | 401 } |
| 396 | 402 |
| 397 ~OpenCursorCallback() override { } | 403 ~OpenCursorCallback() override { } |
| 398 | 404 |
| 399 bool operator==(const EventListener& other) override | 405 bool operator==(const EventListener& other) override |
| 400 { | 406 { |
| 401 return this == &other; | 407 return this == &other; |
| 402 } | 408 } |
| 403 | 409 |
| 404 void handleEvent(ExecutionContext*, Event* event) override | 410 void handleEvent(ExecutionContext*, Event* event) override |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 466 | 472 |
| 467 } | 473 } |
| 468 | 474 |
| 469 void end(bool hasMore) | 475 void end(bool hasMore) |
| 470 { | 476 { |
| 471 if (!m_requestCallback->isActive()) | 477 if (!m_requestCallback->isActive()) |
| 472 return; | 478 return; |
| 473 m_requestCallback->sendSuccess(m_result.release(), hasMore); | 479 m_requestCallback->sendSuccess(m_result.release(), hasMore); |
| 474 } | 480 } |
| 475 | 481 |
| 482 DEFINE_INLINE_VIRTUAL_TRACE() |
| 483 { |
| 484 visitor->trace(m_requestCallback); |
| 485 EventListener::trace(visitor); |
| 486 } |
| 487 |
| 476 private: | 488 private: |
| 477 OpenCursorCallback(ScriptState* scriptState, PassRefPtrWillBeRawPtr<RequestD
ataCallback> requestCallback, int skipCount, unsigned pageSize) | 489 OpenCursorCallback(ScriptState* scriptState, PassRefPtrWillBeRawPtr<RequestD
ataCallback> requestCallback, int skipCount, unsigned pageSize) |
| 478 : EventListener(EventListener::CPPEventListenerType) | 490 : EventListener(EventListener::CPPEventListenerType) |
| 479 , m_scriptState(scriptState) | 491 , m_scriptState(scriptState) |
| 480 , m_requestCallback(requestCallback) | 492 , m_requestCallback(requestCallback) |
| 481 , m_skipCount(skipCount) | 493 , m_skipCount(skipCount) |
| 482 , m_pageSize(pageSize) | 494 , m_pageSize(pageSize) |
| 483 { | 495 { |
| 484 m_result = Array<DataEntry>::create(); | 496 m_result = Array<DataEntry>::create(); |
| 485 } | 497 } |
| 486 | 498 |
| 487 RefPtr<ScriptState> m_scriptState; | 499 RefPtr<ScriptState> m_scriptState; |
| 488 RefPtrWillBePersistent<RequestDataCallback> m_requestCallback; | 500 RefPtrWillBeMember<RequestDataCallback> m_requestCallback; |
| 489 int m_skipCount; | 501 int m_skipCount; |
| 490 unsigned m_pageSize; | 502 unsigned m_pageSize; |
| 491 RefPtr<Array<DataEntry>> m_result; | 503 RefPtr<Array<DataEntry>> m_result; |
| 492 }; | 504 }; |
| 493 | 505 |
| 494 class DataLoader final : public ExecutableWithDatabase { | 506 class DataLoader final : public ExecutableWithDatabase { |
| 495 public: | 507 public: |
| 496 static PassRefPtr<DataLoader> create(ScriptState* scriptState, PassRefPtrWil
lBeRawPtr<RequestDataCallback> requestCallback, const String& objectStoreName, c
onst String& indexName, IDBKeyRange* idbKeyRange, int skipCount, unsigned pageSi
ze) | 508 static PassRefPtr<DataLoader> create(ScriptState* scriptState, PassRefPtrWil
lBeRawPtr<RequestDataCallback> requestCallback, const String& objectStoreName, c
onst String& indexName, IDBKeyRange* idbKeyRange, int skipCount, unsigned pageSi
ze) |
| 497 { | 509 { |
| 498 return adoptRef(new DataLoader(scriptState, requestCallback, objectStore
Name, indexName, idbKeyRange, skipCount, pageSize)); | 510 return adoptRef(new DataLoader(scriptState, requestCallback, objectStore
Name, indexName, idbKeyRange, skipCount, pageSize)); |
| 499 } | 511 } |
| 500 | 512 |
| 501 ~DataLoader() override { } | 513 ~DataLoader() override { } |
| 502 | 514 |
| 503 void execute(IDBDatabase* idbDatabase) override | 515 void execute(IDBDatabase* idbDatabase) override |
| 504 { | 516 { |
| 505 if (!requestCallback()->isActive()) | 517 if (!requestCallback()->isActive()) |
| 506 return; | 518 return; |
| 507 IDBTransaction* idbTransaction = transactionForDatabase(scriptState(), i
dbDatabase, m_objectStoreName); | 519 IDBTransaction* idbTransaction = transactionForDatabase(scriptState(), i
dbDatabase, m_objectStoreName); |
| 508 if (!idbTransaction) { | 520 if (!idbTransaction) { |
| 509 m_requestCallback->sendFailure("Could not get transaction"); | 521 m_requestCallback->sendFailure("Could not get transaction"); |
| 510 return; | 522 return; |
| 511 } | 523 } |
| 512 IDBObjectStore* idbObjectStore = objectStoreForTransaction(idbTransactio
n, m_objectStoreName); | 524 IDBObjectStore* idbObjectStore = objectStoreForTransaction(idbTransactio
n, m_objectStoreName); |
| 513 if (!idbObjectStore) { | 525 if (!idbObjectStore) { |
| 514 m_requestCallback->sendFailure("Could not get object store"); | 526 m_requestCallback->sendFailure("Could not get object store"); |
| 515 return; | 527 return; |
| 516 } | 528 } |
| 517 | 529 |
| 518 RefPtr<OpenCursorCallback> openCursorCallback = OpenCursorCallback::crea
te(scriptState(), m_requestCallback, m_skipCount, m_pageSize); | 530 RefPtrWillBeRawPtr<OpenCursorCallback> openCursorCallback = OpenCursorCa
llback::create(scriptState(), m_requestCallback, m_skipCount, m_pageSize); |
| 519 | 531 |
| 520 IDBRequest* idbRequest; | 532 IDBRequest* idbRequest; |
| 521 if (!m_indexName.isEmpty()) { | 533 if (!m_indexName.isEmpty()) { |
| 522 IDBIndex* idbIndex = indexForObjectStore(idbObjectStore, m_indexName
); | 534 IDBIndex* idbIndex = indexForObjectStore(idbObjectStore, m_indexName
); |
| 523 if (!idbIndex) { | 535 if (!idbIndex) { |
| 524 m_requestCallback->sendFailure("Could not get index"); | 536 m_requestCallback->sendFailure("Could not get index"); |
| 525 return; | 537 return; |
| 526 } | 538 } |
| 527 | 539 |
| 528 idbRequest = idbIndex->openCursor(scriptState(), m_idbKeyRange.get()
, WebIDBCursorDirectionNext); | 540 idbRequest = idbIndex->openCursor(scriptState(), m_idbKeyRange.get()
, WebIDBCursorDirectionNext); |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 680 | 692 |
| 681 ScriptState* scriptState = ScriptState::forMainWorld(frame); | 693 ScriptState* scriptState = ScriptState::forMainWorld(frame); |
| 682 ScriptState::Scope scope(scriptState); | 694 ScriptState::Scope scope(scriptState); |
| 683 RefPtr<DataLoader> dataLoader = DataLoader::create(scriptState, requestCallb
ack, objectStoreName, indexName, idbKeyRange, skipCount, pageSize); | 695 RefPtr<DataLoader> dataLoader = DataLoader::create(scriptState, requestCallb
ack, objectStoreName, indexName, idbKeyRange, skipCount, pageSize); |
| 684 dataLoader->start(idbFactory, document->securityOrigin(), databaseName); | 696 dataLoader->start(idbFactory, document->securityOrigin(), databaseName); |
| 685 } | 697 } |
| 686 | 698 |
| 687 class ClearObjectStoreListener final : public EventListener { | 699 class ClearObjectStoreListener final : public EventListener { |
| 688 WTF_MAKE_NONCOPYABLE(ClearObjectStoreListener); | 700 WTF_MAKE_NONCOPYABLE(ClearObjectStoreListener); |
| 689 public: | 701 public: |
| 690 static PassRefPtr<ClearObjectStoreListener> create(PassRefPtrWillBeRawPtr<Cl
earObjectStoreCallback> requestCallback) | 702 static PassRefPtrWillBeRawPtr<ClearObjectStoreListener> create(PassRefPtrWil
lBeRawPtr<ClearObjectStoreCallback> requestCallback) |
| 691 { | 703 { |
| 692 return adoptRef(new ClearObjectStoreListener(requestCallback)); | 704 return adoptRefWillBeNoop(new ClearObjectStoreListener(requestCallback))
; |
| 693 } | 705 } |
| 694 | 706 |
| 695 ~ClearObjectStoreListener() override { } | 707 ~ClearObjectStoreListener() override { } |
| 696 | 708 |
| 697 bool operator==(const EventListener& other) override | 709 bool operator==(const EventListener& other) override |
| 698 { | 710 { |
| 699 return this == &other; | 711 return this == &other; |
| 700 } | 712 } |
| 701 | 713 |
| 702 void handleEvent(ExecutionContext*, Event* event) override | 714 void handleEvent(ExecutionContext*, Event* event) override |
| 703 { | 715 { |
| 704 if (!m_requestCallback->isActive()) | 716 if (!m_requestCallback->isActive()) |
| 705 return; | 717 return; |
| 706 if (event->type() != EventTypeNames::complete) { | 718 if (event->type() != EventTypeNames::complete) { |
| 707 m_requestCallback->sendFailure("Unexpected event type."); | 719 m_requestCallback->sendFailure("Unexpected event type."); |
| 708 return; | 720 return; |
| 709 } | 721 } |
| 710 | 722 |
| 711 m_requestCallback->sendSuccess(); | 723 m_requestCallback->sendSuccess(); |
| 712 } | 724 } |
| 725 |
| 726 DEFINE_INLINE_VIRTUAL_TRACE() |
| 727 { |
| 728 visitor->trace(m_requestCallback); |
| 729 EventListener::trace(visitor); |
| 730 } |
| 731 |
| 713 private: | 732 private: |
| 714 ClearObjectStoreListener(PassRefPtrWillBeRawPtr<ClearObjectStoreCallback> re
questCallback) | 733 ClearObjectStoreListener(PassRefPtrWillBeRawPtr<ClearObjectStoreCallback> re
questCallback) |
| 715 : EventListener(EventListener::CPPEventListenerType) | 734 : EventListener(EventListener::CPPEventListenerType) |
| 716 , m_requestCallback(requestCallback) | 735 , m_requestCallback(requestCallback) |
| 717 { | 736 { |
| 718 } | 737 } |
| 719 | 738 |
| 720 RefPtrWillBePersistent<ClearObjectStoreCallback> m_requestCallback; | 739 RefPtrWillBeMember<ClearObjectStoreCallback> m_requestCallback; |
| 721 }; | 740 }; |
| 722 | 741 |
| 723 | 742 |
| 724 class ClearObjectStore final : public ExecutableWithDatabase { | 743 class ClearObjectStore final : public ExecutableWithDatabase { |
| 725 public: | 744 public: |
| 726 static PassRefPtr<ClearObjectStore> create(ScriptState* scriptState, const S
tring& objectStoreName, PassRefPtrWillBeRawPtr<ClearObjectStoreCallback> request
Callback) | 745 static PassRefPtr<ClearObjectStore> create(ScriptState* scriptState, const S
tring& objectStoreName, PassRefPtrWillBeRawPtr<ClearObjectStoreCallback> request
Callback) |
| 727 { | 746 { |
| 728 return adoptRef(new ClearObjectStore(scriptState, objectStoreName, reque
stCallback)); | 747 return adoptRef(new ClearObjectStore(scriptState, objectStoreName, reque
stCallback)); |
| 729 } | 748 } |
| 730 | 749 |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 783 clearObjectStore->start(idbFactory, document->securityOrigin(), databaseName
); | 802 clearObjectStore->start(idbFactory, document->securityOrigin(), databaseName
); |
| 784 } | 803 } |
| 785 | 804 |
| 786 DEFINE_TRACE(InspectorIndexedDBAgent) | 805 DEFINE_TRACE(InspectorIndexedDBAgent) |
| 787 { | 806 { |
| 788 visitor->trace(m_page); | 807 visitor->trace(m_page); |
| 789 InspectorBaseAgent::trace(visitor); | 808 InspectorBaseAgent::trace(visitor); |
| 790 } | 809 } |
| 791 | 810 |
| 792 } // namespace blink | 811 } // namespace blink |
| OLD | NEW |