Index: Source/modules/indexeddb/IDBObjectStore.cpp |
diff --git a/Source/modules/indexeddb/IDBObjectStore.cpp b/Source/modules/indexeddb/IDBObjectStore.cpp |
index 8804bcf92144619bbc450f9d21eefac279d5d36c..508fde4a4336cabd889b4fb933603d26884c4c59 100644 |
--- a/Source/modules/indexeddb/IDBObjectStore.cpp |
+++ b/Source/modules/indexeddb/IDBObjectStore.cpp |
@@ -61,10 +61,9 @@ IDBObjectStore::IDBObjectStore(const IDBObjectStoreMetadata& metadata, IDBTransa |
ScriptWrappable::init(this); |
} |
-ScriptValue IDBObjectStore::keyPath(ExecutionContext* context) const |
+ScriptValue IDBObjectStore::keyPath(NewScriptState* scriptState) const |
{ |
- DOMRequestState requestState(toIsolate(context)); |
- return idbAnyToScriptValue(&requestState, IDBAny::create(m_metadata.keyPath)); |
+ return idbAnyToScriptValue(scriptState, IDBAny::create(m_metadata.keyPath)); |
} |
PassRefPtr<DOMStringList> IDBObjectStore::indexNames() const |
@@ -300,9 +299,9 @@ namespace { |
// cursor success handlers are kept alive. |
class IndexPopulator FINAL : public EventListener { |
public: |
- static PassRefPtr<IndexPopulator> create(PassRefPtr<IDBDatabase> database, int64_t transactionId, int64_t objectStoreId, const IDBIndexMetadata& indexMetadata) |
+ static PassRefPtr<IndexPopulator> create(NewScriptState* scriptState, PassRefPtr<IDBDatabase> database, int64_t transactionId, int64_t objectStoreId, const IDBIndexMetadata& indexMetadata) |
{ |
- return adoptRef(new IndexPopulator(database, transactionId, objectStoreId, indexMetadata)); |
+ return adoptRef(new IndexPopulator(scriptState, database, transactionId, objectStoreId, indexMetadata)); |
} |
virtual bool operator==(const EventListener& other) OVERRIDE |
@@ -311,8 +310,9 @@ public: |
} |
private: |
- IndexPopulator(PassRefPtr<IDBDatabase> database, int64_t transactionId, int64_t objectStoreId, const IDBIndexMetadata& indexMetadata) |
+ IndexPopulator(NewScriptState* scriptState, PassRefPtr<IDBDatabase> database, int64_t transactionId, int64_t objectStoreId, const IDBIndexMetadata& indexMetadata) |
: EventListener(CPPEventListenerType) |
+ , m_scriptState(scriptState) |
, m_database(database) |
, m_transactionId(transactionId) |
, m_objectStoreId(objectStoreId) |
@@ -337,7 +337,7 @@ private: |
cursor->continueFunction(static_cast<IDBKey*>(0), static_cast<IDBKey*>(0), ASSERT_NO_EXCEPTION); |
RefPtr<IDBKey> primaryKey = cursor->idbPrimaryKey(); |
- ScriptValue value = cursor->value(context); |
+ ScriptValue value = cursor->value(m_scriptState.get()); |
IDBObjectStore::IndexKeys indexKeys; |
generateIndexKeysForValue(request->requestState(), m_indexMetadata, value, &indexKeys); |
@@ -355,6 +355,7 @@ private: |
} |
+ RefPtr<NewScriptState> m_scriptState; |
RefPtr<IDBDatabase> m_database; |
const int64_t m_transactionId; |
const int64_t m_objectStoreId; |
@@ -362,7 +363,7 @@ private: |
}; |
} |
-PassRefPtr<IDBIndex> IDBObjectStore::createIndex(ExecutionContext* context, const String& name, const IDBKeyPath& keyPath, const Dictionary& options, ExceptionState& exceptionState) |
+PassRefPtr<IDBIndex> IDBObjectStore::createIndex(NewScriptState* scriptState, const String& name, const IDBKeyPath& keyPath, const Dictionary& options, ExceptionState& exceptionState) |
{ |
bool unique = false; |
options.get("unique", unique); |
@@ -370,10 +371,10 @@ PassRefPtr<IDBIndex> IDBObjectStore::createIndex(ExecutionContext* context, cons |
bool multiEntry = false; |
options.get("multiEntry", multiEntry); |
- return createIndex(context, name, keyPath, unique, multiEntry, exceptionState); |
+ return createIndex(scriptState, name, keyPath, unique, multiEntry, exceptionState); |
} |
-PassRefPtr<IDBIndex> IDBObjectStore::createIndex(ExecutionContext* context, const String& name, const IDBKeyPath& keyPath, bool unique, bool multiEntry, ExceptionState& exceptionState) |
+PassRefPtr<IDBIndex> IDBObjectStore::createIndex(NewScriptState* scriptState, const String& name, const IDBKeyPath& keyPath, bool unique, bool multiEntry, ExceptionState& exceptionState) |
{ |
IDB_TRACE("IDBObjectStore::createIndex"); |
if (!m_transaction->isVersionChange()) { |
@@ -425,13 +426,12 @@ PassRefPtr<IDBIndex> IDBObjectStore::createIndex(ExecutionContext* context, cons |
if (exceptionState.hadException()) |
return nullptr; |
- RefPtr<IDBRequest> indexRequest = openCursor(context, static_cast<IDBKeyRange*>(0), blink::WebIDBCursor::Next, WebIDBDatabase::PreemptiveTask); |
+ RefPtr<IDBRequest> indexRequest = openCursor(scriptState->executionContext(), static_cast<IDBKeyRange*>(0), blink::WebIDBCursor::Next, WebIDBDatabase::PreemptiveTask); |
indexRequest->preventPropagation(); |
// This is kept alive by being the success handler of the request, which is in turn kept alive by the owning transaction. |
- RefPtr<IndexPopulator> indexPopulator = IndexPopulator::create(transaction()->db(), m_transaction->id(), id(), metadata); |
+ RefPtr<IndexPopulator> indexPopulator = IndexPopulator::create(scriptState, transaction()->db(), m_transaction->id(), id(), metadata); |
indexRequest->setOnsuccess(indexPopulator); |
- |
return index.release(); |
} |