| 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 |