Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(41)

Side by Side Diff: chrome/browser/history/top_sites_cache_unittest.cc

Issue 53283004: Adding support for forced URLs to TopSites. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Removed GetAllMostVisited. Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/history/top_sites_cache.cc ('k') | chrome/browser/history/top_sites_database.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/history/top_sites_cache.h" 5 #include "chrome/browser/history/top_sites_cache.h"
6 6
7 #include <set> 7 #include <set>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
11 #include "base/strings/string16.h" 11 #include "base/strings/string16.h"
12 #include "base/strings/string_number_conversions.h" 12 #include "base/strings/string_number_conversions.h"
13 #include "base/strings/utf_string_conversions.h" 13 #include "base/strings/utf_string_conversions.h"
14 #include "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
15 15
16 namespace history { 16 namespace history {
17 17
18 namespace { 18 namespace {
19 19
20 class TopSitesCacheTest : public testing::Test { 20 class TopSitesCacheTest : public testing::Test {
21 public: 21 public:
22 TopSitesCacheTest() { 22 TopSitesCacheTest() {
23 } 23 }
24 24
25 protected: 25 protected:
26 // Initializes |top_sites_| and |cache_| based on |spec|, which is a list of 26 // Initializes |top_sites_| on |spec|, which is a list of URL strings with
27 // URL strings with optional indents: indentated URLs redirect to the last 27 // optional indents: indentated URLs redirect to the last non-indented URL.
28 // non-indented URL. Titles are assigned as "Title 1", "Title 2", etc., in the 28 // Titles are assigned as "Title 1", "Title 2", etc., in the order of
29 // order of appearance. See |kTopSitesSpecBasic| for an example. 29 // appearance. See |kTopSitesSpecBasic| for an example. This function does not
30 // update |cache_| so you can manipulate |top_sites_| before you update it.
31 void BuildTopSites(const char** spec, size_t size);
32
33 // Initializes |top_sites_| and |cache_| based on |spec|.
30 void InitTopSiteCache(const char** spec, size_t size); 34 void InitTopSiteCache(const char** spec, size_t size);
31 35
32 MostVisitedURLList top_sites_; 36 MostVisitedURLList top_sites_;
33 TopSitesCache cache_; 37 TopSitesCache cache_;
34 38
35 private: 39 private:
36 DISALLOW_COPY_AND_ASSIGN(TopSitesCacheTest); 40 DISALLOW_COPY_AND_ASSIGN(TopSitesCacheTest);
37 }; 41 };
38 42
39 void TopSitesCacheTest::InitTopSiteCache(const char** spec, size_t size) { 43 void TopSitesCacheTest::BuildTopSites(const char** spec, size_t size) {
40 std::set<std::string> urls_seen; 44 std::set<std::string> urls_seen;
41 for (size_t i = 0; i < size; ++i) { 45 for (size_t i = 0; i < size; ++i) {
42 const char* spec_item = spec[i]; 46 const char* spec_item = spec[i];
43 while (*spec_item && *spec_item == ' ') // Eat indent. 47 while (*spec_item && *spec_item == ' ') // Eat indent.
44 ++spec_item; 48 ++spec_item;
45 if (urls_seen.find(spec_item) != urls_seen.end()) 49 if (urls_seen.find(spec_item) != urls_seen.end())
46 NOTREACHED() << "Duplicate URL found: " << spec_item; 50 NOTREACHED() << "Duplicate URL found: " << spec_item;
47 urls_seen.insert(spec_item); 51 urls_seen.insert(spec_item);
48 if (spec_item == spec[i]) { // No indent: add new MostVisitedURL. 52 if (spec_item == spec[i]) { // No indent: add new MostVisitedURL.
49 string16 title(ASCIIToUTF16("Title ") + 53 string16 title(ASCIIToUTF16("Title ") +
50 base::Uint64ToString16(top_sites_.size() + 1)); 54 base::Uint64ToString16(top_sites_.size() + 1));
51 top_sites_.push_back(MostVisitedURL(GURL(spec_item), title)); 55 top_sites_.push_back(MostVisitedURL(GURL(spec_item), title));
52 } 56 }
53 ASSERT_TRUE(!top_sites_.empty()); 57 ASSERT_TRUE(!top_sites_.empty());
54 // Set up redirect to canonical URL. Canonical URL redirects to itself, too. 58 // Set up redirect to canonical URL. Canonical URL redirects to itself, too.
55 top_sites_.back().redirects.push_back(GURL(spec_item)); 59 top_sites_.back().redirects.push_back(GURL(spec_item));
56 } 60 }
61 }
62
63 void TopSitesCacheTest::InitTopSiteCache(const char** spec, size_t size) {
64 BuildTopSites(spec, size);
57 cache_.SetTopSites(top_sites_); 65 cache_.SetTopSites(top_sites_);
58 } 66 }
59 67
60 const char* kTopSitesSpecBasic[] = { 68 const char* kTopSitesSpecBasic[] = {
61 "http://www.google.com", 69 "http://www.google.com",
62 " http://www.gogle.com", // Redirects. 70 " http://www.gogle.com", // Redirects.
63 " http://www.gooogle.com", // Redirects. 71 " http://www.gooogle.com", // Redirects.
64 "http://www.youtube.com/a/b", 72 "http://www.youtube.com/a/b",
65 " http://www.youtube.com/a/b?test=1", // Redirects. 73 " http://www.youtube.com/a/b?test=1", // Redirects.
66 "https://www.google.com/", 74 "https://www.google.com/",
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 }; 234 };
227 235
228 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_cases); ++i) { 236 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_cases); ++i) {
229 std::string expected(test_cases[i].expected); 237 std::string expected(test_cases[i].expected);
230 std::string query(test_cases[i].query); 238 std::string query(test_cases[i].query);
231 GURL result(cache_.GetGeneralizedCanonicalURL(GURL(query))); 239 GURL result(cache_.GetGeneralizedCanonicalURL(GURL(query)));
232 EXPECT_EQ(expected, result.spec()) << " for test_case[" << i << "]"; 240 EXPECT_EQ(expected, result.spec()) << " for test_case[" << i << "]";
233 } 241 }
234 } 242 }
235 243
244 // This test ensures forced URLs behave in the expected way.
245 TEST_F(TopSitesCacheTest, CacheForcedURLs) {
246 // Forced URLs must always appear at the beginning of the list.
247 BuildTopSites(kTopSitesSpecBasic, arraysize(kTopSitesSpecBasic));
248 top_sites_[0].last_forced_time = base::Time::FromJsTime(1000);
249 top_sites_[1].last_forced_time = base::Time::FromJsTime(2000);
250 cache_.SetTopSites(top_sites_);
251
252 EXPECT_EQ(2u, cache_.GetNumForcedURLs());
253 EXPECT_EQ(2u, cache_.GetNumNonForcedURLs());
254 }
255
236 } // namespace 256 } // namespace
237 257
238 } // namespace history 258 } // namespace history
OLDNEW
« no previous file with comments | « chrome/browser/history/top_sites_cache.cc ('k') | chrome/browser/history/top_sites_database.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698