Index: chrome/browser/chrome_browser_main.cc |
diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_browser_main.cc |
index 262d91c8b06ff3eeefc1474964e5284c8d531fe5..41f64ca2adadce8aaf4cd5f3c5dec942626af4a2 100644 |
--- a/chrome/browser/chrome_browser_main.cc |
+++ b/chrome/browser/chrome_browser_main.cc |
@@ -33,6 +33,7 @@ |
#include "base/strings/string_number_conversions.h" |
#include "base/strings/string_piece.h" |
#include "base/strings/string_split.h" |
+#include "base/strings/string_util.h" |
#include "base/strings/sys_string_conversions.h" |
#include "base/strings/utf_string_conversions.h" |
#include "base/sys_info.h" |
@@ -205,6 +206,7 @@ |
#if defined(OS_WIN) |
#include "base/trace_event/trace_event_etw_export_win.h" |
+#include "base/win/win_util.h" |
#include "base/win/windows_version.h" |
#include "chrome/app/file_pre_reader_win.h" |
#include "chrome/browser/chrome_browser_main_win.h" |
@@ -290,6 +292,10 @@ using content::BrowserThread; |
namespace { |
+// feature used to remove AutoImport on first run is default-off |
+const base::Feature kFirstRunAutoImport{"FirstRunAutoImport", |
manzagop (departed)
2016/08/18 15:59:56
I'd call it DisableFirstRunAutoImport, so it's acc
gcomanici
2016/08/19 16:04:30
Done.
|
+ base::FEATURE_DISABLED_BY_DEFAULT}; |
+ |
// A provider of Geolocation services to override AccessTokenStore. |
class ChromeGeolocationDelegate : public device::GeolocationDelegate { |
public: |
@@ -350,9 +356,8 @@ struct WorkerPoolVariationValues { |
// Additional values may appear as necessary and will be ignored. |
WorkerPoolVariationValues StringToWorkerPoolVariationValues( |
const base::StringPiece pool_descriptor) { |
- const std::vector<std::string> tokens = |
- SplitString(pool_descriptor, ";", |
- base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); |
+ const std::vector<std::string> tokens = SplitString( |
+ pool_descriptor, ";", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); |
int minimum; |
int maximum; |
double multiplier; |
@@ -360,8 +365,7 @@ WorkerPoolVariationValues StringToWorkerPoolVariationValues( |
int detach_milliseconds; |
// Checking for a size greater than the expected amount allows us to be |
// forward compatible if we add more variation values. |
- if (tokens.size() >= 5 && |
- base::StringToInt(tokens[0], &minimum) && |
+ if (tokens.size() >= 5 && base::StringToInt(tokens[0], &minimum) && |
base::StringToInt(tokens[1], &maximum) && |
base::StringToDouble(tokens[2], &multiplier) && |
base::StringToInt(tokens[3], &offset) && |
@@ -414,10 +418,10 @@ void MaybeInitializeTaskScheduler() { |
IORestriction io_restriction; |
}; |
static const SchedulerWorkerPoolPredefinedParams kAllPredefinedParams[] = { |
- {"Background", ThreadPriority::BACKGROUND, IORestriction::DISALLOWED}, |
- {"BackgroundFileIO", ThreadPriority::BACKGROUND, IORestriction::ALLOWED}, |
- {"Foreground", ThreadPriority::NORMAL, IORestriction::DISALLOWED}, |
- {"ForegroundFileIO", ThreadPriority::NORMAL, IORestriction::ALLOWED}, |
+ {"Background", ThreadPriority::BACKGROUND, IORestriction::DISALLOWED}, |
+ {"BackgroundFileIO", ThreadPriority::BACKGROUND, IORestriction::ALLOWED}, |
+ {"Foreground", ThreadPriority::NORMAL, IORestriction::DISALLOWED}, |
+ {"ForegroundFileIO", ThreadPriority::NORMAL, IORestriction::ALLOWED}, |
}; |
static_assert(arraysize(kAllPredefinedParams) == WORKER_POOL_COUNT, |
"Mismatched Worker Pool Types and Predefined Parameters"); |
@@ -436,16 +440,15 @@ void MaybeInitializeTaskScheduler() { |
if (variation_values.threads <= 0 || |
variation_values.detach_period.is_zero()) { |
- DLOG(ERROR) << "Invalid Worker Pool Configuration: " << |
- predefined_params.name << " [" << pair->second << "]"; |
+ DLOG(ERROR) << "Invalid Worker Pool Configuration: " |
+ << predefined_params.name << " [" << pair->second << "]"; |
return; |
} |
- params_vector.emplace_back(predefined_params.name, |
- predefined_params.priority_hint, |
- predefined_params.io_restriction, |
- variation_values.threads, |
- variation_values.detach_period); |
+ params_vector.emplace_back( |
+ predefined_params.name, predefined_params.priority_hint, |
+ predefined_params.io_restriction, variation_values.threads, |
+ variation_values.detach_period); |
} |
DCHECK_EQ(WORKER_POOL_COUNT, params_vector.size()); |
@@ -581,9 +584,9 @@ Profile* CreatePrimaryProfile(const content::MainFunctionParams& parameters, |
profile = GetFallbackStartupProfile(); |
if (!profile) { |
- ProfileErrorType error_type = profile_dir_specified ? |
- PROFILE_ERROR_CREATE_FAILURE_SPECIFIED : |
- PROFILE_ERROR_CREATE_FAILURE_ALL; |
+ ProfileErrorType error_type = profile_dir_specified |
+ ? PROFILE_ERROR_CREATE_FAILURE_SPECIFIED |
+ : PROFILE_ERROR_CREATE_FAILURE_ALL; |
// TODO(lwchkg): What diagnostics do you want to include in the feedback |
// report when an error occurs? |
@@ -593,14 +596,15 @@ Profile* CreatePrimaryProfile(const content::MainFunctionParams& parameters, |
} |
#endif // defined(OS_CHROMEOS) || defined(OS_ANDROID) |
- UMA_HISTOGRAM_LONG_TIMES( |
- "Startup.CreateFirstProfile", base::Time::Now() - start); |
+ UMA_HISTOGRAM_LONG_TIMES("Startup.CreateFirstProfile", |
+ base::Time::Now() - start); |
return profile; |
} |
#if defined(OS_MACOSX) |
OSStatus KeychainCallback(SecKeychainEvent keychain_event, |
- SecKeychainCallbackInfo* info, void* context) { |
+ SecKeychainCallbackInfo* info, |
+ void* context) { |
return noErr; |
} |
#endif // defined(OS_MACOSX) |
@@ -609,9 +613,9 @@ void RegisterComponentsForUpdate() { |
component_updater::ComponentUpdateService* cus = |
g_browser_process->component_updater(); |
- // Registration can be before or after cus->Start() so it is ok to post |
- // a task to the UI thread to do registration once you done the necessary |
- // file IO to know you existing component version. |
+// Registration can be before or after cus->Start() so it is ok to post |
+// a task to the UI thread to do registration once you done the necessary |
+// file IO to know you existing component version. |
#if !defined(OS_CHROMEOS) && !defined(OS_ANDROID) |
RegisterRecoveryComponent(cus, g_browser_process->local_state()); |
RegisterPepperFlashComponent(cus); |
@@ -688,8 +692,8 @@ bool ProcessSingletonNotificationCallback( |
UMA_HISTOGRAM_LONG_TIMES( |
"Startup.WarmStartTimeFromRemoteProcessStartFast", elapsed); |
} else { |
- UMA_HISTOGRAM_LONG_TIMES( |
- "Startup.WarmStartTimeFromRemoteProcessStart", elapsed); |
+ UMA_HISTOGRAM_LONG_TIMES("Startup.WarmStartTimeFromRemoteProcessStart", |
+ elapsed); |
} |
} |
} |
@@ -815,7 +819,7 @@ ChromeBrowserMainParts::ChromeBrowserMainParts( |
} |
ChromeBrowserMainParts::~ChromeBrowserMainParts() { |
- for (int i = static_cast<int>(chrome_extra_parts_.size())-1; i >= 0; --i) |
+ for (int i = static_cast<int>(chrome_extra_parts_.size()) - 1; i >= 0; --i) |
delete chrome_extra_parts_[i]; |
chrome_extra_parts_.clear(); |
} |
@@ -871,8 +875,8 @@ void ChromeBrowserMainParts::SetupMetricsAndFieldTrials() { |
flags_ui::PrefServiceFlagsStorage flags_storage( |
g_browser_process->local_state()); |
std::vector<std::string> variation_ids = |
- about_flags::RegisterAllFeatureVariationParameters( |
- &flags_storage, feature_list.get()); |
+ about_flags::RegisterAllFeatureVariationParameters(&flags_storage, |
+ feature_list.get()); |
variations::VariationsHttpHeaderProvider* http_header_provider = |
variations::VariationsHttpHeaderProvider::GetInstance(); |
@@ -1116,7 +1120,7 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() { |
// Force MediaCaptureDevicesDispatcher to be created on UI thread. |
MediaCaptureDevicesDispatcher::GetInstance(); |
- // Android's first run is done in Java instead of native. |
+// Android's first run is done in Java instead of native. |
#if !defined(OS_ANDROID) |
process_singleton_.reset(new ChromeProcessSingleton( |
user_data_dir_, base::Bind(&ProcessSingletonNotificationCallback))); |
@@ -1131,28 +1135,29 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() { |
BrowserThread::GetBlockingPool()); |
{ |
- TRACE_EVENT0("startup", |
- "ChromeBrowserMainParts::PreCreateThreadsImpl:InitBrowswerProcessImpl"); |
+ TRACE_EVENT0( |
+ "startup", |
+ "ChromeBrowserMainParts::PreCreateThreadsImpl:InitBrowswerProcessImpl"); |
browser_process_.reset(new BrowserProcessImpl(local_state_task_runner.get(), |
parsed_command_line())); |
} |
if (parsed_command_line().HasSwitch(switches::kEnableProfiling)) { |
TRACE_EVENT0("startup", |
- "ChromeBrowserMainParts::PreCreateThreadsImpl:InitProfiling"); |
+ "ChromeBrowserMainParts::PreCreateThreadsImpl:InitProfiling"); |
// User wants to override default tracking status. |
std::string flag = |
- parsed_command_line().GetSwitchValueASCII(switches::kEnableProfiling); |
+ parsed_command_line().GetSwitchValueASCII(switches::kEnableProfiling); |
// Default to basic profiling (no parent child support). |
tracked_objects::ThreadData::Status status = |
- tracked_objects::ThreadData::PROFILING_ACTIVE; |
+ tracked_objects::ThreadData::PROFILING_ACTIVE; |
if (flag.compare("0") != 0) |
status = tracked_objects::ThreadData::DEACTIVATED; |
tracked_objects::ThreadData::InitializeAndSetTrackingStatus(status); |
} |
- local_state_ = InitializeLocalState( |
- local_state_task_runner.get(), parsed_command_line()); |
+ local_state_ = InitializeLocalState(local_state_task_runner.get(), |
+ parsed_command_line()); |
#if !defined(OS_ANDROID) |
// These members must be initialized before returning from this function. |
@@ -1171,7 +1176,7 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() { |
// the session manager. |
{ |
TRACE_EVENT0("startup", |
- "ChromeBrowserMainParts::PreCreateThreadsImpl:ConvertFlags"); |
+ "ChromeBrowserMainParts::PreCreateThreadsImpl:ConvertFlags"); |
flags_ui::PrefServiceFlagsStorage flags_storage( |
g_browser_process->local_state()); |
about_flags::ConvertFlagsToSwitches(&flags_storage, |
@@ -1207,26 +1212,27 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() { |
crash_keys::SetCrashKeysFromCommandLine( |
*base::CommandLine::ForCurrentProcess()); |
- // Mac starts it earlier in |PreMainMessageLoopStart()| (because it is |
- // needed when loading the MainMenu.nib and the language doesn't depend on |
- // anything since it comes from Cocoa. |
+// Mac starts it earlier in |PreMainMessageLoopStart()| (because it is |
+// needed when loading the MainMenu.nib and the language doesn't depend on |
+// anything since it comes from Cocoa. |
#if defined(OS_MACOSX) |
std::string locale = |
parameters().ui_task ? "en-US" : l10n_util::GetLocaleOverride(); |
browser_process_->SetApplicationLocale(locale); |
#else |
- const std::string locale = |
- local_state_->GetString(prefs::kApplicationLocale); |
+ const std::string locale = local_state_->GetString(prefs::kApplicationLocale); |
// On a POSIX OS other than ChromeOS, the parameter that is passed to the |
// method InitSharedInstance is ignored. |
- TRACE_EVENT_BEGIN0("startup", |
+ TRACE_EVENT_BEGIN0( |
+ "startup", |
"ChromeBrowserMainParts::PreCreateThreadsImpl:InitResourceBundle"); |
const std::string loaded_locale = |
ui::ResourceBundle::InitSharedInstanceWithLocale( |
locale, NULL, ui::ResourceBundle::LOAD_COMMON_RESOURCES); |
- TRACE_EVENT_END0("startup", |
+ TRACE_EVENT_END0( |
+ "startup", |
"ChromeBrowserMainParts::PreCreateThreadsImpl:InitResourceBundle"); |
if (loaded_locale.empty() && |
@@ -1239,7 +1245,7 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() { |
{ |
TRACE_EVENT0("startup", |
- "ChromeBrowserMainParts::PreCreateThreadsImpl:AddDataPack"); |
+ "ChromeBrowserMainParts::PreCreateThreadsImpl:AddDataPack"); |
base::FilePath resources_pack_path; |
PathService::Get(chrome::FILE_RESOURCES_PACK, &resources_pack_path); |
#if defined(OS_ANDROID) |
@@ -1446,9 +1452,10 @@ void WINAPI SyzyASANExperimentCallback(const char* name, const char* group) { |
} |
void SetupSyzyASAN() { |
- typedef VOID(WINAPI* SyzyASANExperimentCallbackFn)(const char* name, |
- const char* group); |
- typedef VOID(WINAPI* SyzyASANEnumExperimentsFn)(SyzyASANExperimentCallbackFn); |
+ typedef VOID(WINAPI * SyzyASANExperimentCallbackFn)(const char* name, |
+ const char* group); |
+ typedef VOID(WINAPI * |
+ SyzyASANEnumExperimentsFn)(SyzyASANExperimentCallbackFn); |
HMODULE syzyasan_handle = ::GetModuleHandle(L"syzyasan_rtl.dll"); |
if (!syzyasan_handle) |
return; |
@@ -1456,7 +1463,7 @@ void SetupSyzyASAN() { |
// Export the SyzyASAN experiments as synthetic field trials. |
SyzyASANEnumExperimentsFn syzyasan_enum_experiments = |
reinterpret_cast<SyzyASANEnumExperimentsFn>( |
- ::GetProcAddress(syzyasan_handle, "asan_EnumExperiments")); |
+ ::GetProcAddress(syzyasan_handle, "asan_EnumExperiments")); |
if (syzyasan_enum_experiments) { |
syzyasan_enum_experiments(&SyzyASANExperimentCallback); |
} |
@@ -1469,8 +1476,7 @@ void SetupSyzyASAN() { |
bool success = false; |
SyzyasanEnableDeferredFreeThreadFunc syzyasan_enable_deferred_free = |
reinterpret_cast<SyzyasanEnableDeferredFreeThreadFunc>( |
- ::GetProcAddress(syzyasan_handle, |
- "asan_EnableDeferredFreeThread")); |
+ ::GetProcAddress(syzyasan_handle, "asan_EnableDeferredFreeThread")); |
if (syzyasan_enable_deferred_free) { |
syzyasan_enable_deferred_free(); |
success = true; |
@@ -1483,7 +1489,6 @@ void SetupSyzyASAN() { |
#endif // SYZYASAN |
- |
void ChromeBrowserMainParts::PreBrowserStart() { |
TRACE_EVENT0("startup", "ChromeBrowserMainParts::PreBrowserStart"); |
for (size_t i = 0; i < chrome_extra_parts_.size(); ++i) |
@@ -1514,8 +1519,7 @@ void ChromeBrowserMainParts::PostBrowserStart() { |
// Set up a task to delete old WebRTC log files for all profiles. Use a delay |
// to reduce the impact on startup time. |
BrowserThread::PostDelayedTask( |
- BrowserThread::UI, |
- FROM_HERE, |
+ BrowserThread::UI, FROM_HERE, |
base::Bind(&WebRtcLogUtil::DeleteOldWebRtcLogFilesForAllProfiles), |
base::TimeDelta::FromMinutes(1)); |
#endif // defined(ENABLE_WEBRTC) |
@@ -1564,20 +1568,18 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { |
#endif |
#if defined(ENABLE_EXTENSIONS) |
- if (!variations::GetVariationParamValue( |
- "LightSpeed", "EarlyInitStartup").empty()) { |
+ if (!variations::GetVariationParamValue("LightSpeed", "EarlyInitStartup") |
+ .empty()) { |
// Try to compute this early on another thread so that we don't spend time |
// during profile load initializing the extensions APIs. |
- BrowserThread::PostTask( |
- BrowserThread::FILE_USER_BLOCKING, |
- FROM_HERE, |
- base::Bind( |
- base::IgnoreResult(&extensions::FeatureProvider::GetAPIFeatures))); |
+ BrowserThread::PostTask(BrowserThread::FILE_USER_BLOCKING, FROM_HERE, |
+ base::Bind(base::IgnoreResult( |
+ &extensions::FeatureProvider::GetAPIFeatures))); |
} |
#endif |
- // Android updates the metrics service dynamically depending on whether the |
- // application is in the foreground or not. Do not start here. |
+// Android updates the metrics service dynamically depending on whether the |
+// application is in the foreground or not. Do not start here. |
#if !defined(OS_ANDROID) |
// Now that the file thread has been started, start recording. |
StartMetricsRecording(); |
@@ -1610,8 +1612,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { |
if (parsed_command_line().HasSwitch(switches::kHideIcons) || |
parsed_command_line().HasSwitch(switches::kShowIcons)) { |
- return ChromeBrowserMainPartsWin::HandleIconsCommands( |
- parsed_command_line_); |
+ return ChromeBrowserMainPartsWin::HandleIconsCommands(parsed_command_line_); |
} |
ui::SelectFileDialog::SetFactory(new ChromeSelectFileDialogFactory( |
@@ -1621,8 +1622,9 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { |
if (parsed_command_line().HasSwitch(switches::kMakeDefaultBrowser)) { |
bool is_managed = g_browser_process->local_state()->IsManagedPreference( |
prefs::kDefaultBrowserSettingEnabled); |
- if (is_managed && !g_browser_process->local_state()->GetBoolean( |
- prefs::kDefaultBrowserSettingEnabled)) { |
+ if (is_managed && |
+ !g_browser_process->local_state()->GetBoolean( |
+ prefs::kDefaultBrowserSettingEnabled)) { |
return static_cast<int>(chrome::RESULT_CODE_ACTION_DISALLOWED_BY_POLICY); |
} |
@@ -1636,7 +1638,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { |
CHECK(aura::Env::GetInstance()); |
#endif // defined(USE_AURA) |
- // Android doesn't support extensions and doesn't implement ProcessSingleton. |
+// Android doesn't support extensions and doesn't implement ProcessSingleton. |
#if !defined(OS_ANDROID) |
// If the command line specifies --pack-extension, attempt the pack extension |
// startup action and exit. |
@@ -1660,8 +1662,10 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { |
case ProcessSingleton::PROCESS_NOTIFIED: |
#if defined(OS_POSIX) && !defined(OS_MACOSX) |
// On POSIX systems, print a message notifying the process is running. |
- printf("%s\n", base::SysWideToNativeMB(base::UTF16ToWide( |
- l10n_util::GetStringUTF16(IDS_USED_EXISTING_BROWSER))).c_str()); |
+ printf("%s\n", base::SysWideToNativeMB( |
+ base::UTF16ToWide(l10n_util::GetStringUTF16( |
+ IDS_USED_EXISTING_BROWSER))) |
+ .c_str()); |
#endif // defined(OS_POSIX) && !defined(OS_MACOSX) |
// Having a differentiated return type for testing allows for tests to |
@@ -1752,9 +1756,8 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { |
// This step is costly and is already measured in Startup.CreateFirstProfile |
// and more directly Profile.CreateAndInitializeProfile. |
- profile_ = CreatePrimaryProfile(parameters(), |
- user_data_dir_, |
- parsed_command_line()); |
+ profile_ = |
+ CreatePrimaryProfile(parameters(), user_data_dir_, parsed_command_line()); |
if (!profile_) |
return content::RESULT_CODE_NORMAL_EXIT; |
@@ -1779,8 +1782,8 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { |
content::WebUIControllerFactory::RegisterFactory( |
ChromeWebUIControllerFactory::GetInstance()); |
- // NaClBrowserDelegateImpl is accessed inside PostProfileInit(). |
- // So make sure to create it before that. |
+// NaClBrowserDelegateImpl is accessed inside PostProfileInit(). |
+// So make sure to create it before that. |
#if !defined(DISABLE_NACL) |
NaClBrowserDelegateImpl* delegate = |
new NaClBrowserDelegateImpl(browser_process_->profile_manager()); |
@@ -1798,11 +1801,23 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { |
// preferences are registered, since some of the code that the importer |
// touches reads preferences. |
if (first_run::IsChromeFirstRun()) { |
- first_run::AutoImport(profile_, |
- master_prefs_->homepage_defined, |
- master_prefs_->do_import_items, |
- master_prefs_->dont_import_items, |
- master_prefs_->import_bookmarks_path); |
+ // By default, autoImport is performed on first run. |
+ bool perform_autoImport_on_first_run = true; |
+// A field trial that is designed to turn off the AutoImport feature |
+// for Windows users (on first run). |
+// The feature keeps running for enterprise. |
+#if defined(OS_WIN) |
+ base::FieldTrial* trial = base::FieldTrialList::Find("FirstRunAutoImport"); |
+ perform_autoImport_on_first_run = |
+ !trial || !base::FeatureList::IsEnabled(kFirstRunAutoImport) || |
+ base::win::IsEnrolledToDomain(); |
+#endif |
+ if (perform_autoImport_on_first_run) { |
+ first_run::AutoImport(profile_, master_prefs_->homepage_defined, |
+ master_prefs_->do_import_items, |
+ master_prefs_->dont_import_items, |
+ master_prefs_->import_bookmarks_path); |
+ } |
// Note: this can pop the first run consent dialog on linux. |
first_run::DoPostImportTasks(profile_, |
@@ -1837,7 +1852,8 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { |
// Verify that the profile is not on a network share and if so prepare to show |
// notification to the user. |
if (NetworkProfileBubble::ShouldCheckNetworkProfile(profile_)) { |
- BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, |
+ BrowserThread::PostTask( |
+ BrowserThread::FILE, FROM_HERE, |
base::Bind(&NetworkProfileBubble::CheckNetworkProfile, |
profile_->GetPath())); |
} |
@@ -1848,8 +1864,10 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { |
// file thread to be run sometime later. If this is the first run we record |
// the installation event. |
PrefService* pref_service = profile_->GetPrefs(); |
- int ping_delay = first_run::IsChromeFirstRun() ? master_prefs_->ping_delay : |
- pref_service->GetInteger(first_run::GetPingDelayPrefName().c_str()); |
+ int ping_delay = |
+ first_run::IsChromeFirstRun() |
+ ? master_prefs_->ping_delay |
+ : pref_service->GetInteger(first_run::GetPingDelayPrefName().c_str()); |
// Negative ping delay means to send ping immediately after a first search is |
// recorded. |
rlz::RLZTracker::SetRlzDelegate( |
@@ -1905,9 +1923,9 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { |
g_browser_process->local_state()); |
startup_watcher_->Arm(base::TimeDelta::FromSeconds(600)); |
- // On mobile, need for clean shutdown arises only when the application comes |
- // to foreground (i.e. MetricsService::OnAppEnterForeground is called). |
- // http://crbug.com/179143 |
+// On mobile, need for clean shutdown arises only when the application comes |
+// to foreground (i.e. MetricsService::OnAppEnterForeground is called). |
+// http://crbug.com/179143 |
#if !defined(OS_ANDROID) |
// Start watching for a hang. |
browser_process_->metrics_service()->LogNeedForCleanShutdown(); |
@@ -1934,10 +1952,8 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { |
#endif // defined(OS_ANDROID) |
#if !defined(DISABLE_NACL) |
- BrowserThread::PostTask( |
- BrowserThread::IO, |
- FROM_HERE, |
- base::Bind(nacl::NaClProcessHost::EarlyStartup)); |
+ BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, |
+ base::Bind(nacl::NaClProcessHost::EarlyStartup)); |
manzagop (departed)
2016/08/18 15:59:56
Yes, this is too big a diff. I really think git cl
gcomanici
2016/08/19 16:04:31
Done.
|
#endif // !defined(DISABLE_NACL) |
// Make sure initial prefs are recorded |