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

Unified Diff: chrome/browser/sync/glue/bookmark_change_processor.cc

Issue 11428004: Sync the bookmark's icon URL (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/sync/glue/bookmark_change_processor.cc
diff --git a/chrome/browser/sync/glue/bookmark_change_processor.cc b/chrome/browser/sync/glue/bookmark_change_processor.cc
index 17c5e31986161c45901e32130abfbf569f85465e..79cc3015f6b0e1260e6a81ee1e0d610d98467041 100644
--- a/chrome/browser/sync/glue/bookmark_change_processor.cc
+++ b/chrome/browser/sync/glue/bookmark_change_processor.cc
@@ -700,15 +700,22 @@ bool BookmarkChangeProcessor::SetBookmarkFavicon(
BookmarkModel* bookmark_model) {
const sync_pb::BookmarkSpecifics& specifics =
sync_node->GetBookmarkSpecifics();
- const std::string& icon_str = specifics.favicon();
- if (icon_str.empty())
+ const std::string& icon_bytes_str = specifics.favicon();
+ if (icon_bytes_str.empty())
return false;
scoped_refptr<base::RefCountedString> icon_bytes(
new base::RefCountedString());
- icon_bytes->data().assign(icon_str);
+ icon_bytes->data().assign(icon_bytes_str);
+ GURL icon_url(specifics.icon_url());
- ApplyBookmarkFavicon(bookmark_node, bookmark_model->profile(),
+ // Old clients may not be syncing the favicon URL. If the icon URL is not
+ // synced, use the page URL as a fake icon URL as it is guaranteed to be
+ // unique.
+ if (icon_url.is_empty())
+ icon_url = bookmark_node->url();
+
+ ApplyBookmarkFavicon(bookmark_node, bookmark_model->profile(), icon_url,
icon_bytes);
return true;
@@ -718,6 +725,7 @@ bool BookmarkChangeProcessor::SetBookmarkFavicon(
void BookmarkChangeProcessor::ApplyBookmarkFavicon(
const BookmarkNode* bookmark_node,
Profile* profile,
+ const GURL& icon_url,
scoped_refptr<base::RefCountedMemory> bitmap_data) {
HistoryService* history =
HistoryServiceFactory::GetForProfile(profile, Profile::EXPLICIT_ACCESS);
@@ -727,13 +735,12 @@ void BookmarkChangeProcessor::ApplyBookmarkFavicon(
history->AddPageNoVisitForBookmark(bookmark_node->url(),
bookmark_node->GetTitle());
// The client may have cached the favicon at 2x. Use MergeFavicon() as not to
- // overwrite the cached 2x favicon bitmap. Use the page URL as a fake icon URL
- // as it is guaranteed to be unique. Sync favicons are always
- // gfx::kFaviconSize in width and height. Store the favicon into history as
- // such.
+ // overwrite the cached 2x favicon bitmap. Sync favicons are always
+ // gfx::kFaviconSize in width and height. Store the favicon into history
+ // as such.
gfx::Size pixel_size(gfx::kFaviconSize, gfx::kFaviconSize);
favicon_service->MergeFavicon(bookmark_node->url(),
- bookmark_node->url(),
+ icon_url,
history::FAVICON,
bitmap_data,
pixel_size);
@@ -750,6 +757,7 @@ void BookmarkChangeProcessor::SetSyncNodeFavicon(
sync_pb::BookmarkSpecifics updated_specifics(
sync_node->GetBookmarkSpecifics());
updated_specifics.set_favicon(&favicon_bytes[0], favicon_bytes.size());
+ updated_specifics.set_icon_url(bookmark_node->icon_url().spec());
Nicolas Zea 2012/11/27 18:56:09 I'm a bit worried about this. Is there a possibili
pkotwicz 2012/11/27 22:50:39 I'm not sure I completely understand your concern.
sync_node->SetBookmarkSpecifics(updated_specifics);
}
}

Powered by Google App Engine
This is Rietveld 408576698