summaryrefslogtreecommitdiff
path: root/Source/WebCore/Modules/webdatabase/DatabaseSync.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/Modules/webdatabase/DatabaseSync.cpp')
-rw-r--r--Source/WebCore/Modules/webdatabase/DatabaseSync.cpp195
1 files changed, 0 insertions, 195 deletions
diff --git a/Source/WebCore/Modules/webdatabase/DatabaseSync.cpp b/Source/WebCore/Modules/webdatabase/DatabaseSync.cpp
deleted file mode 100644
index f92c34ff0..000000000
--- a/Source/WebCore/Modules/webdatabase/DatabaseSync.cpp
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * Copyright (C) 2010 Google 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:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- * * Neither the name of Google Inc. 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 THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * OWNER OR 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 "DatabaseSync.h"
-
-#if ENABLE(SQL_DATABASE)
-
-#include "DatabaseBackendContext.h"
-#include "DatabaseBackendSync.h"
-#include "DatabaseCallback.h"
-#include "DatabaseContext.h"
-#include "DatabaseManager.h"
-#include "DatabaseTracker.h"
-#include "Logging.h"
-#include "SQLException.h"
-#include "SQLTransactionSync.h"
-#include "SQLTransactionSyncCallback.h"
-#include "ScriptExecutionContext.h"
-#include "SecurityOrigin.h"
-#include <wtf/PassRefPtr.h>
-#include <wtf/RefPtr.h>
-#include <wtf/text/CString.h>
-
-namespace WebCore {
-
-PassRefPtr<DatabaseSync> DatabaseSync::create(ScriptExecutionContext*, PassRefPtr<DatabaseBackendBase> backend)
-{
- return static_cast<DatabaseSync*>(backend.get());
-}
-
-DatabaseSync::DatabaseSync(PassRefPtr<DatabaseBackendContext> databaseContext,
- const String& name, const String& expectedVersion, const String& displayName, unsigned long estimatedSize)
- : DatabaseBase(databaseContext->scriptExecutionContext())
- , DatabaseBackendSync(databaseContext, name, expectedVersion, displayName, estimatedSize)
-{
- setFrontend(this);
-}
-
-DatabaseSync::~DatabaseSync()
-{
- ASSERT(m_scriptExecutionContext->isContextThread());
-}
-
-PassRefPtr<DatabaseBackendSync> DatabaseSync::backend()
-{
- return this;
-}
-
-void DatabaseSync::changeVersion(const String& oldVersion, const String& newVersion, PassRefPtr<SQLTransactionSyncCallback> changeVersionCallback, ExceptionCode& ec)
-{
- ASSERT(m_scriptExecutionContext->isContextThread());
-
- if (sqliteDatabase().transactionInProgress()) {
- setLastErrorMessage("unable to changeVersion from within a transaction");
- ec = SQLException::DATABASE_ERR;
- return;
- }
-
- RefPtr<SQLTransactionSync> transaction = SQLTransactionSync::create(this, changeVersionCallback, false);
- if ((ec = transaction->begin())) {
- ASSERT(!lastErrorMessage().isEmpty());
- return;
- }
-
- String actualVersion;
- if (!getVersionFromDatabase(actualVersion)) {
- setLastErrorMessage("unable to read the current version", sqliteDatabase().lastError(), sqliteDatabase().lastErrorMsg());
- ec = SQLException::UNKNOWN_ERR;
- return;
- }
-
- if (actualVersion != oldVersion) {
- setLastErrorMessage("current version of the database and `oldVersion` argument do not match");
- ec = SQLException::VERSION_ERR;
- return;
- }
-
- if ((ec = transaction->execute())) {
- ASSERT(!lastErrorMessage().isEmpty());
- return;
- }
-
- if (!setVersionInDatabase(newVersion)) {
- setLastErrorMessage("unable to set the new version", sqliteDatabase().lastError(), sqliteDatabase().lastErrorMsg());
- ec = SQLException::UNKNOWN_ERR;
- return;
- }
-
- if ((ec = transaction->commit())) {
- ASSERT(!lastErrorMessage().isEmpty());
- setCachedVersion(oldVersion);
- return;
- }
-
- setExpectedVersion(newVersion);
- setLastErrorMessage("");
-}
-
-void DatabaseSync::transaction(PassRefPtr<SQLTransactionSyncCallback> callback, ExceptionCode& ec)
-{
- runTransaction(callback, false, ec);
-}
-
-void DatabaseSync::readTransaction(PassRefPtr<SQLTransactionSyncCallback> callback, ExceptionCode& ec)
-{
- runTransaction(callback, true, ec);
-}
-
-void DatabaseSync::runTransaction(PassRefPtr<SQLTransactionSyncCallback> callback, bool readOnly, ExceptionCode& ec)
-{
- ASSERT(m_scriptExecutionContext->isContextThread());
-
- if (sqliteDatabase().transactionInProgress()) {
- setLastErrorMessage("unable to start a transaction from within a transaction");
- ec = SQLException::DATABASE_ERR;
- return;
- }
-
- RefPtr<SQLTransactionSync> transaction = SQLTransactionSync::create(this, callback, readOnly);
- if ((ec = transaction->begin()) || (ec = transaction->execute()) || (ec = transaction->commit())) {
- ASSERT(!lastErrorMessage().isEmpty());
- transaction->rollback();
- }
-
- setLastErrorMessage("");
-}
-
-void DatabaseSync::markAsDeletedAndClose()
-{
- // FIXME: need to do something similar to closeImmediately(), but in a sync way
-}
-
-class CloseSyncDatabaseOnContextThreadTask : public ScriptExecutionContext::Task {
-public:
- static PassOwnPtr<CloseSyncDatabaseOnContextThreadTask> create(PassRefPtr<DatabaseSync> database)
- {
- return adoptPtr(new CloseSyncDatabaseOnContextThreadTask(database));
- }
-
- virtual void performTask(ScriptExecutionContext*)
- {
- m_database->closeImmediately();
- }
-
-private:
- CloseSyncDatabaseOnContextThreadTask(PassRefPtr<DatabaseSync> database)
- : m_database(database)
- {
- }
-
- RefPtr<DatabaseSync> m_database;
-};
-
-void DatabaseSync::closeImmediately()
-{
- ASSERT(m_scriptExecutionContext->isContextThread());
-
- if (!opened())
- return;
-
- logErrorMessage("forcibly closing database");
- closeDatabase();
-}
-
-} // namespace WebCore
-
-#endif // ENABLE(SQL_DATABASE)