diff options
author | pilgrim@chromium.org <pilgrim@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-21 03:37:40 +0000 |
---|---|---|
committer | pilgrim@chromium.org <pilgrim@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-21 03:37:40 +0000 |
commit | 8ca5150af68a0cadfa19652e71acd5fc19ae67b2 (patch) | |
tree | d8d96af23b5b8039188506375b5b7e7ed3c23381 /webkit/browser | |
parent | 2a649ded13106bbbb051247564a8732200c7f46d (diff) | |
download | chromium_src-8ca5150af68a0cadfa19652e71acd5fc19ae67b2.zip chromium_src-8ca5150af68a0cadfa19652e71acd5fc19ae67b2.tar.gz chromium_src-8ca5150af68a0cadfa19652e71acd5fc19ae67b2.tar.bz2 |
Move remaining database unit tests from webkit/ to content/
BUG=338338
Review URL: https://codereview.chromium.org/281383003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@271847 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/browser')
-rw-r--r-- | webkit/browser/database/database_quota_client_unittest.cc | 285 | ||||
-rw-r--r-- | webkit/browser/database/database_tracker.h | 3 | ||||
-rw-r--r-- | webkit/browser/database/database_util_unittest.cc | 75 | ||||
-rw-r--r-- | webkit/browser/database/databases_table_unittest.cc | 150 |
4 files changed, 2 insertions, 511 deletions
diff --git a/webkit/browser/database/database_quota_client_unittest.cc b/webkit/browser/database/database_quota_client_unittest.cc deleted file mode 100644 index ffdcda0..0000000 --- a/webkit/browser/database/database_quota_client_unittest.cc +++ /dev/null @@ -1,285 +0,0 @@ -// Copyright (c) 2012 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 <map> - -#include "base/bind.h" -#include "base/files/file_path.h" -#include "base/message_loop/message_loop_proxy.h" -#include "base/run_loop.h" -#include "base/strings/utf_string_conversions.h" -#include "net/base/completion_callback.h" -#include "net/base/net_errors.h" -#include "testing/gtest/include/gtest/gtest.h" -#include "webkit/browser/database/database_quota_client.h" -#include "webkit/browser/database/database_tracker.h" -#include "webkit/browser/database/database_util.h" -#include "webkit/common/database/database_identifier.h" - -namespace webkit_database { - -// Declared to shorten the line lengths. -static const quota::StorageType kTemp = quota::kStorageTypeTemporary; -static const quota::StorageType kPerm = quota::kStorageTypePersistent; - -// Mock tracker class the mocks up those methods of the tracker -// that are used by the QuotaClient. -class MockDatabaseTracker : public DatabaseTracker { - public: - MockDatabaseTracker() - : DatabaseTracker(base::FilePath(), false, NULL, NULL, NULL), - delete_called_count_(0), - async_delete_(false) {} - - virtual bool GetOriginInfo( - const std::string& origin_identifier, - OriginInfo* info) OVERRIDE { - std::map<GURL, MockOriginInfo>::const_iterator found = - mock_origin_infos_.find( - webkit_database::GetOriginFromIdentifier(origin_identifier)); - if (found == mock_origin_infos_.end()) - return false; - *info = OriginInfo(found->second); - return true; - } - - virtual bool GetAllOriginIdentifiers( - std::vector<std::string>* origins_identifiers) OVERRIDE { - std::map<GURL, MockOriginInfo>::const_iterator iter; - for (iter = mock_origin_infos_.begin(); - iter != mock_origin_infos_.end(); - ++iter) { - origins_identifiers->push_back(iter->second.GetOriginIdentifier()); - } - return true; - } - - virtual bool GetAllOriginsInfo( - std::vector<OriginInfo>* origins_info) OVERRIDE { - std::map<GURL, MockOriginInfo>::const_iterator iter; - for (iter = mock_origin_infos_.begin(); - iter != mock_origin_infos_.end(); - ++iter) { - origins_info->push_back(OriginInfo(iter->second)); - } - return true; - } - - virtual int DeleteDataForOrigin( - const std::string& origin_identifier, - const net::CompletionCallback& callback) OVERRIDE { - ++delete_called_count_; - if (async_delete()) { - base::MessageLoopProxy::current()->PostTask( - FROM_HERE, - base::Bind(&MockDatabaseTracker::AsyncDeleteDataForOrigin, this, - callback)); - return net::ERR_IO_PENDING; - } - return net::OK; - } - - void AsyncDeleteDataForOrigin(const net::CompletionCallback& callback) { - callback.Run(net::OK); - } - - void AddMockDatabase(const GURL& origin, const char* name, int size) { - MockOriginInfo& info = mock_origin_infos_[origin]; - info.set_origin(webkit_database::GetIdentifierFromOrigin(origin)); - info.AddMockDatabase(base::ASCIIToUTF16(name), size); - } - - int delete_called_count() { return delete_called_count_; } - bool async_delete() { return async_delete_; } - void set_async_delete(bool async) { async_delete_ = async; } - - protected: - virtual ~MockDatabaseTracker() {} - - private: - class MockOriginInfo : public OriginInfo { - public: - void set_origin(const std::string& origin_identifier) { - origin_identifier_ = origin_identifier; - } - - void AddMockDatabase(const base::string16& name, int size) { - EXPECT_TRUE(database_info_.find(name) == database_info_.end()); - database_info_[name].first = size; - total_size_ += size; - } - }; - - int delete_called_count_; - bool async_delete_; - std::map<GURL, MockOriginInfo> mock_origin_infos_; -}; - - -// Base class for our test fixtures. -class DatabaseQuotaClientTest : public testing::Test { - public: - const GURL kOriginA; - const GURL kOriginB; - const GURL kOriginOther; - - DatabaseQuotaClientTest() - : kOriginA("http://host"), - kOriginB("http://host:8000"), - kOriginOther("http://other"), - usage_(0), - mock_tracker_(new MockDatabaseTracker), - weak_factory_(this) { - } - - int64 GetOriginUsage( - quota::QuotaClient* client, - const GURL& origin, - quota::StorageType type) { - usage_ = 0; - client->GetOriginUsage( - origin, type, - base::Bind(&DatabaseQuotaClientTest::OnGetOriginUsageComplete, - weak_factory_.GetWeakPtr())); - base::RunLoop().RunUntilIdle(); - return usage_; - } - - const std::set<GURL>& GetOriginsForType( - quota::QuotaClient* client, - quota::StorageType type) { - origins_.clear(); - client->GetOriginsForType( - type, - base::Bind(&DatabaseQuotaClientTest::OnGetOriginsComplete, - weak_factory_.GetWeakPtr())); - base::RunLoop().RunUntilIdle(); - return origins_; - } - - const std::set<GURL>& GetOriginsForHost( - quota::QuotaClient* client, - quota::StorageType type, - const std::string& host) { - origins_.clear(); - client->GetOriginsForHost( - type, host, - base::Bind(&DatabaseQuotaClientTest::OnGetOriginsComplete, - weak_factory_.GetWeakPtr())); - base::RunLoop().RunUntilIdle(); - return origins_; - } - - bool DeleteOriginData( - quota::QuotaClient* client, - quota::StorageType type, - const GURL& origin) { - delete_status_ = quota::kQuotaStatusUnknown; - client->DeleteOriginData( - origin, type, - base::Bind(&DatabaseQuotaClientTest::OnDeleteOriginDataComplete, - weak_factory_.GetWeakPtr())); - base::RunLoop().RunUntilIdle(); - return delete_status_ == quota::kQuotaStatusOk; - } - - MockDatabaseTracker* mock_tracker() { return mock_tracker_.get(); } - - - private: - void OnGetOriginUsageComplete(int64 usage) { - usage_ = usage; - } - - void OnGetOriginsComplete(const std::set<GURL>& origins) { - origins_ = origins; - } - - void OnDeleteOriginDataComplete(quota::QuotaStatusCode status) { - delete_status_ = status; - } - - base::MessageLoop message_loop_; - int64 usage_; - std::set<GURL> origins_; - quota::QuotaStatusCode delete_status_; - scoped_refptr<MockDatabaseTracker> mock_tracker_; - base::WeakPtrFactory<DatabaseQuotaClientTest> weak_factory_; -}; - - -TEST_F(DatabaseQuotaClientTest, GetOriginUsage) { - DatabaseQuotaClient client(base::MessageLoopProxy::current().get(), - mock_tracker()); - - EXPECT_EQ(0, GetOriginUsage(&client, kOriginA, kTemp)); - EXPECT_EQ(0, GetOriginUsage(&client, kOriginA, kPerm)); - - mock_tracker()->AddMockDatabase(kOriginA, "fooDB", 1000); - EXPECT_EQ(1000, GetOriginUsage(&client, kOriginA, kTemp)); - EXPECT_EQ(0, GetOriginUsage(&client, kOriginA, kPerm)); - - EXPECT_EQ(0, GetOriginUsage(&client, kOriginB, kPerm)); - EXPECT_EQ(0, GetOriginUsage(&client, kOriginB, kTemp)); -} - -TEST_F(DatabaseQuotaClientTest, GetOriginsForHost) { - DatabaseQuotaClient client(base::MessageLoopProxy::current().get(), - mock_tracker()); - - EXPECT_EQ(kOriginA.host(), kOriginB.host()); - EXPECT_NE(kOriginA.host(), kOriginOther.host()); - - std::set<GURL> origins = GetOriginsForHost(&client, kTemp, kOriginA.host()); - EXPECT_TRUE(origins.empty()); - - mock_tracker()->AddMockDatabase(kOriginA, "fooDB", 1000); - origins = GetOriginsForHost(&client, kTemp, kOriginA.host()); - EXPECT_EQ(origins.size(), 1ul); - EXPECT_TRUE(origins.find(kOriginA) != origins.end()); - - mock_tracker()->AddMockDatabase(kOriginB, "barDB", 1000); - origins = GetOriginsForHost(&client, kTemp, kOriginA.host()); - EXPECT_EQ(origins.size(), 2ul); - EXPECT_TRUE(origins.find(kOriginA) != origins.end()); - EXPECT_TRUE(origins.find(kOriginB) != origins.end()); - - EXPECT_TRUE(GetOriginsForHost(&client, kPerm, kOriginA.host()).empty()); - EXPECT_TRUE(GetOriginsForHost(&client, kTemp, kOriginOther.host()).empty()); -} - -TEST_F(DatabaseQuotaClientTest, GetOriginsForType) { - DatabaseQuotaClient client(base::MessageLoopProxy::current().get(), - mock_tracker()); - - EXPECT_TRUE(GetOriginsForType(&client, kTemp).empty()); - EXPECT_TRUE(GetOriginsForType(&client, kPerm).empty()); - - mock_tracker()->AddMockDatabase(kOriginA, "fooDB", 1000); - std::set<GURL> origins = GetOriginsForType(&client, kTemp); - EXPECT_EQ(origins.size(), 1ul); - EXPECT_TRUE(origins.find(kOriginA) != origins.end()); - - EXPECT_TRUE(GetOriginsForType(&client, kPerm).empty()); -} - -TEST_F(DatabaseQuotaClientTest, DeleteOriginData) { - DatabaseQuotaClient client(base::MessageLoopProxy::current().get(), - mock_tracker()); - - // Perm deletions are short circuited in the Client and - // should not reach the DatabaseTracker. - EXPECT_TRUE(DeleteOriginData(&client, kPerm, kOriginA)); - EXPECT_EQ(0, mock_tracker()->delete_called_count()); - - mock_tracker()->set_async_delete(false); - EXPECT_TRUE(DeleteOriginData(&client, kTemp, kOriginA)); - EXPECT_EQ(1, mock_tracker()->delete_called_count()); - - mock_tracker()->set_async_delete(true); - EXPECT_TRUE(DeleteOriginData(&client, kTemp, kOriginA)); - EXPECT_EQ(2, mock_tracker()->delete_called_count()); -} - -} // namespace webkit_database diff --git a/webkit/browser/database/database_tracker.h b/webkit/browser/database/database_tracker.h index 25d4986..24b5a1e 100644 --- a/webkit/browser/database/database_tracker.h +++ b/webkit/browser/database/database_tracker.h @@ -28,6 +28,7 @@ class MessageLoopProxy; namespace content { class DatabaseTracker_TestHelper_Test; +class MockDatabaseTracker; } namespace sql { @@ -184,7 +185,7 @@ class WEBKIT_STORAGE_BROWSER_EXPORT DatabaseTracker private: friend class base::RefCountedThreadSafe<DatabaseTracker>; friend class content::DatabaseTracker_TestHelper_Test; - friend class MockDatabaseTracker; // for testing + friend class content::MockDatabaseTracker; // for testing typedef std::map<std::string, std::set<base::string16> > DatabaseSet; typedef std::vector<std::pair<net::CompletionCallback, DatabaseSet> > diff --git a/webkit/browser/database/database_util_unittest.cc b/webkit/browser/database/database_util_unittest.cc deleted file mode 100644 index 6d3c08d..0000000 --- a/webkit/browser/database/database_util_unittest.cc +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright (c) 2011 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 "base/strings/string_piece.h" -#include "base/strings/utf_string_conversions.h" -#include "testing/gtest/include/gtest/gtest.h" -#include "webkit/browser/database/database_util.h" -#include "webkit/common/database/database_identifier.h" - -using base::ASCIIToUTF16; -using webkit_database::DatabaseUtil; - -static void TestVfsFilePath(bool expected_result, - const char* vfs_file_name, - const char* expected_origin_identifier = "", - const char* expected_database_name = "", - const char* expected_sqlite_suffix = "") { - std::string origin_identifier; - base::string16 database_name; - base::string16 sqlite_suffix; - EXPECT_EQ(expected_result, - DatabaseUtil::CrackVfsFileName(ASCIIToUTF16(vfs_file_name), - &origin_identifier, - &database_name, - &sqlite_suffix)); - EXPECT_EQ(expected_origin_identifier, origin_identifier); - EXPECT_EQ(ASCIIToUTF16(expected_database_name), database_name); - EXPECT_EQ(ASCIIToUTF16(expected_sqlite_suffix), sqlite_suffix); -} - -static GURL ToAndFromOriginIdentifier(const GURL origin_url) { - std::string id = webkit_database::GetIdentifierFromOrigin(origin_url); - return webkit_database::GetOriginFromIdentifier(id); -} - -static void TestValidOriginIdentifier(bool expected_result, - const std::string& id) { - EXPECT_EQ(expected_result, - DatabaseUtil::IsValidOriginIdentifier(id)); -} - -namespace webkit_database { - -// Test DatabaseUtil::CrackVfsFilePath on various inputs. -TEST(DatabaseUtilTest, CrackVfsFilePathTest) { - TestVfsFilePath(true, "origin/#", "origin", "", ""); - TestVfsFilePath(true, "origin/#suffix", "origin", "", "suffix"); - TestVfsFilePath(true, "origin/db_name#", "origin", "db_name", ""); - TestVfsFilePath(true, "origin/db_name#suffix", "origin", "db_name", "suffix"); - TestVfsFilePath(false, "origindb_name#"); - TestVfsFilePath(false, "origindb_name#suffix"); - TestVfsFilePath(false, "origin/db_name"); - TestVfsFilePath(false, "origin#db_name/suffix"); - TestVfsFilePath(false, "/db_name#"); - TestVfsFilePath(false, "/db_name#suffix"); -} - -TEST(DatabaseUtilTest, OriginIdentifiers) { - const GURL kFileOrigin(GURL("file:///").GetOrigin()); - const GURL kHttpOrigin(GURL("http://bar/").GetOrigin()); - EXPECT_EQ(kFileOrigin, ToAndFromOriginIdentifier(kFileOrigin)); - EXPECT_EQ(kHttpOrigin, ToAndFromOriginIdentifier(kHttpOrigin)); -} - -TEST(DatabaseUtilTest, IsValidOriginIdentifier) { - TestValidOriginIdentifier(true, "http_bar_0"); - TestValidOriginIdentifier(true, ""); - TestValidOriginIdentifier(false, "bad..id"); - TestValidOriginIdentifier(false, "bad/id"); - TestValidOriginIdentifier(false, "bad\\id"); - TestValidOriginIdentifier(false, std::string("bad\0id", 6)); -} - -} // namespace webkit_database diff --git a/webkit/browser/database/databases_table_unittest.cc b/webkit/browser/database/databases_table_unittest.cc deleted file mode 100644 index d1192ad..0000000 --- a/webkit/browser/database/databases_table_unittest.cc +++ /dev/null @@ -1,150 +0,0 @@ -// Copyright (c) 2012 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 "base/bind.h" -#include "base/strings/string_util.h" -#include "base/strings/utf_string_conversions.h" -#include "sql/connection.h" -#include "sql/statement.h" -#include "sql/test/scoped_error_ignorer.h" -#include "testing/gtest/include/gtest/gtest.h" -#include "third_party/sqlite/sqlite3.h" -#include "webkit/browser/database/databases_table.h" - -using base::ASCIIToUTF16; - -namespace webkit_database { - -static void CheckDetailsAreEqual(const DatabaseDetails& d1, - const DatabaseDetails& d2) { - EXPECT_EQ(d1.origin_identifier, d2.origin_identifier); - EXPECT_EQ(d1.database_name, d2.database_name); - EXPECT_EQ(d1.description, d2.description); - EXPECT_EQ(d1.estimated_size, d2.estimated_size); -} - -static bool DatabasesTableIsEmpty(sql::Connection* db) { - sql::Statement statement(db->GetCachedStatement( - SQL_FROM_HERE, "SELECT COUNT(*) FROM Databases")); - return (statement.is_valid() && statement.Step() && !statement.ColumnInt(0)); -} - -TEST(DatabasesTableTest, TestIt) { - // Initialize the 'Databases' table. - sql::Connection db; - - sql::ScopedErrorIgnorer ignore_errors; - // TODO(shess): Suppressing SQLITE_CONSTRAINT because the code - // expects that and handles the resulting error. Consider revising - // the code to use INSERT OR IGNORE (which would not throw - // SQLITE_CONSTRAINT) and then check ChangeCount() to see if any - // changes were made. - ignore_errors.IgnoreError(SQLITE_CONSTRAINT); - - // Initialize the temp dir and the 'Databases' table. - EXPECT_TRUE(db.OpenInMemory()); - DatabasesTable databases_table(&db); - EXPECT_TRUE(databases_table.Init()); - - // The 'Databases' table should be empty. - EXPECT_TRUE(DatabasesTableIsEmpty(&db)); - - // Create the details for a databases. - DatabaseDetails details_in1; - DatabaseDetails details_out1; - details_in1.origin_identifier = "origin1"; - details_in1.database_name = ASCIIToUTF16("db1"); - details_in1.description = ASCIIToUTF16("description_db1"); - details_in1.estimated_size = 100; - - // Updating details for this database should fail. - EXPECT_FALSE(databases_table.UpdateDatabaseDetails(details_in1)); - EXPECT_FALSE(databases_table.GetDatabaseDetails( - details_in1.origin_identifier, - details_in1.database_name, - &details_out1)); - - // Inserting details for this database should pass. - EXPECT_TRUE(databases_table.InsertDatabaseDetails(details_in1)); - EXPECT_TRUE(databases_table.GetDatabaseDetails( - details_in1.origin_identifier, - details_in1.database_name, - &details_out1)); - EXPECT_EQ(1, databases_table.GetDatabaseID(details_in1.origin_identifier, - details_in1.database_name)); - - // Check that the details were correctly written to the database. - CheckDetailsAreEqual(details_in1, details_out1); - - // Check that inserting a duplicate row fails. - EXPECT_FALSE(databases_table.InsertDatabaseDetails(details_in1)); - - // Insert details for another database with the same origin. - DatabaseDetails details_in2; - details_in2.origin_identifier = "origin1"; - details_in2.database_name = ASCIIToUTF16("db2"); - details_in2.description = ASCIIToUTF16("description_db2"); - details_in2.estimated_size = 200; - EXPECT_TRUE(databases_table.InsertDatabaseDetails(details_in2)); - EXPECT_EQ(2, databases_table.GetDatabaseID(details_in2.origin_identifier, - details_in2.database_name)); - - // Insert details for a third database with a different origin. - DatabaseDetails details_in3; - details_in3.origin_identifier = "origin2"; - details_in3.database_name = ASCIIToUTF16("db3"); - details_in3.description = ASCIIToUTF16("description_db3"); - details_in3.estimated_size = 300; - EXPECT_TRUE(databases_table.InsertDatabaseDetails(details_in3)); - EXPECT_EQ(3, databases_table.GetDatabaseID(details_in3.origin_identifier, - details_in3.database_name)); - - // There should be no database with origin "origin3". - std::vector<DatabaseDetails> details_out_origin3; - EXPECT_TRUE(databases_table.GetAllDatabaseDetailsForOriginIdentifier( - "origin3", &details_out_origin3)); - EXPECT_TRUE(details_out_origin3.empty()); - - // There should be only two databases with origin "origin1". - std::vector<DatabaseDetails> details_out_origin1; - EXPECT_TRUE(databases_table.GetAllDatabaseDetailsForOriginIdentifier( - details_in1.origin_identifier, &details_out_origin1)); - EXPECT_EQ(size_t(2), details_out_origin1.size()); - CheckDetailsAreEqual(details_in1, details_out_origin1[0]); - CheckDetailsAreEqual(details_in2, details_out_origin1[1]); - - // Get the list of all origins: should be "origin1" and "origin2". - std::vector<std::string> origins_out; - EXPECT_TRUE(databases_table.GetAllOriginIdentifiers(&origins_out)); - EXPECT_EQ(size_t(2), origins_out.size()); - EXPECT_EQ(details_in1.origin_identifier, origins_out[0]); - EXPECT_EQ(details_in3.origin_identifier, origins_out[1]); - - // Delete an origin and check that it's no longer in the table. - origins_out.clear(); - EXPECT_TRUE(databases_table.DeleteOriginIdentifier( - details_in3.origin_identifier)); - EXPECT_TRUE(databases_table.GetAllOriginIdentifiers(&origins_out)); - EXPECT_EQ(size_t(1), origins_out.size()); - EXPECT_EQ(details_in1.origin_identifier, origins_out[0]); - - // Deleting an origin that doesn't have any record in this table should fail. - EXPECT_FALSE(databases_table.DeleteOriginIdentifier("unknown_origin")); - - // Delete the details for 'db1' and check that they're no longer there. - EXPECT_TRUE(databases_table.DeleteDatabaseDetails( - details_in1.origin_identifier, details_in1.database_name)); - EXPECT_FALSE(databases_table.GetDatabaseDetails( - details_in1.origin_identifier, - details_in1.database_name, - &details_out1)); - - // Check that trying to delete a record that doesn't exist fails. - EXPECT_FALSE(databases_table.DeleteDatabaseDetails( - "unknown_origin", ASCIIToUTF16("unknown_database"))); - - ASSERT_TRUE(ignore_errors.CheckIgnoredErrors()); -} - -} // namespace webkit_database |