| Index: chrome/browser/browser_main.cc
|
| diff --git a/chrome/browser/browser_main.cc b/chrome/browser/browser_main.cc
|
| index 7d645fe9fa174e737fbafbc0dc508aa0d6efb5c9..b684c6e61ec7224251e2ce0a1c14e6627377afa6 100644
|
| --- a/chrome/browser/browser_main.cc
|
| +++ b/chrome/browser/browser_main.cc
|
| @@ -159,7 +159,10 @@ BrowserMainParts::BrowserMainParts(const MainFunctionParams& parameters)
|
| parsed_command_line_(parameters.command_line_) {
|
| }
|
|
|
| -// BrowserMainParts: EarlyInitialization() and related -------------------------
|
| +BrowserMainParts::~BrowserMainParts() {
|
| +}
|
| +
|
| +// BrowserMainParts: |EarlyInitialization()| and related -----------------------
|
|
|
| void BrowserMainParts::EarlyInitialization() {
|
| PreEarlyInitialization();
|
| @@ -318,6 +321,33 @@ void BrowserMainParts::InitializeSSL() {
|
| #endif
|
| }
|
|
|
| +// BrowserMainParts: |MainMessageLoopStart()| and related ----------------------
|
| +
|
| +void BrowserMainParts::MainMessageLoopStart() {
|
| + PreMainMessageLoopStart();
|
| +
|
| + main_message_loop_.reset(new MessageLoop(MessageLoop::TYPE_UI));
|
| +
|
| + // TODO(viettrungluu): should these really go before setting the thread name?
|
| + system_monitor_.reset(new SystemMonitor);
|
| + hi_res_timer_manager_.reset(new HighResolutionTimerManager);
|
| + network_change_notifier_.reset(net::NetworkChangeNotifier::Create());
|
| +
|
| + InitializeMainThread();
|
| +
|
| + PostMainMessageLoopStart();
|
| +}
|
| +
|
| +void BrowserMainParts::InitializeMainThread() {
|
| + const char* kThreadName = "CrBrowserMain";
|
| + PlatformThread::SetName(kThreadName);
|
| + main_message_loop().set_thread_name(kThreadName);
|
| +
|
| + // Register the main thread by instantiating it, but don't call any methods.
|
| + main_thread_.reset(new ChromeThread(ChromeThread::UI,
|
| + MessageLoop::current()));
|
| +}
|
| +
|
| // -----------------------------------------------------------------------------
|
| // TODO(viettrungluu): move more/rest of BrowserMain() into above structure
|
|
|
| @@ -711,39 +741,18 @@ int BrowserMain(const MainFunctionParams& parameters) {
|
| parts(BrowserMainParts::CreateBrowserMainParts(parameters));
|
|
|
| parts->EarlyInitialization();
|
| + parts->MainMessageLoopStart();
|
|
|
| - // TODO(viettrungluu): put the remainder into BrowserMainParts
|
| - const CommandLine& parsed_command_line = parameters.command_line_;
|
| - base::ScopedNSAutoreleasePool* pool = parameters.autorelease_pool_;
|
| -
|
| - // WARNING: If we get a WM_ENDSESSION objects created on the stack here
|
| + // WARNING: If we get a WM_ENDSESSION, objects created on the stack here
|
| // are NOT deleted. If you need something to run during WM_ENDSESSION add it
|
| // to browser_shutdown::Shutdown or BrowserProcess::EndSession.
|
|
|
| // TODO(beng, brettw): someday, break this out into sub functions with well
|
| // defined roles (e.g. pre/post-profile startup, etc).
|
|
|
| - // Do platform-specific things (such as finishing initializing Cocoa)
|
| - // prior to instantiating the message loop. This could be turned into a
|
| - // broadcast notification.
|
| - WillInitializeMainMessageLoop(parameters);
|
| -
|
| - MessageLoop main_message_loop(MessageLoop::TYPE_UI);
|
| -
|
| - SystemMonitor system_monitor;
|
| - HighResolutionTimerManager hi_res_timer_manager;
|
| - scoped_ptr<net::NetworkChangeNotifier> network_change_notifier(
|
| - net::NetworkChangeNotifier::Create());
|
| -
|
| - const char* kThreadName = "CrBrowserMain";
|
| - PlatformThread::SetName(kThreadName);
|
| - main_message_loop.set_thread_name(kThreadName);
|
| -
|
| - // Register the main thread by instantiating it, but don't call any methods.
|
| - ChromeThread main_thread(ChromeThread::UI, MessageLoop::current());
|
| -
|
| - // TODO(viettrungluu): temporary while I refactor BrowserMain()
|
| - parts->TemporaryPosix_1();
|
| + // TODO(viettrungluu): put the remainder into BrowserMainParts
|
| + const CommandLine& parsed_command_line = parameters.command_line_;
|
| + base::ScopedNSAutoreleasePool* pool = parameters.autorelease_pool_;
|
|
|
| FilePath user_data_dir;
|
| #if defined(OS_WIN)
|
| @@ -807,9 +816,9 @@ int BrowserMain(const MainFunctionParams& parameters) {
|
| if (parameters.ui_task) {
|
| g_browser_process->SetApplicationLocale("en-US");
|
| } else {
|
| - // Mac starts it earlier in WillInitializeMainMessageLoop (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)
|
| g_browser_process->SetApplicationLocale(l10n_util::GetLocaleOverride());
|
| #else
|
|
|