Index: chrome/browser/win/jumplist.cc |
diff --git a/chrome/browser/win/jumplist.cc b/chrome/browser/win/jumplist.cc |
index 74abc8c6c0affafb89b3d9280a6c4d94278756f1..60696366f5599ab1c7426e39f8e3c8873fc30fc8 100644 |
--- a/chrome/browser/win/jumplist.cc |
+++ b/chrome/browser/win/jumplist.cc |
@@ -467,11 +467,15 @@ void JumpList::OnMostVisitedURLsAvailable( |
// If we have a pending favicon request, cancel it here (it is out of date). |
CancelPendingUpdate(); |
+ // There're at most 9 JumpList items can be displayed for the "Most Visited" |
grt (UTC plus 2)
2017/05/03 10:51:48
nit: "At most 9..."
chengx
2017/05/03 20:45:14
Done.
|
+ // category. |
+ const int kMostVistedCount = 9; |
{ |
JumpListData* data = &jumplist_data_->data; |
base::AutoLock auto_lock(data->list_lock_); |
data->most_visited_pages_.clear(); |
- for (size_t i = 0; i < urls.size(); i++) { |
+ |
+ for (size_t i = 0; i < urls.size() && i < kMostVistedCount; i++) { |
const history::MostVisitedURL& url = urls[i]; |
scoped_refptr<ShellLinkItem> link = CreateShellLink(); |
std::string url_string = url.url.spec(); |
@@ -492,6 +496,21 @@ void JumpList::OnMostVisitedURLsAvailable( |
void JumpList::TabRestoreServiceChanged(sessions::TabRestoreService* service) { |
DCHECK(CalledOnValidThread()); |
+ |
+ // Initialize the one-shot timer to update the the "Recently Closed" category |
+ // in a while. If there is already a request queued then cancel it and post |
+ // the new request. This ensures that JumpList update of the "Recently Closed" |
+ // category won't happen until there has been a brief quiet period, thus |
+ // avoiding update storms. |
+ if (timer_recently_closed_.IsRunning()) { |
+ timer_recently_closed_.Reset(); |
+ } else { |
+ timer_recently_closed_.Start(FROM_HERE, kDelayForJumplistUpdate, this, |
grt (UTC plus 2)
2017/05/03 10:51:48
i suggest making the bind explicit so that you're
chengx
2017/05/03 20:45:14
Done.
|
+ &JumpList::DeferredTabRestoreServiceChanged); |
+ } |
+} |
+ |
+void JumpList::DeferredTabRestoreServiceChanged() { |
// if we have a pending favicon request, cancel it here (it is out of date). |
CancelPendingUpdate(); |
@@ -661,22 +680,6 @@ void JumpList::PostRunUpdate() { |
DCHECK(CalledOnValidThread()); |
TRACE_EVENT0("browser", "JumpList::PostRunUpdate"); |
- // Initialize the one-shot timer to update the jumplists in a while. |
- // If there is already a request queued then cancel it and post the new |
- // request. This ensures that JumpListUpdates won't happen until there has |
- // been a brief quiet period, thus avoiding update storms. |
- if (timer_.IsRunning()) { |
- timer_.Reset(); |
- } else { |
- timer_.Start(FROM_HERE, kDelayForJumplistUpdate, this, |
- &JumpList::DeferredRunUpdate); |
- } |
-} |
- |
-void JumpList::DeferredRunUpdate() { |
- DCHECK(CalledOnValidThread()); |
- |
- TRACE_EVENT0("browser", "JumpList::DeferredRunUpdate"); |
// Check if incognito windows (or normal windows) are disabled by policy. |
IncognitoModePrefs::Availability incognito_availability = |
profile_ ? IncognitoModePrefs::GetAvailability(profile_->GetPrefs()) |
@@ -708,6 +711,21 @@ void JumpList::TopSitesLoaded(history::TopSites* top_sites) { |
void JumpList::TopSitesChanged(history::TopSites* top_sites, |
ChangeReason change_reason) { |
+ // Initialize the one-shot timer to update the the "Most visited" category in |
grt (UTC plus 2)
2017/05/03 10:51:48
CancelPendingUpdate here, or is there a reason to
chengx
2017/05/03 20:45:14
Yes, it should be called here. I've made the updat
|
+ // a while. If there is already a request queued then cancel it and post the |
+ // new request. This ensures that JumpList update of the "Most visited" |
+ // category won't happen until there has been a brief quiet period, thus |
+ // avoiding update storms. |
+ if (timer_most_visited_.IsRunning()) { |
+ timer_most_visited_.Reset(); |
+ } else { |
+ timer_most_visited_.Start(FROM_HERE, kDelayForJumplistUpdate, |
+ base::Bind(&JumpList::DeferredTopSitesChanged, |
+ base::Unretained(this), top_sites)); |
grt (UTC plus 2)
2017/05/03 10:51:48
rather than holding a reference to TopSites throug
chengx
2017/05/03 20:45:14
Done.
|
+ } |
+} |
+ |
+void JumpList::DeferredTopSitesChanged(history::TopSites* top_sites) { |
top_sites->GetMostVisitedURLs( |
base::Bind(&JumpList::OnMostVisitedURLsAvailable, |
weak_ptr_factory_.GetWeakPtr()), |