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

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

Issue 2499003: Write thumbnail to the database on SetPageThumbnail.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 years, 6 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.h ('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 (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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.h" 5 #include "chrome/browser/history/top_sites.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "chrome/browser/profile.h" 8 #include "chrome/browser/profile.h"
9 #include "chrome/browser/history/top_sites_database.h" 9 #include "chrome/browser/history/top_sites_database.h"
10 #include "chrome/browser/history/page_usage_data.h" 10 #include "chrome/browser/history/page_usage_data.h"
(...skipping 29 matching lines...) Expand all
40 { 40 {
41 AutoLock lock(lock_); 41 AutoLock lock(lock_);
42 MostVisitedURLList top_urls = db_->GetTopURLs(); 42 MostVisitedURLList top_urls = db_->GetTopURLs();
43 StoreMostVisited(&top_urls); 43 StoreMostVisited(&top_urls);
44 } // Lock is released here. 44 } // Lock is released here.
45 45
46 for (size_t i = 0; i < top_sites_.size(); i++) { 46 for (size_t i = 0; i < top_sites_.size(); i++) {
47 MostVisitedURL url = top_sites_[i]; 47 MostVisitedURL url = top_sites_[i];
48 Images thumbnail; 48 Images thumbnail;
49 if (db_->GetPageThumbnail(url, &thumbnail)) { 49 if (db_->GetPageThumbnail(url, &thumbnail)) {
50 SetPageThumbnail(url.url, thumbnail.thumbnail, thumbnail.thumbnail_score); 50 SetPageThumbnailNoDB(url.url, thumbnail.thumbnail,
51 thumbnail.thumbnail_score);
51 } 52 }
52 } 53 }
53 } 54 }
54 55
55 // Public wrapper that encodes the bitmap into RefCountedBytes. 56 // Public function that encodes the bitmap into RefCountedBytes and
57 // updates the database.
56 bool TopSites::SetPageThumbnail(const GURL& url, 58 bool TopSites::SetPageThumbnail(const GURL& url,
57 const SkBitmap& thumbnail, 59 const SkBitmap& thumbnail,
58 const ThumbnailScore& score) { 60 const ThumbnailScore& score) {
59 scoped_refptr<RefCountedBytes> thumbnail_data = new RefCountedBytes; 61 scoped_refptr<RefCountedBytes> thumbnail_data = new RefCountedBytes;
60 SkAutoLockPixels thumbnail_lock(thumbnail); 62 SkAutoLockPixels thumbnail_lock(thumbnail);
61 bool encoded = gfx::JPEGCodec::Encode( 63 bool encoded = gfx::JPEGCodec::Encode(
62 reinterpret_cast<unsigned char*>(thumbnail.getAddr32(0, 0)), 64 reinterpret_cast<unsigned char*>(thumbnail.getAddr32(0, 0)),
63 gfx::JPEGCodec::FORMAT_BGRA, thumbnail.width(), 65 gfx::JPEGCodec::FORMAT_BGRA, thumbnail.width(),
64 thumbnail.height(), 66 thumbnail.height(),
65 static_cast<int>(thumbnail.rowBytes()), 90, 67 static_cast<int>(thumbnail.rowBytes()), 90,
66 &thumbnail_data->data); 68 &thumbnail_data->data);
67 if (!encoded) 69 if (!encoded)
68 return false; 70 return false;
69 return SetPageThumbnail(url, thumbnail_data, score); 71 if (!SetPageThumbnailNoDB(url, thumbnail_data, score))
72 return false;
73
74 // Update the database.
75 if (!db_.get())
76 return true;
77 std::map<GURL, size_t>::iterator found = canonical_urls_.find(url);
78 if (found == canonical_urls_.end())
79 return false;
80 size_t index = found->second;
81
82 MostVisitedURL& most_visited = top_sites_[index];
83 db_->SetPageThumbnail(most_visited, index, top_images_[most_visited.url]);
84 return true;
70 } 85 }
71 86
72 // private 87 // private
73 bool TopSites::SetPageThumbnail(const GURL& url, 88 bool TopSites::SetPageThumbnailNoDB(const GURL& url,
74 const RefCountedBytes* thumbnail_data, 89 const RefCountedBytes* thumbnail_data,
75 const ThumbnailScore& score) { 90 const ThumbnailScore& score) {
76 AutoLock lock(lock_); 91 AutoLock lock(lock_);
77 92
78 std::map<GURL, size_t>::iterator found = canonical_urls_.find(url); 93 std::map<GURL, size_t>::iterator found = canonical_urls_.find(url);
79 if (found == canonical_urls_.end()) 94 if (found == canonical_urls_.end())
80 return false; // This URL is not known to us. 95 return false; // This URL is not known to us.
81 MostVisitedURL& most_visited = top_sites_[found->second]; 96 MostVisitedURL& most_visited = top_sites_[found->second];
82 Images& image = top_images_[most_visited.url]; 97 Images& image = top_images_[most_visited.url];
83 98
84 // When comparing the thumbnail scores, we need to take into account the 99 // When comparing the thumbnail scores, we need to take into account the
85 // redirect hops, which are not generated when the thumbnail is because the 100 // redirect hops, which are not generated when the thumbnail is because the
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
273 MostVisitedURLList pages) { 288 MostVisitedURLList pages) {
274 AutoLock lock(lock_); 289 AutoLock lock(lock_);
275 UpdateMostVisited(&pages); 290 UpdateMostVisited(&pages);
276 } 291 }
277 292
278 void TopSites::SetMockHistoryService(MockHistoryService* mhs) { 293 void TopSites::SetMockHistoryService(MockHistoryService* mhs) {
279 mock_history_service_ = mhs; 294 mock_history_service_ = mhs;
280 } 295 }
281 296
282 } // namespace history 297 } // namespace history
OLDNEW
« no previous file with comments | « chrome/browser/history/top_sites.h ('k') | chrome/browser/history/top_sites_database.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698