Chromium Code Reviews| Index: Source/modules/webdatabase/SQLTransaction.cpp |
| diff --git a/Source/modules/webdatabase/SQLTransaction.cpp b/Source/modules/webdatabase/SQLTransaction.cpp |
| index 31a6605d36e5dd9e5d4f14ee97032f92a789056c..1648056862a9613fbcb3f55c1d83c7adfa4c860d 100644 |
| --- a/Source/modules/webdatabase/SQLTransaction.cpp |
| +++ b/Source/modules/webdatabase/SQLTransaction.cpp |
| @@ -269,7 +269,7 @@ void SQLTransaction::performPendingCallback() |
| runStateMachine(); |
| } |
| -void SQLTransaction::executeSQL(const String& sqlStatement, const Vector<SQLValue>& arguments, SQLStatementCallback* callback, SQLStatementErrorCallback* callbackError, ExceptionState& exceptionState) |
| +void SQLTransaction::executeSql(const String& sqlStatement, const Nullable<Vector<ScriptValue>>& arguments, SQLStatementCallback* callback, SQLStatementErrorCallback* callbackError, ExceptionState& exceptionState) |
| { |
| if (!m_executeSqlAllowed) { |
| exceptionState.throwDOMException(InvalidStateError, "SQL execution is disallowed."); |
| @@ -287,8 +287,28 @@ void SQLTransaction::executeSQL(const String& sqlStatement, const Vector<SQLValu |
| else if (m_readOnly) |
| permissions |= DatabaseAuthorizer::ReadOnlyMask; |
| + Vector<SQLValue> sqlArguments; |
| + if (!arguments.isNull()) { |
| + const Vector<ScriptValue>& args = arguments.get(); |
| + for (unsigned i = 0; i < args.size(); ++i) { |
| + v8::Local<v8::Value> arg = args[i].v8Value(); |
|
jsbell
2015/03/03 18:33:14
Can we factor this out into toSQLValue(const Scrip
haraken
2015/03/04 02:00:07
Sounds nice to put the function into IDBBindingUti
bashi
2015/03/04 03:33:02
Is is possible to use toImplArray()? (You need to
|
| + if (arg.IsEmpty() || arg->IsNull()) { |
| + sqlArguments.append(SQLValue()); |
| + } else if (arg->IsNumber()) { |
| + sqlArguments.append(SQLValue(arg->NumberValue())); |
|
bashi
2015/03/04 03:33:02
FYI, NumberValue() is going to be deprecated. Numb
|
| + } else { |
| + TOSTRING_VOID(V8StringResource<>, stringValue, arg); |
| + sqlArguments.append(SQLValue(stringValue)); |
| + } |
| + } |
| + } |
| SQLStatement* statement = SQLStatement::create(m_database.get(), callback, callbackError); |
| - m_backend->executeSQL(statement, sqlStatement, arguments, permissions); |
| + m_backend->executeSQL(statement, sqlStatement, sqlArguments, permissions); |
| +} |
| + |
| +void SQLTransaction::executeSql(const String& sqlStatement, ExceptionState& exceptionState) |
| +{ |
| + executeSql(sqlStatement, Vector<ScriptValue>(), nullptr, nullptr, exceptionState); |
| } |
| bool SQLTransaction::computeNextStateAndCleanupIfNeeded() |