summaryrefslogtreecommitdiffstats
path: root/webkit/tools/test_shell
diff options
context:
space:
mode:
authorevan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-09 23:31:14 +0000
committerevan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-09 23:31:14 +0000
commit3200ec656f6c1712ce3a98e9f0a9fc5caa0ecd6f (patch)
tree93f89b09c124b5cd01fce39a0cfba436bd4b1c7b /webkit/tools/test_shell
parent5651386fa81b87a1e473c016afe5c3c4670bbb5f (diff)
downloadchromium_src-3200ec656f6c1712ce3a98e9f0a9fc5caa0ecd6f.zip
chromium_src-3200ec656f6c1712ce3a98e9f0a9fc5caa0ecd6f.tar.gz
chromium_src-3200ec656f6c1712ce3a98e9f0a9fc5caa0ecd6f.tar.bz2
webkit: move SimpleDatabaseSystem into webkit/support/
It is used by DRT and by test_shell, so it belongs in webkit/support/. Review URL: http://codereview.chromium.org/6657011 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@77550 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/tools/test_shell')
-rw-r--r--webkit/tools/test_shell/layout_test_controller.cc2
-rw-r--r--webkit/tools/test_shell/simple_database_system.cc193
-rw-r--r--webkit/tools/test_shell/simple_database_system.h84
-rw-r--r--webkit/tools/test_shell/test_shell_webkit_init.h2
4 files changed, 2 insertions, 279 deletions
diff --git a/webkit/tools/test_shell/layout_test_controller.cc b/webkit/tools/test_shell/layout_test_controller.cc
index a5da7b2..5a32064 100644
--- a/webkit/tools/test_shell/layout_test_controller.cc
+++ b/webkit/tools/test_shell/layout_test_controller.cc
@@ -38,8 +38,8 @@
#include "webkit/glue/dom_operations.h"
#include "webkit/glue/webkit_glue.h"
#include "webkit/glue/webpreferences.h"
+#include "webkit/support/simple_database_system.h"
#include "webkit/tools/test_shell/notification_presenter.h"
-#include "webkit/tools/test_shell/simple_database_system.h"
#include "webkit/tools/test_shell/simple_resource_loader_bridge.h"
#include "webkit/tools/test_shell/test_navigation_controller.h"
#include "webkit/tools/test_shell/test_shell.h"
diff --git a/webkit/tools/test_shell/simple_database_system.cc b/webkit/tools/test_shell/simple_database_system.cc
deleted file mode 100644
index d9f0cbc..0000000
--- a/webkit/tools/test_shell/simple_database_system.cc
+++ /dev/null
@@ -1,193 +0,0 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "webkit/tools/test_shell/simple_database_system.h"
-
-#include "base/auto_reset.h"
-#include "base/file_util.h"
-#include "base/message_loop.h"
-#include "base/threading/platform_thread.h"
-#include "base/utf_string_conversions.h"
-#include "third_party/sqlite/sqlite3.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebDatabase.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h"
-#include "webkit/database/database_util.h"
-#include "webkit/database/vfs_backend.h"
-
-using webkit_database::DatabaseTracker;
-using webkit_database::DatabaseUtil;
-using webkit_database::VfsBackend;
-
-SimpleDatabaseSystem* SimpleDatabaseSystem::instance_ = NULL;
-
-SimpleDatabaseSystem* SimpleDatabaseSystem::GetInstance() {
- DCHECK(instance_);
- return instance_;
-}
-
-SimpleDatabaseSystem::SimpleDatabaseSystem()
- : waiting_for_dbs_to_close_(false) {
- CHECK(temp_dir_.CreateUniqueTempDir());
- db_tracker_ = new DatabaseTracker(temp_dir_.path(), false, NULL);
- db_tracker_->AddObserver(this);
- DCHECK(!instance_);
- instance_ = this;
-}
-
-SimpleDatabaseSystem::~SimpleDatabaseSystem() {
- db_tracker_->RemoveObserver(this);
- instance_ = NULL;
-}
-
-base::PlatformFile SimpleDatabaseSystem::OpenFile(
- const string16& vfs_file_name, int desired_flags) {
- base::PlatformFile file_handle = base::kInvalidPlatformFileValue;
- FilePath file_name = GetFullFilePathForVfsFile(vfs_file_name);
- if (file_name.empty()) {
- VfsBackend::OpenTempFileInDirectory(
- db_tracker_->DatabaseDirectory(), desired_flags, &file_handle);
- } else {
- VfsBackend::OpenFile(file_name, desired_flags, &file_handle);
- }
-
- return file_handle;
-}
-
-int SimpleDatabaseSystem::DeleteFile(
- const string16& vfs_file_name, bool sync_dir) {
- // We try to delete the file multiple times, because that's what the default
- // VFS does (apparently deleting a file can sometimes fail on Windows).
- // We sleep for 10ms between retries for the same reason.
- const int kNumDeleteRetries = 3;
- int num_retries = 0;
- int error_code = SQLITE_OK;
- FilePath file_name = GetFullFilePathForVfsFile(vfs_file_name);
- do {
- error_code = VfsBackend::DeleteFile(file_name, sync_dir);
- } while ((++num_retries < kNumDeleteRetries) &&
- (error_code == SQLITE_IOERR_DELETE) &&
- (base::PlatformThread::Sleep(10), 1));
-
- return error_code;
-}
-
-long SimpleDatabaseSystem::GetFileAttributes(const string16& vfs_file_name) {
- return VfsBackend::GetFileAttributes(
- GetFullFilePathForVfsFile(vfs_file_name));
-}
-
-long long SimpleDatabaseSystem::GetFileSize(const string16& vfs_file_name) {
- return VfsBackend::GetFileSize(GetFullFilePathForVfsFile(vfs_file_name));
-}
-
-void SimpleDatabaseSystem::DatabaseOpened(const string16& origin_identifier,
- const string16& database_name,
- const string16& description,
- int64 estimated_size) {
- int64 database_size = 0;
- int64 space_available = 0;
- database_connections_.AddConnection(origin_identifier, database_name);
- db_tracker_->DatabaseOpened(origin_identifier, database_name, description,
- estimated_size, &database_size, &space_available);
- SetFullFilePathsForVfsFile(origin_identifier, database_name);
-
- OnDatabaseSizeChanged(origin_identifier, database_name,
- database_size, space_available);
-}
-
-void SimpleDatabaseSystem::DatabaseModified(const string16& origin_identifier,
- const string16& database_name) {
- DCHECK(database_connections_.IsDatabaseOpened(
- origin_identifier, database_name));
- db_tracker_->DatabaseModified(origin_identifier, database_name);
-}
-
-void SimpleDatabaseSystem::DatabaseClosed(const string16& origin_identifier,
- const string16& database_name) {
- DCHECK(database_connections_.IsDatabaseOpened(
- origin_identifier, database_name));
- db_tracker_->DatabaseClosed(origin_identifier, database_name);
- database_connections_.RemoveConnection(origin_identifier, database_name);
-
- if (waiting_for_dbs_to_close_ && database_connections_.IsEmpty())
- MessageLoop::current()->PostTask(FROM_HERE, new MessageLoop::QuitTask());
-}
-
-void SimpleDatabaseSystem::OnDatabaseSizeChanged(
- const string16& origin_identifier,
- const string16& database_name,
- int64 database_size,
- int64 space_available) {
- if (database_connections_.IsOriginUsed(origin_identifier)) {
- WebKit::WebDatabase::updateDatabaseSize(
- origin_identifier, database_name, database_size, space_available);
- }
-}
-
-void SimpleDatabaseSystem::OnDatabaseScheduledForDeletion(
- const string16& origin_identifier,
- const string16& database_name) {
- WebKit::WebDatabase::closeDatabaseImmediately(
- origin_identifier, database_name);
-}
-
-void SimpleDatabaseSystem::databaseOpened(const WebKit::WebDatabase& database) {
- DatabaseOpened(database.securityOrigin().databaseIdentifier(),
- database.name(), database.displayName(),
- database.estimatedSize());
-}
-
-void SimpleDatabaseSystem::databaseModified(
- const WebKit::WebDatabase& database) {
- DatabaseModified(database.securityOrigin().databaseIdentifier(),
- database.name());
-}
-
-void SimpleDatabaseSystem::databaseClosed(const WebKit::WebDatabase& database) {
- DatabaseClosed(database.securityOrigin().databaseIdentifier(),
- database.name());
-}
-
-void SimpleDatabaseSystem::ClearAllDatabases() {
- // Wait for all databases to be closed.
- if (!database_connections_.IsEmpty()) {
- AutoReset<bool> waiting_for_dbs_auto_reset(
- &waiting_for_dbs_to_close_, true);
- MessageLoop::ScopedNestableTaskAllower nestable(MessageLoop::current());
- MessageLoop::current()->Run();
- }
-
- db_tracker_->CloseTrackerDatabaseAndClearCaches();
- file_util::Delete(db_tracker_->DatabaseDirectory(), true);
- file_names_.clear();
-}
-
-void SimpleDatabaseSystem::SetDatabaseQuota(int64 quota) {
- db_tracker_->SetDefaultQuota(quota);
-}
-
-void SimpleDatabaseSystem::SetFullFilePathsForVfsFile(
- const string16& origin_identifier,
- const string16& database_name) {
- string16 vfs_file_name = origin_identifier + ASCIIToUTF16("/") +
- database_name + ASCIIToUTF16("#");
- FilePath file_name =
- DatabaseUtil::GetFullFilePathForVfsFile(db_tracker_, vfs_file_name);
-
- base::AutoLock file_names_auto_lock(file_names_lock_);
- file_names_[vfs_file_name] = file_name;
- file_names_[vfs_file_name + ASCIIToUTF16("-journal")] =
- FilePath::FromWStringHack(file_name.ToWStringHack() +
- ASCIIToWide("-journal"));
-}
-
-FilePath SimpleDatabaseSystem::GetFullFilePathForVfsFile(
- const string16& vfs_file_name) {
- if (vfs_file_name.empty()) // temp file, used for vacuuming
- return FilePath();
-
- base::AutoLock file_names_auto_lock(file_names_lock_);
- DCHECK(file_names_.find(vfs_file_name) != file_names_.end());
- return file_names_[vfs_file_name];
-}
diff --git a/webkit/tools/test_shell/simple_database_system.h b/webkit/tools/test_shell/simple_database_system.h
deleted file mode 100644
index 7efe072..0000000
--- a/webkit/tools/test_shell/simple_database_system.h
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef WEBKIT_TOOLS_TEST_SHELL_SIMPLE_DATABASE_SYSTEM_H_
-#define WEBKIT_TOOLS_TEST_SHELL_SIMPLE_DATABASE_SYSTEM_H_
-
-#include "base/file_path.h"
-#include "base/hash_tables.h"
-#include "base/platform_file.h"
-#include "base/ref_counted.h"
-#include "base/scoped_temp_dir.h"
-#include "base/string16.h"
-#include "base/synchronization/lock.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebDatabaseObserver.h"
-#include "webkit/database/database_connections.h"
-#include "webkit/database/database_tracker.h"
-
-class SimpleDatabaseSystem : public webkit_database::DatabaseTracker::Observer,
- public WebKit::WebDatabaseObserver {
- public:
- static SimpleDatabaseSystem* GetInstance();
- SimpleDatabaseSystem();
- ~SimpleDatabaseSystem();
-
- // VFS functions
- base::PlatformFile OpenFile(const string16& vfs_file_name, int desired_flags);
- int DeleteFile(const string16& vfs_file_name, bool sync_dir);
- long GetFileAttributes(const string16& vfs_file_name);
- long long GetFileSize(const string16& vfs_file_name);
-
- // database tracker functions
- void DatabaseOpened(const string16& origin_identifier,
- const string16& database_name,
- const string16& description,
- int64 estimated_size);
- void DatabaseModified(const string16& origin_identifier,
- const string16& database_name);
- void DatabaseClosed(const string16& origin_identifier,
- const string16& database_name);
-
- // DatabaseTracker::Observer implementation
- virtual void OnDatabaseSizeChanged(const string16& origin_identifier,
- const string16& database_name,
- int64 database_size,
- int64 space_available);
- virtual void OnDatabaseScheduledForDeletion(const string16& origin_identifier,
- const string16& database_name);
-
- // WebDatabaseObserver implementation
- virtual void databaseOpened(const WebKit::WebDatabase& database);
- virtual void databaseModified(const WebKit::WebDatabase& database);
- virtual void databaseClosed(const WebKit::WebDatabase& database);
-
- void ClearAllDatabases();
- void SetDatabaseQuota(int64 quota);
-
- private:
- // The calls that come from the database tracker run on the main thread.
- // Therefore, we can only call DatabaseUtil::GetFullFilePathForVfsFile()
- // on the main thread. However, the VFS calls run on the DB thread and
- // they need to crack VFS file paths. To resolve this problem, we store
- // a map of vfs_file_names to file_paths. The map is updated on the main
- // thread on each DatabaseOpened() call that comes from the database
- // tracker, and is read on the DB thread by each VFS call.
- void SetFullFilePathsForVfsFile(const string16& origin_identifier,
- const string16& database_name);
- FilePath GetFullFilePathForVfsFile(const string16& vfs_file_name);
-
- static SimpleDatabaseSystem* instance_;
-
- bool waiting_for_dbs_to_close_;
-
- ScopedTempDir temp_dir_;
-
- scoped_refptr<webkit_database::DatabaseTracker> db_tracker_;
-
- base::Lock file_names_lock_;
- base::hash_map<string16, FilePath> file_names_;
-
- webkit_database::DatabaseConnections database_connections_;
-};
-
-#endif // WEBKIT_TOOLS_TEST_SHELL_SIMPLE_DATABASE_SYSTEM_H_
diff --git a/webkit/tools/test_shell/test_shell_webkit_init.h b/webkit/tools/test_shell/test_shell_webkit_init.h
index f4c1e79..0b400cb 100644
--- a/webkit/tools/test_shell/test_shell_webkit_init.h
+++ b/webkit/tools/test_shell/test_shell_webkit_init.h
@@ -16,9 +16,9 @@
#include "webkit/glue/webkit_glue.h"
#include "webkit/glue/webkitclient_impl.h"
#include "webkit/gpu/webgraphicscontext3d_in_process_impl.h"
+#include "webkit/support/simple_database_system.h"
#include "webkit/tools/test_shell/mock_webclipboard_impl.h"
#include "webkit/tools/test_shell/simple_appcache_system.h"
-#include "webkit/tools/test_shell/simple_database_system.h"
#include "webkit/tools/test_shell/simple_file_system.h"
#include "webkit/tools/test_shell/simple_resource_loader_bridge.h"
#include "webkit/tools/test_shell/simple_webcookiejar_impl.h"