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