| Index: third_party/WebKit/Source/modules/webdatabase/InspectorDatabaseAgent.cpp
|
| diff --git a/third_party/WebKit/Source/modules/webdatabase/InspectorDatabaseAgent.cpp b/third_party/WebKit/Source/modules/webdatabase/InspectorDatabaseAgent.cpp
|
| index be950bd49c8708fef51ca9e71c8689ed2b21572e..ec1eccdabf79442b2e8ee5a69375d45962f8d5c0 100644
|
| --- a/third_party/WebKit/Source/modules/webdatabase/InspectorDatabaseAgent.cpp
|
| +++ b/third_party/WebKit/Source/modules/webdatabase/InspectorDatabaseAgent.cpp
|
| @@ -58,17 +58,28 @@ static const char databaseAgentEnabled[] = "databaseAgentEnabled";
|
|
|
| namespace {
|
|
|
| -void reportTransactionFailed(ExecuteSQLCallback* requestCallback, SQLError* error)
|
| -{
|
| - OwnPtr<protocol::Database::Error> errorObject = protocol::Database::Error::create()
|
| - .setMessage(error->message())
|
| - .setCode(error->code()).build();
|
| - requestCallback->sendSuccess(Maybe<protocol::Array<String>>(), Maybe<protocol::Array<protocol::Value>>(), errorObject.release());
|
| -}
|
| +class ExecuteSQLCallbackWrapper : public RefCounted<ExecuteSQLCallbackWrapper> {
|
| +public:
|
| + static PassRefPtr<ExecuteSQLCallbackWrapper> create(PassOwnPtr<ExecuteSQLCallback> callback) { return adoptRef(new ExecuteSQLCallbackWrapper(callback)); }
|
| + ~ExecuteSQLCallbackWrapper() { }
|
| + ExecuteSQLCallback* get() { return m_callback.get(); }
|
| +
|
| + void reportTransactionFailed(SQLError* error)
|
| + {
|
| + OwnPtr<protocol::Database::Error> errorObject = protocol::Database::Error::create()
|
| + .setMessage(error->message())
|
| + .setCode(error->code()).build();
|
| + m_callback->sendSuccess(Maybe<protocol::Array<String>>(), Maybe<protocol::Array<protocol::Value>>(), errorObject.release());
|
| + }
|
| +
|
| +private:
|
| + explicit ExecuteSQLCallbackWrapper(PassOwnPtr<ExecuteSQLCallback> callback) : m_callback(callback) { }
|
| + OwnPtr<ExecuteSQLCallback> m_callback;
|
| +};
|
|
|
| class StatementCallback final : public SQLStatementCallback {
|
| public:
|
| - static StatementCallback* create(PassRefPtr<ExecuteSQLCallback> requestCallback)
|
| + static StatementCallback* create(PassRefPtr<ExecuteSQLCallbackWrapper> requestCallback)
|
| {
|
| return new StatementCallback(requestCallback);
|
| }
|
| @@ -99,19 +110,18 @@ public:
|
| case SQLValue::NullValue: values->addItem(protocol::Value::null()); break;
|
| }
|
| }
|
| - m_requestCallback->sendSuccess(columnNames.release(), values.release(), Maybe<protocol::Database::Error>());
|
| + m_requestCallback->get()->sendSuccess(columnNames.release(), values.release(), Maybe<protocol::Database::Error>());
|
| return true;
|
| }
|
|
|
| private:
|
| - StatementCallback(PassRefPtr<ExecuteSQLCallback> requestCallback)
|
| - : m_requestCallback(requestCallback) { }
|
| - RefPtr<ExecuteSQLCallback> m_requestCallback;
|
| + StatementCallback(PassRefPtr<ExecuteSQLCallbackWrapper> requestCallback) : m_requestCallback(requestCallback) { }
|
| + RefPtr<ExecuteSQLCallbackWrapper> m_requestCallback;
|
| };
|
|
|
| class StatementErrorCallback final : public SQLStatementErrorCallback {
|
| public:
|
| - static StatementErrorCallback* create(PassRefPtr<ExecuteSQLCallback> requestCallback)
|
| + static StatementErrorCallback* create(PassRefPtr<ExecuteSQLCallbackWrapper> requestCallback)
|
| {
|
| return new StatementErrorCallback(requestCallback);
|
| }
|
| @@ -125,19 +135,18 @@ public:
|
|
|
| bool handleEvent(SQLTransaction*, SQLError* error) override
|
| {
|
| - reportTransactionFailed(m_requestCallback.get(), error);
|
| + m_requestCallback->reportTransactionFailed(error);
|
| return true;
|
| }
|
|
|
| private:
|
| - StatementErrorCallback(PassRefPtr<ExecuteSQLCallback> requestCallback)
|
| - : m_requestCallback(requestCallback) { }
|
| - RefPtr<ExecuteSQLCallback> m_requestCallback;
|
| + StatementErrorCallback(PassRefPtr<ExecuteSQLCallbackWrapper> requestCallback) : m_requestCallback(requestCallback) { }
|
| + RefPtr<ExecuteSQLCallbackWrapper> m_requestCallback;
|
| };
|
|
|
| class TransactionCallback final : public SQLTransactionCallback {
|
| public:
|
| - static TransactionCallback* create(const String& sqlStatement, PassRefPtr<ExecuteSQLCallback> requestCallback)
|
| + static TransactionCallback* create(const String& sqlStatement, PassRefPtr<ExecuteSQLCallbackWrapper> requestCallback)
|
| {
|
| return new TransactionCallback(sqlStatement, requestCallback);
|
| }
|
| @@ -151,26 +160,23 @@ public:
|
|
|
| bool handleEvent(SQLTransaction* transaction) override
|
| {
|
| - if (!m_requestCallback->isActive())
|
| - return true;
|
| -
|
| Vector<SQLValue> sqlValues;
|
| - SQLStatementCallback* callback = StatementCallback::create(m_requestCallback.get());
|
| - SQLStatementErrorCallback* errorCallback = StatementErrorCallback::create(m_requestCallback.get());
|
| + SQLStatementCallback* callback = StatementCallback::create(m_requestCallback);
|
| + SQLStatementErrorCallback* errorCallback = StatementErrorCallback::create(m_requestCallback);
|
| transaction->executeSQL(m_sqlStatement, sqlValues, callback, errorCallback, IGNORE_EXCEPTION);
|
| return true;
|
| }
|
| private:
|
| - TransactionCallback(const String& sqlStatement, PassRefPtr<ExecuteSQLCallback> requestCallback)
|
| + TransactionCallback(const String& sqlStatement, PassRefPtr<ExecuteSQLCallbackWrapper> requestCallback)
|
| : m_sqlStatement(sqlStatement)
|
| , m_requestCallback(requestCallback) { }
|
| String m_sqlStatement;
|
| - RefPtr<ExecuteSQLCallback> m_requestCallback;
|
| + RefPtr<ExecuteSQLCallbackWrapper> m_requestCallback;
|
| };
|
|
|
| class TransactionErrorCallback final : public SQLTransactionErrorCallback {
|
| public:
|
| - static TransactionErrorCallback* create(PassRefPtr<ExecuteSQLCallback> requestCallback)
|
| + static TransactionErrorCallback* create(PassRefPtr<ExecuteSQLCallbackWrapper> requestCallback)
|
| {
|
| return new TransactionErrorCallback(requestCallback);
|
| }
|
| @@ -184,13 +190,13 @@ public:
|
|
|
| bool handleEvent(SQLError* error) override
|
| {
|
| - reportTransactionFailed(m_requestCallback.get(), error);
|
| + m_requestCallback->reportTransactionFailed(error);
|
| return true;
|
| }
|
| private:
|
| - TransactionErrorCallback(PassRefPtr<ExecuteSQLCallback> requestCallback)
|
| + TransactionErrorCallback(PassRefPtr<ExecuteSQLCallbackWrapper> requestCallback)
|
| : m_requestCallback(requestCallback) { }
|
| - RefPtr<ExecuteSQLCallback> m_requestCallback;
|
| + RefPtr<ExecuteSQLCallbackWrapper> m_requestCallback;
|
| };
|
|
|
| class TransactionSuccessCallback final : public VoidCallback {
|
| @@ -288,9 +294,9 @@ void InspectorDatabaseAgent::getDatabaseTableNames(ErrorString* error, const Str
|
| }
|
| }
|
|
|
| -void InspectorDatabaseAgent::executeSQL(ErrorString*, const String& databaseId, const String& query, PassRefPtr<ExecuteSQLCallback> prpRequestCallback)
|
| +void InspectorDatabaseAgent::executeSQL(ErrorString*, const String& databaseId, const String& query, PassOwnPtr<ExecuteSQLCallback> prpRequestCallback)
|
| {
|
| - RefPtr<ExecuteSQLCallback> requestCallback = prpRequestCallback;
|
| + OwnPtr<ExecuteSQLCallback> requestCallback = prpRequestCallback;
|
|
|
| if (!m_enabled) {
|
| requestCallback->sendFailure("Database agent is not enabled");
|
| @@ -303,8 +309,9 @@ void InspectorDatabaseAgent::executeSQL(ErrorString*, const String& databaseId,
|
| return;
|
| }
|
|
|
| - SQLTransactionCallback* callback = TransactionCallback::create(query, requestCallback.get());
|
| - SQLTransactionErrorCallback* errorCallback = TransactionErrorCallback::create(requestCallback.get());
|
| + RefPtr<ExecuteSQLCallbackWrapper> wrapper = ExecuteSQLCallbackWrapper::create(requestCallback.release());
|
| + SQLTransactionCallback* callback = TransactionCallback::create(query, wrapper);
|
| + SQLTransactionErrorCallback* errorCallback = TransactionErrorCallback::create(wrapper);
|
| VoidCallback* successCallback = TransactionSuccessCallback::create();
|
| database->transaction(callback, errorCallback, successCallback);
|
| }
|
|
|