| // 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_appcache_helper.h" |
| |
| #include "base/stl_util-inl.h" |
| #include "chrome/test/testing_browser_process_test.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_; } |
| |
| void callback() { |
| have_result_ = true; |
| } |
| |
| private: |
| bool have_result_; |
| }; |
| |
| } // namespace |
| |
| typedef TestingBrowserProcessTest CannedBrowsingDataAppCacheHelperTest; |
| |
| TEST_F(CannedBrowsingDataAppCacheHelperTest, SetInfo) { |
| TestingProfile profile; |
| |
| GURL manifest1("http://example1.com/manifest.xml"); |
| GURL manifest2("http://example2.com/path1/manifest.xml"); |
| GURL manifest3("http://example2.com/path2/manifest.xml"); |
| |
| scoped_refptr<CannedBrowsingDataAppCacheHelper> helper( |
| new CannedBrowsingDataAppCacheHelper(&profile)); |
| helper->AddAppCache(manifest1); |
| helper->AddAppCache(manifest2); |
| helper->AddAppCache(manifest3); |
| |
| TestCompletionCallback callback; |
| helper->StartFetching( |
| NewCallback(&callback, &TestCompletionCallback::callback)); |
| ASSERT_TRUE(callback.have_result()); |
| |
| std::map<GURL, appcache::AppCacheInfoVector>& collection = |
| helper->info_collection()->infos_by_origin; |
| |
| ASSERT_EQ(2u, collection.size()); |
| EXPECT_TRUE(ContainsKey(collection, manifest1.GetOrigin())); |
| ASSERT_EQ(1u, collection[manifest1.GetOrigin()].size()); |
| EXPECT_EQ(manifest1, collection[manifest1.GetOrigin()].at(0).manifest_url); |
| |
| EXPECT_TRUE(ContainsKey(collection, manifest2.GetOrigin())); |
| EXPECT_EQ(2u, collection[manifest2.GetOrigin()].size()); |
| std::set<GURL> manifest_results; |
| manifest_results.insert(collection[manifest2.GetOrigin()].at(0).manifest_url); |
| manifest_results.insert(collection[manifest2.GetOrigin()].at(1).manifest_url); |
| EXPECT_TRUE(ContainsKey(manifest_results, manifest2)); |
| EXPECT_TRUE(ContainsKey(manifest_results, manifest3)); |
| } |
| |
| TEST_F(CannedBrowsingDataAppCacheHelperTest, Unique) { |
| TestingProfile profile; |
| |
| GURL manifest("http://example.com/manifest.xml"); |
| |
| scoped_refptr<CannedBrowsingDataAppCacheHelper> helper( |
| new CannedBrowsingDataAppCacheHelper(&profile)); |
| helper->AddAppCache(manifest); |
| helper->AddAppCache(manifest); |
| |
| TestCompletionCallback callback; |
| helper->StartFetching( |
| NewCallback(&callback, &TestCompletionCallback::callback)); |
| ASSERT_TRUE(callback.have_result()); |
| |
| std::map<GURL, appcache::AppCacheInfoVector>& collection = |
| helper->info_collection()->infos_by_origin; |
| |
| ASSERT_EQ(1u, collection.size()); |
| EXPECT_TRUE(ContainsKey(collection, manifest.GetOrigin())); |
| ASSERT_EQ(1u, collection[manifest.GetOrigin()].size()); |
| EXPECT_EQ(manifest, collection[manifest.GetOrigin()].at(0).manifest_url); |
| } |
| |
| TEST_F(CannedBrowsingDataAppCacheHelperTest, Empty) { |
| TestingProfile profile; |
| |
| GURL manifest("http://example.com/manifest.xml"); |
| |
| scoped_refptr<CannedBrowsingDataAppCacheHelper> helper( |
| new CannedBrowsingDataAppCacheHelper(&profile)); |
| |
| ASSERT_TRUE(helper->empty()); |
| helper->AddAppCache(manifest); |
| ASSERT_FALSE(helper->empty()); |
| helper->Reset(); |
| ASSERT_TRUE(helper->empty()); |
| } |