Commit 50adbd25 authored by tkent@chromium.org's avatar tkent@chromium.org

Oilpan: Prepare to move SQLTransactionWrapper and CangeVersionWrapper to Oilpan heap.

They should be GarbageCollectedFinalized because ChangeVersionWrapper has an
OwnPtr member.

BUG=347902

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

git-svn-id: svn://svn.chromium.org/blink/trunk@170001 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 1825ebee
......@@ -38,8 +38,9 @@ class SQLErrorData;
class ChangeVersionWrapper FINAL : public SQLTransactionWrapper {
public:
static PassRefPtr<ChangeVersionWrapper> create(const String& oldVersion, const String& newVersion) { return adoptRef(new ChangeVersionWrapper(oldVersion, newVersion)); }
static PassRefPtrWillBeRawPtr<ChangeVersionWrapper> create(const String& oldVersion, const String& newVersion) { return adoptRefWillBeNoop(new ChangeVersionWrapper(oldVersion, newVersion)); }
virtual void trace(Visitor*) OVERRIDE { }
virtual bool performPreflight(SQLTransactionBackend*) OVERRIDE;
virtual bool performPostflight(SQLTransactionBackend*) OVERRIDE;
virtual SQLErrorData* sqlError() const OVERRIDE { return m_sqlError.get(); }
......
......@@ -112,11 +112,11 @@ PassRefPtrWillBeRawPtr<SQLTransactionBackend> DatabaseBackend::runTransaction(Pa
if (!m_isTransactionQueueEnabled)
return nullptr;
RefPtr<SQLTransactionWrapper> wrapper;
RefPtrWillBeRawPtr<SQLTransactionWrapper> wrapper = nullptr;
if (data)
wrapper = ChangeVersionWrapper::create(data->oldVersion(), data->newVersion());
RefPtrWillBeRawPtr<SQLTransactionBackend> transactionBackend = SQLTransactionBackend::create(this, transaction, wrapper, readOnly);
RefPtrWillBeRawPtr<SQLTransactionBackend> transactionBackend = SQLTransactionBackend::create(this, transaction, wrapper.release(), readOnly);
m_transactionQueue.append(transactionBackend);
if (!m_transactionInProgress)
scheduleTransaction();
......
......@@ -341,13 +341,17 @@
namespace WebCore {
PassRefPtrWillBeRawPtr<SQLTransactionBackend> SQLTransactionBackend::create(DatabaseBackend* db,
PassRefPtrWillBeRawPtr<AbstractSQLTransaction> frontend, PassRefPtr<SQLTransactionWrapper> wrapper, bool readOnly)
PassRefPtrWillBeRawPtr<AbstractSQLTransaction> frontend,
PassRefPtrWillBeRawPtr<SQLTransactionWrapper> wrapper,
bool readOnly)
{
return adoptRefWillBeNoop(new SQLTransactionBackend(db, frontend, wrapper, readOnly));
}
SQLTransactionBackend::SQLTransactionBackend(DatabaseBackend* db,
PassRefPtrWillBeRawPtr<AbstractSQLTransaction> frontend, PassRefPtr<SQLTransactionWrapper> wrapper, bool readOnly)
PassRefPtrWillBeRawPtr<AbstractSQLTransaction> frontend,
PassRefPtrWillBeRawPtr<SQLTransactionWrapper> wrapper,
bool readOnly)
: m_frontend(frontend)
, m_database(db)
, m_wrapper(wrapper)
......@@ -375,6 +379,7 @@ void SQLTransactionBackend::trace(Visitor* visitor)
visitor->trace(m_frontend);
visitor->trace(m_currentStatementBackend);
visitor->trace(m_database);
visitor->trace(m_wrapper);
visitor->trace(m_statementQueue);
}
......
......@@ -48,9 +48,10 @@ class SQLStatementBackend;
class SQLTransactionBackend;
class SQLValue;
class SQLTransactionWrapper : public ThreadSafeRefCounted<SQLTransactionWrapper> {
class SQLTransactionWrapper : public ThreadSafeRefCountedWillBeGarbageCollectedFinalized<SQLTransactionWrapper> {
public:
virtual ~SQLTransactionWrapper() { }
virtual void trace(Visitor*) = 0;
virtual bool performPreflight(SQLTransactionBackend*) = 0;
virtual bool performPostflight(SQLTransactionBackend*) = 0;
virtual SQLErrorData* sqlError() const = 0;
......@@ -60,7 +61,7 @@ public:
class SQLTransactionBackend FINAL : public AbstractSQLTransactionBackend, public SQLTransactionStateMachine<SQLTransactionBackend> {
public:
static PassRefPtrWillBeRawPtr<SQLTransactionBackend> create(DatabaseBackend*,
PassRefPtrWillBeRawPtr<AbstractSQLTransaction>, PassRefPtr<SQLTransactionWrapper>, bool readOnly);
PassRefPtrWillBeRawPtr<AbstractSQLTransaction>, PassRefPtrWillBeRawPtr<SQLTransactionWrapper>, bool readOnly);
virtual ~SQLTransactionBackend();
virtual void trace(Visitor*) OVERRIDE;
......@@ -74,7 +75,7 @@ public:
private:
SQLTransactionBackend(DatabaseBackend*, PassRefPtrWillBeRawPtr<AbstractSQLTransaction>,
PassRefPtr<SQLTransactionWrapper>, bool readOnly);
PassRefPtrWillBeRawPtr<SQLTransactionWrapper>, bool readOnly);
// APIs called from the frontend published via AbstractSQLTransactionBackend:
virtual void requestTransitToState(SQLTransactionState) OVERRIDE;
......@@ -113,7 +114,7 @@ private:
RefPtrWillBeMember<SQLStatementBackend> m_currentStatementBackend;
RefPtrWillBeMember<DatabaseBackend> m_database;
RefPtr<SQLTransactionWrapper> m_wrapper;
RefPtrWillBeMember<SQLTransactionWrapper> m_wrapper;
OwnPtr<SQLErrorData> m_transactionError;
bool m_hasCallback;
......
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