1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/browsing_data_appcache_helper.h"
6
7 #include "base/stl_util-inl.h"
8 #include "chrome/test/testing_browser_process_test.h"
9 #include "chrome/test/testing_profile.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11
12 namespace {
13 class TestCompletionCallback {
14 public:
TestCompletionCallback()15 TestCompletionCallback()
16 : have_result_(false) {
17 }
18
have_result() const19 bool have_result() const { return have_result_; }
20
callback()21 void callback() {
22 have_result_ = true;
23 }
24
25 private:
26 bool have_result_;
27 };
28
29 } // namespace
30
31 typedef TestingBrowserProcessTest CannedBrowsingDataAppCacheHelperTest;
32
TEST_F(CannedBrowsingDataAppCacheHelperTest,SetInfo)33 TEST_F(CannedBrowsingDataAppCacheHelperTest, SetInfo) {
34 TestingProfile profile;
35
36 GURL manifest1("http://example1.com/manifest.xml");
37 GURL manifest2("http://example2.com/path1/manifest.xml");
38 GURL manifest3("http://example2.com/path2/manifest.xml");
39
40 scoped_refptr<CannedBrowsingDataAppCacheHelper> helper(
41 new CannedBrowsingDataAppCacheHelper(&profile));
42 helper->AddAppCache(manifest1);
43 helper->AddAppCache(manifest2);
44 helper->AddAppCache(manifest3);
45
46 TestCompletionCallback callback;
47 helper->StartFetching(
48 NewCallback(&callback, &TestCompletionCallback::callback));
49 ASSERT_TRUE(callback.have_result());
50
51 std::map<GURL, appcache::AppCacheInfoVector>& collection =
52 helper->info_collection()->infos_by_origin;
53
54 ASSERT_EQ(2u, collection.size());
55 EXPECT_TRUE(ContainsKey(collection, manifest1.GetOrigin()));
56 ASSERT_EQ(1u, collection[manifest1.GetOrigin()].size());
57 EXPECT_EQ(manifest1, collection[manifest1.GetOrigin()].at(0).manifest_url);
58
59 EXPECT_TRUE(ContainsKey(collection, manifest2.GetOrigin()));
60 EXPECT_EQ(2u, collection[manifest2.GetOrigin()].size());
61 std::set<GURL> manifest_results;
62 manifest_results.insert(collection[manifest2.GetOrigin()].at(0).manifest_url);
63 manifest_results.insert(collection[manifest2.GetOrigin()].at(1).manifest_url);
64 EXPECT_TRUE(ContainsKey(manifest_results, manifest2));
65 EXPECT_TRUE(ContainsKey(manifest_results, manifest3));
66 }
67
TEST_F(CannedBrowsingDataAppCacheHelperTest,Unique)68 TEST_F(CannedBrowsingDataAppCacheHelperTest, Unique) {
69 TestingProfile profile;
70
71 GURL manifest("http://example.com/manifest.xml");
72
73 scoped_refptr<CannedBrowsingDataAppCacheHelper> helper(
74 new CannedBrowsingDataAppCacheHelper(&profile));
75 helper->AddAppCache(manifest);
76 helper->AddAppCache(manifest);
77
78 TestCompletionCallback callback;
79 helper->StartFetching(
80 NewCallback(&callback, &TestCompletionCallback::callback));
81 ASSERT_TRUE(callback.have_result());
82
83 std::map<GURL, appcache::AppCacheInfoVector>& collection =
84 helper->info_collection()->infos_by_origin;
85
86 ASSERT_EQ(1u, collection.size());
87 EXPECT_TRUE(ContainsKey(collection, manifest.GetOrigin()));
88 ASSERT_EQ(1u, collection[manifest.GetOrigin()].size());
89 EXPECT_EQ(manifest, collection[manifest.GetOrigin()].at(0).manifest_url);
90 }
91
TEST_F(CannedBrowsingDataAppCacheHelperTest,Empty)92 TEST_F(CannedBrowsingDataAppCacheHelperTest, Empty) {
93 TestingProfile profile;
94
95 GURL manifest("http://example.com/manifest.xml");
96
97 scoped_refptr<CannedBrowsingDataAppCacheHelper> helper(
98 new CannedBrowsingDataAppCacheHelper(&profile));
99
100 ASSERT_TRUE(helper->empty());
101 helper->AddAppCache(manifest);
102 ASSERT_FALSE(helper->empty());
103 helper->Reset();
104 ASSERT_TRUE(helper->empty());
105 }
106