| Index: content/browser/browser_main_loop.cc
|
| diff --git a/content/browser/browser_main_loop.cc b/content/browser/browser_main_loop.cc
|
| index 316d7c389d0075634ff1657dc1ea36d3543b628a..b5db4bc1d7fae228d365159218a3fa274f5a11d9 100644
|
| --- a/content/browser/browser_main_loop.cc
|
| +++ b/content/browser/browser_main_loop.cc
|
| @@ -41,6 +41,7 @@
|
| #include "content/browser/renderer_host/media/media_stream_manager.h"
|
| #include "content/browser/speech/speech_recognition_manager_impl.h"
|
| #include "content/browser/startup_task_runner.h"
|
| +#include "content/browser/time_zone_monitor.h"
|
| #include "content/browser/webui/content_web_ui_controller_factory.h"
|
| #include "content/browser/webui/url_data_manager.h"
|
| #include "content/public/browser/browser_main_parts.h"
|
| @@ -325,7 +326,7 @@ BrowserMainLoop::~BrowserMainLoop() {
|
| }
|
|
|
| void BrowserMainLoop::Init() {
|
| - TRACE_EVENT0("startup", "BrowserMainLoop::Init")
|
| + TRACE_EVENT0("startup", "BrowserMainLoop::Init");
|
| parts_.reset(
|
| GetContentClient()->browser()->CreateBrowserMainParts(parameters_));
|
| }
|
| @@ -397,7 +398,7 @@ void BrowserMainLoop::EarlyInitialization() {
|
| }
|
|
|
| void BrowserMainLoop::MainMessageLoopStart() {
|
| - TRACE_EVENT0("startup", "BrowserMainLoop::MainMessageLoopStart")
|
| + TRACE_EVENT0("startup", "BrowserMainLoop::MainMessageLoopStart");
|
| if (parts_) {
|
| TRACE_EVENT0("startup",
|
| "BrowserMainLoop::MainMessageLoopStart:PreMainMessageLoopStart");
|
| @@ -420,50 +421,51 @@ void BrowserMainLoop::MainMessageLoopStart() {
|
| InitializeMainThread();
|
|
|
| {
|
| - TRACE_EVENT0("startup", "BrowserMainLoop::Subsystem:SystemMonitor")
|
| + TRACE_EVENT0("startup", "BrowserMainLoop::Subsystem:SystemMonitor");
|
| system_monitor_.reset(new base::SystemMonitor);
|
| }
|
| {
|
| - TRACE_EVENT0("startup", "BrowserMainLoop::Subsystem:PowerMonitor")
|
| + TRACE_EVENT0("startup", "BrowserMainLoop::Subsystem:PowerMonitor");
|
| scoped_ptr<base::PowerMonitorSource> power_monitor_source(
|
| new base::PowerMonitorDeviceSource());
|
| power_monitor_.reset(new base::PowerMonitor(power_monitor_source.Pass()));
|
| }
|
| {
|
| - TRACE_EVENT0("startup", "BrowserMainLoop::Subsystem:HighResTimerManager")
|
| + TRACE_EVENT0("startup", "BrowserMainLoop::Subsystem:HighResTimerManager");
|
| hi_res_timer_manager_.reset(new base::HighResolutionTimerManager);
|
| }
|
| {
|
| - TRACE_EVENT0("startup", "BrowserMainLoop::Subsystem:NetworkChangeNotifier")
|
| + TRACE_EVENT0("startup", "BrowserMainLoop::Subsystem:NetworkChangeNotifier");
|
| network_change_notifier_.reset(net::NetworkChangeNotifier::Create());
|
| }
|
|
|
| #if !defined(OS_IOS)
|
| {
|
| - TRACE_EVENT0("startup", "BrowserMainLoop::Subsystem:MediaFeatures")
|
| + TRACE_EVENT0("startup", "BrowserMainLoop::Subsystem:MediaFeatures");
|
| media::InitializeCPUSpecificMediaFeatures();
|
| }
|
| {
|
| - TRACE_EVENT0("startup", "BrowserMainLoop::Subsystem:AudioMan")
|
| + TRACE_EVENT0("startup", "BrowserMainLoop::Subsystem:AudioMan");
|
| audio_manager_.reset(media::AudioManager::Create(
|
| MediaInternals::GetInstance()));
|
| }
|
| {
|
| - TRACE_EVENT0("startup", "BrowserMainLoop::Subsystem:MidiManager")
|
| + TRACE_EVENT0("startup", "BrowserMainLoop::Subsystem:MidiManager");
|
| midi_manager_.reset(media::MidiManager::Create());
|
| }
|
| {
|
| - TRACE_EVENT0("startup", "BrowserMainLoop::Subsystem:ContentWebUIController")
|
| + TRACE_EVENT0("startup",
|
| + "BrowserMainLoop::Subsystem:ContentWebUIController");
|
| WebUIControllerFactory::RegisterFactory(
|
| ContentWebUIControllerFactory::GetInstance());
|
| }
|
|
|
| {
|
| - TRACE_EVENT0("startup", "BrowserMainLoop::Subsystem:AudioMirroringManager")
|
| + TRACE_EVENT0("startup", "BrowserMainLoop::Subsystem:AudioMirroringManager");
|
| audio_mirroring_manager_.reset(new AudioMirroringManager());
|
| }
|
| {
|
| - TRACE_EVENT0("startup", "BrowserMainLoop::Subsystem:OnlineStateObserver")
|
| + TRACE_EVENT0("startup", "BrowserMainLoop::Subsystem:OnlineStateObserver");
|
| online_state_observer_.reset(new BrowserOnlineStateObserver);
|
| }
|
|
|
| @@ -485,20 +487,20 @@ void BrowserMainLoop::MainMessageLoopStart() {
|
| // message loop to avoid calling MessagePumpForUI::ScheduleWork() before
|
| // MessagePumpForUI::Start() as it will crash the browser.
|
| if (is_tracing_startup_) {
|
| - TRACE_EVENT0("startup", "BrowserMainLoop::InitStartupTracing")
|
| + TRACE_EVENT0("startup", "BrowserMainLoop::InitStartupTracing");
|
| InitStartupTracing(parsed_command_line_);
|
| }
|
| #endif // !defined(OS_IOS)
|
|
|
| #if defined(OS_ANDROID)
|
| {
|
| - TRACE_EVENT0("startup", "BrowserMainLoop::Subsystem:SurfaceTexturePeer")
|
| + TRACE_EVENT0("startup", "BrowserMainLoop::Subsystem:SurfaceTexturePeer");
|
| SurfaceTexturePeer::InitInstance(new SurfaceTexturePeerBrowserImpl());
|
| }
|
| #endif
|
|
|
| if (parsed_command_line_.HasSwitch(switches::kMemoryMetrics)) {
|
| - TRACE_EVENT0("startup", "BrowserMainLoop::Subsystem:MemoryObserver")
|
| + TRACE_EVENT0("startup", "BrowserMainLoop::Subsystem:MemoryObserver");
|
| memory_observer_.reset(new MemoryObserver());
|
| base::MessageLoop::current()->AddTaskObserver(memory_observer_.get());
|
| }
|
| @@ -526,7 +528,7 @@ int BrowserMainLoop::PreCreateThreads() {
|
| // but must be created on the main thread. The service ctor is
|
| // inexpensive and does not invoke the io_thread() accessor.
|
| {
|
| - TRACE_EVENT0("startup", "BrowserMainLoop::CreateThreads:PluginService")
|
| + TRACE_EVENT0("startup", "BrowserMainLoop::CreateThreads:PluginService");
|
| PluginService::GetInstance()->Init();
|
| }
|
| #endif
|
| @@ -712,7 +714,7 @@ void BrowserMainLoop::ShutdownThreadsAndCleanUp() {
|
| // Called early, nothing to do
|
| return;
|
| }
|
| - TRACE_EVENT0("shutdown", "BrowserMainLoop::ShutdownThreadsAndCleanUp")
|
| + TRACE_EVENT0("shutdown", "BrowserMainLoop::ShutdownThreadsAndCleanUp");
|
|
|
| // Teardown may start in PostMainMessageLoopRun, and during teardown we
|
| // need to be able to perform IO.
|
| @@ -893,7 +895,7 @@ void BrowserMainLoop::ShutdownThreadsAndCleanUp() {
|
| }
|
|
|
| void BrowserMainLoop::InitializeMainThread() {
|
| - TRACE_EVENT0("startup", "BrowserMainLoop::InitializeMainThread")
|
| + TRACE_EVENT0("startup", "BrowserMainLoop::InitializeMainThread");
|
| const char* kThreadName = "CrBrowserMain";
|
| base::PlatformThread::SetName(kThreadName);
|
| if (main_message_loop_)
|
| @@ -905,7 +907,7 @@ void BrowserMainLoop::InitializeMainThread() {
|
| }
|
|
|
| int BrowserMainLoop::BrowserThreadsStarted() {
|
| - TRACE_EVENT0("startup", "BrowserMainLoop::BrowserThreadsStarted")
|
| + TRACE_EVENT0("startup", "BrowserMainLoop::BrowserThreadsStarted");
|
|
|
| #if !defined(OS_IOS)
|
| indexed_db_thread_.reset(new base::Thread("IndexedDB"));
|
| @@ -992,6 +994,12 @@ int BrowserMainLoop::BrowserThreadsStarted() {
|
| io_thread_->message_loop_proxy(), main_thread_->message_loop_proxy());
|
| }
|
|
|
| + {
|
| + TRACE_EVENT0("startup",
|
| + "BrowserMainLoop::BrowserThreadsStarted::TimeZoneMonitor");
|
| + time_zone_monitor_ = TimeZoneMonitor::Create();
|
| + }
|
| +
|
| // Alert the clipboard class to which threads are allowed to access the
|
| // clipboard:
|
| std::vector<base::PlatformThreadId> allowed_clipboard_threads;
|
| @@ -1030,7 +1038,7 @@ int BrowserMainLoop::BrowserThreadsStarted() {
|
| }
|
|
|
| bool BrowserMainLoop::InitializeToolkit() {
|
| - TRACE_EVENT0("startup", "BrowserMainLoop::InitializeToolkit")
|
| + TRACE_EVENT0("startup", "BrowserMainLoop::InitializeToolkit");
|
| // TODO(evan): this function is rather subtle, due to the variety
|
| // of intersecting ifdefs we have. To keep it easy to follow, there
|
| // are no #else branches on any #ifs.
|
|
|