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_appcache_helper.h" 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/stl_util-inl.h" 8dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "chrome/test/testing_browser_process_test.h" 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/test/testing_profile.h" 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "testing/gtest/include/gtest/gtest.h" 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace { 133345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickclass TestCompletionCallback { 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 213345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick void callback() { 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch have_result_ = true; 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 243345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private: 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool have_result_; 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} // namespace 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 31dc0f95d653279beabeb9817299e2902918ba123eKristian Monsentypedef TestingBrowserProcessTest CannedBrowsingDataAppCacheHelperTest; 32dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 33dc0f95d653279beabeb9817299e2902918ba123eKristian MonsenTEST_F(CannedBrowsingDataAppCacheHelperTest, SetInfo) { 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch TestingProfile profile; 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GURL manifest1("http://example1.com/manifest.xml"); 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GURL manifest2("http://example2.com/path1/manifest.xml"); 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GURL manifest3("http://example2.com/path2/manifest.xml"); 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 40513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch scoped_refptr<CannedBrowsingDataAppCacheHelper> helper( 41513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch new CannedBrowsingDataAppCacheHelper(&profile)); 42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch helper->AddAppCache(manifest1); 43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch helper->AddAppCache(manifest2); 44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch helper->AddAppCache(manifest3); 45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch TestCompletionCallback callback; 473345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick helper->StartFetching( 483345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick NewCallback(&callback, &TestCompletionCallback::callback)); 49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(callback.have_result()); 50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch std::map<GURL, appcache::AppCacheInfoVector>& collection = 52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch helper->info_collection()->infos_by_origin; 53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ(2u, collection.size()); 55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(ContainsKey(collection, manifest1.GetOrigin())); 56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ(1u, collection[manifest1.GetOrigin()].size()); 57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(manifest1, collection[manifest1.GetOrigin()].at(0).manifest_url); 58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(ContainsKey(collection, manifest2.GetOrigin())); 60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(2u, collection[manifest2.GetOrigin()].size()); 61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch std::set<GURL> manifest_results; 62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch manifest_results.insert(collection[manifest2.GetOrigin()].at(0).manifest_url); 63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch manifest_results.insert(collection[manifest2.GetOrigin()].at(1).manifest_url); 64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(ContainsKey(manifest_results, manifest2)); 65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(ContainsKey(manifest_results, manifest3)); 66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 68dc0f95d653279beabeb9817299e2902918ba123eKristian MonsenTEST_F(CannedBrowsingDataAppCacheHelperTest, Unique) { 69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch TestingProfile profile; 70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 71c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GURL manifest("http://example.com/manifest.xml"); 72c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 73513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch scoped_refptr<CannedBrowsingDataAppCacheHelper> helper( 74513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch new CannedBrowsingDataAppCacheHelper(&profile)); 75c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch helper->AddAppCache(manifest); 76c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch helper->AddAppCache(manifest); 77c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 78c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch TestCompletionCallback callback; 793345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick helper->StartFetching( 803345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick NewCallback(&callback, &TestCompletionCallback::callback)); 81c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(callback.have_result()); 82c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 83c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch std::map<GURL, appcache::AppCacheInfoVector>& collection = 84c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch helper->info_collection()->infos_by_origin; 85c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 86c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ(1u, collection.size()); 87c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(ContainsKey(collection, manifest.GetOrigin())); 88c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ(1u, collection[manifest.GetOrigin()].size()); 89c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(manifest, collection[manifest.GetOrigin()].at(0).manifest_url); 90c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 913345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 92dc0f95d653279beabeb9817299e2902918ba123eKristian MonsenTEST_F(CannedBrowsingDataAppCacheHelperTest, Empty) { 933345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick TestingProfile profile; 943345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 953345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick GURL manifest("http://example.com/manifest.xml"); 963345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 97513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch scoped_refptr<CannedBrowsingDataAppCacheHelper> helper( 98513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch new CannedBrowsingDataAppCacheHelper(&profile)); 993345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 1003345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick ASSERT_TRUE(helper->empty()); 1013345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick helper->AddAppCache(manifest); 1023345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick ASSERT_FALSE(helper->empty()); 1033345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick helper->Reset(); 1043345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick ASSERT_TRUE(helper->empty()); 1053345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick} 106