Title: [188089] trunk/Source/WebCore
Revision
188089
Author
ander...@apple.com
Date
2015-08-06 16:35:12 -0700 (Thu, 06 Aug 2015)

Log Message

Rename SQLStatementBackend to SQLStatement
https://bugs.webkit.org/show_bug.cgi?id=147755

Reviewed by Geoffrey Garen.

* CMakeLists.txt:
* Modules/webdatabase/SQLStatement.h: Renamed from Source/WebCore/Modules/webdatabase/SQLStatementBackend.h.
(WebCore::SQLStatement::hasStatementCallback):
(WebCore::SQLStatement::hasStatementErrorCallback):
* Modules/webdatabase/SQLStatementBackend.cpp: Removed.
(WebCore::SQLStatementBackend::SQLStatementBackend): Deleted.
(WebCore::SQLStatementBackend::~SQLStatementBackend): Deleted.
(WebCore::SQLStatementBackend::sqlError): Deleted.
(WebCore::SQLStatementBackend::sqlResultSet): Deleted.
(WebCore::SQLStatementBackend::execute): Deleted.
(WebCore::SQLStatementBackend::performCallback): Deleted.
(WebCore::SQLStatementBackend::setDatabaseDeletedError): Deleted.
(WebCore::SQLStatementBackend::setVersionMismatchedError): Deleted.
(WebCore::SQLStatementBackend::setFailureDueToQuota): Deleted.
(WebCore::SQLStatementBackend::clearFailureDueToQuota): Deleted.
(WebCore::SQLStatementBackend::lastExecutionFailedDueToQuota): Deleted.
* Modules/webdatabase/SQLStatementBackend.h:
(WebCore::SQLStatementBackend::hasStatementCallback): Deleted.
(WebCore::SQLStatementBackend::hasStatementErrorCallback): Deleted.
* Modules/webdatabase/SQLTransaction.cpp:
(WebCore::SQLTransaction::deliverStatementCallback):
(WebCore::SQLTransaction::executeSQL):
* Modules/webdatabase/SQLTransactionBackend.cpp:
(WebCore::SQLTransactionBackend::currentStatement):
(WebCore::SQLTransactionBackend::enqueueStatementBackend):
(WebCore::SQLTransactionBackend::executeSQL):
* Modules/webdatabase/SQLTransactionBackend.h:
* WebCore.vcxproj/WebCore.vcxproj:
* WebCore.vcxproj/WebCore.vcxproj.filters:
* WebCore.xcodeproj/project.pbxproj:

Modified Paths

Added Paths

Removed Paths

Diff

Modified: trunk/Source/WebCore/CMakeLists.txt (188088 => 188089)


--- trunk/Source/WebCore/CMakeLists.txt	2015-08-06 23:31:53 UTC (rev 188088)
+++ trunk/Source/WebCore/CMakeLists.txt	2015-08-06 23:35:12 UTC (rev 188089)
@@ -1013,7 +1013,7 @@
     Modules/webdatabase/SQLException.cpp
     Modules/webdatabase/SQLResultSet.cpp
     Modules/webdatabase/SQLResultSetRowList.cpp
-    Modules/webdatabase/SQLStatementBackend.cpp
+    Modules/webdatabase/SQLStatement.cpp
     Modules/webdatabase/SQLTransaction.cpp
     Modules/webdatabase/SQLTransactionBackend.cpp
     Modules/webdatabase/SQLTransactionClient.cpp

Modified: trunk/Source/WebCore/ChangeLog (188088 => 188089)


--- trunk/Source/WebCore/ChangeLog	2015-08-06 23:31:53 UTC (rev 188088)
+++ trunk/Source/WebCore/ChangeLog	2015-08-06 23:35:12 UTC (rev 188089)
@@ -1,3 +1,41 @@
+2015-08-06  Anders Carlsson  <ander...@apple.com>
+
+        Rename SQLStatementBackend to SQLStatement
+        https://bugs.webkit.org/show_bug.cgi?id=147755
+
+        Reviewed by Geoffrey Garen.
+
+        * CMakeLists.txt:
+        * Modules/webdatabase/SQLStatement.h: Renamed from Source/WebCore/Modules/webdatabase/SQLStatementBackend.h.
+        (WebCore::SQLStatement::hasStatementCallback):
+        (WebCore::SQLStatement::hasStatementErrorCallback):
+        * Modules/webdatabase/SQLStatementBackend.cpp: Removed.
+        (WebCore::SQLStatementBackend::SQLStatementBackend): Deleted.
+        (WebCore::SQLStatementBackend::~SQLStatementBackend): Deleted.
+        (WebCore::SQLStatementBackend::sqlError): Deleted.
+        (WebCore::SQLStatementBackend::sqlResultSet): Deleted.
+        (WebCore::SQLStatementBackend::execute): Deleted.
+        (WebCore::SQLStatementBackend::performCallback): Deleted.
+        (WebCore::SQLStatementBackend::setDatabaseDeletedError): Deleted.
+        (WebCore::SQLStatementBackend::setVersionMismatchedError): Deleted.
+        (WebCore::SQLStatementBackend::setFailureDueToQuota): Deleted.
+        (WebCore::SQLStatementBackend::clearFailureDueToQuota): Deleted.
+        (WebCore::SQLStatementBackend::lastExecutionFailedDueToQuota): Deleted.
+        * Modules/webdatabase/SQLStatementBackend.h:
+        (WebCore::SQLStatementBackend::hasStatementCallback): Deleted.
+        (WebCore::SQLStatementBackend::hasStatementErrorCallback): Deleted.
+        * Modules/webdatabase/SQLTransaction.cpp:
+        (WebCore::SQLTransaction::deliverStatementCallback):
+        (WebCore::SQLTransaction::executeSQL):
+        * Modules/webdatabase/SQLTransactionBackend.cpp:
+        (WebCore::SQLTransactionBackend::currentStatement):
+        (WebCore::SQLTransactionBackend::enqueueStatementBackend):
+        (WebCore::SQLTransactionBackend::executeSQL):
+        * Modules/webdatabase/SQLTransactionBackend.h:
+        * WebCore.vcxproj/WebCore.vcxproj:
+        * WebCore.vcxproj/WebCore.vcxproj.filters:
+        * WebCore.xcodeproj/project.pbxproj:
+
 2015-08-06  Myles C. Maxfield  <mmaxfi...@apple.com>
 
         Make FontDescriptionKey sensitive to FontFeatureSettings

Copied: trunk/Source/WebCore/Modules/webdatabase/SQLStatement.cpp (from rev 188088, trunk/Source/WebCore/Modules/webdatabase/SQLStatementBackend.cpp) (0 => 188089)


--- trunk/Source/WebCore/Modules/webdatabase/SQLStatement.cpp	                        (rev 0)
+++ trunk/Source/WebCore/Modules/webdatabase/SQLStatement.cpp	2015-08-06 23:35:12 UTC (rev 188089)
@@ -0,0 +1,254 @@
+/*
+ * Copyright (C) 2007, 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ * 2.  Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in the
+ *     documentation and/or other materials provided with the distribution.
+ * 3.  Neither the name of Apple Inc. ("Apple") nor the names of
+ *     its contributors may be used to endorse or promote products derived
+ *     from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "config.h"
+#include "SQLStatement.h"
+
+#include "Database.h"
+#include "Logging.h"
+#include "SQLError.h"
+#include "SQLResultSet.h"
+#include "SQLStatementCallback.h"
+#include "SQLStatementErrorCallback.h"
+#include "SQLValue.h"
+#include "SQLiteDatabase.h"
+#include "SQLiteStatement.h"
+#include <wtf/text/CString.h>
+
+
+// The Life-Cycle of a SQLStatement i.e. Who's keeping the SQLStatement alive? 
+// ==========================================================================
+// The RefPtr chain goes something like this:
+//
+//     At birth (in SQLTransactionBackend::executeSQL()):
+//     =================================================
+//     SQLTransactionBackend           // Deque<RefPtr<SQLStatement>> m_statementQueue points to ...
+//     --> SQLStatement         // std::unique_ptr<SQLStatement> m_frontend points to ...
+//         --> SQLStatement
+//
+//     After grabbing the statement for execution (in SQLTransactionBackend::getNextStatement()):
+//     =========================================================================================
+//     SQLTransactionBackend           // RefPtr<SQLStatement> m_currentStatementBackend points to ...
+//     --> SQLStatement         // std::unique_ptr<SQLStatement> m_frontend points to ...
+//         --> SQLStatement
+//
+//     Then we execute the statement in SQLTransactionBackend::runCurrentStatementAndGetNextState().
+//     And we callback to the script in SQLTransaction::deliverStatementCallback() if
+//     necessary.
+//     - Inside SQLTransaction::deliverStatementCallback(), we operate on a raw SQLStatement*.
+//       This pointer is valid because it is owned by SQLTransactionBackend's
+//       SQLTransactionBackend::m_currentStatementBackend.
+//
+//     After we're done executing the statement (in SQLTransactionBackend::getNextStatement()):
+//     =======================================================================================
+//     When we're done executing, we'll grab the next statement. But before we
+//     do that, getNextStatement() nullify SQLTransactionBackend::m_currentStatementBackend.
+//     This will trigger the deletion of the SQLStatement and SQLStatement.
+//
+//     Note: unlike with SQLTransaction, there is no JS representation of SQLStatement.
+//     Hence, there is no GC dependency at play here.
+
+namespace WebCore {
+
+SQLStatement::SQLStatement(Database& database, const String& statement, const Vector<SQLValue>& arguments, PassRefPtr<SQLStatementCallback> callback, PassRefPtr<SQLStatementErrorCallback> errorCallback, int permissions)
+    : m_statement(statement.isolatedCopy())
+    , m_arguments(arguments)
+    , m_statementCallbackWrapper(callback, database.scriptExecutionContext())
+    , m_statementErrorCallbackWrapper(errorCallback, database.scriptExecutionContext())
+    , m_permissions(permissions)
+{
+}
+
+SQLStatement::~SQLStatement()
+{
+}
+
+PassRefPtr<SQLError> SQLStatement::sqlError() const
+{
+    return m_error;
+}
+
+PassRefPtr<SQLResultSet> SQLStatement::sqlResultSet() const
+{
+    return m_resultSet;
+}
+
+bool SQLStatement::execute(Database& db)
+{
+    ASSERT(!m_resultSet);
+
+    // If we're re-running this statement after a quota violation, we need to clear that error now
+    clearFailureDueToQuota();
+
+    // This transaction might have been marked bad while it was being set up on the main thread,
+    // so if there is still an error, return false.
+    if (m_error)
+        return false;
+
+    db.setAuthorizerPermissions(m_permissions);
+
+    SQLiteDatabase& database = db.sqliteDatabase();
+
+    SQLiteStatement statement(database, m_statement);
+    int result = statement.prepare();
+
+    if (result != SQLITE_OK) {
+        LOG(StorageAPI, "Unable to verify correctness of statement %s - error %i (%s)", m_statement.ascii().data(), result, database.lastErrorMsg());
+        if (result == SQLITE_INTERRUPT)
+            m_error = SQLError::create(SQLError::DATABASE_ERR, "could not prepare statement", result, "interrupted");
+        else
+            m_error = SQLError::create(SQLError::SYNTAX_ERR, "could not prepare statement", result, database.lastErrorMsg());
+        return false;
+    }
+
+    // FIXME: If the statement uses the ?### syntax supported by sqlite, the bind parameter count is very likely off from the number of question marks.
+    // If this is the case, they might be trying to do something fishy or malicious
+    if (statement.bindParameterCount() != m_arguments.size()) {
+        LOG(StorageAPI, "Bind parameter count doesn't match number of question marks");
+        m_error = SQLError::create(SQLError::SYNTAX_ERR, "number of '?'s in statement string does not match argument count");
+        return false;
+    }
+
+    for (unsigned i = 0; i < m_arguments.size(); ++i) {
+        result = statement.bindValue(i + 1, m_arguments[i]);
+        if (result == SQLITE_FULL) {
+            setFailureDueToQuota();
+            return false;
+        }
+
+        if (result != SQLITE_OK) {
+            LOG(StorageAPI, "Failed to bind value index %i to statement for query '%s'", i + 1, m_statement.ascii().data());
+            m_error = SQLError::create(SQLError::DATABASE_ERR, "could not bind value", result, database.lastErrorMsg());
+            return false;
+        }
+    }
+
+    RefPtr<SQLResultSet> resultSet = SQLResultSet::create();
+
+    // Step so we can fetch the column names.
+    result = statement.step();
+    switch (result) {
+    case SQLITE_ROW: {
+        int columnCount = statement.columnCount();
+        SQLResultSetRowList* rows = resultSet->rows();
+
+        for (int i = 0; i < columnCount; i++)
+            rows->addColumn(statement.getColumnName(i));
+
+        do {
+            for (int i = 0; i < columnCount; i++)
+                rows->addResult(statement.getColumnValue(i));
+
+            result = statement.step();
+        } while (result == SQLITE_ROW);
+
+        if (result != SQLITE_DONE) {
+            m_error = SQLError::create(SQLError::DATABASE_ERR, "could not iterate results", result, database.lastErrorMsg());
+            return false;
+        }
+        break;
+    }
+    case SQLITE_DONE: {
+        // Didn't find anything, or was an insert
+        if (db.lastActionWasInsert())
+            resultSet->setInsertId(database.lastInsertRowID());
+        break;
+    }
+    case SQLITE_FULL:
+        // Return the Quota error - the delegate will be asked for more space and this statement might be re-run
+        setFailureDueToQuota();
+        return false;
+    case SQLITE_CONSTRAINT:
+        m_error = SQLError::create(SQLError::CONSTRAINT_ERR, "could not execute statement due to a constaint failure", result, database.lastErrorMsg());
+        return false;
+    default:
+        m_error = SQLError::create(SQLError::DATABASE_ERR, "could not execute statement", result, database.lastErrorMsg());
+        return false;
+    }
+
+    // FIXME: If the spec allows triggers, and we want to be "accurate" in a different way, we'd use
+    // sqlite3_total_changes() here instead of sqlite3_changed, because that includes rows modified from within a trigger
+    // For now, this seems sufficient
+    resultSet->setRowsAffected(database.lastChanges());
+
+    m_resultSet = resultSet;
+    return true;
+}
+
+bool SQLStatement::performCallback(SQLTransaction* transaction)
+{
+    ASSERT(transaction);
+
+    bool callbackError = false;
+
+    RefPtr<SQLStatementCallback> callback = m_statementCallbackWrapper.unwrap();
+    RefPtr<SQLStatementErrorCallback> errorCallback = m_statementErrorCallbackWrapper.unwrap();
+    RefPtr<SQLError> error = sqlError();
+
+    // Call the appropriate statement callback and track if it resulted in an error,
+    // because then we need to jump to the transaction error callback.
+    if (error) {
+        if (errorCallback)
+            callbackError = errorCallback->handleEvent(transaction, error.get());
+    } else if (callback) {
+        RefPtr<SQLResultSet> resultSet = sqlResultSet();
+        callbackError = !callback->handleEvent(transaction, resultSet.get());
+    }
+
+    return callbackError;
+}
+
+void SQLStatement::setDatabaseDeletedError()
+{
+    ASSERT(!m_error && !m_resultSet);
+    m_error = SQLError::create(SQLError::UNKNOWN_ERR, "unable to execute statement, because the user deleted the database");
+}
+
+void SQLStatement::setVersionMismatchedError()
+{
+    ASSERT(!m_error && !m_resultSet);
+    m_error = SQLError::create(SQLError::VERSION_ERR, "current version of the database and `oldVersion` argument do not match");
+}
+
+void SQLStatement::setFailureDueToQuota()
+{
+    ASSERT(!m_error && !m_resultSet);
+    m_error = SQLError::create(SQLError::QUOTA_ERR, "there was not enough remaining storage space, or the storage quota was reached and the user declined to allow more space");
+}
+
+void SQLStatement::clearFailureDueToQuota()
+{
+    if (lastExecutionFailedDueToQuota())
+        m_error = nullptr;
+}
+
+bool SQLStatement::lastExecutionFailedDueToQuota() const
+{
+    return m_error && m_error->code() == SQLError::QUOTA_ERR;
+}
+
+} // namespace WebCore

Copied: trunk/Source/WebCore/Modules/webdatabase/SQLStatement.h (from rev 188088, trunk/Source/WebCore/Modules/webdatabase/SQLStatementBackend.h) (0 => 188089)


--- trunk/Source/WebCore/Modules/webdatabase/SQLStatement.h	                        (rev 0)
+++ trunk/Source/WebCore/Modules/webdatabase/SQLStatement.h	2015-08-06 23:35:12 UTC (rev 188089)
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2007, 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ * 2.  Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in the
+ *     documentation and/or other materials provided with the distribution.
+ * 3.  Neither the name of Apple Inc. ("Apple") nor the names of
+ *     its contributors may be used to endorse or promote products derived
+ *     from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS;   OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#ifndef SQLStatement_h
+#define SQLStatement_h
+
+#include "SQLCallbackWrapper.h"
+#include "SQLStatementCallback.h"
+#include "SQLStatementErrorCallback.h"
+#include "SQLValue.h"
+#include <wtf/Forward.h>
+#include <wtf/Vector.h>
+#include <wtf/text/WTFString.h>
+
+namespace WebCore {
+
+class Database;
+class SQLError;
+class SQLResultSet;
+class SQLTransactionBackend;
+
+class SQLStatement {
+public:
+    SQLStatement(Database&, const String&, const Vector<SQLValue>&, PassRefPtr<SQLStatementCallback>, PassRefPtr<SQLStatementErrorCallback>, int permissions);
+    ~SQLStatement();
+
+    bool execute(Database&);
+    bool lastExecutionFailedDueToQuota() const;
+
+    bool hasStatementCallback() const { return m_statementCallbackWrapper.hasCallback(); }
+    bool hasStatementErrorCallback() const { return m_statementErrorCallbackWrapper.hasCallback(); }
+    bool performCallback(SQLTransaction*);
+
+    void setDatabaseDeletedError();
+    void setVersionMismatchedError();
+
+    PassRefPtr<SQLError> sqlError() const;
+    PassRefPtr<SQLResultSet> sqlResultSet() const;
+
+private:
+    void setFailureDueToQuota();
+    void clearFailureDueToQuota();
+
+    String m_statement;
+    Vector<SQLValue> m_arguments;
+    SQLCallbackWrapper<SQLStatementCallback> m_statementCallbackWrapper;
+    SQLCallbackWrapper<SQLStatementErrorCallback> m_statementErrorCallbackWrapper;
+
+    RefPtr<SQLError> m_error;
+    RefPtr<SQLResultSet> m_resultSet;
+
+    int m_permissions;
+};
+
+} // namespace WebCore
+
+#endif // SQLStatement_h

Deleted: trunk/Source/WebCore/Modules/webdatabase/SQLStatementBackend.cpp (188088 => 188089)


--- trunk/Source/WebCore/Modules/webdatabase/SQLStatementBackend.cpp	2015-08-06 23:31:53 UTC (rev 188088)
+++ trunk/Source/WebCore/Modules/webdatabase/SQLStatementBackend.cpp	2015-08-06 23:35:12 UTC (rev 188089)
@@ -1,254 +0,0 @@
-/*
- * Copyright (C) 2007, 2013 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- * 3.  Neither the name of Apple Inc. ("Apple") nor the names of
- *     its contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include "config.h"
-#include "SQLStatementBackend.h"
-
-#include "Database.h"
-#include "Logging.h"
-#include "SQLError.h"
-#include "SQLResultSet.h"
-#include "SQLStatementCallback.h"
-#include "SQLStatementErrorCallback.h"
-#include "SQLValue.h"
-#include "SQLiteDatabase.h"
-#include "SQLiteStatement.h"
-#include <wtf/text/CString.h>
-
-
-// The Life-Cycle of a SQLStatement i.e. Who's keeping the SQLStatement alive? 
-// ==========================================================================
-// The RefPtr chain goes something like this:
-//
-//     At birth (in SQLTransactionBackend::executeSQL()):
-//     =================================================
-//     SQLTransactionBackend           // Deque<RefPtr<SQLStatementBackend>> m_statementQueue points to ...
-//     --> SQLStatementBackend         // std::unique_ptr<SQLStatement> m_frontend points to ...
-//         --> SQLStatement
-//
-//     After grabbing the statement for execution (in SQLTransactionBackend::getNextStatement()):
-//     =========================================================================================
-//     SQLTransactionBackend           // RefPtr<SQLStatementBackend> m_currentStatementBackend points to ...
-//     --> SQLStatementBackend         // std::unique_ptr<SQLStatement> m_frontend points to ...
-//         --> SQLStatement
-//
-//     Then we execute the statement in SQLTransactionBackend::runCurrentStatementAndGetNextState().
-//     And we callback to the script in SQLTransaction::deliverStatementCallback() if
-//     necessary.
-//     - Inside SQLTransaction::deliverStatementCallback(), we operate on a raw SQLStatement*.
-//       This pointer is valid because it is owned by SQLTransactionBackend's
-//       SQLTransactionBackend::m_currentStatementBackend.
-//
-//     After we're done executing the statement (in SQLTransactionBackend::getNextStatement()):
-//     =======================================================================================
-//     When we're done executing, we'll grab the next statement. But before we
-//     do that, getNextStatement() nullify SQLTransactionBackend::m_currentStatementBackend.
-//     This will trigger the deletion of the SQLStatementBackend and SQLStatement.
-//
-//     Note: unlike with SQLTransaction, there is no JS representation of SQLStatement.
-//     Hence, there is no GC dependency at play here.
-
-namespace WebCore {
-
-SQLStatementBackend::SQLStatementBackend(Database& database, const String& statement, const Vector<SQLValue>& arguments, PassRefPtr<SQLStatementCallback> callback, PassRefPtr<SQLStatementErrorCallback> errorCallback, int permissions)
-    : m_statement(statement.isolatedCopy())
-    , m_arguments(arguments)
-    , m_statementCallbackWrapper(callback, database.scriptExecutionContext())
-    , m_statementErrorCallbackWrapper(errorCallback, database.scriptExecutionContext())
-    , m_permissions(permissions)
-{
-}
-
-SQLStatementBackend::~SQLStatementBackend()
-{
-}
-
-PassRefPtr<SQLError> SQLStatementBackend::sqlError() const
-{
-    return m_error;
-}
-
-PassRefPtr<SQLResultSet> SQLStatementBackend::sqlResultSet() const
-{
-    return m_resultSet;
-}
-
-bool SQLStatementBackend::execute(Database& db)
-{
-    ASSERT(!m_resultSet);
-
-    // If we're re-running this statement after a quota violation, we need to clear that error now
-    clearFailureDueToQuota();
-
-    // This transaction might have been marked bad while it was being set up on the main thread,
-    // so if there is still an error, return false.
-    if (m_error)
-        return false;
-
-    db.setAuthorizerPermissions(m_permissions);
-
-    SQLiteDatabase& database = db.sqliteDatabase();
-
-    SQLiteStatement statement(database, m_statement);
-    int result = statement.prepare();
-
-    if (result != SQLITE_OK) {
-        LOG(StorageAPI, "Unable to verify correctness of statement %s - error %i (%s)", m_statement.ascii().data(), result, database.lastErrorMsg());
-        if (result == SQLITE_INTERRUPT)
-            m_error = SQLError::create(SQLError::DATABASE_ERR, "could not prepare statement", result, "interrupted");
-        else
-            m_error = SQLError::create(SQLError::SYNTAX_ERR, "could not prepare statement", result, database.lastErrorMsg());
-        return false;
-    }
-
-    // FIXME: If the statement uses the ?### syntax supported by sqlite, the bind parameter count is very likely off from the number of question marks.
-    // If this is the case, they might be trying to do something fishy or malicious
-    if (statement.bindParameterCount() != m_arguments.size()) {
-        LOG(StorageAPI, "Bind parameter count doesn't match number of question marks");
-        m_error = SQLError::create(SQLError::SYNTAX_ERR, "number of '?'s in statement string does not match argument count");
-        return false;
-    }
-
-    for (unsigned i = 0; i < m_arguments.size(); ++i) {
-        result = statement.bindValue(i + 1, m_arguments[i]);
-        if (result == SQLITE_FULL) {
-            setFailureDueToQuota();
-            return false;
-        }
-
-        if (result != SQLITE_OK) {
-            LOG(StorageAPI, "Failed to bind value index %i to statement for query '%s'", i + 1, m_statement.ascii().data());
-            m_error = SQLError::create(SQLError::DATABASE_ERR, "could not bind value", result, database.lastErrorMsg());
-            return false;
-        }
-    }
-
-    RefPtr<SQLResultSet> resultSet = SQLResultSet::create();
-
-    // Step so we can fetch the column names.
-    result = statement.step();
-    switch (result) {
-    case SQLITE_ROW: {
-        int columnCount = statement.columnCount();
-        SQLResultSetRowList* rows = resultSet->rows();
-
-        for (int i = 0; i < columnCount; i++)
-            rows->addColumn(statement.getColumnName(i));
-
-        do {
-            for (int i = 0; i < columnCount; i++)
-                rows->addResult(statement.getColumnValue(i));
-
-            result = statement.step();
-        } while (result == SQLITE_ROW);
-
-        if (result != SQLITE_DONE) {
-            m_error = SQLError::create(SQLError::DATABASE_ERR, "could not iterate results", result, database.lastErrorMsg());
-            return false;
-        }
-        break;
-    }
-    case SQLITE_DONE: {
-        // Didn't find anything, or was an insert
-        if (db.lastActionWasInsert())
-            resultSet->setInsertId(database.lastInsertRowID());
-        break;
-    }
-    case SQLITE_FULL:
-        // Return the Quota error - the delegate will be asked for more space and this statement might be re-run
-        setFailureDueToQuota();
-        return false;
-    case SQLITE_CONSTRAINT:
-        m_error = SQLError::create(SQLError::CONSTRAINT_ERR, "could not execute statement due to a constaint failure", result, database.lastErrorMsg());
-        return false;
-    default:
-        m_error = SQLError::create(SQLError::DATABASE_ERR, "could not execute statement", result, database.lastErrorMsg());
-        return false;
-    }
-
-    // FIXME: If the spec allows triggers, and we want to be "accurate" in a different way, we'd use
-    // sqlite3_total_changes() here instead of sqlite3_changed, because that includes rows modified from within a trigger
-    // For now, this seems sufficient
-    resultSet->setRowsAffected(database.lastChanges());
-
-    m_resultSet = resultSet;
-    return true;
-}
-
-bool SQLStatementBackend::performCallback(SQLTransaction* transaction)
-{
-    ASSERT(transaction);
-
-    bool callbackError = false;
-
-    RefPtr<SQLStatementCallback> callback = m_statementCallbackWrapper.unwrap();
-    RefPtr<SQLStatementErrorCallback> errorCallback = m_statementErrorCallbackWrapper.unwrap();
-    RefPtr<SQLError> error = sqlError();
-
-    // Call the appropriate statement callback and track if it resulted in an error,
-    // because then we need to jump to the transaction error callback.
-    if (error) {
-        if (errorCallback)
-            callbackError = errorCallback->handleEvent(transaction, error.get());
-    } else if (callback) {
-        RefPtr<SQLResultSet> resultSet = sqlResultSet();
-        callbackError = !callback->handleEvent(transaction, resultSet.get());
-    }
-
-    return callbackError;
-}
-
-void SQLStatementBackend::setDatabaseDeletedError()
-{
-    ASSERT(!m_error && !m_resultSet);
-    m_error = SQLError::create(SQLError::UNKNOWN_ERR, "unable to execute statement, because the user deleted the database");
-}
-
-void SQLStatementBackend::setVersionMismatchedError()
-{
-    ASSERT(!m_error && !m_resultSet);
-    m_error = SQLError::create(SQLError::VERSION_ERR, "current version of the database and `oldVersion` argument do not match");
-}
-
-void SQLStatementBackend::setFailureDueToQuota()
-{
-    ASSERT(!m_error && !m_resultSet);
-    m_error = SQLError::create(SQLError::QUOTA_ERR, "there was not enough remaining storage space, or the storage quota was reached and the user declined to allow more space");
-}
-
-void SQLStatementBackend::clearFailureDueToQuota()
-{
-    if (lastExecutionFailedDueToQuota())
-        m_error = nullptr;
-}
-
-bool SQLStatementBackend::lastExecutionFailedDueToQuota() const
-{
-    return m_error && m_error->code() == SQLError::QUOTA_ERR;
-}
-
-} // namespace WebCore

Deleted: trunk/Source/WebCore/Modules/webdatabase/SQLStatementBackend.h (188088 => 188089)


--- trunk/Source/WebCore/Modules/webdatabase/SQLStatementBackend.h	2015-08-06 23:31:53 UTC (rev 188088)
+++ trunk/Source/WebCore/Modules/webdatabase/SQLStatementBackend.h	2015-08-06 23:35:12 UTC (rev 188089)
@@ -1,81 +0,0 @@
-/*
- * Copyright (C) 2007, 2013 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- * 3.  Neither the name of Apple Inc. ("Apple") nor the names of
- *     its contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS;   OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#ifndef SQLStatementBackend_h
-#define SQLStatementBackend_h
-
-#include "SQLCallbackWrapper.h"
-#include "SQLStatementCallback.h"
-#include "SQLStatementErrorCallback.h"
-#include "SQLValue.h"
-#include <wtf/Forward.h>
-#include <wtf/Vector.h>
-#include <wtf/text/WTFString.h>
-
-namespace WebCore {
-
-class Database;
-class SQLError;
-class SQLResultSet;
-class SQLTransactionBackend;
-
-class SQLStatementBackend {
-public:
-    SQLStatementBackend(Database&, const String&, const Vector<SQLValue>&, PassRefPtr<SQLStatementCallback>, PassRefPtr<SQLStatementErrorCallback>, int permissions);
-    ~SQLStatementBackend();
-
-    bool execute(Database&);
-    bool lastExecutionFailedDueToQuota() const;
-
-    bool hasStatementCallback() const { return m_statementCallbackWrapper.hasCallback(); }
-    bool hasStatementErrorCallback() const { return m_statementErrorCallbackWrapper.hasCallback(); }
-    bool performCallback(SQLTransaction*);
-
-    void setDatabaseDeletedError();
-    void setVersionMismatchedError();
-
-    PassRefPtr<SQLError> sqlError() const;
-    PassRefPtr<SQLResultSet> sqlResultSet() const;
-
-private:
-    void setFailureDueToQuota();
-    void clearFailureDueToQuota();
-
-    String m_statement;
-    Vector<SQLValue> m_arguments;
-    SQLCallbackWrapper<SQLStatementCallback> m_statementCallbackWrapper;
-    SQLCallbackWrapper<SQLStatementErrorCallback> m_statementErrorCallbackWrapper;
-
-    RefPtr<SQLError> m_error;
-    RefPtr<SQLResultSet> m_resultSet;
-
-    int m_permissions;
-};
-
-} // namespace WebCore
-
-#endif // SQLStatementBackend_h

Modified: trunk/Source/WebCore/Modules/webdatabase/SQLTransaction.cpp (188088 => 188089)


--- trunk/Source/WebCore/Modules/webdatabase/SQLTransaction.cpp	2015-08-06 23:31:53 UTC (rev 188088)
+++ trunk/Source/WebCore/Modules/webdatabase/SQLTransaction.cpp	2015-08-06 23:35:12 UTC (rev 188089)
@@ -35,7 +35,7 @@
 #include "ExceptionCode.h"
 #include "Logging.h"
 #include "SQLError.h"
-#include "SQLStatementBackend.h"
+#include "SQLStatement.h"
 #include "SQLStatementCallback.h"
 #include "SQLStatementErrorCallback.h"
 #include "SQLTransactionBackend.h"
@@ -185,7 +185,7 @@
     // Otherwise, continue to loop through the statement queue
     m_executeSqlAllowed = true;
 
-    SQLStatementBackend* currentStatement = m_backend->currentStatement();
+    SQLStatement* currentStatement = m_backend->currentStatement();
     ASSERT(currentStatement);
 
     bool result = currentStatement->performCallback(this);
@@ -258,7 +258,7 @@
     else if (m_readOnly)
         permissions |= DatabaseAuthorizer::ReadOnlyMask;
 
-    auto statement = std::make_unique<SQLStatementBackend>(m_database, sqlStatement, arguments, WTF::move(callback), WTF::move(callbackError), permissions);
+    auto statement = std::make_unique<SQLStatement>(m_database, sqlStatement, arguments, WTF::move(callback), WTF::move(callbackError), permissions);
     m_backend->executeSQL(WTF::move(statement));
 }
 

Modified: trunk/Source/WebCore/Modules/webdatabase/SQLTransactionBackend.cpp (188088 => 188089)


--- trunk/Source/WebCore/Modules/webdatabase/SQLTransactionBackend.cpp	2015-08-06 23:31:53 UTC (rev 188088)
+++ trunk/Source/WebCore/Modules/webdatabase/SQLTransactionBackend.cpp	2015-08-06 23:35:12 UTC (rev 188089)
@@ -38,7 +38,7 @@
 #include "Logging.h"
 #include "OriginLock.h"
 #include "SQLError.h"
-#include "SQLStatementBackend.h"
+#include "SQLStatement.h"
 #include "SQLStatementCallback.h"
 #include "SQLStatementErrorCallback.h"
 #include "SQLTransaction.h"
@@ -423,7 +423,7 @@
     m_wrapper = nullptr;
 }
 
-SQLStatementBackend* SQLTransactionBackend::currentStatement()
+SQLStatement* SQLTransactionBackend::currentStatement()
 {
     return m_currentStatementBackend.get();
 }
@@ -463,7 +463,7 @@
     return stateFunctions[static_cast<int>(state)];
 }
 
-void SQLTransactionBackend::enqueueStatementBackend(std::unique_ptr<SQLStatementBackend> statementBackend)
+void SQLTransactionBackend::enqueueStatementBackend(std::unique_ptr<SQLStatement> statementBackend)
 {
     MutexLocker locker(m_statementMutex);
     m_statementQueue.append(WTF::move(statementBackend));
@@ -523,7 +523,7 @@
 }
 #endif
 
-void SQLTransactionBackend::executeSQL(std::unique_ptr<SQLStatementBackend> statementBackend)
+void SQLTransactionBackend::executeSQL(std::unique_ptr<SQLStatement> statementBackend)
 {
     if (m_database->deleted())
         statementBackend->setDatabaseDeletedError();

Modified: trunk/Source/WebCore/Modules/webdatabase/SQLTransactionBackend.h (188088 => 188089)


--- trunk/Source/WebCore/Modules/webdatabase/SQLTransactionBackend.h	2015-08-06 23:31:53 UTC (rev 188088)
+++ trunk/Source/WebCore/Modules/webdatabase/SQLTransactionBackend.h	2015-08-06 23:35:12 UTC (rev 188089)
@@ -42,7 +42,7 @@
 class OriginLock;
 class SQLError;
 class SQLiteTransaction;
-class SQLStatementBackend;
+class SQLStatement;
 class SQLTransaction;
 class SQLTransactionBackend;
 class SQLValue;
@@ -76,16 +76,16 @@
     // APIs called from the frontend published via SQLTransactionBackend:
     void requestTransitToState(SQLTransactionState);
     PassRefPtr<SQLError> transactionError();
-    SQLStatementBackend* currentStatement();
+    SQLStatement* currentStatement();
     void setShouldRetryCurrentStatement(bool);
-    void executeSQL(std::unique_ptr<SQLStatementBackend>);
+    void executeSQL(std::unique_ptr<SQLStatement>);
     
 private:
     SQLTransactionBackend(Database*, PassRefPtr<SQLTransaction>, PassRefPtr<SQLTransactionWrapper>, bool readOnly);
 
     void doCleanup();
 
-    void enqueueStatementBackend(std::unique_ptr<SQLStatementBackend>);
+    void enqueueStatementBackend(std::unique_ptr<SQLStatement>);
 
     // State Machine functions:
     virtual StateFunction stateFunctionFor(SQLTransactionState) override;
@@ -112,7 +112,7 @@
     void releaseOriginLockIfNeeded();
 
     RefPtr<SQLTransaction> m_frontend; // Has a reference cycle, and will break in doCleanup().
-    std::unique_ptr<SQLStatementBackend> m_currentStatementBackend;
+    std::unique_ptr<SQLStatement> m_currentStatementBackend;
 
     RefPtr<Database> m_database;
     RefPtr<SQLTransactionWrapper> m_wrapper;
@@ -128,7 +128,7 @@
     bool m_hasVersionMismatch;
 
     Mutex m_statementMutex;
-    Deque<std::unique_ptr<SQLStatementBackend>> m_statementQueue;
+    Deque<std::unique_ptr<SQLStatement>> m_statementQueue;
 
     std::unique_ptr<SQLiteTransaction> m_sqliteTransaction;
     RefPtr<OriginLock> m_originLock;

Modified: trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj (188088 => 188089)


--- trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj	2015-08-06 23:31:53 UTC (rev 188088)
+++ trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj	2015-08-06 23:35:12 UTC (rev 188089)
@@ -6819,7 +6819,7 @@
     <ClCompile Include="..\Modules\webdatabase\SQLException.cpp" />
     <ClCompile Include="..\Modules\webdatabase\SQLResultSet.cpp" />
     <ClCompile Include="..\Modules\webdatabase\SQLResultSetRowList.cpp" />
-    <ClCompile Include="..\Modules\webdatabase\SQLStatementBackend.cpp" />
+    <ClCompile Include="..\Modules\webdatabase\SQLStatement.cpp" />
     <ClCompile Include="..\Modules\webdatabase\SQLTransaction.cpp" />
     <ClCompile Include="..\Modules\webdatabase\SQLTransactionBackend.cpp" />
     <ClCompile Include="..\Modules\webdatabase\SQLTransactionClient.cpp" />
@@ -20561,7 +20561,7 @@
     <ClInclude Include="..\Modules\webdatabase\SQLException.h" />
     <ClInclude Include="..\Modules\webdatabase\SQLResultSet.h" />
     <ClInclude Include="..\Modules\webdatabase\SQLResultSetRowList.h" />
-    <ClInclude Include="..\Modules\webdatabase\SQLStatementBackend.h" />
+    <ClInclude Include="..\Modules\webdatabase\SQLStatement.h" />
     <ClInclude Include="..\Modules\webdatabase\SQLStatementCallback.h" />
     <ClInclude Include="..\Modules\webdatabase\SQLStatementErrorCallback.h" />
     <ClInclude Include="..\Modules\webdatabase\SQLTransaction.h" />

Modified: trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters (188088 => 188089)


--- trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters	2015-08-06 23:31:53 UTC (rev 188088)
+++ trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters	2015-08-06 23:35:12 UTC (rev 188089)
@@ -516,7 +516,7 @@
     <ClCompile Include="..\Modules\webdatabase\SQLResultSetRowList.cpp">
       <Filter>Modules\webdatabase</Filter>
     </ClCompile>
-    <ClCompile Include="..\Modules\webdatabase\SQLStatementBackend.cpp">
+    <ClCompile Include="..\Modules\webdatabase\SQLStatement.cpp">
       <Filter>Modules\webdatabase</Filter>
     </ClCompile>
     <ClCompile Include="..\Modules\webdatabase\SQLTransaction.cpp">
@@ -7487,7 +7487,7 @@
     <ClInclude Include="..\Modules\webdatabase\SQLResultSetRowList.h">
       <Filter>Modules\webdatabase</Filter>
     </ClInclude>
-    <ClInclude Include="..\Modules\webdatabase\SQLStatementBackend.h">
+    <ClInclude Include="..\Modules\webdatabase\SQLStatement.h">
       <Filter>Modules\webdatabase</Filter>
     </ClInclude>
     <ClInclude Include="..\Modules\webdatabase\SQLStatementCallback.h">

Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (188088 => 188089)


--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj	2015-08-06 23:31:53 UTC (rev 188088)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj	2015-08-06 23:35:12 UTC (rev 188089)
@@ -6833,8 +6833,8 @@
 		FE80DA660E9C4703000D6F75 /* JSGeoposition.h in Headers */ = {isa = PBXBuildFile; fileRef = FE80DA620E9C4703000D6F75 /* JSGeoposition.h */; };
 		FE80DA710E9C472F000D6F75 /* JSPositionError.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FE80DA6D0E9C472F000D6F75 /* JSPositionError.cpp */; };
 		FE80DA720E9C472F000D6F75 /* JSPositionError.h in Headers */ = {isa = PBXBuildFile; fileRef = FE80DA6E0E9C472F000D6F75 /* JSPositionError.h */; };
-		FE8A674716CDD19E00930BF8 /* SQLStatementBackend.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FE8A674516CDD19E00930BF8 /* SQLStatementBackend.cpp */; };
-		FE8A674816CDD19E00930BF8 /* SQLStatementBackend.h in Headers */ = {isa = PBXBuildFile; fileRef = FE8A674616CDD19E00930BF8 /* SQLStatementBackend.h */; };
+		FE8A674716CDD19E00930BF8 /* SQLStatement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FE8A674516CDD19E00930BF8 /* SQLStatement.cpp */; };
+		FE8A674816CDD19E00930BF8 /* SQLStatement.h in Headers */ = {isa = PBXBuildFile; fileRef = FE8A674616CDD19E00930BF8 /* SQLStatement.h */; };
 		FE9E89FB16E2DC0500A908F8 /* OriginLock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FE9E89F916E2DC0400A908F8 /* OriginLock.cpp */; };
 		FE9E89FC16E2DC0500A908F8 /* OriginLock.h in Headers */ = {isa = PBXBuildFile; fileRef = FE9E89FA16E2DC0400A908F8 /* OriginLock.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		FEAF6654167970320062D0C5 /* DatabaseServer.h in Headers */ = {isa = PBXBuildFile; fileRef = FEAF6653167970070062D0C5 /* DatabaseServer.h */; settings = {ATTRIBUTES = (Private, ); }; };
@@ -14594,8 +14594,8 @@
 		FE80DA620E9C4703000D6F75 /* JSGeoposition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSGeoposition.h; sourceTree = "<group>"; };
 		FE80DA6D0E9C472F000D6F75 /* JSPositionError.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSPositionError.cpp; sourceTree = "<group>"; };
 		FE80DA6E0E9C472F000D6F75 /* JSPositionError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSPositionError.h; sourceTree = "<group>"; };
-		FE8A674516CDD19E00930BF8 /* SQLStatementBackend.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SQLStatementBackend.cpp; sourceTree = "<group>"; };
-		FE8A674616CDD19E00930BF8 /* SQLStatementBackend.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SQLStatementBackend.h; sourceTree = "<group>"; };
+		FE8A674516CDD19E00930BF8 /* SQLStatement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SQLStatement.cpp; sourceTree = "<group>"; };
+		FE8A674616CDD19E00930BF8 /* SQLStatement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SQLStatement.h; sourceTree = "<group>"; };
 		FE9E89F916E2DC0400A908F8 /* OriginLock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = OriginLock.cpp; sourceTree = "<group>"; };
 		FE9E89FA16E2DC0400A908F8 /* OriginLock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OriginLock.h; sourceTree = "<group>"; };
 		FEAF6653167970070062D0C5 /* DatabaseServer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DatabaseServer.h; sourceTree = "<group>"; };
@@ -18806,8 +18806,8 @@
 				97BC6A021505F081001B74AC /* SQLResultSetRowList.cpp */,
 				97BC6A031505F081001B74AC /* SQLResultSetRowList.h */,
 				97BC6A041505F081001B74AC /* SQLResultSetRowList.idl */,
-				FE8A674516CDD19E00930BF8 /* SQLStatementBackend.cpp */,
-				FE8A674616CDD19E00930BF8 /* SQLStatementBackend.h */,
+				FE8A674516CDD19E00930BF8 /* SQLStatement.cpp */,
+				FE8A674616CDD19E00930BF8 /* SQLStatement.h */,
 				97BC6A071505F081001B74AC /* SQLStatementCallback.h */,
 				97BC6A081505F081001B74AC /* SQLStatementCallback.idl */,
 				97BC6A091505F081001B74AC /* SQLStatementErrorCallback.h */,
@@ -26720,7 +26720,7 @@
 				1A22464E0CC98DDB00C05240 /* SQLiteTransaction.h in Headers */,
 				97BC6A421505F081001B74AC /* SQLResultSet.h in Headers */,
 				97BC6A451505F081001B74AC /* SQLResultSetRowList.h in Headers */,
-				FE8A674816CDD19E00930BF8 /* SQLStatementBackend.h in Headers */,
+				FE8A674816CDD19E00930BF8 /* SQLStatement.h in Headers */,
 				97BC6A491505F081001B74AC /* SQLStatementCallback.h in Headers */,
 				97BC6A4B1505F081001B74AC /* SQLStatementErrorCallback.h in Headers */,
 				97BC6A501505F081001B74AC /* SQLTransaction.h in Headers */,
@@ -30188,7 +30188,7 @@
 				1A22464D0CC98DDB00C05240 /* SQLiteTransaction.cpp in Sources */,
 				97BC6A411505F081001B74AC /* SQLResultSet.cpp in Sources */,
 				97BC6A441505F081001B74AC /* SQLResultSetRowList.cpp in Sources */,
-				FE8A674716CDD19E00930BF8 /* SQLStatementBackend.cpp in Sources */,
+				FE8A674716CDD19E00930BF8 /* SQLStatement.cpp in Sources */,
 				97BC6A4F1505F081001B74AC /* SQLTransaction.cpp in Sources */,
 				FEE1811316C319E800084849 /* SQLTransactionBackend.cpp in Sources */,
 				97BC6A541505F081001B74AC /* SQLTransactionClient.cpp in Sources */,
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to