browsing_data_database_helper_unittest.cc revision c407dc5cd9bdc5668497f21b26b09d988ab439de
1c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Copyright (c) 2010 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/browsing_data_database_helper.h" 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/test/testing_profile.h" 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "testing/gtest/include/gtest/gtest.h" 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace { 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass TestCompletionCallback 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch : public CallbackRunner<Tuple1< 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const std::vector<BrowsingDataDatabaseHelper::DatabaseInfo>& > > { 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch TestCompletionCallback() 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch : have_result_(false) { 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool have_result() const { return have_result_; } 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const std::vector<BrowsingDataDatabaseHelper::DatabaseInfo>& result() { 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return result_; 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void RunWithParams( 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const Tuple1<const std::vector< 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch BrowsingDataDatabaseHelper::DatabaseInfo>& >& params) { 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch have_result_ = true; 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch result_ = params.a; 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private: 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool have_result_; 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch std::vector<BrowsingDataDatabaseHelper::DatabaseInfo> result_; 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch DISALLOW_COPY_AND_ASSIGN(TestCompletionCallback); 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} // namespace 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 40c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST(CannedBrowsingDataDatabaseTest, AddDatabase) { 41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch TestingProfile profile; 42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const GURL origin1("http://host1:1/"); 44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const GURL origin2("http://host2:1/"); 45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const char origin_str1[] = "http_host1_1"; 46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const char origin_str2[] = "http_host2_1"; 47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const char db1[] = "db1"; 48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const char db2[] = "db2"; 49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const char db3[] = "db3"; 50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_refptr<CannedBrowsingDataDatabaseHelper> helper = 52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch new CannedBrowsingDataDatabaseHelper(&profile); 53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch helper->AddDatabase(origin1, db1, ""); 54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch helper->AddDatabase(origin1, db2, ""); 55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch helper->AddDatabase(origin2, db3, ""); 56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch TestCompletionCallback callback; 58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch helper->StartFetching(&callback); 59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(callback.have_result()); 60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch std::vector<BrowsingDataDatabaseHelper::DatabaseInfo> result = 62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch callback.result(); 63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ(3u, result.size()); 65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_STREQ(origin_str1, result[0].origin_identifier.c_str()); 66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_STREQ(db1, result[0].database_name.c_str()); 67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_STREQ(origin_str1, result[1].origin_identifier.c_str()); 68c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_STREQ(db2, result[1].database_name.c_str()); 69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_STREQ(origin_str2, result[2].origin_identifier.c_str()); 70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_STREQ(db3, result[2].database_name.c_str()); 71c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 72c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 73c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST(CannedBrowsingDataDatabaseTest, Unique) { 74c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch TestingProfile profile; 75c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 76c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const GURL origin("http://host1:1/"); 77c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const char origin_str[] = "http_host1_1"; 78c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const char db[] = "db1"; 79c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 80c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_refptr<CannedBrowsingDataDatabaseHelper> helper = 81c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch new CannedBrowsingDataDatabaseHelper(&profile); 82c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch helper->AddDatabase(origin, db, ""); 83c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch helper->AddDatabase(origin, db, ""); 84c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 85c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch TestCompletionCallback callback; 86c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch helper->StartFetching(&callback); 87c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(callback.have_result()); 88c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 89c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch std::vector<BrowsingDataDatabaseHelper::DatabaseInfo> result = 90c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch callback.result(); 91c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 92c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ(1u, result.size()); 93c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_STREQ(origin_str, result[0].origin_identifier.c_str()); 94c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_STREQ(db, result[0].database_name.c_str()); 95c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 96