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 25 matching lines...) Expand all Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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) |
OLD | NEW |