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 <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 #include <set> | 9 #include <set> |
10 #include <string> | 10 #include <string> |
(...skipping 778 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
789 // Don't record any metrics if UI was displayed before this point e.g. | 789 // Don't record any metrics if UI was displayed before this point e.g. |
790 // warning dialogs. | 790 // warning dialogs. |
791 if (startup_metric_utils::WasNonBrowserUIDisplayed()) | 791 if (startup_metric_utils::WasNonBrowserUIDisplayed()) |
792 return; | 792 return; |
793 | 793 |
794 bool is_first_run = false; | 794 bool is_first_run = false; |
795 #if !defined(OS_ANDROID) | 795 #if !defined(OS_ANDROID) |
796 // On Android, first run is handled in Java code, and the C++ side of Chrome | 796 // On Android, first run is handled in Java code, and the C++ side of Chrome |
797 // doesn't know if this is the first run. This will cause some inaccuracy in | 797 // doesn't know if this is the first run. This will cause some inaccuracy in |
798 // the UMA statistics, but this should be minor (first runs are rare). | 798 // the UMA statistics, but this should be minor (first runs are rare). |
799 // TODO(bshe): Figure out which first run code to use for Aura Android. See | |
800 // crbug.com/560498 | |
801 is_first_run = first_run::IsChromeFirstRun(); | 799 is_first_run = first_run::IsChromeFirstRun(); |
802 #endif // defined(OS_ANDROID) | 800 #endif // defined(OS_ANDROID) |
803 | 801 |
804 // Record collected startup metrics. | 802 // Record collected startup metrics. |
805 startup_metric_utils::RecordBrowserMainMessageLoopStart( | 803 startup_metric_utils::RecordBrowserMainMessageLoopStart( |
806 base::TimeTicks::Now(), is_first_run); | 804 base::TimeTicks::Now(), is_first_run); |
807 } | 805 } |
808 | 806 |
809 // ----------------------------------------------------------------------------- | 807 // ----------------------------------------------------------------------------- |
810 // TODO(viettrungluu): move more/rest of BrowserMain() into BrowserMainParts. | 808 // TODO(viettrungluu): move more/rest of BrowserMain() into BrowserMainParts. |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
864 | 862 |
865 for (size_t i = 0; i < chrome_extra_parts_.size(); ++i) | 863 for (size_t i = 0; i < chrome_extra_parts_.size(); ++i) |
866 chrome_extra_parts_[i]->PostMainMessageLoopStart(); | 864 chrome_extra_parts_[i]->PostMainMessageLoopStart(); |
867 } | 865 } |
868 | 866 |
869 int ChromeBrowserMainParts::PreCreateThreads() { | 867 int ChromeBrowserMainParts::PreCreateThreads() { |
870 TRACE_EVENT0("startup", "ChromeBrowserMainParts::PreCreateThreads"); | 868 TRACE_EVENT0("startup", "ChromeBrowserMainParts::PreCreateThreads"); |
871 result_code_ = PreCreateThreadsImpl(); | 869 result_code_ = PreCreateThreadsImpl(); |
872 | 870 |
873 if (result_code_ == content::RESULT_CODE_NORMAL_EXIT) { | 871 if (result_code_ == content::RESULT_CODE_NORMAL_EXIT) { |
874 // TODO(bshe): Use !defined(ANDROID_JAVA_UI) once | 872 #if !defined(OS_ANDROID) |
875 // codereview.chromium.org/1459793002 landed. | |
876 #if !defined(OS_ANDROID) || defined(USE_AURA) | |
877 // These members must be initialized before exiting this function normally. | 873 // These members must be initialized before exiting this function normally. |
878 DCHECK(master_prefs_.get()); | 874 DCHECK(master_prefs_.get()); |
879 DCHECK(browser_creator_.get()); | 875 DCHECK(browser_creator_.get()); |
880 #endif // !defined(OS_ANDROID) || defined(USE_AURA) | 876 #endif // !defined(OS_ANDROID) |
881 for (size_t i = 0; i < chrome_extra_parts_.size(); ++i) | 877 for (size_t i = 0; i < chrome_extra_parts_.size(); ++i) |
882 chrome_extra_parts_[i]->PreCreateThreads(); | 878 chrome_extra_parts_[i]->PreCreateThreads(); |
883 } | 879 } |
884 | 880 |
885 return result_code_; | 881 return result_code_; |
886 } | 882 } |
887 | 883 |
888 int ChromeBrowserMainParts::PreCreateThreadsImpl() { | 884 int ChromeBrowserMainParts::PreCreateThreadsImpl() { |
889 TRACE_EVENT0("startup", "ChromeBrowserMainParts::PreCreateThreadsImpl") | 885 TRACE_EVENT0("startup", "ChromeBrowserMainParts::PreCreateThreadsImpl") |
890 run_message_loop_ = false; | 886 run_message_loop_ = false; |
891 #if !defined(OS_ANDROID) | 887 #if !defined(OS_ANDROID) |
892 chrome::MaybeShowInvalidUserDataDirWarningDialog(); | 888 chrome::MaybeShowInvalidUserDataDirWarningDialog(); |
893 #endif // !defined(OS_ANDROID) | 889 #endif // !defined(OS_ANDROID) |
894 if (!PathService::Get(chrome::DIR_USER_DATA, &user_data_dir_)) | 890 if (!PathService::Get(chrome::DIR_USER_DATA, &user_data_dir_)) |
895 return chrome::RESULT_CODE_MISSING_DATA; | 891 return chrome::RESULT_CODE_MISSING_DATA; |
896 | 892 |
897 // Force MediaCaptureDevicesDispatcher to be created on UI thread. | 893 // Force MediaCaptureDevicesDispatcher to be created on UI thread. |
898 MediaCaptureDevicesDispatcher::GetInstance(); | 894 MediaCaptureDevicesDispatcher::GetInstance(); |
899 | 895 |
900 // Android's first run is done in Java instead of native. | 896 // Android's first run is done in Java instead of native. |
901 // TODO(bshe): Figure out which first run code to use for Aura Android. See | |
902 // crbug.com/560498 | |
903 #if !defined(OS_ANDROID) | 897 #if !defined(OS_ANDROID) |
904 process_singleton_.reset(new ChromeProcessSingleton( | 898 process_singleton_.reset(new ChromeProcessSingleton( |
905 user_data_dir_, base::Bind(&ProcessSingletonNotificationCallback))); | 899 user_data_dir_, base::Bind(&ProcessSingletonNotificationCallback))); |
906 | 900 |
907 // Cache first run state early. | 901 // Cache first run state early. |
908 first_run::IsChromeFirstRun(); | 902 first_run::IsChromeFirstRun(); |
909 #endif // !defined(OS_ANDROID) | 903 #endif // !defined(OS_ANDROID) |
910 | 904 |
911 scoped_refptr<base::SequencedTaskRunner> local_state_task_runner = | 905 scoped_refptr<base::SequencedTaskRunner> local_state_task_runner = |
912 JsonPrefStore::GetTaskRunnerForFile( | 906 JsonPrefStore::GetTaskRunnerForFile( |
(...skipping 17 matching lines...) Expand all Loading... |
930 tracked_objects::ThreadData::Status status = | 924 tracked_objects::ThreadData::Status status = |
931 tracked_objects::ThreadData::PROFILING_ACTIVE; | 925 tracked_objects::ThreadData::PROFILING_ACTIVE; |
932 if (flag.compare("0") != 0) | 926 if (flag.compare("0") != 0) |
933 status = tracked_objects::ThreadData::DEACTIVATED; | 927 status = tracked_objects::ThreadData::DEACTIVATED; |
934 tracked_objects::ThreadData::InitializeAndSetTrackingStatus(status); | 928 tracked_objects::ThreadData::InitializeAndSetTrackingStatus(status); |
935 } | 929 } |
936 | 930 |
937 local_state_ = InitializeLocalState( | 931 local_state_ = InitializeLocalState( |
938 local_state_task_runner.get(), parsed_command_line()); | 932 local_state_task_runner.get(), parsed_command_line()); |
939 | 933 |
940 // TODO(bshe): Use !defined(ANDROID_JAVA_UI) once | 934 #if !defined(OS_ANDROID) |
941 // codereview.chromium.org/1459793002 landed. | |
942 #if !defined(OS_ANDROID) || defined(USE_AURA) | |
943 // These members must be initialized before returning from this function. | 935 // These members must be initialized before returning from this function. |
944 master_prefs_.reset(new first_run::MasterPrefs); | 936 master_prefs_.reset(new first_run::MasterPrefs); |
945 // Android doesn't use StartupBrowserCreator. | 937 // Android doesn't use StartupBrowserCreator. |
946 browser_creator_.reset(new StartupBrowserCreator); | 938 browser_creator_.reset(new StartupBrowserCreator); |
947 // TODO(yfriedman): Refactor Android to re-use UMABrowsingActivityObserver | 939 // TODO(yfriedman): Refactor Android to re-use UMABrowsingActivityObserver |
948 chrome::UMABrowsingActivityObserver::Init(); | 940 chrome::UMABrowsingActivityObserver::Init(); |
949 #endif // !defined(OS_ANDROID) || defined(USE_AURA) | 941 #endif // !defined(OS_ANDROID) |
950 | 942 |
951 #if !defined(OS_CHROMEOS) | 943 #if !defined(OS_CHROMEOS) |
952 // Convert active labs into switches. This needs to be done before | 944 // Convert active labs into switches. This needs to be done before |
953 // ResourceBundle::InitSharedInstanceWithLocale as some loaded resources are | 945 // ResourceBundle::InitSharedInstanceWithLocale as some loaded resources are |
954 // affected by experiment flags (--touch-optimized-ui in particular). | 946 // affected by experiment flags (--touch-optimized-ui in particular). |
955 // On ChromeOS system level flags are applied from the device settings from | 947 // On ChromeOS system level flags are applied from the device settings from |
956 // the session manager. | 948 // the session manager. |
957 { | 949 { |
958 TRACE_EVENT0("startup", | 950 TRACE_EVENT0("startup", |
959 "ChromeBrowserMainParts::PreCreateThreadsImpl:ConvertFlags"); | 951 "ChromeBrowserMainParts::PreCreateThreadsImpl:ConvertFlags"); |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1014 } | 1006 } |
1015 CHECK(!loaded_locale.empty()) << "Locale could not be found for " << locale; | 1007 CHECK(!loaded_locale.empty()) << "Locale could not be found for " << locale; |
1016 browser_process_->SetApplicationLocale(loaded_locale); | 1008 browser_process_->SetApplicationLocale(loaded_locale); |
1017 | 1009 |
1018 { | 1010 { |
1019 TRACE_EVENT0("startup", | 1011 TRACE_EVENT0("startup", |
1020 "ChromeBrowserMainParts::PreCreateThreadsImpl:AddDataPack"); | 1012 "ChromeBrowserMainParts::PreCreateThreadsImpl:AddDataPack"); |
1021 base::FilePath resources_pack_path; | 1013 base::FilePath resources_pack_path; |
1022 PathService::Get(chrome::FILE_RESOURCES_PACK, &resources_pack_path); | 1014 PathService::Get(chrome::FILE_RESOURCES_PACK, &resources_pack_path); |
1023 #if defined(OS_ANDROID) | 1015 #if defined(OS_ANDROID) |
1024 // Uses Android resources even without ANDROID_JAVA_UI. | |
1025 ui::LoadMainAndroidPackFile("assets/resources.pak", resources_pack_path); | 1016 ui::LoadMainAndroidPackFile("assets/resources.pak", resources_pack_path); |
1026 #else | 1017 #else |
1027 ResourceBundle::GetSharedInstance().AddDataPackFromPath( | 1018 ResourceBundle::GetSharedInstance().AddDataPackFromPath( |
1028 resources_pack_path, ui::SCALE_FACTOR_NONE); | 1019 resources_pack_path, ui::SCALE_FACTOR_NONE); |
1029 #endif // defined(OS_ANDROID) | 1020 #endif // defined(OS_ANDROID) |
1030 } | 1021 } |
1031 #endif // defined(OS_MACOSX) | 1022 #endif // defined(OS_MACOSX) |
1032 | 1023 |
1033 // Android does first run in Java instead of native. | 1024 // Android does first run in Java instead of native. |
1034 // Chrome OS has its own out-of-box-experience code. | 1025 // Chrome OS has its own out-of-box-experience code. |
1035 // TODO(bshe): Figure out which first run code to use for Aura Android. See | |
1036 // crbug.com/560498 | |
1037 #if !defined(OS_ANDROID) && !defined(OS_CHROMEOS) | 1026 #if !defined(OS_ANDROID) && !defined(OS_CHROMEOS) |
1038 // On first run, we need to process the predictor preferences before the | 1027 // On first run, we need to process the predictor preferences before the |
1039 // browser's profile_manager object is created, but after ResourceBundle | 1028 // browser's profile_manager object is created, but after ResourceBundle |
1040 // is initialized. | 1029 // is initialized. |
1041 if (first_run::IsChromeFirstRun()) { | 1030 if (first_run::IsChromeFirstRun()) { |
1042 first_run::ProcessMasterPreferencesResult pmp_result = | 1031 first_run::ProcessMasterPreferencesResult pmp_result = |
1043 first_run::ProcessMasterPreferences(user_data_dir_, | 1032 first_run::ProcessMasterPreferences(user_data_dir_, |
1044 master_prefs_.get()); | 1033 master_prefs_.get()); |
1045 if (pmp_result == first_run::EULA_EXIT_NOW) | 1034 if (pmp_result == first_run::EULA_EXIT_NOW) |
1046 return chrome::RESULT_CODE_EULA_REFUSED; | 1035 return chrome::RESULT_CODE_EULA_REFUSED; |
(...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1460 base::TimeTicks::Now() - start_time_step1); | 1449 base::TimeTicks::Now() - start_time_step1); |
1461 | 1450 |
1462 // This step is costly and is already measured in Startup.CreateFirstProfile | 1451 // This step is costly and is already measured in Startup.CreateFirstProfile |
1463 // and more directly Profile.CreateAndInitializeProfile. | 1452 // and more directly Profile.CreateAndInitializeProfile. |
1464 profile_ = CreatePrimaryProfile(parameters(), | 1453 profile_ = CreatePrimaryProfile(parameters(), |
1465 user_data_dir_, | 1454 user_data_dir_, |
1466 parsed_command_line()); | 1455 parsed_command_line()); |
1467 if (!profile_) | 1456 if (!profile_) |
1468 return content::RESULT_CODE_NORMAL_EXIT; | 1457 return content::RESULT_CODE_NORMAL_EXIT; |
1469 | 1458 |
1470 // TODO(bshe): Use !defined(ANDROID_JAVA_UI) once | 1459 #if !defined(OS_ANDROID) |
1471 // codereview.chromium.org/1459793002 landed. | |
1472 #if !defined(OS_ANDROID) || defined(USE_AURA) | |
1473 const base::TimeTicks start_time_step2 = base::TimeTicks::Now(); | 1460 const base::TimeTicks start_time_step2 = base::TimeTicks::Now(); |
1474 // The first run sentinel must be created after the process singleton was | 1461 // The first run sentinel must be created after the process singleton was |
1475 // grabbed and no early return paths were otherwise hit above. | 1462 // grabbed and no early return paths were otherwise hit above. |
1476 first_run::CreateSentinelIfNeeded(); | 1463 first_run::CreateSentinelIfNeeded(); |
1477 #endif // !defined(OS_ANDROID) || defined(USE_AURA) | 1464 #endif // !defined(OS_ANDROID) |
1478 | 1465 |
1479 #if defined(ENABLE_BACKGROUND) | 1466 #if defined(ENABLE_BACKGROUND) |
1480 // Autoload any profiles which are running background apps. | 1467 // Autoload any profiles which are running background apps. |
1481 // TODO(rlp): Do this on a separate thread. See http://crbug.com/99075. | 1468 // TODO(rlp): Do this on a separate thread. See http://crbug.com/99075. |
1482 browser_process_->profile_manager()->AutoloadProfiles(); | 1469 browser_process_->profile_manager()->AutoloadProfiles(); |
1483 #endif // defined(ENABLE_BACKGROUND) | 1470 #endif // defined(ENABLE_BACKGROUND) |
1484 // Post-profile init --------------------------------------------------------- | 1471 // Post-profile init --------------------------------------------------------- |
1485 | 1472 |
1486 TranslateService::Initialize(); | 1473 TranslateService::Initialize(); |
1487 | 1474 |
(...skipping 21 matching lines...) Expand all Loading... |
1509 | 1496 |
1510 // Create an instance of GpuModeManager to watch gpu mode pref change. | 1497 // Create an instance of GpuModeManager to watch gpu mode pref change. |
1511 g_browser_process->gpu_mode_manager(); | 1498 g_browser_process->gpu_mode_manager(); |
1512 | 1499 |
1513 #if !defined(OS_ANDROID) && !defined(OS_CHROMEOS) | 1500 #if !defined(OS_ANDROID) && !defined(OS_CHROMEOS) |
1514 // Show the First Run UI if this is the first time Chrome has been run on | 1501 // Show the First Run UI if this is the first time Chrome has been run on |
1515 // this computer, or we're being compelled to do so by a command line flag. | 1502 // this computer, or we're being compelled to do so by a command line flag. |
1516 // Note that this be done _after_ the PrefService is initialized and all | 1503 // Note that this be done _after_ the PrefService is initialized and all |
1517 // preferences are registered, since some of the code that the importer | 1504 // preferences are registered, since some of the code that the importer |
1518 // touches reads preferences. | 1505 // touches reads preferences. |
1519 // TODO(bshe): Figure out which first run code to use for Aura Android. See | |
1520 // crbug.com/560498 | |
1521 if (first_run::IsChromeFirstRun()) { | 1506 if (first_run::IsChromeFirstRun()) { |
1522 first_run::AutoImport(profile_, | 1507 first_run::AutoImport(profile_, |
1523 master_prefs_->homepage_defined, | 1508 master_prefs_->homepage_defined, |
1524 master_prefs_->do_import_items, | 1509 master_prefs_->do_import_items, |
1525 master_prefs_->dont_import_items, | 1510 master_prefs_->dont_import_items, |
1526 master_prefs_->import_bookmarks_path); | 1511 master_prefs_->import_bookmarks_path); |
1527 | 1512 |
1528 // Note: this can pop the first run consent dialog on linux. | 1513 // Note: this can pop the first run consent dialog on linux. |
1529 first_run::DoPostImportTasks(profile_, | 1514 first_run::DoPostImportTasks(profile_, |
1530 master_prefs_->make_chrome_default_for_user); | 1515 master_prefs_->make_chrome_default_for_user); |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1645 // instead? | 1630 // instead? |
1646 CloudPrintProxyServiceFactory::GetForProfile(profile_); | 1631 CloudPrintProxyServiceFactory::GetForProfile(profile_); |
1647 #endif // defined(ENABLE_PRINT_PREVIEW) | 1632 #endif // defined(ENABLE_PRINT_PREVIEW) |
1648 | 1633 |
1649 // Start watching all browser threads for responsiveness. | 1634 // Start watching all browser threads for responsiveness. |
1650 metrics::MetricsService::SetExecutionPhase( | 1635 metrics::MetricsService::SetExecutionPhase( |
1651 metrics::MetricsService::THREAD_WATCHER_START, | 1636 metrics::MetricsService::THREAD_WATCHER_START, |
1652 g_browser_process->local_state()); | 1637 g_browser_process->local_state()); |
1653 ThreadWatcherList::StartWatchingAll(parsed_command_line()); | 1638 ThreadWatcherList::StartWatchingAll(parsed_command_line()); |
1654 | 1639 |
1655 // TODO(bshe): Aura Android may need this call. See crbug.com/565317. | 1640 #if defined(OS_ANDROID) |
1656 #if defined(OS_ANDROID) && !defined(USE_AURA) | |
1657 ThreadWatcherAndroid::RegisterApplicationStatusListener(); | 1641 ThreadWatcherAndroid::RegisterApplicationStatusListener(); |
1658 #endif // defined(OS_ANDROID) && !defined(USE_AURA) | 1642 #endif // defined(OS_ANDROID) |
1659 | 1643 |
1660 #if !defined(DISABLE_NACL) | 1644 #if !defined(DISABLE_NACL) |
1661 BrowserThread::PostTask( | 1645 BrowserThread::PostTask( |
1662 BrowserThread::IO, | 1646 BrowserThread::IO, |
1663 FROM_HERE, | 1647 FROM_HERE, |
1664 base::Bind(nacl::NaClProcessHost::EarlyStartup)); | 1648 base::Bind(nacl::NaClProcessHost::EarlyStartup)); |
1665 #endif // !defined(DISABLE_NACL) | 1649 #endif // !defined(DISABLE_NACL) |
1666 | 1650 |
1667 // Make sure initial prefs are recorded | 1651 // Make sure initial prefs are recorded |
1668 PrefMetricsService::Factory::GetForProfile(profile_); | 1652 PrefMetricsService::Factory::GetForProfile(profile_); |
1669 | 1653 |
1670 PreBrowserStart(); | 1654 PreBrowserStart(); |
1671 | 1655 |
1672 // Instantiate the notification UI manager, as this triggers a perf timer | 1656 // Instantiate the notification UI manager, as this triggers a perf timer |
1673 // used to measure startup time. TODO(stevenjb): Figure out what is actually | 1657 // used to measure startup time. TODO(stevenjb): Figure out what is actually |
1674 // triggering the timer and call that explicitly in the approprate place. | 1658 // triggering the timer and call that explicitly in the approprate place. |
1675 // http://crbug.com/105065. | 1659 // http://crbug.com/105065. |
1676 browser_process_->notification_ui_manager(); | 1660 browser_process_->notification_ui_manager(); |
1677 | 1661 |
1678 // This must be called prior to RegisterComponentsForUpdate, in case the CLD | 1662 // This must be called prior to RegisterComponentsForUpdate, in case the CLD |
1679 // data source is based on the Component Updater. | 1663 // data source is based on the Component Updater. |
1680 translate::BrowserCldUtils::ConfigureDefaultDataProvider(); | 1664 translate::BrowserCldUtils::ConfigureDefaultDataProvider(); |
1681 | 1665 |
1682 if (!parsed_command_line().HasSwitch(switches::kDisableComponentUpdate)) | 1666 if (!parsed_command_line().HasSwitch(switches::kDisableComponentUpdate)) |
1683 RegisterComponentsForUpdate(); | 1667 RegisterComponentsForUpdate(); |
1684 | 1668 |
1685 // TODO(bshe): Use defined(ANDROID_JAVA_UI) once | 1669 #if defined(OS_ANDROID) |
1686 // codereview.chromium.org/1459793002 landed. | |
1687 #if defined(OS_ANDROID) && !defined(USE_AURA) | |
1688 variations::VariationsService* variations_service = | 1670 variations::VariationsService* variations_service = |
1689 browser_process_->variations_service(); | 1671 browser_process_->variations_service(); |
1690 if (variations_service) { | 1672 if (variations_service) { |
1691 // Just initialize the policy prefs service here. Variations seed fetching | 1673 // Just initialize the policy prefs service here. Variations seed fetching |
1692 // will be initialized when the app enters foreground mode. | 1674 // will be initialized when the app enters foreground mode. |
1693 variations_service->set_policy_pref_service(profile_->GetPrefs()); | 1675 variations_service->set_policy_pref_service(profile_->GetPrefs()); |
1694 } | 1676 } |
1695 translate::TranslateDownloadManager::RequestLanguageList( | 1677 translate::TranslateDownloadManager::RequestLanguageList( |
1696 profile_->GetPrefs()); | 1678 profile_->GetPrefs()); |
| 1679 |
1697 #else | 1680 #else |
1698 // Most general initialization is behind us, but opening a | 1681 // Most general initialization is behind us, but opening a |
1699 // tab and/or session restore and such is still to be done. | 1682 // tab and/or session restore and such is still to be done. |
1700 base::TimeTicks browser_open_start = base::TimeTicks::Now(); | 1683 base::TimeTicks browser_open_start = base::TimeTicks::Now(); |
1701 | 1684 |
1702 // We are in regular browser boot sequence. Open initial tabs and enter the | 1685 // We are in regular browser boot sequence. Open initial tabs and enter the |
1703 // main message loop. | 1686 // main message loop. |
1704 std::vector<Profile*> last_opened_profiles; | 1687 std::vector<Profile*> last_opened_profiles; |
1705 #if !defined(OS_CHROMEOS) | 1688 #if !defined(OS_CHROMEOS) |
1706 // On ChromeOS multiple profiles doesn't apply, and will break if we load | 1689 // 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... |
1763 } | 1746 } |
1764 } | 1747 } |
1765 run_message_loop_ = started; | 1748 run_message_loop_ = started; |
1766 browser_creator_.reset(); | 1749 browser_creator_.reset(); |
1767 | 1750 |
1768 #if !defined(OS_LINUX) || defined(OS_CHROMEOS) // http://crbug.com/426393 | 1751 #if !defined(OS_LINUX) || defined(OS_CHROMEOS) // http://crbug.com/426393 |
1769 if (g_browser_process->metrics_service()->reporting_active()) | 1752 if (g_browser_process->metrics_service()->reporting_active()) |
1770 content::StartPowerUsageMonitor(); | 1753 content::StartPowerUsageMonitor(); |
1771 #endif // !defined(OS_LINUX) || defined(OS_CHROMEOS) | 1754 #endif // !defined(OS_LINUX) || defined(OS_CHROMEOS) |
1772 | 1755 |
1773 #if !defined(OS_ANDROID) | |
1774 process_power_collector_.reset(new ProcessPowerCollector); | 1756 process_power_collector_.reset(new ProcessPowerCollector); |
1775 process_power_collector_->Initialize(); | 1757 process_power_collector_->Initialize(); |
1776 #endif // !defined(OS_ANDROID) | 1758 #endif // !defined(OS_ANDROID) |
1777 #endif // defined(OS_ANDROID) && !defined(USE_AURA) | |
1778 | 1759 |
1779 PostBrowserStart(); | 1760 PostBrowserStart(); |
1780 | 1761 |
1781 if (parameters().ui_task) { | 1762 if (parameters().ui_task) { |
1782 parameters().ui_task->Run(); | 1763 parameters().ui_task->Run(); |
1783 delete parameters().ui_task; | 1764 delete parameters().ui_task; |
1784 run_message_loop_ = false; | 1765 run_message_loop_ = false; |
1785 } | 1766 } |
1786 #if defined(OS_ANDROID) | 1767 #if defined(OS_ANDROID) |
1787 // We never run the C++ main loop on Android, since the UI thread message | 1768 // We never run the C++ main loop on Android, since the UI thread message |
1788 // loop is controlled by the OS, so this is as close as we can get to | 1769 // loop is controlled by the OS, so this is as close as we can get to |
1789 // the start of the main loop. | 1770 // the start of the main loop. |
1790 if (result_code_ <= 0) { | 1771 if (result_code_ <= 0) { |
1791 RecordBrowserStartupTime(); | 1772 RecordBrowserStartupTime(); |
1792 } | 1773 } |
1793 #endif // defined(OS_ANDROID) | 1774 #endif // defined(OS_ANDROID) |
1794 | 1775 |
1795 // TODO(bshe): Use !defined(ANDROID_JAVA_UI) once | 1776 #if !defined(OS_ANDROID) |
1796 // codereview.chromium.org/1459793002 landed. | |
1797 #if !defined(OS_ANDROID) || defined(USE_AURA) | |
1798 UMA_HISTOGRAM_TIMES("Startup.PreMainMessageLoopRunImplStep3Time", | 1777 UMA_HISTOGRAM_TIMES("Startup.PreMainMessageLoopRunImplStep3Time", |
1799 base::TimeTicks::Now() - start_time_step3); | 1778 base::TimeTicks::Now() - start_time_step3); |
1800 #endif // !defined(OS_ANDROID) || defined(USE_AURA) | 1779 #endif // !defined(OS_ANDROID) |
1801 | 1780 |
1802 return result_code_; | 1781 return result_code_; |
1803 } | 1782 } |
1804 | 1783 |
1805 bool ChromeBrowserMainParts::MainMessageLoopRun(int* result_code) { | 1784 bool ChromeBrowserMainParts::MainMessageLoopRun(int* result_code) { |
1806 // Trace the entry and exit of this method. We don't use the TRACE_EVENT0 | 1785 // Trace the entry and exit of this method. We don't use the TRACE_EVENT0 |
1807 // macro because the tracing infrastructure doesn't expect a synchronous event | 1786 // macro because the tracing infrastructure doesn't expect a synchronous event |
1808 // around the main loop of a thread. | 1787 // around the main loop of a thread. |
1809 ScopedMainMessageLoopRunEvent scoped_main_message_loop_run_event; | 1788 ScopedMainMessageLoopRunEvent scoped_main_message_loop_run_event; |
1810 #if defined(OS_ANDROID) | 1789 #if defined(OS_ANDROID) |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1910 chromeos::CrosSettings::Shutdown(); | 1889 chromeos::CrosSettings::Shutdown(); |
1911 #endif // defined(OS_CHROMEOS) | 1890 #endif // defined(OS_CHROMEOS) |
1912 #endif // defined(OS_ANDROID) | 1891 #endif // defined(OS_ANDROID) |
1913 } | 1892 } |
1914 | 1893 |
1915 // Public members: | 1894 // Public members: |
1916 | 1895 |
1917 void ChromeBrowserMainParts::AddParts(ChromeBrowserMainExtraParts* parts) { | 1896 void ChromeBrowserMainParts::AddParts(ChromeBrowserMainExtraParts* parts) { |
1918 chrome_extra_parts_.push_back(parts); | 1897 chrome_extra_parts_.push_back(parts); |
1919 } | 1898 } |
OLD | NEW |