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

Side by Side Diff: Source/modules/indexeddb/InspectorIndexedDBAgent.cpp

Issue 1238083002: Oilpan: Move the EventListener hierarchy to Oilpan's heap (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 4 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 | Annotate | Revision Log
OLDNEW
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
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
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698