Chromium Code Reviews| Index: chrome/browser/jumplist_win.cc |
| diff --git a/chrome/browser/jumplist_win.cc b/chrome/browser/jumplist_win.cc |
| index f1e8a879b115547292fa55884733de91cb83c669..a86017fc674e8385f723bb66203894724e38e784 100644 |
| --- a/chrome/browser/jumplist_win.cc |
| +++ b/chrome/browser/jumplist_win.cc |
| @@ -13,6 +13,7 @@ |
| #include "base/strings/string_util.h" |
| #include "base/strings/utf_string_conversions.h" |
| #include "base/threading/thread.h" |
| +#include "base/trace_event/trace_event.h" |
| #include "chrome/browser/chrome_notification_types.h" |
| #include "chrome/browser/favicon/favicon_service_factory.h" |
| #include "chrome/browser/history/top_sites_factory.h" |
| @@ -46,6 +47,9 @@ using content::BrowserThread; |
| namespace { |
| +// Delay jumplist updates to allow collapsing of redundant update requests. |
| +const int kDelayForJumplistUpdateInMS = 3500; |
| + |
| // Append the common switches to each shell link. |
| void AppendCommonSwitches(ShellLinkItem* shell_link) { |
| const char* kSwitchNames[] = { switches::kUserDataDir }; |
| @@ -440,6 +444,23 @@ void JumpList::OnIncognitoAvailabilityChanged() { |
| } |
| void JumpList::PostRunUpdate() { |
| + TRACE_EVENT0("ui", "JumpList::PostRunUpdate"); |
|
gab
2015/06/11 17:49:23
Not super familiar with which tracing category mea
|
| + // 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, |
| + base::TimeDelta::FromMilliseconds(kDelayForJumplistUpdateInMS), |
| + this, |
| + &JumpList::DeferredRunUpdate); |
| + } |
| +} |
| + |
| +void JumpList::DeferredRunUpdate() { |
| + TRACE_EVENT0("ui", "JumpList::DeferredRunUpdate"); |
| // Check if incognito windows (or normal windows) are disabled by policy. |
| IncognitoModePrefs::Availability incognito_availability = |
| profile_ ? IncognitoModePrefs::GetAvailability(profile_->GetPrefs()) |