Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/chrome_browser_main.h" | 5 #include "chrome/browser/chrome_browser_main.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 144 #include "net/cookies/cookie_monster.h" | 144 #include "net/cookies/cookie_monster.h" |
| 145 #include "net/http/http_network_layer.h" | 145 #include "net/http/http_network_layer.h" |
| 146 #include "net/http/http_stream_factory.h" | 146 #include "net/http/http_stream_factory.h" |
| 147 #include "net/url_request/url_request.h" | 147 #include "net/url_request/url_request.h" |
| 148 #include "ui/base/l10n/l10n_util.h" | 148 #include "ui/base/l10n/l10n_util.h" |
| 149 #include "ui/base/layout.h" | 149 #include "ui/base/layout.h" |
| 150 #include "ui/base/resource/resource_bundle.h" | 150 #include "ui/base/resource/resource_bundle.h" |
| 151 #include "ui/strings/grit/app_locale_settings.h" | 151 #include "ui/strings/grit/app_locale_settings.h" |
| 152 | 152 |
| 153 #if defined(OS_ANDROID) | 153 #if defined(OS_ANDROID) |
| 154 #include "ui/base/resource/resource_bundle_android.h" | |
| 155 #endif // defined(OS_ANDROID) | |
| 156 | |
| 157 // TODO(bshe): Use defined(ANDROID_JAVA_UI) once | |
| 158 // codereview.chromium.org/1459793002 landed. | |
| 159 #if defined(OS_ANDROID) && !defined(USE_AURA) | |
| 154 #include "chrome/browser/android/dev_tools_discovery_provider_android.h" | 160 #include "chrome/browser/android/dev_tools_discovery_provider_android.h" |
| 155 #include "chrome/browser/metrics/thread_watcher_android.h" | 161 #include "chrome/browser/metrics/thread_watcher_android.h" |
| 156 #include "ui/base/resource/resource_bundle_android.h" | |
| 157 #else | 162 #else |
| 158 #include "chrome/browser/devtools/chrome_devtools_discovery_provider.h" | 163 #include "chrome/browser/devtools/chrome_devtools_discovery_provider.h" |
| 159 #include "chrome/browser/feedback/feedback_profile_observer.h" | 164 #include "chrome/browser/feedback/feedback_profile_observer.h" |
| 160 #endif // defined(OS_ANDROID) | 165 #endif // defined(OS_ANDROID) && !defined(USE_AURA) |
| 161 | 166 |
| 162 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) | 167 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) |
| 163 #include "chrome/browser/first_run/upgrade_util_linux.h" | 168 #include "chrome/browser/first_run/upgrade_util_linux.h" |
| 164 #include "chrome/browser/sxs_linux.h" | 169 #include "chrome/browser/sxs_linux.h" |
| 165 #endif // defined(OS_LINUX) && !defined(OS_CHROMEOS) | 170 #endif // defined(OS_LINUX) && !defined(OS_CHROMEOS) |
| 166 | 171 |
| 167 #if defined(OS_CHROMEOS) | 172 #if defined(OS_CHROMEOS) |
| 168 #include "chrome/browser/chromeos/settings/cros_settings.h" | 173 #include "chrome/browser/chromeos/settings/cros_settings.h" |
| 169 #include "chromeos/chromeos_switches.h" | 174 #include "chromeos/chromeos_switches.h" |
| 170 #include "chromeos/settings/cros_settings_names.h" | 175 #include "chromeos/settings/cros_settings_names.h" |
| (...skipping 579 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 750 // Don't record any metrics if UI was displayed before this point e.g. | 755 // Don't record any metrics if UI was displayed before this point e.g. |
| 751 // warning dialogs. | 756 // warning dialogs. |
| 752 if (startup_metric_utils::WasNonBrowserUIDisplayed()) | 757 if (startup_metric_utils::WasNonBrowserUIDisplayed()) |
| 753 return; | 758 return; |
| 754 | 759 |
| 755 bool is_first_run = false; | 760 bool is_first_run = false; |
| 756 #if !defined(OS_ANDROID) | 761 #if !defined(OS_ANDROID) |
| 757 // On Android, first run is handled in Java code, and the C++ side of Chrome | 762 // On Android, first run is handled in Java code, and the C++ side of Chrome |
| 758 // doesn't know if this is the first run. This will cause some inaccuracy in | 763 // doesn't know if this is the first run. This will cause some inaccuracy in |
| 759 // the UMA statistics, but this should be minor (first runs are rare). | 764 // the UMA statistics, but this should be minor (first runs are rare). |
| 765 // TODO(bshe): Figure out which first run code to use for Aura Android. See | |
| 766 // crbug.com/560498 | |
| 760 is_first_run = first_run::IsChromeFirstRun(); | 767 is_first_run = first_run::IsChromeFirstRun(); |
| 761 #endif // defined(OS_ANDROID) | 768 #endif // defined(OS_ANDROID) |
| 762 | 769 |
| 763 // Record collected startup metrics. | 770 // Record collected startup metrics. |
| 764 startup_metric_utils::RecordBrowserMainMessageLoopStart( | 771 startup_metric_utils::RecordBrowserMainMessageLoopStart( |
| 765 base::TimeTicks::Now(), is_first_run); | 772 base::TimeTicks::Now(), is_first_run); |
| 766 } | 773 } |
| 767 | 774 |
| 768 // ----------------------------------------------------------------------------- | 775 // ----------------------------------------------------------------------------- |
| 769 // TODO(viettrungluu): move more/rest of BrowserMain() into BrowserMainParts. | 776 // TODO(viettrungluu): move more/rest of BrowserMain() into BrowserMainParts. |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 823 | 830 |
| 824 for (size_t i = 0; i < chrome_extra_parts_.size(); ++i) | 831 for (size_t i = 0; i < chrome_extra_parts_.size(); ++i) |
| 825 chrome_extra_parts_[i]->PostMainMessageLoopStart(); | 832 chrome_extra_parts_[i]->PostMainMessageLoopStart(); |
| 826 } | 833 } |
| 827 | 834 |
| 828 int ChromeBrowserMainParts::PreCreateThreads() { | 835 int ChromeBrowserMainParts::PreCreateThreads() { |
| 829 TRACE_EVENT0("startup", "ChromeBrowserMainParts::PreCreateThreads"); | 836 TRACE_EVENT0("startup", "ChromeBrowserMainParts::PreCreateThreads"); |
| 830 result_code_ = PreCreateThreadsImpl(); | 837 result_code_ = PreCreateThreadsImpl(); |
| 831 | 838 |
| 832 if (result_code_ == content::RESULT_CODE_NORMAL_EXIT) { | 839 if (result_code_ == content::RESULT_CODE_NORMAL_EXIT) { |
| 833 #if !defined(OS_ANDROID) | 840 // TODO(bshe): Use !defined(ANDROID_JAVA_UI) once |
| 841 // codereview.chromium.org/1459793002 landed. | |
| 842 #if !defined(OS_ANDROID) || defined(USE_AURA) | |
| 834 // These members must be initialized before exiting this function normally. | 843 // These members must be initialized before exiting this function normally. |
| 835 DCHECK(master_prefs_.get()); | 844 DCHECK(master_prefs_.get()); |
| 836 DCHECK(browser_creator_.get()); | 845 DCHECK(browser_creator_.get()); |
| 837 #endif // !defined(OS_ANDROID) | 846 #endif // !defined(OS_ANDROID) || defined(USE_AURA) |
| 838 for (size_t i = 0; i < chrome_extra_parts_.size(); ++i) | 847 for (size_t i = 0; i < chrome_extra_parts_.size(); ++i) |
| 839 chrome_extra_parts_[i]->PreCreateThreads(); | 848 chrome_extra_parts_[i]->PreCreateThreads(); |
| 840 } | 849 } |
| 841 | 850 |
| 842 return result_code_; | 851 return result_code_; |
| 843 } | 852 } |
| 844 | 853 |
| 845 int ChromeBrowserMainParts::PreCreateThreadsImpl() { | 854 int ChromeBrowserMainParts::PreCreateThreadsImpl() { |
| 846 TRACE_EVENT0("startup", "ChromeBrowserMainParts::PreCreateThreadsImpl") | 855 TRACE_EVENT0("startup", "ChromeBrowserMainParts::PreCreateThreadsImpl") |
| 847 run_message_loop_ = false; | 856 run_message_loop_ = false; |
| 848 #if !defined(OS_ANDROID) | 857 #if !defined(OS_ANDROID) |
| 849 chrome::MaybeShowInvalidUserDataDirWarningDialog(); | 858 chrome::MaybeShowInvalidUserDataDirWarningDialog(); |
| 850 #endif // !defined(OS_ANDROID) | 859 #endif // !defined(OS_ANDROID) |
| 851 if (!PathService::Get(chrome::DIR_USER_DATA, &user_data_dir_)) | 860 if (!PathService::Get(chrome::DIR_USER_DATA, &user_data_dir_)) |
| 852 return chrome::RESULT_CODE_MISSING_DATA; | 861 return chrome::RESULT_CODE_MISSING_DATA; |
| 853 | 862 |
| 854 // Force MediaCaptureDevicesDispatcher to be created on UI thread. | 863 // Force MediaCaptureDevicesDispatcher to be created on UI thread. |
| 855 MediaCaptureDevicesDispatcher::GetInstance(); | 864 MediaCaptureDevicesDispatcher::GetInstance(); |
| 856 | 865 |
| 857 // Android's first run is done in Java instead of native. | 866 // Android's first run is done in Java instead of native. |
| 867 // TODO(bshe): Figure out which first run code to use for Aura Android. See | |
| 868 // crbug.com/560498 | |
| 858 #if !defined(OS_ANDROID) | 869 #if !defined(OS_ANDROID) |
| 859 process_singleton_.reset(new ChromeProcessSingleton( | 870 process_singleton_.reset(new ChromeProcessSingleton( |
| 860 user_data_dir_, base::Bind(&ProcessSingletonNotificationCallback))); | 871 user_data_dir_, base::Bind(&ProcessSingletonNotificationCallback))); |
| 861 | 872 |
| 862 // Cache first run state early. | 873 // Cache first run state early. |
| 863 first_run::IsChromeFirstRun(); | 874 first_run::IsChromeFirstRun(); |
| 864 #endif // !defined(OS_ANDROID) | 875 #endif // !defined(OS_ANDROID) |
| 865 | 876 |
| 866 scoped_refptr<base::SequencedTaskRunner> local_state_task_runner = | 877 scoped_refptr<base::SequencedTaskRunner> local_state_task_runner = |
| 867 JsonPrefStore::GetTaskRunnerForFile( | 878 JsonPrefStore::GetTaskRunnerForFile( |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 885 tracked_objects::ThreadData::Status status = | 896 tracked_objects::ThreadData::Status status = |
| 886 tracked_objects::ThreadData::PROFILING_ACTIVE; | 897 tracked_objects::ThreadData::PROFILING_ACTIVE; |
| 887 if (flag.compare("0") != 0) | 898 if (flag.compare("0") != 0) |
| 888 status = tracked_objects::ThreadData::DEACTIVATED; | 899 status = tracked_objects::ThreadData::DEACTIVATED; |
| 889 tracked_objects::ThreadData::InitializeAndSetTrackingStatus(status); | 900 tracked_objects::ThreadData::InitializeAndSetTrackingStatus(status); |
| 890 } | 901 } |
| 891 | 902 |
| 892 local_state_ = InitializeLocalState( | 903 local_state_ = InitializeLocalState( |
| 893 local_state_task_runner.get(), parsed_command_line()); | 904 local_state_task_runner.get(), parsed_command_line()); |
| 894 | 905 |
| 895 #if !defined(OS_ANDROID) | 906 // TODO(bshe): Use !defined(ANDROID_JAVA_UI) once |
| 907 // codereview.chromium.org/1459793002 landed. | |
| 908 #if !defined(OS_ANDROID) || defined(USE_AURA) | |
| 896 // These members must be initialized before returning from this function. | 909 // These members must be initialized before returning from this function. |
| 897 master_prefs_.reset(new first_run::MasterPrefs); | 910 master_prefs_.reset(new first_run::MasterPrefs); |
| 898 // Android doesn't use StartupBrowserCreator. | 911 // Android doesn't use StartupBrowserCreator. |
| 899 browser_creator_.reset(new StartupBrowserCreator); | 912 browser_creator_.reset(new StartupBrowserCreator); |
| 900 // TODO(yfriedman): Refactor Android to re-use UMABrowsingActivityObserver | 913 // TODO(yfriedman): Refactor Android to re-use UMABrowsingActivityObserver |
| 901 chrome::UMABrowsingActivityObserver::Init(); | 914 chrome::UMABrowsingActivityObserver::Init(); |
| 902 #endif // !defined(OS_ANDROID) | 915 #endif // !defined(OS_ANDROID) || defined(USE_AURA) |
| 903 | 916 |
| 904 #if !defined(OS_CHROMEOS) | 917 #if !defined(OS_CHROMEOS) |
| 905 // Convert active labs into switches. This needs to be done before | 918 // Convert active labs into switches. This needs to be done before |
| 906 // ResourceBundle::InitSharedInstanceWithLocale as some loaded resources are | 919 // ResourceBundle::InitSharedInstanceWithLocale as some loaded resources are |
| 907 // affected by experiment flags (--touch-optimized-ui in particular). | 920 // affected by experiment flags (--touch-optimized-ui in particular). |
| 908 // On ChromeOS system level flags are applied from the device settings from | 921 // On ChromeOS system level flags are applied from the device settings from |
| 909 // the session manager. | 922 // the session manager. |
| 910 { | 923 { |
| 911 TRACE_EVENT0("startup", | 924 TRACE_EVENT0("startup", |
| 912 "ChromeBrowserMainParts::PreCreateThreadsImpl:ConvertFlags"); | 925 "ChromeBrowserMainParts::PreCreateThreadsImpl:ConvertFlags"); |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 967 } | 980 } |
| 968 CHECK(!loaded_locale.empty()) << "Locale could not be found for " << locale; | 981 CHECK(!loaded_locale.empty()) << "Locale could not be found for " << locale; |
| 969 browser_process_->SetApplicationLocale(loaded_locale); | 982 browser_process_->SetApplicationLocale(loaded_locale); |
| 970 | 983 |
| 971 { | 984 { |
| 972 TRACE_EVENT0("startup", | 985 TRACE_EVENT0("startup", |
| 973 "ChromeBrowserMainParts::PreCreateThreadsImpl:AddDataPack"); | 986 "ChromeBrowserMainParts::PreCreateThreadsImpl:AddDataPack"); |
| 974 base::FilePath resources_pack_path; | 987 base::FilePath resources_pack_path; |
| 975 PathService::Get(chrome::FILE_RESOURCES_PACK, &resources_pack_path); | 988 PathService::Get(chrome::FILE_RESOURCES_PACK, &resources_pack_path); |
| 976 #if defined(OS_ANDROID) | 989 #if defined(OS_ANDROID) |
| 990 // Uses Android resources even without ANDROID_JAVA_UI. | |
| 977 ui::LoadMainAndroidPackFile("assets/resources.pak", resources_pack_path); | 991 ui::LoadMainAndroidPackFile("assets/resources.pak", resources_pack_path); |
| 978 #else | 992 #else |
| 979 ResourceBundle::GetSharedInstance().AddDataPackFromPath( | 993 ResourceBundle::GetSharedInstance().AddDataPackFromPath( |
| 980 resources_pack_path, ui::SCALE_FACTOR_NONE); | 994 resources_pack_path, ui::SCALE_FACTOR_NONE); |
| 981 #endif // defined(OS_ANDROID) | 995 #endif // defined(OS_ANDROID) |
| 982 } | 996 } |
| 983 #endif // defined(OS_MACOSX) | 997 #endif // defined(OS_MACOSX) |
| 984 | 998 |
| 985 // Android does first run in Java instead of native. | 999 // Android does first run in Java instead of native. |
| 986 // Chrome OS has its own out-of-box-experience code. | 1000 // Chrome OS has its own out-of-box-experience code. |
| 1001 // TODO(bshe): Figure out which first run code to use for Aura Android. See | |
| 1002 // crbug.com/560498 | |
| 987 #if !defined(OS_ANDROID) && !defined(OS_CHROMEOS) | 1003 #if !defined(OS_ANDROID) && !defined(OS_CHROMEOS) |
| 988 // On first run, we need to process the predictor preferences before the | 1004 // On first run, we need to process the predictor preferences before the |
| 989 // browser's profile_manager object is created, but after ResourceBundle | 1005 // browser's profile_manager object is created, but after ResourceBundle |
| 990 // is initialized. | 1006 // is initialized. |
| 991 if (first_run::IsChromeFirstRun()) { | 1007 if (first_run::IsChromeFirstRun()) { |
| 992 first_run::ProcessMasterPreferencesResult pmp_result = | 1008 first_run::ProcessMasterPreferencesResult pmp_result = |
| 993 first_run::ProcessMasterPreferences(user_data_dir_, | 1009 first_run::ProcessMasterPreferences(user_data_dir_, |
| 994 master_prefs_.get()); | 1010 master_prefs_.get()); |
| 995 if (pmp_result == first_run::EULA_EXIT_NOW) | 1011 if (pmp_result == first_run::EULA_EXIT_NOW) |
| 996 return chrome::RESULT_CODE_EULA_REFUSED; | 1012 return chrome::RESULT_CODE_EULA_REFUSED; |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1124 #endif // defined(ENABLE_EXTENSIONS) | 1140 #endif // defined(ENABLE_EXTENSIONS) |
| 1125 | 1141 |
| 1126 #if !defined(OS_IOS) | 1142 #if !defined(OS_IOS) |
| 1127 InstallChromeJavaScriptNativeDialogFactory(); | 1143 InstallChromeJavaScriptNativeDialogFactory(); |
| 1128 #endif // !defined(OS_IOS) | 1144 #endif // !defined(OS_IOS) |
| 1129 } | 1145 } |
| 1130 | 1146 |
| 1131 void ChromeBrowserMainParts::PostProfileInit() { | 1147 void ChromeBrowserMainParts::PostProfileInit() { |
| 1132 TRACE_EVENT0("startup", "ChromeBrowserMainParts::PostProfileInit"); | 1148 TRACE_EVENT0("startup", "ChromeBrowserMainParts::PostProfileInit"); |
| 1133 | 1149 |
| 1134 #if defined(OS_ANDROID) | 1150 // TODO(bshe): Use defined(ANDROID_JAVA_UI) once |
| 1151 // codereview.chromium.org/1459793002 landed. | |
| 1152 #if defined(OS_ANDROID) && !defined(USE_AURA) | |
| 1135 DevToolsDiscoveryProviderAndroid::Install(); | 1153 DevToolsDiscoveryProviderAndroid::Install(); |
| 1136 #else | 1154 #else |
| 1137 ChromeDevToolsDiscoveryProvider::Install(); | 1155 ChromeDevToolsDiscoveryProvider::Install(); |
| 1138 #endif // defined(OS_ANDROID) | 1156 #endif // defined(OS_ANDROID) && !defined(USE_AURA) |
| 1139 | 1157 |
| 1140 LaunchDevToolsHandlerIfNeeded(parsed_command_line()); | 1158 LaunchDevToolsHandlerIfNeeded(parsed_command_line()); |
| 1141 for (size_t i = 0; i < chrome_extra_parts_.size(); ++i) | 1159 for (size_t i = 0; i < chrome_extra_parts_.size(); ++i) |
| 1142 chrome_extra_parts_[i]->PostProfileInit(); | 1160 chrome_extra_parts_[i]->PostProfileInit(); |
| 1143 } | 1161 } |
| 1144 | 1162 |
| 1145 void ChromeBrowserMainParts::PreBrowserStart() { | 1163 void ChromeBrowserMainParts::PreBrowserStart() { |
| 1146 TRACE_EVENT0("startup", "ChromeBrowserMainParts::PreBrowserStart"); | 1164 TRACE_EVENT0("startup", "ChromeBrowserMainParts::PreBrowserStart"); |
| 1147 for (size_t i = 0; i < chrome_extra_parts_.size(); ++i) | 1165 for (size_t i = 0; i < chrome_extra_parts_.size(); ++i) |
| 1148 chrome_extra_parts_[i]->PreBrowserStart(); | 1166 chrome_extra_parts_[i]->PreBrowserStart(); |
| (...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1410 base::TimeTicks::Now() - start_time_step1); | 1428 base::TimeTicks::Now() - start_time_step1); |
| 1411 | 1429 |
| 1412 // This step is costly and is already measured in Startup.CreateFirstProfile | 1430 // This step is costly and is already measured in Startup.CreateFirstProfile |
| 1413 // and more directly Profile.CreateAndInitializeProfile. | 1431 // and more directly Profile.CreateAndInitializeProfile. |
| 1414 profile_ = CreatePrimaryProfile(parameters(), | 1432 profile_ = CreatePrimaryProfile(parameters(), |
| 1415 user_data_dir_, | 1433 user_data_dir_, |
| 1416 parsed_command_line()); | 1434 parsed_command_line()); |
| 1417 if (!profile_) | 1435 if (!profile_) |
| 1418 return content::RESULT_CODE_NORMAL_EXIT; | 1436 return content::RESULT_CODE_NORMAL_EXIT; |
| 1419 | 1437 |
| 1420 #if !defined(OS_ANDROID) | 1438 // TODO(bshe): Use !defined(ANDROID_JAVA_UI) once |
| 1439 // codereview.chromium.org/1459793002 landed. | |
| 1440 #if !defined(OS_ANDROID) || defined(USE_AURA) | |
| 1421 const base::TimeTicks start_time_step2 = base::TimeTicks::Now(); | 1441 const base::TimeTicks start_time_step2 = base::TimeTicks::Now(); |
| 1422 // The first run sentinel must be created after the process singleton was | 1442 // The first run sentinel must be created after the process singleton was |
| 1423 // grabbed and no early return paths were otherwise hit above. | 1443 // grabbed and no early return paths were otherwise hit above. |
| 1424 first_run::CreateSentinelIfNeeded(); | 1444 first_run::CreateSentinelIfNeeded(); |
| 1425 #endif // !defined(OS_ANDROID) | 1445 #endif // !defined(OS_ANDROID) || defined(USE_AURA) |
| 1426 | 1446 |
| 1427 #if defined(ENABLE_BACKGROUND) | 1447 #if defined(ENABLE_BACKGROUND) |
| 1428 // Autoload any profiles which are running background apps. | 1448 // Autoload any profiles which are running background apps. |
| 1429 // TODO(rlp): Do this on a separate thread. See http://crbug.com/99075. | 1449 // TODO(rlp): Do this on a separate thread. See http://crbug.com/99075. |
| 1430 browser_process_->profile_manager()->AutoloadProfiles(); | 1450 browser_process_->profile_manager()->AutoloadProfiles(); |
| 1431 #endif // defined(ENABLE_BACKGROUND) | 1451 #endif // defined(ENABLE_BACKGROUND) |
| 1432 // Post-profile init --------------------------------------------------------- | 1452 // Post-profile init --------------------------------------------------------- |
| 1433 | 1453 |
| 1434 TranslateService::Initialize(); | 1454 TranslateService::Initialize(); |
| 1435 | 1455 |
| (...skipping 21 matching lines...) Expand all Loading... | |
| 1457 | 1477 |
| 1458 // Create an instance of GpuModeManager to watch gpu mode pref change. | 1478 // Create an instance of GpuModeManager to watch gpu mode pref change. |
| 1459 g_browser_process->gpu_mode_manager(); | 1479 g_browser_process->gpu_mode_manager(); |
| 1460 | 1480 |
| 1461 #if !defined(OS_ANDROID) && !defined(OS_CHROMEOS) | 1481 #if !defined(OS_ANDROID) && !defined(OS_CHROMEOS) |
| 1462 // Show the First Run UI if this is the first time Chrome has been run on | 1482 // Show the First Run UI if this is the first time Chrome has been run on |
| 1463 // this computer, or we're being compelled to do so by a command line flag. | 1483 // this computer, or we're being compelled to do so by a command line flag. |
| 1464 // Note that this be done _after_ the PrefService is initialized and all | 1484 // Note that this be done _after_ the PrefService is initialized and all |
| 1465 // preferences are registered, since some of the code that the importer | 1485 // preferences are registered, since some of the code that the importer |
| 1466 // touches reads preferences. | 1486 // touches reads preferences. |
| 1487 // TODO(bshe): Figure out which first run code to use for Aura Android. See | |
| 1488 // crbug.com/560498 | |
| 1467 if (first_run::IsChromeFirstRun()) { | 1489 if (first_run::IsChromeFirstRun()) { |
| 1468 first_run::AutoImport(profile_, | 1490 first_run::AutoImport(profile_, |
| 1469 master_prefs_->homepage_defined, | 1491 master_prefs_->homepage_defined, |
| 1470 master_prefs_->do_import_items, | 1492 master_prefs_->do_import_items, |
| 1471 master_prefs_->dont_import_items, | 1493 master_prefs_->dont_import_items, |
| 1472 master_prefs_->import_bookmarks_path); | 1494 master_prefs_->import_bookmarks_path); |
| 1473 | 1495 |
| 1474 // Note: this can pop the first run consent dialog on linux. | 1496 // Note: this can pop the first run consent dialog on linux. |
| 1475 first_run::DoPostImportTasks(profile_, | 1497 first_run::DoPostImportTasks(profile_, |
| 1476 master_prefs_->make_chrome_default_for_user); | 1498 master_prefs_->make_chrome_default_for_user); |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1591 // instead? | 1613 // instead? |
| 1592 CloudPrintProxyServiceFactory::GetForProfile(profile_); | 1614 CloudPrintProxyServiceFactory::GetForProfile(profile_); |
| 1593 #endif // defined(ENABLE_PRINT_PREVIEW) | 1615 #endif // defined(ENABLE_PRINT_PREVIEW) |
| 1594 | 1616 |
| 1595 // Start watching all browser threads for responsiveness. | 1617 // Start watching all browser threads for responsiveness. |
| 1596 metrics::MetricsService::SetExecutionPhase( | 1618 metrics::MetricsService::SetExecutionPhase( |
| 1597 metrics::MetricsService::THREAD_WATCHER_START, | 1619 metrics::MetricsService::THREAD_WATCHER_START, |
| 1598 g_browser_process->local_state()); | 1620 g_browser_process->local_state()); |
| 1599 ThreadWatcherList::StartWatchingAll(parsed_command_line()); | 1621 ThreadWatcherList::StartWatchingAll(parsed_command_line()); |
| 1600 | 1622 |
| 1601 #if defined(OS_ANDROID) | 1623 // TODO(bshe): Use defined(ANDROID_JAVA_UI) once |
| 1624 // codereview.chromium.org/1459793002 landed. | |
| 1625 #if defined(OS_ANDROID) && !defined(USE_AURA) | |
| 1602 ThreadWatcherAndroid::RegisterApplicationStatusListener(); | 1626 ThreadWatcherAndroid::RegisterApplicationStatusListener(); |
|
bshe
2015/11/24 19:24:57
I am not sure what is this for. It looks like we u
mfomitchev
2015/11/30 21:34:17
From a quick look, the class's purpose is deactiva
bshe
2015/12/03 14:33:05
Added a TODO.
| |
| 1603 #endif // defined(OS_ANDROID) | 1627 #endif // defined(OS_ANDROID) && !defined(USE_AURA) |
| 1604 | 1628 |
| 1605 #if !defined(DISABLE_NACL) | 1629 #if !defined(DISABLE_NACL) |
| 1606 BrowserThread::PostTask( | 1630 BrowserThread::PostTask( |
| 1607 BrowserThread::IO, | 1631 BrowserThread::IO, |
| 1608 FROM_HERE, | 1632 FROM_HERE, |
| 1609 base::Bind(nacl::NaClProcessHost::EarlyStartup)); | 1633 base::Bind(nacl::NaClProcessHost::EarlyStartup)); |
| 1610 #endif // !defined(DISABLE_NACL) | 1634 #endif // !defined(DISABLE_NACL) |
| 1611 | 1635 |
| 1612 // Make sure initial prefs are recorded | 1636 // Make sure initial prefs are recorded |
| 1613 PrefMetricsService::Factory::GetForProfile(profile_); | 1637 PrefMetricsService::Factory::GetForProfile(profile_); |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 1630 #if defined(OS_ANDROID) | 1654 #if defined(OS_ANDROID) |
| 1631 variations::VariationsService* variations_service = | 1655 variations::VariationsService* variations_service = |
| 1632 browser_process_->variations_service(); | 1656 browser_process_->variations_service(); |
| 1633 if (variations_service) { | 1657 if (variations_service) { |
| 1634 // Just initialize the policy prefs service here. Variations seed fetching | 1658 // Just initialize the policy prefs service here. Variations seed fetching |
| 1635 // will be initialized when the app enters foreground mode. | 1659 // will be initialized when the app enters foreground mode. |
| 1636 variations_service->set_policy_pref_service(profile_->GetPrefs()); | 1660 variations_service->set_policy_pref_service(profile_->GetPrefs()); |
| 1637 } | 1661 } |
| 1638 translate::TranslateDownloadManager::RequestLanguageList( | 1662 translate::TranslateDownloadManager::RequestLanguageList( |
| 1639 profile_->GetPrefs()); | 1663 profile_->GetPrefs()); |
| 1640 | |
| 1641 #else | 1664 #else |
| 1642 // Most general initialization is behind us, but opening a | 1665 // Most general initialization is behind us, but opening a |
| 1643 // tab and/or session restore and such is still to be done. | 1666 // tab and/or session restore and such is still to be done. |
| 1644 base::TimeTicks browser_open_start = base::TimeTicks::Now(); | 1667 base::TimeTicks browser_open_start = base::TimeTicks::Now(); |
| 1645 | 1668 |
| 1646 // We are in regular browser boot sequence. Open initial tabs and enter the | 1669 // We are in regular browser boot sequence. Open initial tabs and enter the |
| 1647 // main message loop. | 1670 // main message loop. |
| 1648 std::vector<Profile*> last_opened_profiles; | 1671 std::vector<Profile*> last_opened_profiles; |
| 1649 #if !defined(OS_CHROMEOS) | 1672 #if !defined(OS_CHROMEOS) |
| 1650 // On ChromeOS multiple profiles doesn't apply, and will break if we load | 1673 // On ChromeOS multiple profiles doesn't apply, and will break if we load |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1707 } | 1730 } |
| 1708 } | 1731 } |
| 1709 run_message_loop_ = started; | 1732 run_message_loop_ = started; |
| 1710 browser_creator_.reset(); | 1733 browser_creator_.reset(); |
| 1711 | 1734 |
| 1712 #if !defined(OS_LINUX) || defined(OS_CHROMEOS) // http://crbug.com/426393 | 1735 #if !defined(OS_LINUX) || defined(OS_CHROMEOS) // http://crbug.com/426393 |
| 1713 if (g_browser_process->metrics_service()->reporting_active()) | 1736 if (g_browser_process->metrics_service()->reporting_active()) |
| 1714 content::StartPowerUsageMonitor(); | 1737 content::StartPowerUsageMonitor(); |
| 1715 #endif // !defined(OS_LINUX) || defined(OS_CHROMEOS) | 1738 #endif // !defined(OS_LINUX) || defined(OS_CHROMEOS) |
| 1716 | 1739 |
| 1740 #if !defined(OS_ANDROID) | |
| 1717 process_power_collector_.reset(new ProcessPowerCollector); | 1741 process_power_collector_.reset(new ProcessPowerCollector); |
| 1718 process_power_collector_->Initialize(); | 1742 process_power_collector_->Initialize(); |
| 1719 #endif // !defined(OS_ANDROID) | 1743 #endif // !defined(OS_ANDROID) |
| 1744 #endif // !defined(OS_ANDROID) && !defined(USE_AURA) | |
| 1720 | 1745 |
| 1721 PostBrowserStart(); | 1746 PostBrowserStart(); |
| 1722 | 1747 |
| 1723 if (parameters().ui_task) { | 1748 if (parameters().ui_task) { |
| 1724 parameters().ui_task->Run(); | 1749 parameters().ui_task->Run(); |
| 1725 delete parameters().ui_task; | 1750 delete parameters().ui_task; |
| 1726 run_message_loop_ = false; | 1751 run_message_loop_ = false; |
| 1727 } | 1752 } |
| 1728 #if defined(OS_ANDROID) | 1753 #if defined(OS_ANDROID) |
| 1729 // We never run the C++ main loop on Android, since the UI thread message | 1754 // We never run the C++ main loop on Android, since the UI thread message |
| 1730 // loop is controlled by the OS, so this is as close as we can get to | 1755 // loop is controlled by the OS, so this is as close as we can get to |
| 1731 // the start of the main loop. | 1756 // the start of the main loop. |
| 1732 if (result_code_ <= 0) { | 1757 if (result_code_ <= 0) { |
| 1733 RecordBrowserStartupTime(); | 1758 RecordBrowserStartupTime(); |
| 1734 } | 1759 } |
| 1735 #endif // defined(OS_ANDROID) | 1760 #endif // defined(OS_ANDROID) |
| 1736 | 1761 |
| 1737 #if !defined(OS_ANDROID) | 1762 // TODO(bshe): Use !defined(ANDROID_JAVA_UI) once |
| 1763 // codereview.chromium.org/1459793002 landed. | |
| 1764 #if !defined(OS_ANDROID) || defined(USE_AURA) | |
| 1738 UMA_HISTOGRAM_TIMES("Startup.PreMainMessageLoopRunImplStep3Time", | 1765 UMA_HISTOGRAM_TIMES("Startup.PreMainMessageLoopRunImplStep3Time", |
| 1739 base::TimeTicks::Now() - start_time_step3); | 1766 base::TimeTicks::Now() - start_time_step3); |
| 1740 #endif // !defined(OS_ANDROID) | 1767 #endif // !defined(OS_ANDROID) || defined(USE_AURA) |
| 1741 | 1768 |
| 1742 return result_code_; | 1769 return result_code_; |
| 1743 } | 1770 } |
| 1744 | 1771 |
| 1745 bool ChromeBrowserMainParts::MainMessageLoopRun(int* result_code) { | 1772 bool ChromeBrowserMainParts::MainMessageLoopRun(int* result_code) { |
| 1746 // Trace the entry and exit of this method. We don't use the TRACE_EVENT0 | 1773 // Trace the entry and exit of this method. We don't use the TRACE_EVENT0 |
| 1747 // macro because the tracing infrastructure doesn't expect a synchronous event | 1774 // macro because the tracing infrastructure doesn't expect a synchronous event |
| 1748 // around the main loop of a thread. | 1775 // around the main loop of a thread. |
| 1749 ScopedMainMessageLoopRunEvent scoped_main_message_loop_run_event; | 1776 ScopedMainMessageLoopRunEvent scoped_main_message_loop_run_event; |
| 1750 #if defined(OS_ANDROID) | 1777 #if defined(OS_ANDROID) |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1850 chromeos::CrosSettings::Shutdown(); | 1877 chromeos::CrosSettings::Shutdown(); |
| 1851 #endif // defined(OS_CHROMEOS) | 1878 #endif // defined(OS_CHROMEOS) |
| 1852 #endif // defined(OS_ANDROID) | 1879 #endif // defined(OS_ANDROID) |
| 1853 } | 1880 } |
| 1854 | 1881 |
| 1855 // Public members: | 1882 // Public members: |
| 1856 | 1883 |
| 1857 void ChromeBrowserMainParts::AddParts(ChromeBrowserMainExtraParts* parts) { | 1884 void ChromeBrowserMainParts::AddParts(ChromeBrowserMainExtraParts* parts) { |
| 1858 chrome_extra_parts_.push_back(parts); | 1885 chrome_extra_parts_.push_back(parts); |
| 1859 } | 1886 } |
| OLD | NEW |