| Index: components/history/core/browser/history_backend.cc
|
| diff --git a/components/history/core/browser/history_backend.cc b/components/history/core/browser/history_backend.cc
|
| index 1c4aa6a0436526c8c33c228708c1e585b47a3127..a05f7546b203cc7a1b7a96ccf06d04dbdbbbd126 100644
|
| --- a/components/history/core/browser/history_backend.cc
|
| +++ b/components/history/core/browser/history_backend.cc
|
| @@ -1636,8 +1636,9 @@ void HistoryBackend::MergeFavicon(
|
| thumbnail_db_->DeleteFaviconBitmap(bitmap_id_sizes[0].bitmap_id);
|
| favicon_sizes.erase(favicon_sizes.begin());
|
| }
|
| - thumbnail_db_->AddFaviconBitmap(favicon_id, bitmap_data, base::Time::Now(),
|
| - pixel_size);
|
| + thumbnail_db_->AddFaviconBitmap(favicon_id, bitmap_data,
|
| + FaviconBitmapType::ON_VISIT,
|
| + base::Time::Now(), pixel_size);
|
| favicon_sizes.push_back(pixel_size);
|
| }
|
|
|
| @@ -1698,9 +1699,10 @@ void HistoryBackend::MergeFavicon(
|
|
|
| // Add the favicon bitmap as expired as it is not consistent with the
|
| // merged in data.
|
| - thumbnail_db_->AddFaviconBitmap(
|
| - favicon_id, bitmaps_to_copy[j].bitmap_data, base::Time(),
|
| - bitmaps_to_copy[j].pixel_size);
|
| + thumbnail_db_->AddFaviconBitmap(favicon_id,
|
| + bitmaps_to_copy[j].bitmap_data,
|
| + FaviconBitmapType::ON_VISIT, base::Time(),
|
| + bitmaps_to_copy[j].pixel_size);
|
| favicon_sizes.push_back(bitmaps_to_copy[j].pixel_size);
|
| favicon_bitmaps_copied = true;
|
|
|
| @@ -1733,14 +1735,13 @@ void HistoryBackend::SetFavicons(const GURL& page_url,
|
| const GURL& icon_url,
|
| const std::vector<SkBitmap>& bitmaps) {
|
| SetFaviconsImpl(page_url, icon_type, icon_url, bitmaps,
|
| - /*bitmaps_are_expired=*/false);
|
| + FaviconBitmapType::ON_VISIT);
|
| }
|
|
|
| -bool HistoryBackend::SetLastResortFavicons(
|
| - const GURL& page_url,
|
| - favicon_base::IconType icon_type,
|
| - const GURL& icon_url,
|
| - const std::vector<SkBitmap>& bitmaps) {
|
| +bool HistoryBackend::SetOnDemandFavicons(const GURL& page_url,
|
| + favicon_base::IconType icon_type,
|
| + const GURL& icon_url,
|
| + const std::vector<SkBitmap>& bitmaps) {
|
| if (!thumbnail_db_ || !db_)
|
| return false;
|
|
|
| @@ -1751,7 +1752,7 @@ bool HistoryBackend::SetLastResortFavicons(
|
| }
|
|
|
| return SetFaviconsImpl(page_url, icon_type, icon_url, bitmaps,
|
| - /*bitmaps_are_expired=*/true);
|
| + FaviconBitmapType::ON_DEMAND);
|
| }
|
|
|
| void HistoryBackend::SetFaviconsOutOfDateForPage(const GURL& page_url) {
|
| @@ -1768,6 +1769,14 @@ void HistoryBackend::SetFaviconsOutOfDateForPage(const GURL& page_url) {
|
| ScheduleCommit();
|
| }
|
|
|
| +void HistoryBackend::TouchOnDemandFavicon(const GURL& icon_url) {
|
| + if (!thumbnail_db_)
|
| + return;
|
| +
|
| + thumbnail_db_->TouchOnDemandFavicon(icon_url, Time::Now());
|
| + ScheduleCommit();
|
| +}
|
| +
|
| void HistoryBackend::SetImportedFavicons(
|
| const favicon_base::FaviconUsageDataList& favicon_usage) {
|
| if (!db_ || !thumbnail_db_)
|
| @@ -1787,8 +1796,8 @@ void HistoryBackend::SetImportedFavicons(
|
| // TODO(pkotwicz): Pass in real pixel size.
|
| favicon_id = thumbnail_db_->AddFavicon(
|
| favicon_usage[i].favicon_url, favicon_base::FAVICON,
|
| - new base::RefCountedBytes(favicon_usage[i].png_data), now,
|
| - gfx::Size());
|
| + new base::RefCountedBytes(favicon_usage[i].png_data),
|
| + FaviconBitmapType::ON_VISIT, now, gfx::Size());
|
| }
|
|
|
| // Save the mapping from all the URLs to the favicon.
|
| @@ -1833,7 +1842,7 @@ bool HistoryBackend::SetFaviconsImpl(const GURL& page_url,
|
| favicon_base::IconType icon_type,
|
| const GURL& icon_url,
|
| const std::vector<SkBitmap>& bitmaps,
|
| - bool bitmaps_are_expired) {
|
| + FaviconBitmapType type) {
|
| if (!thumbnail_db_ || !db_)
|
| return false;
|
|
|
| @@ -1849,11 +1858,9 @@ bool HistoryBackend::SetFaviconsImpl(const GURL& page_url,
|
| }
|
|
|
| bool favicon_data_modified = false;
|
| - if (favicon_created || !bitmaps_are_expired)
|
| - favicon_data_modified = SetFaviconBitmaps(icon_id, bitmaps);
|
| -
|
| - if (favicon_created && bitmaps_are_expired)
|
| - thumbnail_db_->SetFaviconOutOfDate(icon_id);
|
| + if (favicon_created || type == FaviconBitmapType::ON_VISIT) {
|
| + favicon_data_modified = SetFaviconBitmaps(icon_id, bitmaps, type);
|
| + }
|
|
|
| std::vector<favicon_base::FaviconID> icon_ids(1u, icon_id);
|
| bool mapping_changed =
|
| @@ -1907,7 +1914,8 @@ void HistoryBackend::UpdateFaviconMappingsAndFetchImpl(
|
| }
|
|
|
| bool HistoryBackend::SetFaviconBitmaps(favicon_base::FaviconID icon_id,
|
| - const std::vector<SkBitmap>& bitmaps) {
|
| + const std::vector<SkBitmap>& bitmaps,
|
| + FaviconBitmapType type) {
|
| std::vector<FaviconBitmapIDSize> bitmap_id_sizes;
|
| thumbnail_db_->GetFaviconBitmapIDSizes(icon_id, &bitmap_id_sizes);
|
|
|
| @@ -1944,11 +1952,12 @@ bool HistoryBackend::SetFaviconBitmaps(favicon_base::FaviconID icon_id,
|
| } else {
|
| if (!favicon_bitmaps_changed &&
|
| IsFaviconBitmapDataEqual(bitmap_id, match_it->first)) {
|
| - thumbnail_db_->SetFaviconBitmapLastUpdateTime(bitmap_id,
|
| - base::Time::Now());
|
| + thumbnail_db_->SetFaviconBitmapLastUpdateTime(
|
| + bitmap_id, base::Time::Now() /* new last updated time */);
|
| } else {
|
| - thumbnail_db_->SetFaviconBitmap(bitmap_id, match_it->first,
|
| - base::Time::Now());
|
| + thumbnail_db_->SetFaviconBitmap(
|
| + bitmap_id, match_it->first,
|
| + base::Time::Now() /* new last updated time */);
|
| favicon_bitmaps_changed = true;
|
| }
|
| to_add.erase(match_it);
|
| @@ -1956,8 +1965,10 @@ bool HistoryBackend::SetFaviconBitmaps(favicon_base::FaviconID icon_id,
|
| }
|
|
|
| for (size_t i = 0; i < to_add.size(); ++i) {
|
| - thumbnail_db_->AddFaviconBitmap(icon_id, to_add[i].first, base::Time::Now(),
|
| - to_add[i].second);
|
| + thumbnail_db_->AddFaviconBitmap(
|
| + icon_id, to_add[i].first, type,
|
| + base::Time::Now() /* new last updated / last requested time */,
|
| + to_add[i].second);
|
|
|
| favicon_bitmaps_changed = true;
|
| }
|
|
|