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 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
49 #include "modules/indexeddb/IDBIndex.h" | 49 #include "modules/indexeddb/IDBIndex.h" |
50 #include "modules/indexeddb/IDBKey.h" | 50 #include "modules/indexeddb/IDBKey.h" |
51 #include "modules/indexeddb/IDBKeyPath.h" | 51 #include "modules/indexeddb/IDBKeyPath.h" |
52 #include "modules/indexeddb/IDBKeyRange.h" | 52 #include "modules/indexeddb/IDBKeyRange.h" |
53 #include "modules/indexeddb/IDBMetadata.h" | 53 #include "modules/indexeddb/IDBMetadata.h" |
54 #include "modules/indexeddb/IDBObjectStore.h" | 54 #include "modules/indexeddb/IDBObjectStore.h" |
55 #include "modules/indexeddb/IDBOpenDBRequest.h" | 55 #include "modules/indexeddb/IDBOpenDBRequest.h" |
56 #include "modules/indexeddb/IDBRequest.h" | 56 #include "modules/indexeddb/IDBRequest.h" |
57 #include "modules/indexeddb/IDBTransaction.h" | 57 #include "modules/indexeddb/IDBTransaction.h" |
58 #include "platform/inspector_protocol/Values.h" | 58 #include "platform/inspector_protocol/Values.h" |
59 #include "platform/v8_inspector/public/V8ToProtocolValue.h" | 59 #include "platform/v8_inspector/public/V8InspectorSession.h" |
60 #include "platform/weborigin/SecurityOrigin.h" | 60 #include "platform/weborigin/SecurityOrigin.h" |
61 #include "public/platform/modules/indexeddb/WebIDBCursor.h" | 61 #include "public/platform/modules/indexeddb/WebIDBCursor.h" |
62 #include "public/platform/modules/indexeddb/WebIDBTypes.h" | 62 #include "public/platform/modules/indexeddb/WebIDBTypes.h" |
63 #include "wtf/Vector.h" | 63 #include "wtf/Vector.h" |
64 | 64 |
65 using blink::protocol::Array; | 65 using blink::protocol::Array; |
66 using blink::protocol::IndexedDB::DatabaseWithObjectStores; | 66 using blink::protocol::IndexedDB::DatabaseWithObjectStores; |
67 using blink::protocol::IndexedDB::DataEntry; | 67 using blink::protocol::IndexedDB::DataEntry; |
68 using blink::protocol::IndexedDB::Key; | 68 using blink::protocol::IndexedDB::Key; |
69 using blink::protocol::IndexedDB::KeyPath; | 69 using blink::protocol::IndexedDB::KeyPath; |
70 using blink::protocol::IndexedDB::KeyRange; | 70 using blink::protocol::IndexedDB::KeyRange; |
71 using blink::protocol::IndexedDB::ObjectStore; | 71 using blink::protocol::IndexedDB::ObjectStore; |
72 using blink::protocol::IndexedDB::ObjectStoreIndex; | 72 using blink::protocol::IndexedDB::ObjectStoreIndex; |
73 | 73 |
74 typedef blink::protocol::BackendCallback RequestCallback; | 74 typedef blink::protocol::BackendCallback RequestCallback; |
75 typedef blink::protocol::IndexedDB::Backend::RequestDatabaseNamesCallback Reques
tDatabaseNamesCallback; | 75 typedef blink::protocol::IndexedDB::Backend::RequestDatabaseNamesCallback Reques
tDatabaseNamesCallback; |
76 typedef blink::protocol::IndexedDB::Backend::RequestDatabaseCallback RequestData
baseCallback; | 76 typedef blink::protocol::IndexedDB::Backend::RequestDatabaseCallback RequestData
baseCallback; |
77 typedef blink::protocol::IndexedDB::Backend::RequestDataCallback RequestDataCall
back; | 77 typedef blink::protocol::IndexedDB::Backend::RequestDataCallback RequestDataCall
back; |
78 typedef blink::protocol::IndexedDB::Backend::ClearObjectStoreCallback ClearObjec
tStoreCallback; | 78 typedef blink::protocol::IndexedDB::Backend::ClearObjectStoreCallback ClearObjec
tStoreCallback; |
79 | 79 |
80 namespace blink { | 80 namespace blink { |
81 | 81 |
82 namespace IndexedDBAgentState { | 82 namespace IndexedDBAgentState { |
83 static const char indexedDBAgentEnabled[] = "indexedDBAgentEnabled"; | 83 static const char indexedDBAgentEnabled[] = "indexedDBAgentEnabled"; |
84 }; | 84 }; |
85 | 85 |
86 namespace { | 86 namespace { |
87 | 87 |
| 88 static const char indexedDBObjectGroup[] = "indexeddb"; |
| 89 |
88 class GetDatabaseNamesCallback final : public EventListener { | 90 class GetDatabaseNamesCallback final : public EventListener { |
89 WTF_MAKE_NONCOPYABLE(GetDatabaseNamesCallback); | 91 WTF_MAKE_NONCOPYABLE(GetDatabaseNamesCallback); |
90 public: | 92 public: |
91 static GetDatabaseNamesCallback* create(std::unique_ptr<RequestDatabaseNames
Callback> requestCallback, const String& securityOrigin) | 93 static GetDatabaseNamesCallback* create(std::unique_ptr<RequestDatabaseNames
Callback> requestCallback, const String& securityOrigin) |
92 { | 94 { |
93 return new GetDatabaseNamesCallback(std::move(requestCallback), security
Origin); | 95 return new GetDatabaseNamesCallback(std::move(requestCallback), security
Origin); |
94 } | 96 } |
95 | 97 |
96 ~GetDatabaseNamesCallback() override { } | 98 ~GetDatabaseNamesCallback() override { } |
97 | 99 |
(...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
400 | 402 |
401 IDBKeyRange::LowerBoundType lowerBoundType = keyRange->getLowerOpen() ? IDBK
eyRange::LowerBoundOpen : IDBKeyRange::LowerBoundClosed; | 403 IDBKeyRange::LowerBoundType lowerBoundType = keyRange->getLowerOpen() ? IDBK
eyRange::LowerBoundOpen : IDBKeyRange::LowerBoundClosed; |
402 IDBKeyRange::UpperBoundType upperBoundType = keyRange->getUpperOpen() ? IDBK
eyRange::UpperBoundOpen : IDBKeyRange::UpperBoundClosed; | 404 IDBKeyRange::UpperBoundType upperBoundType = keyRange->getUpperOpen() ? IDBK
eyRange::UpperBoundOpen : IDBKeyRange::UpperBoundClosed; |
403 return IDBKeyRange::create(idbLower, idbUpper, lowerBoundType, upperBoundTyp
e); | 405 return IDBKeyRange::create(idbLower, idbUpper, lowerBoundType, upperBoundTyp
e); |
404 } | 406 } |
405 | 407 |
406 class DataLoader; | 408 class DataLoader; |
407 | 409 |
408 class OpenCursorCallback final : public EventListener { | 410 class OpenCursorCallback final : public EventListener { |
409 public: | 411 public: |
410 static OpenCursorCallback* create(ScriptState* scriptState, std::unique_ptr<
RequestDataCallback> requestCallback, int skipCount, unsigned pageSize) | 412 static OpenCursorCallback* create(V8InspectorSession* v8Session, ScriptState
* scriptState, std::unique_ptr<RequestDataCallback> requestCallback, int skipCou
nt, unsigned pageSize) |
411 { | 413 { |
412 return new OpenCursorCallback(scriptState, std::move(requestCallback), s
kipCount, pageSize); | 414 return new OpenCursorCallback(v8Session, scriptState, std::move(requestC
allback), skipCount, pageSize); |
413 } | 415 } |
414 | 416 |
415 ~OpenCursorCallback() override { } | 417 ~OpenCursorCallback() override { } |
416 | 418 |
417 bool operator==(const EventListener& other) const override | 419 bool operator==(const EventListener& other) const override |
418 { | 420 { |
419 return this == &other; | 421 return this == &other; |
420 } | 422 } |
421 | 423 |
422 void handleEvent(ExecutionContext*, Event* event) override | 424 void handleEvent(ExecutionContext*, Event* event) override |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
457 TrackExceptionState exceptionState; | 459 TrackExceptionState exceptionState; |
458 idbCursor->continueFunction(nullptr, nullptr, exceptionState); | 460 idbCursor->continueFunction(nullptr, nullptr, exceptionState); |
459 if (exceptionState.hadException()) { | 461 if (exceptionState.hadException()) { |
460 m_requestCallback->sendFailure("Could not continue cursor."); | 462 m_requestCallback->sendFailure("Could not continue cursor."); |
461 return; | 463 return; |
462 } | 464 } |
463 | 465 |
464 Document* document = toDocument(m_scriptState->getExecutionContext()); | 466 Document* document = toDocument(m_scriptState->getExecutionContext()); |
465 if (!document) | 467 if (!document) |
466 return; | 468 return; |
467 // FIXME: There are no tests for this error showing when a recursive | |
468 // object is inspected. | |
469 const String16 errorMessage("\"Inspection error. Maximum depth reached?\
""); | |
470 ScriptState* scriptState = m_scriptState.get(); | 469 ScriptState* scriptState = m_scriptState.get(); |
471 ScriptState::Scope scope(scriptState); | 470 ScriptState::Scope scope(scriptState); |
472 std::unique_ptr<protocol::Value> keyJsonValue = toProtocolValue(scriptSt
ate->context(), idbCursor->key(scriptState).v8Value()); | 471 v8::Local<v8::Context> context = scriptState->context(); |
473 std::unique_ptr<protocol::Value> primaryKeyJsonValue = toProtocolValue(s
criptState->context(), idbCursor->primaryKey(scriptState).v8Value()); | |
474 std::unique_ptr<protocol::Value> valueJsonValue = toProtocolValue(script
State->context(), idbCursor->value(scriptState).v8Value()); | |
475 String16 key = keyJsonValue ? keyJsonValue->toJSONString() : errorMessag
e; | |
476 String16 value = valueJsonValue ? valueJsonValue->toJSONString() : error
Message; | |
477 String primaryKey = primaryKeyJsonValue ? primaryKeyJsonValue->toJSONStr
ing() : errorMessage; | |
478 std::unique_ptr<DataEntry> dataEntry = DataEntry::create() | 472 std::unique_ptr<DataEntry> dataEntry = DataEntry::create() |
479 .setKey(key) | 473 .setKey(m_v8Session->wrapObject(context, idbCursor->key(scriptState)
.v8Value(), indexedDBObjectGroup, false)) |
480 .setPrimaryKey(primaryKey) | 474 .setPrimaryKey(m_v8Session->wrapObject(context, idbCursor->primaryKe
y(scriptState).v8Value(), indexedDBObjectGroup, false)) |
481 .setValue(value).build(); | 475 .setValue(m_v8Session->wrapObject(context, idbCursor->value(scriptSt
ate).v8Value(), indexedDBObjectGroup, false)) |
| 476 .build(); |
482 m_result->addItem(std::move(dataEntry)); | 477 m_result->addItem(std::move(dataEntry)); |
483 } | 478 } |
484 | 479 |
485 void end(bool hasMore) | 480 void end(bool hasMore) |
486 { | 481 { |
487 m_requestCallback->sendSuccess(std::move(m_result), hasMore); | 482 m_requestCallback->sendSuccess(std::move(m_result), hasMore); |
488 } | 483 } |
489 | 484 |
490 DEFINE_INLINE_VIRTUAL_TRACE() | 485 DEFINE_INLINE_VIRTUAL_TRACE() |
491 { | 486 { |
492 EventListener::trace(visitor); | 487 EventListener::trace(visitor); |
493 } | 488 } |
494 | 489 |
495 private: | 490 private: |
496 OpenCursorCallback(ScriptState* scriptState, std::unique_ptr<RequestDataCall
back> requestCallback, int skipCount, unsigned pageSize) | 491 OpenCursorCallback(V8InspectorSession* v8Session, ScriptState* scriptState,
std::unique_ptr<RequestDataCallback> requestCallback, int skipCount, unsigned pa
geSize) |
497 : EventListener(EventListener::CPPEventListenerType) | 492 : EventListener(EventListener::CPPEventListenerType) |
| 493 , m_v8Session(v8Session) |
498 , m_scriptState(scriptState) | 494 , m_scriptState(scriptState) |
499 , m_requestCallback(std::move(requestCallback)) | 495 , m_requestCallback(std::move(requestCallback)) |
500 , m_skipCount(skipCount) | 496 , m_skipCount(skipCount) |
501 , m_pageSize(pageSize) | 497 , m_pageSize(pageSize) |
502 { | 498 { |
503 m_result = Array<DataEntry>::create(); | 499 m_result = Array<DataEntry>::create(); |
504 } | 500 } |
505 | 501 |
| 502 V8InspectorSession* m_v8Session; |
506 RefPtr<ScriptState> m_scriptState; | 503 RefPtr<ScriptState> m_scriptState; |
507 std::unique_ptr<RequestDataCallback> m_requestCallback; | 504 std::unique_ptr<RequestDataCallback> m_requestCallback; |
508 int m_skipCount; | 505 int m_skipCount; |
509 unsigned m_pageSize; | 506 unsigned m_pageSize; |
510 std::unique_ptr<Array<DataEntry>> m_result; | 507 std::unique_ptr<Array<DataEntry>> m_result; |
511 }; | 508 }; |
512 | 509 |
513 class DataLoader final : public ExecutableWithDatabase { | 510 class DataLoader final : public ExecutableWithDatabase { |
514 public: | 511 public: |
515 static PassRefPtr<DataLoader> create(ScriptState* scriptState, std::unique_p
tr<RequestDataCallback> requestCallback, const String& objectStoreName, const St
ring& indexName, IDBKeyRange* idbKeyRange, int skipCount, unsigned pageSize) | 512 static PassRefPtr<DataLoader> create(V8InspectorSession* v8Session, ScriptSt
ate* scriptState, std::unique_ptr<RequestDataCallback> requestCallback, const St
ring& objectStoreName, const String& indexName, IDBKeyRange* idbKeyRange, int sk
ipCount, unsigned pageSize) |
516 { | 513 { |
517 return adoptRef(new DataLoader(scriptState, std::move(requestCallback),
objectStoreName, indexName, idbKeyRange, skipCount, pageSize)); | 514 return adoptRef(new DataLoader(v8Session, scriptState, std::move(request
Callback), objectStoreName, indexName, idbKeyRange, skipCount, pageSize)); |
518 } | 515 } |
519 | 516 |
520 ~DataLoader() override { } | 517 ~DataLoader() override { } |
521 | 518 |
522 void execute(IDBDatabase* idbDatabase) override | 519 void execute(IDBDatabase* idbDatabase) override |
523 { | 520 { |
524 IDBTransaction* idbTransaction = transactionForDatabase(getScriptState()
, idbDatabase, m_objectStoreName); | 521 IDBTransaction* idbTransaction = transactionForDatabase(getScriptState()
, idbDatabase, m_objectStoreName); |
525 if (!idbTransaction) { | 522 if (!idbTransaction) { |
526 m_requestCallback->sendFailure("Could not get transaction"); | 523 m_requestCallback->sendFailure("Could not get transaction"); |
527 return; | 524 return; |
528 } | 525 } |
529 IDBObjectStore* idbObjectStore = objectStoreForTransaction(idbTransactio
n, m_objectStoreName); | 526 IDBObjectStore* idbObjectStore = objectStoreForTransaction(idbTransactio
n, m_objectStoreName); |
530 if (!idbObjectStore) { | 527 if (!idbObjectStore) { |
531 m_requestCallback->sendFailure("Could not get object store"); | 528 m_requestCallback->sendFailure("Could not get object store"); |
532 return; | 529 return; |
533 } | 530 } |
534 | 531 |
535 IDBRequest* idbRequest; | 532 IDBRequest* idbRequest; |
536 if (!m_indexName.isEmpty()) { | 533 if (!m_indexName.isEmpty()) { |
537 IDBIndex* idbIndex = indexForObjectStore(idbObjectStore, m_indexName
); | 534 IDBIndex* idbIndex = indexForObjectStore(idbObjectStore, m_indexName
); |
538 if (!idbIndex) { | 535 if (!idbIndex) { |
539 m_requestCallback->sendFailure("Could not get index"); | 536 m_requestCallback->sendFailure("Could not get index"); |
540 return; | 537 return; |
541 } | 538 } |
542 | 539 |
543 idbRequest = idbIndex->openCursor(getScriptState(), m_idbKeyRange.ge
t(), WebIDBCursorDirectionNext); | 540 idbRequest = idbIndex->openCursor(getScriptState(), m_idbKeyRange.ge
t(), WebIDBCursorDirectionNext); |
544 } else { | 541 } else { |
545 idbRequest = idbObjectStore->openCursor(getScriptState(), m_idbKeyRa
nge.get(), WebIDBCursorDirectionNext); | 542 idbRequest = idbObjectStore->openCursor(getScriptState(), m_idbKeyRa
nge.get(), WebIDBCursorDirectionNext); |
546 } | 543 } |
547 OpenCursorCallback* openCursorCallback = OpenCursorCallback::create(getS
criptState(), std::move(m_requestCallback), m_skipCount, m_pageSize); | 544 OpenCursorCallback* openCursorCallback = OpenCursorCallback::create(m_v8
Session, getScriptState(), std::move(m_requestCallback), m_skipCount, m_pageSize
); |
548 idbRequest->addEventListener(EventTypeNames::success, openCursorCallback
, false); | 545 idbRequest->addEventListener(EventTypeNames::success, openCursorCallback
, false); |
549 } | 546 } |
550 | 547 |
551 RequestCallback* getRequestCallback() override { return m_requestCallback.ge
t(); } | 548 RequestCallback* getRequestCallback() override { return m_requestCallback.ge
t(); } |
552 DataLoader(ScriptState* scriptState, std::unique_ptr<RequestDataCallback> re
questCallback, const String& objectStoreName, const String& indexName, IDBKeyRan
ge* idbKeyRange, int skipCount, unsigned pageSize) | 549 DataLoader(V8InspectorSession* v8Session, ScriptState* scriptState, std::uni
que_ptr<RequestDataCallback> requestCallback, const String& objectStoreName, con
st String& indexName, IDBKeyRange* idbKeyRange, int skipCount, unsigned pageSize
) |
553 : ExecutableWithDatabase(scriptState) | 550 : ExecutableWithDatabase(scriptState) |
| 551 , m_v8Session(v8Session) |
554 , m_requestCallback(std::move(requestCallback)) | 552 , m_requestCallback(std::move(requestCallback)) |
555 , m_objectStoreName(objectStoreName) | 553 , m_objectStoreName(objectStoreName) |
556 , m_indexName(indexName) | 554 , m_indexName(indexName) |
557 , m_idbKeyRange(idbKeyRange) | 555 , m_idbKeyRange(idbKeyRange) |
558 , m_skipCount(skipCount) | 556 , m_skipCount(skipCount) |
559 , m_pageSize(pageSize) | 557 , m_pageSize(pageSize) |
560 { | 558 { |
561 } | 559 } |
562 | 560 |
| 561 V8InspectorSession* m_v8Session; |
563 std::unique_ptr<RequestDataCallback> m_requestCallback; | 562 std::unique_ptr<RequestDataCallback> m_requestCallback; |
564 String m_objectStoreName; | 563 String m_objectStoreName; |
565 String m_indexName; | 564 String m_indexName; |
566 Persistent<IDBKeyRange> m_idbKeyRange; | 565 Persistent<IDBKeyRange> m_idbKeyRange; |
567 int m_skipCount; | 566 int m_skipCount; |
568 unsigned m_pageSize; | 567 unsigned m_pageSize; |
569 }; | 568 }; |
570 | 569 |
571 } // namespace | 570 } // namespace |
572 | 571 |
573 // static | 572 // static |
574 InspectorIndexedDBAgent* InspectorIndexedDBAgent::create(InspectedFrames* inspec
tedFrames) | 573 InspectorIndexedDBAgent::InspectorIndexedDBAgent(InspectedFrames* inspectedFrame
s, V8InspectorSession* v8Session) |
575 { | |
576 return new InspectorIndexedDBAgent(inspectedFrames); | |
577 } | |
578 | |
579 InspectorIndexedDBAgent::InspectorIndexedDBAgent(InspectedFrames* inspectedFrame
s) | |
580 : m_inspectedFrames(inspectedFrames) | 574 : m_inspectedFrames(inspectedFrames) |
| 575 , m_v8Session(v8Session) |
581 { | 576 { |
582 } | 577 } |
583 | 578 |
584 InspectorIndexedDBAgent::~InspectorIndexedDBAgent() | 579 InspectorIndexedDBAgent::~InspectorIndexedDBAgent() |
585 { | 580 { |
586 } | 581 } |
587 | 582 |
588 void InspectorIndexedDBAgent::restore() | 583 void InspectorIndexedDBAgent::restore() |
589 { | 584 { |
590 if (m_state->booleanProperty(IndexedDBAgentState::indexedDBAgentEnabled, fal
se)) { | 585 if (m_state->booleanProperty(IndexedDBAgentState::indexedDBAgentEnabled, fal
se)) { |
591 ErrorString error; | 586 ErrorString error; |
592 enable(&error); | 587 enable(&error); |
593 } | 588 } |
594 } | 589 } |
595 | 590 |
| 591 void InspectorIndexedDBAgent::didCommitLoadForLocalFrame(LocalFrame* frame) |
| 592 { |
| 593 if (frame == m_inspectedFrames->root()) |
| 594 m_v8Session->releaseObjectGroup(indexedDBObjectGroup); |
| 595 } |
| 596 |
596 void InspectorIndexedDBAgent::enable(ErrorString*) | 597 void InspectorIndexedDBAgent::enable(ErrorString*) |
597 { | 598 { |
598 m_state->setBoolean(IndexedDBAgentState::indexedDBAgentEnabled, true); | 599 m_state->setBoolean(IndexedDBAgentState::indexedDBAgentEnabled, true); |
599 } | 600 } |
600 | 601 |
601 void InspectorIndexedDBAgent::disable(ErrorString*) | 602 void InspectorIndexedDBAgent::disable(ErrorString*) |
602 { | 603 { |
603 m_state->setBoolean(IndexedDBAgentState::indexedDBAgentEnabled, false); | 604 m_state->setBoolean(IndexedDBAgentState::indexedDBAgentEnabled, false); |
| 605 m_v8Session->releaseObjectGroup(indexedDBObjectGroup); |
604 } | 606 } |
605 | 607 |
606 static Document* assertDocument(ErrorString* errorString, LocalFrame* frame) | 608 static Document* assertDocument(ErrorString* errorString, LocalFrame* frame) |
607 { | 609 { |
608 Document* document = frame ? frame->document() : nullptr; | 610 Document* document = frame ? frame->document() : nullptr; |
609 | 611 |
610 if (!document) | 612 if (!document) |
611 *errorString = "No document for given frame found"; | 613 *errorString = "No document for given frame found"; |
612 | 614 |
613 return document; | 615 return document; |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
690 IDBKeyRange* idbKeyRange = keyRange.isJust() ? idbKeyRangeFromKeyRange(keyRa
nge.fromJust()) : nullptr; | 692 IDBKeyRange* idbKeyRange = keyRange.isJust() ? idbKeyRangeFromKeyRange(keyRa
nge.fromJust()) : nullptr; |
691 if (keyRange.isJust() && !idbKeyRange) { | 693 if (keyRange.isJust() && !idbKeyRange) { |
692 *errorString = "Can not parse key range."; | 694 *errorString = "Can not parse key range."; |
693 return; | 695 return; |
694 } | 696 } |
695 | 697 |
696 ScriptState* scriptState = ScriptState::forMainWorld(frame); | 698 ScriptState* scriptState = ScriptState::forMainWorld(frame); |
697 if (!scriptState) | 699 if (!scriptState) |
698 return; | 700 return; |
699 ScriptState::Scope scope(scriptState); | 701 ScriptState::Scope scope(scriptState); |
700 RefPtr<DataLoader> dataLoader = DataLoader::create(scriptState, std::move(re
questCallback), objectStoreName, indexName, idbKeyRange, skipCount, pageSize); | 702 RefPtr<DataLoader> dataLoader = DataLoader::create(m_v8Session, scriptState,
std::move(requestCallback), objectStoreName, indexName, idbKeyRange, skipCount,
pageSize); |
701 dataLoader->start(idbFactory, document->getSecurityOrigin(), databaseName); | 703 dataLoader->start(idbFactory, document->getSecurityOrigin(), databaseName); |
702 } | 704 } |
703 | 705 |
704 class ClearObjectStoreListener final : public EventListener { | 706 class ClearObjectStoreListener final : public EventListener { |
705 WTF_MAKE_NONCOPYABLE(ClearObjectStoreListener); | 707 WTF_MAKE_NONCOPYABLE(ClearObjectStoreListener); |
706 public: | 708 public: |
707 static ClearObjectStoreListener* create(std::unique_ptr<ClearObjectStoreCall
back> requestCallback) | 709 static ClearObjectStoreListener* create(std::unique_ptr<ClearObjectStoreCall
back> requestCallback) |
708 { | 710 { |
709 return new ClearObjectStoreListener(std::move(requestCallback)); | 711 return new ClearObjectStoreListener(std::move(requestCallback)); |
710 } | 712 } |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
804 clearObjectStore->start(idbFactory, document->getSecurityOrigin(), databaseN
ame); | 806 clearObjectStore->start(idbFactory, document->getSecurityOrigin(), databaseN
ame); |
805 } | 807 } |
806 | 808 |
807 DEFINE_TRACE(InspectorIndexedDBAgent) | 809 DEFINE_TRACE(InspectorIndexedDBAgent) |
808 { | 810 { |
809 visitor->trace(m_inspectedFrames); | 811 visitor->trace(m_inspectedFrames); |
810 InspectorBaseAgent::trace(visitor); | 812 InspectorBaseAgent::trace(visitor); |
811 } | 813 } |
812 | 814 |
813 } // namespace blink | 815 } // namespace blink |
OLD | NEW |