// 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 "chrome/browser/browsing_data_database_helper.h" #include "base/file_util.h" #include "chrome/test/testing_profile.h" #include "testing/gtest/include/gtest/gtest.h" namespace { class TestCompletionCallback { public: TestCompletionCallback() : have_result_(false) { } bool have_result() const { return have_result_; } const std::vector& result() { return result_; } void callback(const std::vector< BrowsingDataDatabaseHelper::DatabaseInfo>& info) { have_result_ = true; result_ = info; } private: bool have_result_; std::vector result_; DISALLOW_COPY_AND_ASSIGN(TestCompletionCallback); }; } // namespace TEST(CannedBrowsingDataDatabaseTest, AddDatabase) { TestingProfile profile; const GURL origin1("http://host1:1/"); const GURL origin2("http://host2:1/"); const char origin_str1[] = "http_host1_1"; const char origin_str2[] = "http_host2_1"; const char db1[] = "db1"; const char db2[] = "db2"; const char db3[] = "db3"; scoped_refptr helper = new CannedBrowsingDataDatabaseHelper(&profile); helper->AddDatabase(origin1, db1, ""); helper->AddDatabase(origin1, db2, ""); helper->AddDatabase(origin2, db3, ""); TestCompletionCallback callback; helper->StartFetching( NewCallback(&callback, &TestCompletionCallback::callback)); ASSERT_TRUE(callback.have_result()); std::vector result = callback.result(); ASSERT_EQ(3u, result.size()); EXPECT_STREQ(origin_str1, result[0].origin_identifier.c_str()); EXPECT_STREQ(db1, result[0].database_name.c_str()); EXPECT_STREQ(origin_str1, result[1].origin_identifier.c_str()); EXPECT_STREQ(db2, result[1].database_name.c_str()); EXPECT_STREQ(origin_str2, result[2].origin_identifier.c_str()); EXPECT_STREQ(db3, result[2].database_name.c_str()); } TEST(CannedBrowsingDataDatabaseTest, Unique) { TestingProfile profile; const GURL origin("http://host1:1/"); const char origin_str[] = "http_host1_1"; const char db[] = "db1"; scoped_refptr helper = new CannedBrowsingDataDatabaseHelper(&profile); helper->AddDatabase(origin, db, ""); helper->AddDatabase(origin, db, ""); TestCompletionCallback callback; helper->StartFetching( NewCallback(&callback, &TestCompletionCallback::callback)); ASSERT_TRUE(callback.have_result()); std::vector result = callback.result(); ASSERT_EQ(1u, result.size()); EXPECT_STREQ(origin_str, result[0].origin_identifier.c_str()); EXPECT_STREQ(db, result[0].database_name.c_str()); } TEST(CannedBrowsingDataDatabaseTest, Empty) { TestingProfile profile; const GURL origin("http://host1:1/"); const char db[] = "db1"; scoped_refptr helper = new CannedBrowsingDataDatabaseHelper(&profile); ASSERT_TRUE(helper->empty()); helper->AddDatabase(origin, db, ""); ASSERT_FALSE(helper->empty()); helper->Reset(); ASSERT_TRUE(helper->empty()); }