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

Side by Side Diff: Source/WebCore/inspector/InspectorIndexedDBAgent.cpp

Issue 10630009: Merge 120828 - [Chromium] IndexedDB: Don't close database if pending connections are in flight (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1180/
Patch Set: Created 8 years, 6 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) 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 25 matching lines...) Expand all
36 36
37 #include "DOMStringList.h" 37 #include "DOMStringList.h"
38 #include "DOMWindow.h" 38 #include "DOMWindow.h"
39 #include "Document.h" 39 #include "Document.h"
40 #include "ExceptionCode.h" 40 #include "ExceptionCode.h"
41 #include "Frame.h" 41 #include "Frame.h"
42 #include "GroupSettings.h" 42 #include "GroupSettings.h"
43 #include "IDBCallbacks.h" 43 #include "IDBCallbacks.h"
44 #include "IDBCursor.h" 44 #include "IDBCursor.h"
45 #include "IDBDatabaseBackendInterface.h" 45 #include "IDBDatabaseBackendInterface.h"
46 #include "IDBDatabaseCallbacks.h"
46 #include "IDBFactoryBackendInterface.h" 47 #include "IDBFactoryBackendInterface.h"
47 #include "IDBIndexBackendInterface.h" 48 #include "IDBIndexBackendInterface.h"
48 #include "IDBKey.h" 49 #include "IDBKey.h"
49 #include "IDBKeyPath.h" 50 #include "IDBKeyPath.h"
50 #include "IDBKeyRange.h" 51 #include "IDBKeyRange.h"
51 #include "IDBObjectStoreBackendInterface.h" 52 #include "IDBObjectStoreBackendInterface.h"
52 #include "IDBPendingTransactionMonitor.h" 53 #include "IDBPendingTransactionMonitor.h"
53 #include "IDBTransaction.h" 54 #include "IDBTransaction.h"
54 #include "IDBTransactionBackendInterface.h" 55 #include "IDBTransactionBackendInterface.h"
55 #include "InjectedScript.h" 56 #include "InjectedScript.h"
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 virtual void onSuccess(PassRefPtr<IDBCursorBackendInterface>) { } 109 virtual void onSuccess(PassRefPtr<IDBCursorBackendInterface>) { }
109 virtual void onSuccess(PassRefPtr<IDBDatabaseBackendInterface>) { } 110 virtual void onSuccess(PassRefPtr<IDBDatabaseBackendInterface>) { }
110 virtual void onSuccess(PassRefPtr<IDBKey>) { } 111 virtual void onSuccess(PassRefPtr<IDBKey>) { }
111 virtual void onSuccess(PassRefPtr<IDBTransactionBackendInterface>) { } 112 virtual void onSuccess(PassRefPtr<IDBTransactionBackendInterface>) { }
112 virtual void onSuccess(PassRefPtr<SerializedScriptValue>) { } 113 virtual void onSuccess(PassRefPtr<SerializedScriptValue>) { }
113 virtual void onSuccessWithContinuation() { } 114 virtual void onSuccessWithContinuation() { }
114 virtual void onSuccessWithPrefetch(const Vector<RefPtr<IDBKey> >&, const Vec tor<RefPtr<IDBKey> >&, const Vector<RefPtr<SerializedScriptValue> >&) { } 115 virtual void onSuccessWithPrefetch(const Vector<RefPtr<IDBKey> >&, const Vec tor<RefPtr<IDBKey> >&, const Vector<RefPtr<SerializedScriptValue> >&) { }
115 virtual void onBlocked() { } 116 virtual void onBlocked() { }
116 }; 117 };
117 118
119 class InspectorIDBDatabaseCallbacks : public IDBDatabaseCallbacks {
120 public:
121 static PassRefPtr<InspectorIDBDatabaseCallbacks> create()
122 {
123 return adoptRef(new InspectorIDBDatabaseCallbacks());
124 }
125
126 virtual ~InspectorIDBDatabaseCallbacks() { }
127
128 virtual void onVersionChange(const String& version) { }
129 private:
130 InspectorIDBDatabaseCallbacks() { }
131 };
132
133
118 class InspectorIDBTransactionCallback : public IDBTransactionCallbacks { 134 class InspectorIDBTransactionCallback : public IDBTransactionCallbacks {
119 public: 135 public:
120 static PassRefPtr<InspectorIDBTransactionCallback> create() 136 static PassRefPtr<InspectorIDBTransactionCallback> create()
121 { 137 {
122 return adoptRef(new InspectorIDBTransactionCallback()); 138 return adoptRef(new InspectorIDBTransactionCallback());
123 } 139 }
124 140
125 virtual ~InspectorIDBTransactionCallback() { } 141 virtual ~InspectorIDBTransactionCallback() { }
126 142
127 virtual void onAbort() { } 143 virtual void onAbort() { }
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 String m_securityOrigin; 181 String m_securityOrigin;
166 }; 182 };
167 183
168 class ExecutableWithDatabase : public RefCounted<ExecutableWithDatabase> { 184 class ExecutableWithDatabase : public RefCounted<ExecutableWithDatabase> {
169 public: 185 public:
170 virtual ~ExecutableWithDatabase() { }; 186 virtual ~ExecutableWithDatabase() { };
171 void start(IDBFactoryBackendInterface*, SecurityOrigin*, Frame*, const Strin g& databaseName); 187 void start(IDBFactoryBackendInterface*, SecurityOrigin*, Frame*, const Strin g& databaseName);
172 virtual void execute(PassRefPtr<IDBDatabaseBackendInterface>) = 0; 188 virtual void execute(PassRefPtr<IDBDatabaseBackendInterface>) = 0;
173 }; 189 };
174 190
191 class DatabaseConnection {
192 public:
193 DatabaseConnection()
194 : m_idbDatabaseCallbacks(InspectorIDBDatabaseCallbacks::create()) { }
195
196 void connect(PassRefPtr<IDBDatabaseBackendInterface> idbDatabase)
197 {
198 m_idbDatabase = idbDatabase;
199 m_idbDatabase->registerFrontendCallbacks(m_idbDatabaseCallbacks);
200 }
201
202 ~DatabaseConnection()
203 {
204 if (m_idbDatabase)
205 m_idbDatabase->close(m_idbDatabaseCallbacks);
206 }
207
208 private:
209 RefPtr<IDBDatabaseBackendInterface> m_idbDatabase;
210 RefPtr<IDBDatabaseCallbacks> m_idbDatabaseCallbacks;
211 };
212
175 class OpenDatabaseCallback : public InspectorIDBCallback { 213 class OpenDatabaseCallback : public InspectorIDBCallback {
176 public: 214 public:
177 static PassRefPtr<OpenDatabaseCallback> create(ExecutableWithDatabase* execu tableWithDatabase) 215 static PassRefPtr<OpenDatabaseCallback> create(ExecutableWithDatabase* execu tableWithDatabase)
178 { 216 {
179 return adoptRef(new OpenDatabaseCallback(executableWithDatabase)); 217 return adoptRef(new OpenDatabaseCallback(executableWithDatabase));
180 } 218 }
181 219
182 virtual ~OpenDatabaseCallback() { } 220 virtual ~OpenDatabaseCallback() { }
183 221
184 virtual void onSuccess(PassRefPtr<IDBDatabaseBackendInterface> idbDatabase) 222 virtual void onSuccess(PassRefPtr<IDBDatabaseBackendInterface> prpDatabase)
185 { 223 {
224 RefPtr<IDBDatabaseBackendInterface> idbDatabase = prpDatabase;
186 m_executableWithDatabase->execute(idbDatabase); 225 m_executableWithDatabase->execute(idbDatabase);
187 } 226 }
188 227
189 private: 228 private:
190 OpenDatabaseCallback(ExecutableWithDatabase* executableWithDatabase) 229 OpenDatabaseCallback(ExecutableWithDatabase* executableWithDatabase)
191 : m_executableWithDatabase(executableWithDatabase) { } 230 : m_executableWithDatabase(executableWithDatabase) { }
192 RefPtr<ExecutableWithDatabase> m_executableWithDatabase; 231 RefPtr<ExecutableWithDatabase> m_executableWithDatabase;
193 }; 232 };
194 233
195 void ExecutableWithDatabase::start(IDBFactoryBackendInterface* idbFactory, Secur ityOrigin* securityOrigin, Frame* frame, const String& databaseName) 234 void ExecutableWithDatabase::start(IDBFactoryBackendInterface* idbFactory, Secur ityOrigin* securityOrigin, Frame* frame, const String& databaseName)
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
256 295
257 class DatabaseLoaderCallback : public ExecutableWithDatabase { 296 class DatabaseLoaderCallback : public ExecutableWithDatabase {
258 public: 297 public:
259 static PassRefPtr<DatabaseLoaderCallback> create(InspectorIndexedDBAgent::Fr ontendProvider* frontendProvider, int requestId) 298 static PassRefPtr<DatabaseLoaderCallback> create(InspectorIndexedDBAgent::Fr ontendProvider* frontendProvider, int requestId)
260 { 299 {
261 return adoptRef(new DatabaseLoaderCallback(frontendProvider, requestId)) ; 300 return adoptRef(new DatabaseLoaderCallback(frontendProvider, requestId)) ;
262 } 301 }
263 302
264 virtual ~DatabaseLoaderCallback() { } 303 virtual ~DatabaseLoaderCallback() { }
265 304
266 virtual void execute(PassRefPtr<IDBDatabaseBackendInterface> idbDatabase) 305 virtual void execute(PassRefPtr<IDBDatabaseBackendInterface> prpDatabase)
267 { 306 {
307 RefPtr<IDBDatabaseBackendInterface> idbDatabase = prpDatabase;
308 m_connection.connect(idbDatabase);
268 if (!m_frontendProvider->frontend()) 309 if (!m_frontendProvider->frontend())
269 return; 310 return;
270 311
271 RefPtr<TypeBuilder::Array<TypeBuilder::IndexedDB::ObjectStore> > objectS tores = TypeBuilder::Array<TypeBuilder::IndexedDB::ObjectStore>::create(); 312 RefPtr<TypeBuilder::Array<TypeBuilder::IndexedDB::ObjectStore> > objectS tores = TypeBuilder::Array<TypeBuilder::IndexedDB::ObjectStore>::create();
272 313
273 RefPtr<DOMStringList> objectStoreNamesList = idbDatabase->objectStoreNam es(); 314 RefPtr<DOMStringList> objectStoreNamesList = idbDatabase->objectStoreNam es();
274 for (size_t i = 0; i < objectStoreNamesList->length(); ++i) { 315 for (size_t i = 0; i < objectStoreNamesList->length(); ++i) {
275 String objectStoreName = objectStoreNamesList->item(i); 316 String objectStoreName = objectStoreNamesList->item(i);
276 RefPtr<IDBTransactionBackendInterface> idbTransaction = transactionF orDatabase(idbDatabase.get(), objectStoreName); 317 RefPtr<IDBTransactionBackendInterface> idbTransaction = transactionF orDatabase(idbDatabase.get(), objectStoreName);
277 if (!idbTransaction) 318 if (!idbTransaction)
(...skipping 30 matching lines...) Expand all
308 349
309 m_frontendProvider->frontend()->databaseLoaded(m_requestId, result); 350 m_frontendProvider->frontend()->databaseLoaded(m_requestId, result);
310 } 351 }
311 352
312 private: 353 private:
313 DatabaseLoaderCallback(InspectorIndexedDBAgent::FrontendProvider* frontendPr ovider, int requestId) 354 DatabaseLoaderCallback(InspectorIndexedDBAgent::FrontendProvider* frontendPr ovider, int requestId)
314 : m_frontendProvider(frontendProvider) 355 : m_frontendProvider(frontendProvider)
315 , m_requestId(requestId) { } 356 , m_requestId(requestId) { }
316 RefPtr<InspectorIndexedDBAgent::FrontendProvider> m_frontendProvider; 357 RefPtr<InspectorIndexedDBAgent::FrontendProvider> m_frontendProvider;
317 int m_requestId; 358 int m_requestId;
359 DatabaseConnection m_connection;
318 }; 360 };
319 361
320 static PassRefPtr<IDBKey> idbKeyFromInspectorObject(InspectorObject* key) 362 static PassRefPtr<IDBKey> idbKeyFromInspectorObject(InspectorObject* key)
321 { 363 {
322 RefPtr<IDBKey> idbKey; 364 RefPtr<IDBKey> idbKey;
323 365
324 String type; 366 String type;
325 if (!key->getString("type", &type)) 367 if (!key->getString("type", &type))
326 return 0; 368 return 0;
327 369
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
423 IDBKey::KeyArray keyArray = idbKey->array(); 465 IDBKey::KeyArray keyArray = idbKey->array();
424 for (size_t i = 0; i < keyArray.size(); ++i) 466 for (size_t i = 0; i < keyArray.size(); ++i)
425 array->addItem(keyFromIDBKey(keyArray[i].get())); 467 array->addItem(keyFromIDBKey(keyArray[i].get()));
426 key->setArray(array); 468 key->setArray(array);
427 break; 469 break;
428 } 470 }
429 } 471 }
430 return key.release(); 472 return key.release();
431 } 473 }
432 474
475 class DataLoaderCallback;
476
433 class OpenCursorCallback : public InspectorIDBCallback { 477 class OpenCursorCallback : public InspectorIDBCallback {
434 public: 478 public:
435 enum CursorType { 479 enum CursorType {
436 ObjectStoreDataCursor, 480 ObjectStoreDataCursor,
437 IndexDataCursor 481 IndexDataCursor
438 }; 482 };
439 483
440 static PassRefPtr<OpenCursorCallback> create(PassRefPtr<InspectorIndexedDBAg ent::FrontendProvider> frontendProvider, InjectedScript injectedScript, PassRefP tr<IDBTransactionBackendInterface> idbTransaction, CursorType cursorType, int re questId, int skipCount, unsigned pageSize) 484 static PassRefPtr<OpenCursorCallback> create(PassRefPtr<InspectorIndexedDBAg ent::FrontendProvider> frontendProvider, InjectedScript injectedScript, PassRefP tr<DataLoaderCallback> dataLoaderCallback, PassRefPtr<IDBTransactionBackendInter face> idbTransaction, CursorType cursorType, int requestId, int skipCount, unsig ned pageSize)
441 { 485 {
442 return adoptRef(new OpenCursorCallback(frontendProvider, injectedScript, idbTransaction, cursorType, requestId, skipCount, pageSize)); 486 return adoptRef(new OpenCursorCallback(frontendProvider, injectedScript, dataLoaderCallback, idbTransaction, cursorType, requestId, skipCount, pageSize) );
443 } 487 }
444 488
445 virtual ~OpenCursorCallback() { } 489 virtual ~OpenCursorCallback() { }
446 490
447 virtual void onSuccess(PassRefPtr<SerializedScriptValue>) 491 virtual void onSuccess(PassRefPtr<SerializedScriptValue>)
448 { 492 {
449 end(false); 493 end(false);
450 } 494 }
451 495
452 virtual void onSuccess(PassRefPtr<IDBCursorBackendInterface> idbCursor) 496 virtual void onSuccess(PassRefPtr<IDBCursorBackendInterface> idbCursor)
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
484 void next() 528 void next()
485 { 529 {
486 ExceptionCode ec = 0; 530 ExceptionCode ec = 0;
487 m_idbCursor->continueFunction(0, this, ec); 531 m_idbCursor->continueFunction(0, this, ec);
488 m_idbCursor->postSuccessHandlerCallback(); 532 m_idbCursor->postSuccessHandlerCallback();
489 m_idbTransaction->didCompleteTaskEvents(); 533 m_idbTransaction->didCompleteTaskEvents();
490 } 534 }
491 535
492 void end(bool hasMore) 536 void end(bool hasMore)
493 { 537 {
538 m_dataLoaderCallback.clear();
494 if (!m_frontendProvider->frontend()) 539 if (!m_frontendProvider->frontend())
495 return; 540 return;
496 541
497 if (m_idbCursor) 542 if (m_idbCursor)
498 m_idbCursor->postSuccessHandlerCallback(); 543 m_idbCursor->postSuccessHandlerCallback();
499 m_idbTransaction->didCompleteTaskEvents(); 544 m_idbTransaction->didCompleteTaskEvents();
500 545
501 switch (m_cursorType) { 546 switch (m_cursorType) {
502 case ObjectStoreDataCursor: 547 case ObjectStoreDataCursor:
503 m_frontendProvider->frontend()->objectStoreDataLoaded(m_requestId, m _result.release(), hasMore); 548 m_frontendProvider->frontend()->objectStoreDataLoaded(m_requestId, m _result.release(), hasMore);
504 break; 549 break;
505 case IndexDataCursor: 550 case IndexDataCursor:
506 m_frontendProvider->frontend()->indexDataLoaded(m_requestId, m_resul t.release(), hasMore); 551 m_frontendProvider->frontend()->indexDataLoaded(m_requestId, m_resul t.release(), hasMore);
507 break; 552 break;
508 } 553 }
509 } 554 }
510 555
511 private: 556 private:
512 OpenCursorCallback(PassRefPtr<InspectorIndexedDBAgent::FrontendProvider> fro ntendProvider, InjectedScript injectedScript, PassRefPtr<IDBTransactionBackendIn terface> idbTransaction, CursorType cursorType, int requestId, int skipCount, un signed pageSize) 557 OpenCursorCallback(PassRefPtr<InspectorIndexedDBAgent::FrontendProvider> fro ntendProvider, InjectedScript injectedScript, PassRefPtr<DataLoaderCallback> dat aLoaderCallback, PassRefPtr<IDBTransactionBackendInterface> idbTransaction, Curs orType cursorType, int requestId, int skipCount, unsigned pageSize)
513 : m_frontendProvider(frontendProvider) 558 : m_frontendProvider(frontendProvider)
514 , m_injectedScript(injectedScript) 559 , m_injectedScript(injectedScript)
560 , m_dataLoaderCallback(dataLoaderCallback)
515 , m_idbTransaction(idbTransaction) 561 , m_idbTransaction(idbTransaction)
516 , m_cursorType(cursorType) 562 , m_cursorType(cursorType)
517 , m_requestId(requestId) 563 , m_requestId(requestId)
518 , m_skipCount(skipCount) 564 , m_skipCount(skipCount)
519 , m_pageSize(pageSize) 565 , m_pageSize(pageSize)
520 { 566 {
521 m_result = Array<DataEntry>::create(); 567 m_result = Array<DataEntry>::create();
522 m_idbTransaction->setCallbacks(InspectorIDBTransactionCallback::create() .get()); 568 m_idbTransaction->setCallbacks(InspectorIDBTransactionCallback::create() .get());
523 } 569 }
524 RefPtr<InspectorIndexedDBAgent::FrontendProvider> m_frontendProvider; 570 RefPtr<InspectorIndexedDBAgent::FrontendProvider> m_frontendProvider;
525 InjectedScript m_injectedScript; 571 InjectedScript m_injectedScript;
572 RefPtr<DataLoaderCallback> m_dataLoaderCallback;
526 RefPtr<IDBTransactionBackendInterface> m_idbTransaction; 573 RefPtr<IDBTransactionBackendInterface> m_idbTransaction;
527 CursorType m_cursorType; 574 CursorType m_cursorType;
528 int m_requestId; 575 int m_requestId;
529 int m_skipCount; 576 int m_skipCount;
530 unsigned m_pageSize; 577 unsigned m_pageSize;
531 RefPtr<Array<DataEntry> > m_result; 578 RefPtr<Array<DataEntry> > m_result;
532 RefPtr<IDBCursorBackendInterface> m_idbCursor; 579 RefPtr<IDBCursorBackendInterface> m_idbCursor;
533 }; 580 };
534 581
535 class DataLoaderCallback : public ExecutableWithDatabase { 582 class DataLoaderCallback : public ExecutableWithDatabase {
536 public: 583 public:
537 static PassRefPtr<DataLoaderCallback> create(PassRefPtr<InspectorIndexedDBAg ent::FrontendProvider> frontendProvider, int requestId, const InjectedScript& in jectedScript, const String& objectStoreName, const String& indexName, PassRefPtr <IDBKeyRange> idbKeyRange, int skipCount, unsigned pageSize) 584 static PassRefPtr<DataLoaderCallback> create(PassRefPtr<InspectorIndexedDBAg ent::FrontendProvider> frontendProvider, int requestId, const InjectedScript& in jectedScript, const String& objectStoreName, const String& indexName, PassRefPtr <IDBKeyRange> idbKeyRange, int skipCount, unsigned pageSize)
538 { 585 {
539 return adoptRef(new DataLoaderCallback(frontendProvider, requestId, inje ctedScript, objectStoreName, indexName, idbKeyRange, skipCount, pageSize)); 586 return adoptRef(new DataLoaderCallback(frontendProvider, requestId, inje ctedScript, objectStoreName, indexName, idbKeyRange, skipCount, pageSize));
540 } 587 }
541 588
542 virtual ~DataLoaderCallback() { } 589 virtual ~DataLoaderCallback() { }
543 590
544 virtual void execute(PassRefPtr<IDBDatabaseBackendInterface> idbDatabase) 591 virtual void execute(PassRefPtr<IDBDatabaseBackendInterface> prpDatabase)
545 { 592 {
593 RefPtr<IDBDatabaseBackendInterface> idbDatabase = prpDatabase;
594 m_connection.connect(idbDatabase);
546 if (!m_frontendProvider->frontend()) 595 if (!m_frontendProvider->frontend())
547 return; 596 return;
548 597
549 RefPtr<IDBTransactionBackendInterface> idbTransaction = transactionForDa tabase(idbDatabase.get(), m_objectStoreName); 598 RefPtr<IDBTransactionBackendInterface> idbTransaction = transactionForDa tabase(idbDatabase.get(), m_objectStoreName);
550 if (!idbTransaction) 599 if (!idbTransaction)
551 return; 600 return;
552 RefPtr<IDBObjectStoreBackendInterface> idbObjectStore = objectStoreForTr ansaction(idbTransaction.get(), m_objectStoreName); 601 RefPtr<IDBObjectStoreBackendInterface> idbObjectStore = objectStoreForTr ansaction(idbTransaction.get(), m_objectStoreName);
553 if (!idbObjectStore) 602 if (!idbObjectStore)
554 return; 603 return;
555 604
556 if (!m_indexName.isEmpty()) { 605 if (!m_indexName.isEmpty()) {
557 RefPtr<IDBIndexBackendInterface> idbIndex = indexForObjectStore(idbO bjectStore.get(), m_indexName); 606 RefPtr<IDBIndexBackendInterface> idbIndex = indexForObjectStore(idbO bjectStore.get(), m_indexName);
558 if (!idbIndex) 607 if (!idbIndex)
559 return; 608 return;
560 609
561 RefPtr<OpenCursorCallback> openCursorCallback = OpenCursorCallback:: create(m_frontendProvider, m_injectedScript, idbTransaction.get(), OpenCursorCal lback::IndexDataCursor, m_requestId, m_skipCount, m_pageSize); 610 RefPtr<OpenCursorCallback> openCursorCallback = OpenCursorCallback:: create(m_frontendProvider, m_injectedScript, this, idbTransaction.get(), OpenCur sorCallback::IndexDataCursor, m_requestId, m_skipCount, m_pageSize);
562 611
563 ExceptionCode ec = 0; 612 ExceptionCode ec = 0;
564 idbIndex->openCursor(m_idbKeyRange, IDBCursor::NEXT, openCursorCallb ack, idbTransaction.get(), ec); 613 idbIndex->openCursor(m_idbKeyRange, IDBCursor::NEXT, openCursorCallb ack, idbTransaction.get(), ec);
565 } else { 614 } else {
566 RefPtr<OpenCursorCallback> openCursorCallback = OpenCursorCallback:: create(m_frontendProvider, m_injectedScript, idbTransaction.get(), OpenCursorCal lback::ObjectStoreDataCursor, m_requestId, m_skipCount, m_pageSize); 615 RefPtr<OpenCursorCallback> openCursorCallback = OpenCursorCallback:: create(m_frontendProvider, m_injectedScript, this, idbTransaction.get(), OpenCur sorCallback::ObjectStoreDataCursor, m_requestId, m_skipCount, m_pageSize);
567 616
568 ExceptionCode ec = 0; 617 ExceptionCode ec = 0;
569 idbObjectStore->openCursor(m_idbKeyRange, IDBCursor::NEXT, openCurso rCallback, idbTransaction.get(), ec); 618 idbObjectStore->openCursor(m_idbKeyRange, IDBCursor::NEXT, openCurso rCallback, idbTransaction.get(), ec);
570 } 619 }
571 } 620 }
572 621
573 private: 622 private:
574 DataLoaderCallback(PassRefPtr<InspectorIndexedDBAgent::FrontendProvider> fro ntendProvider, int requestId, const InjectedScript& injectedScript, const String & objectStoreName, const String& indexName, PassRefPtr<IDBKeyRange> idbKeyRange, int skipCount, unsigned pageSize) 623 DataLoaderCallback(PassRefPtr<InspectorIndexedDBAgent::FrontendProvider> fro ntendProvider, int requestId, const InjectedScript& injectedScript, const String & objectStoreName, const String& indexName, PassRefPtr<IDBKeyRange> idbKeyRange, int skipCount, unsigned pageSize)
575 : m_frontendProvider(frontendProvider) 624 : m_frontendProvider(frontendProvider)
576 , m_requestId(requestId) 625 , m_requestId(requestId)
577 , m_injectedScript(injectedScript) 626 , m_injectedScript(injectedScript)
578 , m_objectStoreName(objectStoreName) 627 , m_objectStoreName(objectStoreName)
579 , m_indexName(indexName) 628 , m_indexName(indexName)
580 , m_idbKeyRange(idbKeyRange) 629 , m_idbKeyRange(idbKeyRange)
581 , m_skipCount(skipCount) 630 , m_skipCount(skipCount)
582 , m_pageSize(pageSize) { } 631 , m_pageSize(pageSize) { }
583 RefPtr<InspectorIndexedDBAgent::FrontendProvider> m_frontendProvider; 632 RefPtr<InspectorIndexedDBAgent::FrontendProvider> m_frontendProvider;
584 int m_requestId; 633 int m_requestId;
585 InjectedScript m_injectedScript; 634 InjectedScript m_injectedScript;
586 String m_objectStoreName; 635 String m_objectStoreName;
587 String m_indexName; 636 String m_indexName;
588 RefPtr<IDBKeyRange> m_idbKeyRange; 637 RefPtr<IDBKeyRange> m_idbKeyRange;
589 int m_skipCount; 638 int m_skipCount;
590 unsigned m_pageSize; 639 unsigned m_pageSize;
640 DatabaseConnection m_connection;
591 }; 641 };
592 642
593 } // namespace 643 } // namespace
594 644
595 InspectorIndexedDBAgent::InspectorIndexedDBAgent(InstrumentingAgents* instrument ingAgents, InspectorState* state, InjectedScriptManager* injectedScriptManager, InspectorPageAgent* pageAgent) 645 InspectorIndexedDBAgent::InspectorIndexedDBAgent(InstrumentingAgents* instrument ingAgents, InspectorState* state, InjectedScriptManager* injectedScriptManager, InspectorPageAgent* pageAgent)
596 : InspectorBaseAgent<InspectorIndexedDBAgent>("IndexedDB", instrumentingAgen ts, state) 646 : InspectorBaseAgent<InspectorIndexedDBAgent>("IndexedDB", instrumentingAgen ts, state)
597 , m_injectedScriptManager(injectedScriptManager) 647 , m_injectedScriptManager(injectedScriptManager)
598 , m_pageAgent(pageAgent) 648 , m_pageAgent(pageAgent)
599 { 649 {
600 } 650 }
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
722 return; 772 return;
723 } 773 }
724 774
725 RefPtr<DataLoaderCallback> dataLoaderCallback = DataLoaderCallback::create(m _frontendProvider, requestId, injectedScript, objectStoreName, indexName, idbKey Range, skipCount, pageSize); 775 RefPtr<DataLoaderCallback> dataLoaderCallback = DataLoaderCallback::create(m _frontendProvider, requestId, injectedScript, objectStoreName, indexName, idbKey Range, skipCount, pageSize);
726 dataLoaderCallback->start(idbFactory, document->securityOrigin(), document-> frame(), databaseName); 776 dataLoaderCallback->start(idbFactory, document->securityOrigin(), document-> frame(), databaseName);
727 } 777 }
728 778
729 } // namespace WebCore 779 } // namespace WebCore
730 780
731 #endif // ENABLE(INSPECTOR) && ENABLE(INDEXED_DATABASE) 781 #endif // ENABLE(INSPECTOR) && ENABLE(INDEXED_DATABASE)
OLDNEW
« no previous file with comments | « Source/WebCore/Modules/indexeddb/IDBFactoryBackendImpl.cpp ('k') | Source/WebKit/chromium/tests/IDBDatabaseBackendTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698