Chromium Code Reviews| 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 cca79d0e78f6518392be7366d87205b8a98030a8..425326629f227811e9466a8b1429fef105e18bef 100644 |
| --- a/chrome/browser/sync/glue/bookmark_change_processor.cc |
| +++ b/chrome/browser/sync/glue/bookmark_change_processor.cc |
| @@ -25,6 +25,7 @@ |
| #include "sync/internal_api/public/write_node.h" |
| #include "sync/internal_api/public/write_transaction.h" |
| #include "sync/syncable/entry.h" // TODO(tim): Investigating bug 121587. |
| +#include "ui/gfx/favicon_size.h" |
| #include "ui/gfx/image/image_util.h" |
| using content::BrowserThread; |
| @@ -635,6 +636,11 @@ void BookmarkChangeProcessor::ApplyBookmarkFavicon( |
| // which does not collide with others. |
| GURL fake_icon_url = bookmark_node->url(); |
| + // As the favicon which is pushed to the sync service from BookmarkModel is |
| + // gfx::kFaviconSize in width and height, use gfx::kFaviconSize as a guess of |
|
Nicolas Zea
2012/09/12 23:13:20
I think it's simpler to just say
"Sync favicons ar
|
| + // the size of the bitmap which is recieved from sync. |
| + gfx::Size pixel_size(gfx::kFaviconSize, gfx::kFaviconSize); |
| + |
| HistoryService* history = |
| HistoryServiceFactory::GetForProfile(profile, Profile::EXPLICIT_ACCESS); |
| FaviconService* favicon_service = |
| @@ -642,10 +648,15 @@ void BookmarkChangeProcessor::ApplyBookmarkFavicon( |
| history->AddPageNoVisitForBookmark(bookmark_node->url(), |
| bookmark_node->GetTitle()); |
| - favicon_service->SetFavicon(bookmark_node->url(), |
| - fake_icon_url, |
| - icon_bytes_vector, |
| - history::FAVICON); |
| + // The client may have cached the favicon at 2x. Use MergeFavicon() as not to |
| + // overwrite the cached 2x favicon bitmap. |
| + scoped_refptr<base::RefCountedMemory> bitmap_data( |
| + new base::RefCountedBytes(icon_bytes_vector)); |
| + favicon_service->MergeFavicon(bookmark_node->url(), |
| + fake_icon_url, |
| + history::FAVICON, |
| + bitmap_data, |
| + pixel_size); |
| } |
| // static |