Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(482)

Unified Diff: chrome/browser/chrome_browser_main.cc

Issue 2253953003: Disable AutoImport: experiment and histogram for analysis. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/browser/importer/profile_writer.cc » ('j') | chrome/browser/importer/profile_writer.cc » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « no previous file | chrome/browser/importer/profile_writer.cc » ('j') | chrome/browser/importer/profile_writer.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698