Index: chrome/browser/chrome_content_browser_client.cc |
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc |
index e3ae8430cec806a0579d1fb3054a56e0a57932a8..e94dae39d2635487de1210c4ba5c2c22776c65a0 100644 |
--- a/chrome/browser/chrome_content_browser_client.cc |
+++ b/chrome/browser/chrome_content_browser_client.cc |
@@ -16,15 +16,18 @@ |
#include "base/path_service.h" |
#include "base/prefs/pref_service.h" |
#include "base/prefs/scoped_user_pref_update.h" |
+#include "base/rand_util.h" |
#include "base/strings/string_number_conversions.h" |
#include "base/strings/utf_string_conversions.h" |
#include "base/threading/sequenced_worker_pool.h" |
+#include "base/time/time.h" |
#include "chrome/browser/browser_about_handler.h" |
#include "chrome/browser/browser_process.h" |
#include "chrome/browser/browser_shutdown.h" |
#include "chrome/browser/browsing_data/browsing_data_helper.h" |
#include "chrome/browser/browsing_data/browsing_data_remover.h" |
#include "chrome/browser/character_encoding.h" |
+#include "chrome/browser/chrome_browser_main.h" |
#include "chrome/browser/chrome_content_browser_client_parts.h" |
#include "chrome/browser/chrome_net_benchmarking_message_filter.h" |
#include "chrome/browser/chrome_quota_permission_context.h" |
@@ -808,6 +811,33 @@ content::BrowserMainParts* ChromeContentBrowserClient::CreateBrowserMainParts( |
return main_parts; |
} |
+namespace { |
+ |
+void PostAfterStartupTaskImpl( |
+ const tracked_objects::Location& from_here, |
+ const scoped_refptr<base::TaskRunner>& task_runner, |
+ const base::Closure& task) { |
+ if (!IsBrowserStartupComplete()) { |
+ const int kMinDelay = 5; |
+ const int kMaxDelay = 30; |
+ task_runner->PostDelayedTask( |
+ FROM_HERE, |
+ base::Bind(PostAfterStartupTaskImpl, from_here, task_runner, task), |
+ base::TimeDelta::FromSeconds(base::RandInt(kMinDelay, kMaxDelay))); |
+ return; |
+ } |
+ task_runner->PostTask(from_here, task); |
+} |
+ |
+} // namespace |
+ |
+void ChromeContentBrowserClient::PostAfterStartupTask( |
+ const tracked_objects::Location& from_here, |
+ const scoped_refptr<base::TaskRunner>& task_runner, |
+ const base::Closure& task) { |
+ PostAfterStartupTaskImpl(from_here, task_runner, task); |
+} |
+ |
std::string ChromeContentBrowserClient::GetStoragePartitionIdForSite( |
content::BrowserContext* browser_context, |
const GURL& site) { |