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