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

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

Issue 8355031: Most Visited: remove over-eager optimization that causes a lot of blank thumbnails (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix test and remove unused function Created 9 years, 2 months 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.h ('k') | chrome/browser/history/top_sites_unittest.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 (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "base/logging.h" 7 #include "base/logging.h"
8 #include "base/memory/ref_counted_memory.h" 8 #include "base/memory/ref_counted_memory.h"
9 9
10 namespace history { 10 namespace history {
11 11
12 TopSitesCache::TopSitesCache() { 12 TopSitesCache::TopSitesCache() {
13 } 13 }
14 14
15 TopSitesCache::~TopSitesCache() { 15 TopSitesCache::~TopSitesCache() {
16 } 16 }
17 17
18 void TopSitesCache::SetTopSites(const MostVisitedURLList& top_sites) { 18 void TopSitesCache::SetTopSites(const MostVisitedURLList& top_sites) {
19 top_sites_ = top_sites; 19 top_sites_ = top_sites;
20 GenerateCanonicalURLs(); 20 GenerateCanonicalURLs();
21 } 21 }
22 22
23 void TopSitesCache::SetThumbnails(const URLToImagesMap& images) { 23 void TopSitesCache::SetThumbnails(const URLToImagesMap& images) {
24 images_ = images; 24 images_ = images;
25 } 25 }
26 26
27 void TopSitesCache::SetPageThumbnail(const GURL& url,
28 RefCountedBytes* thumbnail,
29 const ThumbnailScore& score) {
30 Images& img = images_[GetCanonicalURL(url)];
31 img.thumbnail = thumbnail;
32 img.thumbnail_score = score;
33 }
34
35 Images* TopSitesCache::GetImage(const GURL& url) { 27 Images* TopSitesCache::GetImage(const GURL& url) {
36 return &images_[GetCanonicalURL(url)]; 28 return &images_[GetCanonicalURL(url)];
37 } 29 }
38 30
39 bool TopSitesCache::GetPageThumbnail(const GURL& url, 31 bool TopSitesCache::GetPageThumbnail(const GURL& url,
40 scoped_refptr<RefCountedBytes>* bytes) { 32 scoped_refptr<RefCountedBytes>* bytes) {
41 std::map<GURL, Images>::const_iterator found = 33 std::map<GURL, Images>::const_iterator found =
42 images_.find(GetCanonicalURL(url)); 34 images_.find(GetCanonicalURL(url));
43 if (found != images_.end()) { 35 if (found != images_.end()) {
44 RefCountedBytes* data = found->second.thumbnail.get(); 36 RefCountedBytes* data = found->second.thumbnail.get();
(...skipping 23 matching lines...) Expand all
68 60
69 bool TopSitesCache::IsKnownURL(const GURL& url) { 61 bool TopSitesCache::IsKnownURL(const GURL& url) {
70 return GetCanonicalURLsIterator(url) != canonical_urls_.end(); 62 return GetCanonicalURLsIterator(url) != canonical_urls_.end();
71 } 63 }
72 64
73 size_t TopSitesCache::GetURLIndex(const GURL& url) { 65 size_t TopSitesCache::GetURLIndex(const GURL& url) {
74 DCHECK(IsKnownURL(url)); 66 DCHECK(IsKnownURL(url));
75 return GetCanonicalURLsIterator(url)->second; 67 return GetCanonicalURLsIterator(url)->second;
76 } 68 }
77 69
78 void TopSitesCache::RemoveUnreferencedThumbnails() {
79 for (URLToImagesMap::iterator i = images_.begin(); i != images_.end(); ) {
80 if (IsKnownURL(i->first)) {
81 ++i;
82 } else {
83 URLToImagesMap::iterator next_i = i;
84 ++next_i;
85 images_.erase(i);
86 i = next_i;
87 }
88 }
89 }
90
91 void TopSitesCache::GenerateCanonicalURLs() { 70 void TopSitesCache::GenerateCanonicalURLs() {
92 canonical_urls_.clear(); 71 canonical_urls_.clear();
93 for (size_t i = 0; i < top_sites_.size(); i++) 72 for (size_t i = 0; i < top_sites_.size(); i++)
94 StoreRedirectChain(top_sites_[i].redirects, i); 73 StoreRedirectChain(top_sites_[i].redirects, i);
95 } 74 }
96 75
97 void TopSitesCache::StoreRedirectChain(const RedirectList& redirects, 76 void TopSitesCache::StoreRedirectChain(const RedirectList& redirects,
98 size_t destination) { 77 size_t destination) {
99 // redirects is empty if the user pinned a site and there are not enough top 78 // redirects is empty if the user pinned a site and there are not enough top
100 // sites before the pinned site. 79 // sites before the pinned site.
(...skipping 14 matching lines...) Expand all
115 const GURL& url) { 94 const GURL& url) {
116 MostVisitedURL most_visited_url; 95 MostVisitedURL most_visited_url;
117 most_visited_url.redirects.push_back(url); 96 most_visited_url.redirects.push_back(url);
118 CanonicalURLEntry entry; 97 CanonicalURLEntry entry;
119 entry.first = &most_visited_url; 98 entry.first = &most_visited_url;
120 entry.second = 0u; 99 entry.second = 0u;
121 return canonical_urls_.find(entry); 100 return canonical_urls_.find(entry);
122 } 101 }
123 102
124 } // namespace history 103 } // namespace history
OLDNEW
« no previous file with comments | « chrome/browser/history/top_sites_cache.h ('k') | chrome/browser/history/top_sites_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698