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 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 56 #include "chrome/browser/component_updater/swiftshader_component_installer.h" | 56 #include "chrome/browser/component_updater/swiftshader_component_installer.h" |
| 57 #include "chrome/browser/component_updater/widevine_cdm_component_installer.h" | 57 #include "chrome/browser/component_updater/widevine_cdm_component_installer.h" |
| 58 #include "chrome/browser/defaults.h" | 58 #include "chrome/browser/defaults.h" |
| 59 #include "chrome/browser/first_run/first_run.h" | 59 #include "chrome/browser/first_run/first_run.h" |
| 60 #include "chrome/browser/gpu/gl_string_manager.h" | 60 #include "chrome/browser/gpu/gl_string_manager.h" |
| 61 #include "chrome/browser/gpu/three_d_api_observer.h" | 61 #include "chrome/browser/gpu/three_d_api_observer.h" |
| 62 #include "chrome/browser/media/media_capture_devices_dispatcher.h" | 62 #include "chrome/browser/media/media_capture_devices_dispatcher.h" |
| 63 #include "chrome/browser/memory/tab_manager.h" | 63 #include "chrome/browser/memory/tab_manager.h" |
| 64 #include "chrome/browser/metrics/field_trial_synchronizer.h" | 64 #include "chrome/browser/metrics/field_trial_synchronizer.h" |
| 65 #include "chrome/browser/metrics/thread_watcher.h" | 65 #include "chrome/browser/metrics/thread_watcher.h" |
| 66 #include "chrome/browser/mojo_runner_util.h" | |
| 66 #include "chrome/browser/nacl_host/nacl_browser_delegate_impl.h" | 67 #include "chrome/browser/nacl_host/nacl_browser_delegate_impl.h" |
| 67 #include "chrome/browser/net/crl_set_fetcher.h" | 68 #include "chrome/browser/net/crl_set_fetcher.h" |
| 68 #include "chrome/browser/performance_monitor/performance_monitor.h" | 69 #include "chrome/browser/performance_monitor/performance_monitor.h" |
| 69 #include "chrome/browser/plugins/plugin_prefs.h" | 70 #include "chrome/browser/plugins/plugin_prefs.h" |
| 70 #include "chrome/browser/power/process_power_collector.h" | 71 #include "chrome/browser/power/process_power_collector.h" |
| 71 #include "chrome/browser/prefs/chrome_pref_service_factory.h" | 72 #include "chrome/browser/prefs/chrome_pref_service_factory.h" |
| 72 #include "chrome/browser/prefs/command_line_pref_store.h" | 73 #include "chrome/browser/prefs/command_line_pref_store.h" |
| 73 #include "chrome/browser/prefs/incognito_mode_prefs.h" | 74 #include "chrome/browser/prefs/incognito_mode_prefs.h" |
| 74 #include "chrome/browser/prefs/pref_metrics_service.h" | 75 #include "chrome/browser/prefs/pref_metrics_service.h" |
| 75 #include "chrome/browser/printing/cloud_print/cloud_print_proxy_service.h" | 76 #include "chrome/browser/printing/cloud_print/cloud_print_proxy_service.h" |
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 240 | 241 |
| 241 #if defined(USE_AURA) | 242 #if defined(USE_AURA) |
| 242 #include "ui/aura/env.h" | 243 #include "ui/aura/env.h" |
| 243 #endif // defined(USE_AURA) | 244 #endif // defined(USE_AURA) |
| 244 | 245 |
| 245 #if !defined(OS_ANDROID) && !defined(OS_IOS) | 246 #if !defined(OS_ANDROID) && !defined(OS_IOS) |
| 246 #include "chrome/browser/chrome_webusb_browser_client.h" | 247 #include "chrome/browser/chrome_webusb_browser_client.h" |
| 247 #include "components/webusb/webusb_detector.h" | 248 #include "components/webusb/webusb_detector.h" |
| 248 #endif | 249 #endif |
| 249 | 250 |
| 251 #if defined(MOJO_RUNNER_CLIENT) | |
| 252 #include "mojo/application/public/cpp/application_delegate.h" | |
| 253 #include "mojo/application/public/cpp/application_impl.h" | |
| 254 #include "mojo/runner/child/runner_connection.h" | |
| 255 #endif | |
| 256 | |
| 250 using content::BrowserThread; | 257 using content::BrowserThread; |
| 251 | 258 |
| 252 namespace { | 259 namespace { |
| 253 | 260 |
| 254 // This function provides some ways to test crash and assertion handling | 261 // This function provides some ways to test crash and assertion handling |
| 255 // behavior of the program. | 262 // behavior of the program. |
| 256 void HandleTestParameters(const base::CommandLine& command_line) { | 263 void HandleTestParameters(const base::CommandLine& command_line) { |
| 257 // This parameter causes a null pointer crash (crash reporter trigger). | 264 // This parameter causes a null pointer crash (crash reporter trigger). |
| 258 if (command_line.HasSwitch(switches::kBrowserCrashTest)) { | 265 if (command_line.HasSwitch(switches::kBrowserCrashTest)) { |
| 259 int* bad_pointer = NULL; | 266 int* bad_pointer = NULL; |
| (...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 564 #endif // defined(OS_WIN) | 571 #endif // defined(OS_WIN) |
| 565 | 572 |
| 566 #if defined(OS_WIN) | 573 #if defined(OS_WIN) |
| 567 // TODO(port) This should be used on Linux Aura as well. http://crbug.com/338969 | 574 // TODO(port) This should be used on Linux Aura as well. http://crbug.com/338969 |
| 568 const char kMissingLocaleDataMessage[] = | 575 const char kMissingLocaleDataMessage[] = |
| 569 "Unable to find locale data files. Please reinstall."; | 576 "Unable to find locale data files. Please reinstall."; |
| 570 #endif // defined(OS_WIN) | 577 #endif // defined(OS_WIN) |
| 571 | 578 |
| 572 } // namespace chrome_browser | 579 } // namespace chrome_browser |
| 573 | 580 |
| 581 #if defined(MOJO_RUNNER_CLIENT) | |
| 582 class ChromeApplicationDelegate : public mojo::ApplicationDelegate { | |
| 583 public: | |
| 584 ChromeApplicationDelegate() {} | |
| 585 ~ChromeApplicationDelegate() override {} | |
| 586 | |
| 587 // Runs the current thread's message loop until we receive an Initialize() | |
| 588 // call from the shell. | |
| 589 void RunUntilInitialize() { | |
| 590 base::MessageLoop::current()->Run(); | |
|
sky
2015/11/05 00:29:34
You sure you want to run a nested message loop her
| |
| 591 } | |
| 592 | |
| 593 private: | |
| 594 void Initialize(mojo::ApplicationImpl* application) override { | |
| 595 // TODO(beng): Connect to the window manager. | |
| 596 base::MessageLoop::current()->QuitNow(); | |
| 597 } | |
| 598 bool ConfigureIncomingConnection( | |
| 599 mojo::ApplicationConnection* connection) override { | |
| 600 return false; | |
| 601 } | |
| 602 | |
| 603 DISALLOW_COPY_AND_ASSIGN(ChromeApplicationDelegate); | |
| 604 }; | |
| 605 #endif // defined(MOJO_RUNNER_CLIENT) | |
| 606 | |
| 574 // BrowserMainParts ------------------------------------------------------------ | 607 // BrowserMainParts ------------------------------------------------------------ |
| 575 | 608 |
| 576 ChromeBrowserMainParts::ChromeBrowserMainParts( | 609 ChromeBrowserMainParts::ChromeBrowserMainParts( |
| 577 const content::MainFunctionParams& parameters) | 610 const content::MainFunctionParams& parameters) |
| 578 : parameters_(parameters), | 611 : parameters_(parameters), |
| 579 parsed_command_line_(parameters.command_line), | 612 parsed_command_line_(parameters.command_line), |
| 580 result_code_(content::RESULT_CODE_NORMAL_EXIT), | 613 result_code_(content::RESULT_CODE_NORMAL_EXIT), |
| 581 startup_watcher_(new StartupTimeBomb()), | 614 startup_watcher_(new StartupTimeBomb()), |
| 582 shutdown_watcher_(new ShutdownWatcherHelper()), | 615 shutdown_watcher_(new ShutdownWatcherHelper()), |
| 583 browser_field_trials_(parameters.command_line), | 616 browser_field_trials_(parameters.command_line), |
| (...skipping 621 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1205 } | 1238 } |
| 1206 | 1239 |
| 1207 int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { | 1240 int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { |
| 1208 TRACE_EVENT0("startup", "ChromeBrowserMainParts::PreMainMessageLoopRunImpl"); | 1241 TRACE_EVENT0("startup", "ChromeBrowserMainParts::PreMainMessageLoopRunImpl"); |
| 1209 TRACK_SCOPED_REGION( | 1242 TRACK_SCOPED_REGION( |
| 1210 "Startup", "ChromeBrowserMainParts::PreMainMessageLoopRunImpl"); | 1243 "Startup", "ChromeBrowserMainParts::PreMainMessageLoopRunImpl"); |
| 1211 | 1244 |
| 1212 SCOPED_UMA_HISTOGRAM_LONG_TIMER("Startup.PreMainMessageLoopRunImplLongTime"); | 1245 SCOPED_UMA_HISTOGRAM_LONG_TIMER("Startup.PreMainMessageLoopRunImplLongTime"); |
| 1213 const base::TimeTicks start_time_step1 = base::TimeTicks::Now(); | 1246 const base::TimeTicks start_time_step1 = base::TimeTicks::Now(); |
| 1214 | 1247 |
| 1248 #if defined(MOJO_RUNNER_CLIENT) | |
| 1249 if (chrome::IsRunningInMojoRunner()) { | |
| 1250 // When run from the Mojo Runner, block until we can bind an Application | |
| 1251 // request from the runner's shell, and run the main message loop until | |
| 1252 // our bound ApplicationImpl is ready to use. | |
| 1253 mojo::InterfaceRequest<mojo::Application> application_request; | |
| 1254 runner_connection_.reset( | |
| 1255 mojo::runner::RunnerConnection::ConnectToRunner(&application_request)); | |
| 1256 application_delegate_.reset(new ChromeApplicationDelegate); | |
| 1257 application_impl_.reset(new mojo::ApplicationImpl( | |
| 1258 application_delegate_.get(), application_request.Pass())); | |
| 1259 application_delegate_->RunUntilInitialize(); | |
| 1260 } | |
| 1261 #endif // defined(MOJO_RUNNER_CLIENT) | |
| 1262 | |
| 1215 #if defined(OS_WIN) | 1263 #if defined(OS_WIN) |
| 1216 // Windows parental controls calls can be slow, so we do an early init here | 1264 // Windows parental controls calls can be slow, so we do an early init here |
| 1217 // that calculates this value off of the UI thread. | 1265 // that calculates this value off of the UI thread. |
| 1218 IncognitoModePrefs::InitializePlatformParentalControls(); | 1266 IncognitoModePrefs::InitializePlatformParentalControls(); |
| 1219 #endif | 1267 #endif |
| 1220 | 1268 |
| 1221 #if defined(ENABLE_EXTENSIONS) | 1269 #if defined(ENABLE_EXTENSIONS) |
| 1222 if (!variations::GetVariationParamValue( | 1270 if (!variations::GetVariationParamValue( |
| 1223 "LightSpeed", "EarlyInitStartup").empty()) { | 1271 "LightSpeed", "EarlyInitStartup").empty()) { |
| 1224 // Try to compute this early on another thread so that we don't spend time | 1272 // Try to compute this early on another thread so that we don't spend time |
| (...skipping 625 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1850 chromeos::CrosSettings::Shutdown(); | 1898 chromeos::CrosSettings::Shutdown(); |
| 1851 #endif // defined(OS_CHROMEOS) | 1899 #endif // defined(OS_CHROMEOS) |
| 1852 #endif // defined(OS_ANDROID) | 1900 #endif // defined(OS_ANDROID) |
| 1853 } | 1901 } |
| 1854 | 1902 |
| 1855 // Public members: | 1903 // Public members: |
| 1856 | 1904 |
| 1857 void ChromeBrowserMainParts::AddParts(ChromeBrowserMainExtraParts* parts) { | 1905 void ChromeBrowserMainParts::AddParts(ChromeBrowserMainExtraParts* parts) { |
| 1858 chrome_extra_parts_.push_back(parts); | 1906 chrome_extra_parts_.push_back(parts); |
| 1859 } | 1907 } |
| OLD | NEW |