Commit e3e1649d authored by jsbell@chromium.org's avatar jsbell@chromium.org

Make IDBTransaction ctor take ScriptState instead of ExecutionContext

This looks like a no-op, but forthcoming changes to
IDBPendingTransactionMonitor require this and it makes those patches
much easier to understand.

BUG=390704,411532

Review URL: https://codereview.chromium.org/555633002

git-svn-id: svn://svn.chromium.org/blink/trunk@181782 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 67ee56d0
...@@ -295,7 +295,7 @@ void IDBDatabase::deleteObjectStore(const String& name, ExceptionState& exceptio ...@@ -295,7 +295,7 @@ void IDBDatabase::deleteObjectStore(const String& name, ExceptionState& exceptio
m_metadata.objectStores.remove(objectStoreId); m_metadata.objectStores.remove(objectStoreId);
} }
IDBTransaction* IDBDatabase::transaction(ExecutionContext* context, const Vector<String>& scope, const String& modeString, ExceptionState& exceptionState) IDBTransaction* IDBDatabase::transaction(ScriptState* scriptState, const Vector<String>& scope, const String& modeString, ExceptionState& exceptionState)
{ {
IDB_TRACE("IDBDatabase::transaction"); IDB_TRACE("IDBDatabase::transaction");
Platform::current()->histogramEnumeration("WebCore.IndexedDB.FrontEndAPICalls", IDBTransactionCall, IDBMethodsMax); Platform::current()->histogramEnumeration("WebCore.IndexedDB.FrontEndAPICalls", IDBTransactionCall, IDBMethodsMax);
...@@ -336,14 +336,14 @@ IDBTransaction* IDBDatabase::transaction(ExecutionContext* context, const Vector ...@@ -336,14 +336,14 @@ IDBTransaction* IDBDatabase::transaction(ExecutionContext* context, const Vector
int64_t transactionId = nextTransactionId(); int64_t transactionId = nextTransactionId();
m_backend->createTransaction(transactionId, WebIDBDatabaseCallbacksImpl::create(m_databaseCallbacks).leakPtr(), objectStoreIds, mode); m_backend->createTransaction(transactionId, WebIDBDatabaseCallbacksImpl::create(m_databaseCallbacks).leakPtr(), objectStoreIds, mode);
return IDBTransaction::create(context, transactionId, scope, mode, this); return IDBTransaction::create(scriptState, transactionId, scope, mode, this);
} }
IDBTransaction* IDBDatabase::transaction(ExecutionContext* context, const String& storeName, const String& mode, ExceptionState& exceptionState) IDBTransaction* IDBDatabase::transaction(ScriptState* scriptState, const String& storeName, const String& mode, ExceptionState& exceptionState)
{ {
RefPtrWillBeRawPtr<DOMStringList> storeNames = DOMStringList::create(); RefPtrWillBeRawPtr<DOMStringList> storeNames = DOMStringList::create();
storeNames->append(storeName); storeNames->append(storeName);
return transaction(context, storeNames, mode, exceptionState); return transaction(scriptState, storeNames, mode, exceptionState);
} }
void IDBDatabase::forceClose() void IDBDatabase::forceClose()
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#define IDBDatabase_h #define IDBDatabase_h
#include "bindings/core/v8/Dictionary.h" #include "bindings/core/v8/Dictionary.h"
#include "bindings/core/v8/ScriptState.h"
#include "core/dom/ActiveDOMObject.h" #include "core/dom/ActiveDOMObject.h"
#include "core/dom/DOMStringList.h" #include "core/dom/DOMStringList.h"
#include "modules/EventModules.h" #include "modules/EventModules.h"
...@@ -74,9 +75,9 @@ public: ...@@ -74,9 +75,9 @@ public:
IDBObjectStore* createObjectStore(const String& name, const Dictionary&, ExceptionState&); IDBObjectStore* createObjectStore(const String& name, const Dictionary&, ExceptionState&);
IDBObjectStore* createObjectStore(const String& name, const IDBKeyPath&, bool autoIncrement, ExceptionState&); IDBObjectStore* createObjectStore(const String& name, const IDBKeyPath&, bool autoIncrement, ExceptionState&);
IDBTransaction* transaction(ExecutionContext* context, PassRefPtrWillBeRawPtr<DOMStringList> scope, const String& mode, ExceptionState& exceptionState) { return transaction(context, *scope, mode, exceptionState); } IDBTransaction* transaction(ScriptState* scriptState, PassRefPtrWillBeRawPtr<DOMStringList> scope, const String& mode, ExceptionState& exceptionState) { return transaction(scriptState, *scope, mode, exceptionState); }
IDBTransaction* transaction(ExecutionContext*, const Vector<String>&, const String& mode, ExceptionState&); IDBTransaction* transaction(ScriptState*, const Vector<String>&, const String& mode, ExceptionState&);
IDBTransaction* transaction(ExecutionContext*, const String&, const String& mode, ExceptionState&); IDBTransaction* transaction(ScriptState*, const String&, const String& mode, ExceptionState&);
void deleteObjectStore(const String& name, ExceptionState&); void deleteObjectStore(const String& name, ExceptionState&);
void close(); void close();
......
...@@ -43,9 +43,9 @@ enum IDBTransactionMode { ...@@ -43,9 +43,9 @@ enum IDBTransactionMode {
[RaisesException] IDBObjectStore createObjectStore(DOMString name, optional Dictionary options); [RaisesException] IDBObjectStore createObjectStore(DOMString name, optional Dictionary options);
[RaisesException] void deleteObjectStore(DOMString name); [RaisesException] void deleteObjectStore(DOMString name);
// FIXME: should be union type http://crbug.com/240176 // FIXME: should be union type http://crbug.com/240176
[CallWith=ExecutionContext, RaisesException] IDBTransaction transaction(DOMString storeName, optional IDBTransactionMode mode = "readonly"); [CallWith=ScriptState, RaisesException] IDBTransaction transaction(DOMString storeName, optional IDBTransactionMode mode = "readonly");
[CallWith=ExecutionContext, RaisesException] IDBTransaction transaction(sequence<DOMString> storeNames, optional IDBTransactionMode mode = "readonly"); [CallWith=ScriptState, RaisesException] IDBTransaction transaction(sequence<DOMString> storeNames, optional IDBTransactionMode mode = "readonly");
[CallWith=ExecutionContext, RaisesException] IDBTransaction transaction(DOMStringList storeNames, optional IDBTransactionMode mode = "readonly"); [CallWith=ScriptState, RaisesException] IDBTransaction transaction(DOMStringList storeNames, optional IDBTransactionMode mode = "readonly");
void close(); void close();
attribute EventHandler onabort; attribute EventHandler onabort;
attribute EventHandler onclose; attribute EventHandler onclose;
......
...@@ -31,7 +31,6 @@ ...@@ -31,7 +31,6 @@
#include "core/dom/ExecutionContext.h" #include "core/dom/ExecutionContext.h"
#include "modules/indexeddb/IDBDatabase.h" #include "modules/indexeddb/IDBDatabase.h"
#include "modules/indexeddb/IDBDatabaseCallbacks.h" #include "modules/indexeddb/IDBDatabaseCallbacks.h"
#include "modules/indexeddb/IDBPendingTransactionMonitor.h"
#include "modules/indexeddb/IDBTracing.h" #include "modules/indexeddb/IDBTracing.h"
#include "modules/indexeddb/IDBVersionChangeEvent.h" #include "modules/indexeddb/IDBVersionChangeEvent.h"
...@@ -103,7 +102,7 @@ void IDBOpenDBRequest::onUpgradeNeeded(int64_t oldVersion, PassOwnPtr<WebIDBData ...@@ -103,7 +102,7 @@ void IDBOpenDBRequest::onUpgradeNeeded(int64_t oldVersion, PassOwnPtr<WebIDBData
IDBDatabaseMetadata oldMetadata(metadata); IDBDatabaseMetadata oldMetadata(metadata);
oldMetadata.intVersion = oldVersion; oldMetadata.intVersion = oldVersion;
m_transaction = IDBTransaction::create(executionContext(), m_transactionId, idbDatabase, this, oldMetadata); m_transaction = IDBTransaction::create(scriptState(), m_transactionId, idbDatabase, this, oldMetadata);
setResult(IDBAny::create(idbDatabase)); setResult(IDBAny::create(idbDatabase));
if (m_version == IDBDatabaseMetadata::NoIntVersion) if (m_version == IDBDatabaseMetadata::NoIntVersion)
......
...@@ -133,6 +133,7 @@ protected: ...@@ -133,6 +133,7 @@ protected:
virtual bool shouldEnqueueEvent() const; virtual bool shouldEnqueueEvent() const;
void onSuccessInternal(IDBAny*); void onSuccessInternal(IDBAny*);
void setResult(IDBAny*); void setResult(IDBAny*);
ScriptState* scriptState() { return m_scriptState.get(); }
bool m_contextStopped; bool m_contextStopped;
Member<IDBTransaction> m_transaction; Member<IDBTransaction> m_transaction;
......
...@@ -44,23 +44,23 @@ using blink::WebIDBDatabase; ...@@ -44,23 +44,23 @@ using blink::WebIDBDatabase;
namespace blink { namespace blink {
IDBTransaction* IDBTransaction::create(ExecutionContext* context, int64_t id, const Vector<String>& objectStoreNames, WebIDBTransactionMode mode, IDBDatabase* db) IDBTransaction* IDBTransaction::create(ScriptState* scriptState, int64_t id, const Vector<String>& objectStoreNames, WebIDBTransactionMode mode, IDBDatabase* db)
{ {
IDBOpenDBRequest* openDBRequest = 0; IDBOpenDBRequest* openDBRequest = 0;
IDBTransaction* transaction = adoptRefCountedGarbageCollectedWillBeNoop(new IDBTransaction(context, id, objectStoreNames, mode, db, openDBRequest, IDBDatabaseMetadata())); IDBTransaction* transaction = adoptRefCountedGarbageCollectedWillBeNoop(new IDBTransaction(scriptState, id, objectStoreNames, mode, db, openDBRequest, IDBDatabaseMetadata()));
transaction->suspendIfNeeded(); transaction->suspendIfNeeded();
return transaction; return transaction;
} }
IDBTransaction* IDBTransaction::create(ExecutionContext* context, int64_t id, IDBDatabase* db, IDBOpenDBRequest* openDBRequest, const IDBDatabaseMetadata& previousMetadata) IDBTransaction* IDBTransaction::create(ScriptState* scriptState, int64_t id, IDBDatabase* db, IDBOpenDBRequest* openDBRequest, const IDBDatabaseMetadata& previousMetadata)
{ {
IDBTransaction* transaction = adoptRefCountedGarbageCollectedWillBeNoop(new IDBTransaction(context, id, Vector<String>(), WebIDBTransactionModeVersionChange, db, openDBRequest, previousMetadata)); IDBTransaction* transaction = adoptRefCountedGarbageCollectedWillBeNoop(new IDBTransaction(scriptState, id, Vector<String>(), WebIDBTransactionModeVersionChange, db, openDBRequest, previousMetadata));
transaction->suspendIfNeeded(); transaction->suspendIfNeeded();
return transaction; return transaction;
} }
IDBTransaction::IDBTransaction(ExecutionContext* context, int64_t id, const Vector<String>& objectStoreNames, WebIDBTransactionMode mode, IDBDatabase* db, IDBOpenDBRequest* openDBRequest, const IDBDatabaseMetadata& previousMetadata) IDBTransaction::IDBTransaction(ScriptState* scriptState, int64_t id, const Vector<String>& objectStoreNames, WebIDBTransactionMode mode, IDBDatabase* db, IDBOpenDBRequest* openDBRequest, const IDBDatabaseMetadata& previousMetadata)
: ActiveDOMObject(context) : ActiveDOMObject(scriptState->executionContext())
, m_id(id) , m_id(id)
, m_database(db) , m_database(db)
, m_objectStoreNames(objectStoreNames) , m_objectStoreNames(objectStoreNames)
...@@ -77,7 +77,7 @@ IDBTransaction::IDBTransaction(ExecutionContext* context, int64_t id, const Vect ...@@ -77,7 +77,7 @@ IDBTransaction::IDBTransaction(ExecutionContext* context, int64_t id, const Vect
} }
if (m_state == Active) if (m_state == Active)
IDBPendingTransactionMonitor::from(*context).addNewTransaction(*this); IDBPendingTransactionMonitor::from(*scriptState->executionContext()).addNewTransaction(*this);
m_database->transactionCreated(this); m_database->transactionCreated(this);
} }
......
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
#ifndef IDBTransaction_h #ifndef IDBTransaction_h
#define IDBTransaction_h #define IDBTransaction_h
#include "bindings/core/v8/ScriptState.h"
#include "core/dom/ActiveDOMObject.h" #include "core/dom/ActiveDOMObject.h"
#include "core/dom/DOMError.h" #include "core/dom/DOMError.h"
#include "core/events/EventListener.h" #include "core/events/EventListener.h"
...@@ -56,8 +57,8 @@ class IDBTransaction FINAL ...@@ -56,8 +57,8 @@ class IDBTransaction FINAL
DEFINE_WRAPPERTYPEINFO(); DEFINE_WRAPPERTYPEINFO();
WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(IDBTransaction); WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(IDBTransaction);
public: public:
static IDBTransaction* create(ExecutionContext*, int64_t, const Vector<String>& objectStoreNames, WebIDBTransactionMode, IDBDatabase*); static IDBTransaction* create(ScriptState*, int64_t, const Vector<String>& objectStoreNames, WebIDBTransactionMode, IDBDatabase*);
static IDBTransaction* create(ExecutionContext*, int64_t, IDBDatabase*, IDBOpenDBRequest*, const IDBDatabaseMetadata& previousMetadata); static IDBTransaction* create(ScriptState*, int64_t, IDBDatabase*, IDBOpenDBRequest*, const IDBDatabaseMetadata& previousMetadata);
virtual ~IDBTransaction(); virtual ~IDBTransaction();
virtual void trace(Visitor*) OVERRIDE; virtual void trace(Visitor*) OVERRIDE;
...@@ -106,7 +107,7 @@ public: ...@@ -106,7 +107,7 @@ public:
virtual void stop() OVERRIDE; virtual void stop() OVERRIDE;
private: private:
IDBTransaction(ExecutionContext*, int64_t, const Vector<String>&, WebIDBTransactionMode, IDBDatabase*, IDBOpenDBRequest*, const IDBDatabaseMetadata&); IDBTransaction(ScriptState*, int64_t, const Vector<String>&, WebIDBTransactionMode, IDBDatabase*, IDBOpenDBRequest*, const IDBDatabaseMetadata&);
void enqueueEvent(PassRefPtrWillBeRawPtr<Event>); void enqueueEvent(PassRefPtrWillBeRawPtr<Event>);
......
...@@ -97,7 +97,7 @@ TEST_F(IDBTransactionTest, EnsureLifetime) ...@@ -97,7 +97,7 @@ TEST_F(IDBTransactionTest, EnsureLifetime)
const int64_t transactionId = 1234; const int64_t transactionId = 1234;
const Vector<String> transactionScope; const Vector<String> transactionScope;
Persistent<IDBTransaction> transaction = IDBTransaction::create(executionContext(), transactionId, transactionScope, WebIDBTransactionModeReadOnly, db.get()); Persistent<IDBTransaction> transaction = IDBTransaction::create(scriptState(), transactionId, transactionScope, WebIDBTransactionModeReadOnly, db.get());
PersistentHeapHashSet<WeakMember<IDBTransaction> > set; PersistentHeapHashSet<WeakMember<IDBTransaction> > set;
set.add(transaction); set.add(transaction);
...@@ -127,7 +127,7 @@ TEST_F(IDBTransactionTest, TransactionFinish) ...@@ -127,7 +127,7 @@ TEST_F(IDBTransactionTest, TransactionFinish)
const int64_t transactionId = 1234; const int64_t transactionId = 1234;
const Vector<String> transactionScope; const Vector<String> transactionScope;
Persistent<IDBTransaction> transaction = IDBTransaction::create(executionContext(), transactionId, transactionScope, WebIDBTransactionModeReadOnly, db.get()); Persistent<IDBTransaction> transaction = IDBTransaction::create(scriptState(), transactionId, transactionScope, WebIDBTransactionModeReadOnly, db.get());
PersistentHeapHashSet<WeakMember<IDBTransaction> > set; PersistentHeapHashSet<WeakMember<IDBTransaction> > set;
set.add(transaction); set.add(transaction);
......
...@@ -201,10 +201,10 @@ void ExecutableWithDatabase::start(IDBFactory* idbFactory, SecurityOrigin*, cons ...@@ -201,10 +201,10 @@ void ExecutableWithDatabase::start(IDBFactory* idbFactory, SecurityOrigin*, cons
idbOpenDBRequest->addEventListener(EventTypeNames::success, callback, false); idbOpenDBRequest->addEventListener(EventTypeNames::success, callback, false);
} }
static IDBTransaction* transactionForDatabase(ExecutionContext* executionContext, IDBDatabase* idbDatabase, const String& objectStoreName, const String& mode = IndexedDBNames::readonly) static IDBTransaction* transactionForDatabase(ScriptState* scriptState, IDBDatabase* idbDatabase, const String& objectStoreName, const String& mode = IndexedDBNames::readonly)
{ {
TrackExceptionState exceptionState; TrackExceptionState exceptionState;
IDBTransaction* idbTransaction = idbDatabase->transaction(executionContext, objectStoreName, mode, exceptionState); IDBTransaction* idbTransaction = idbDatabase->transaction(scriptState, objectStoreName, mode, exceptionState);
if (exceptionState.hadException()) if (exceptionState.hadException())
return 0; return 0;
return idbTransaction; return idbTransaction;
...@@ -491,7 +491,7 @@ public: ...@@ -491,7 +491,7 @@ public:
{ {
if (!requestCallback()->isActive()) if (!requestCallback()->isActive())
return; return;
IDBTransaction* idbTransaction = transactionForDatabase(context(), idbDatabase, m_objectStoreName); IDBTransaction* idbTransaction = transactionForDatabase(scriptState(), idbDatabase, m_objectStoreName);
if (!idbTransaction) { if (!idbTransaction) {
m_requestCallback->sendFailure("Could not get transaction"); m_requestCallback->sendFailure("Could not get transaction");
return; return;
...@@ -731,7 +731,7 @@ public: ...@@ -731,7 +731,7 @@ public:
{ {
if (!requestCallback()->isActive()) if (!requestCallback()->isActive())
return; return;
IDBTransaction* idbTransaction = transactionForDatabase(context(), idbDatabase, m_objectStoreName, IndexedDBNames::readwrite); IDBTransaction* idbTransaction = transactionForDatabase(scriptState(), idbDatabase, m_objectStoreName, IndexedDBNames::readwrite);
if (!idbTransaction) { if (!idbTransaction) {
m_requestCallback->sendFailure("Could not get transaction"); m_requestCallback->sendFailure("Could not get transaction");
return; return;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment