summaryrefslogtreecommitdiffstats
path: root/webkit/browser
diff options
context:
space:
mode:
authorpilgrim@chromium.org <pilgrim@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-21 03:37:40 +0000
committerpilgrim@chromium.org <pilgrim@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-21 03:37:40 +0000
commit8ca5150af68a0cadfa19652e71acd5fc19ae67b2 (patch)
treed8d96af23b5b8039188506375b5b7e7ed3c23381 /webkit/browser
parent2a649ded13106bbbb051247564a8732200c7f46d (diff)
downloadchromium_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.cc285
-rw-r--r--webkit/browser/database/database_tracker.h3
-rw-r--r--webkit/browser/database/database_util_unittest.cc75
-rw-r--r--webkit/browser/database/databases_table_unittest.cc150
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