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

Unified Diff: chrome/browser/history/top_sites.cc

Issue 14273023: Rebuild test history databases when starting up performance_ui_tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Speed up profile generation Created 7 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/history/top_sites.cc
diff --git a/chrome/browser/history/top_sites.cc b/chrome/browser/history/top_sites.cc
index e1e40670f3c9fde4a12d3794f869840e2c6ea734..1c01459a6123a1c84b91c142ef8f94c8a604739d 100644
--- a/chrome/browser/history/top_sites.cc
+++ b/chrome/browser/history/top_sites.cc
@@ -253,6 +253,41 @@ bool TopSites::SetPageThumbnail(const GURL& url,
return SetPageThumbnailEncoded(url, thumbnail_data, score);
}
+bool TopSites::SetPageThumbnailToJPEGBytes(
+ const GURL& url,
+ const base::RefCountedMemory* memory,
+ const ThumbnailScore& score) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+
+ if (!loaded_) {
+ // TODO(sky): I need to cache these and apply them after the load
+ // completes.
+ return false;
+ }
+
+ bool add_temp_thumbnail = false;
+ if (!IsKnownURL(url)) {
+ if (!IsFull()) {
+ add_temp_thumbnail = true;
+ } else {
+ return false; // This URL is not known to us.
+ }
+ }
+
+ if (!HistoryService::CanAddURL(url))
+ return false; // It's not a real webpage.
+
+ if (add_temp_thumbnail) {
+ // Always remove the existing entry and then add it back. That way if we end
+ // up with too many temp thumbnails we'll prune the oldest first.
+ RemoveTemporaryThumbnailByURL(url);
+ AddTemporaryThumbnail(url, memory, score);
+ return true;
+ }
+
+ return SetPageThumbnailEncoded(url, memory, score);
+}
+
// WARNING: this function may be invoked on any thread.
void TopSites::GetMostVisitedURLs(const GetMostVisitedURLsCallback& callback) {
MostVisitedURLList filtered_urls;
@@ -536,9 +571,10 @@ bool TopSites::IsFull() {
TopSites::~TopSites() {
}
-bool TopSites::SetPageThumbnailNoDB(const GURL& url,
- const base::RefCountedBytes* thumbnail_data,
- const ThumbnailScore& score) {
+bool TopSites::SetPageThumbnailNoDB(
+ const GURL& url,
+ const base::RefCountedMemory* thumbnail_data,
+ const ThumbnailScore& score) {
// This should only be invoked when we know about the url.
DCHECK(cache_->IsKnownURL(url));
@@ -558,7 +594,7 @@ bool TopSites::SetPageThumbnailNoDB(const GURL& url,
image->thumbnail.get())
return false; // The one we already have is better.
- image->thumbnail = const_cast<base::RefCountedBytes*>(thumbnail_data);
+ image->thumbnail = const_cast<base::RefCountedMemory*>(thumbnail_data);
image->thumbnail_score = new_score_with_redirects;
ResetThreadSafeImageCache();
@@ -566,7 +602,7 @@ bool TopSites::SetPageThumbnailNoDB(const GURL& url,
}
bool TopSites::SetPageThumbnailEncoded(const GURL& url,
- const base::RefCountedBytes* thumbnail,
+ const base::RefCountedMemory* thumbnail,
const ThumbnailScore& score) {
if (!SetPageThumbnailNoDB(url, thumbnail, score))
return false;
@@ -611,14 +647,14 @@ void TopSites::RemoveTemporaryThumbnailByURL(const GURL& url) {
}
void TopSites::AddTemporaryThumbnail(const GURL& url,
- const base::RefCountedBytes* thumbnail,
+ const base::RefCountedMemory* thumbnail,
const ThumbnailScore& score) {
if (temp_images_.size() == kMaxTempTopImages)
temp_images_.erase(temp_images_.begin());
TempImage image;
image.first = url;
- image.second.thumbnail = const_cast<base::RefCountedBytes*>(thumbnail);
+ image.second.thumbnail = const_cast<base::RefCountedMemory*>(thumbnail);
image.second.thumbnail_score = score;
temp_images_.push_back(image);
}

Powered by Google App Engine
This is Rietveld 408576698