| Index: chrome/browser/browser_main_mac.mm
|
| diff --git a/chrome/browser/browser_main_mac.mm b/chrome/browser/browser_main_mac.mm
|
| index 34cca50a4f4d18fd4df96cc7c2d95fac8b7cb981..0fd8fb9dec2af4d71105edfa03f4e9992d98fa65 100644
|
| --- a/chrome/browser/browser_main_mac.mm
|
| +++ b/chrome/browser/browser_main_mac.mm
|
| @@ -2,7 +2,7 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include "chrome/browser/browser_main.h"
|
| +#include "chrome/browser/browser_main_posix.h"
|
|
|
| #import <Cocoa/Cocoa.h>
|
|
|
| @@ -26,54 +26,6 @@
|
| #include "chrome/common/notification_service.h"
|
| #include "chrome/common/result_codes.h"
|
|
|
| -// Tell Cooca to finish its initalization, which we want to do manually
|
| -// instead of calling NSApplicationMain(). The primary reason is that NSAM()
|
| -// never returns, which would leave all the objects currently on the stack
|
| -// in scoped_ptrs hanging and never cleaned up. We then load the main nib
|
| -// directly. The main event loop is run from common code using the
|
| -// MessageLoop API, which works out ok for us because it's a wrapper around
|
| -// CFRunLoop.
|
| -void WillInitializeMainMessageLoop(const MainFunctionParams& parameters) {
|
| - // Initialize NSApplication using the custom subclass.
|
| - [BrowserCrApplication sharedApplication];
|
| -
|
| - // If ui_task is not NULL, the app is actually a browser_test, so startup is
|
| - // handled outside of BrowserMain (which is what called this).
|
| - if (!parameters.ui_task) {
|
| - // The browser process only wants to support the language Cocoa will use, so
|
| - // force the app locale to be overriden with that value.
|
| - l10n_util::OverrideLocaleWithCocoaLocale();
|
| -
|
| - // Before we load the nib, we need to start up the resource bundle so we
|
| - // have the strings avaiable for localization.
|
| - std::wstring pref_locale;
|
| - // TODO(markusheintz): Read preference pref::kApplicationLocale in order to
|
| - // enforce the application locale.
|
| - ResourceBundle::InitSharedInstance(pref_locale);
|
| -
|
| - FilePath resources_pack_path;
|
| - PathService::Get(chrome::FILE_RESOURCES_PACK, &resources_pack_path);
|
| - ResourceBundle::AddDataPackToSharedInstance(resources_pack_path);
|
| - }
|
| -
|
| - // Now load the nib (from the right bundle).
|
| - scoped_nsobject<NSNib>
|
| - nib([[NSNib alloc] initWithNibNamed:@"MainMenu"
|
| - bundle:mac_util::MainAppBundle()]);
|
| - [nib instantiateNibWithOwner:NSApp topLevelObjects:nil];
|
| - // Make sure the app controller has been created.
|
| - DCHECK([NSApp delegate]);
|
| -
|
| - // This is a no-op if the KeystoneRegistration framework is not present.
|
| - // The framework is only distributed with branded Google Chrome builds.
|
| - [[KeystoneGlue defaultKeystoneGlue] registerWithKeystone];
|
| -
|
| - // Prevent Cocoa from turning command-line arguments into
|
| - // |-application:openFiles:|, since we already handle them directly.
|
| - [[NSUserDefaults standardUserDefaults]
|
| - setObject:@"NO" forKey:@"NSTreatUnknownArgumentsAsOpen"];
|
| -}
|
| -
|
| void DidEndMainMessageLoop() {
|
| AppController* appController = [NSApp delegate];
|
| [appController didEndMainMessageLoop];
|
| @@ -104,3 +56,69 @@ bool CheckMachineLevelInstall() {
|
|
|
| void PrepareRestartOnCrashEnviroment(const CommandLine& parsed_command_line) {
|
| }
|
| +
|
| +// BrowserMainPartsMac ---------------------------------------------------------
|
| +
|
| +class BrowserMainPartsMac : public BrowserMainPartsPosix {
|
| + public:
|
| + explicit BrowserMainPartsMac(const MainFunctionParams& parameters)
|
| + : BrowserMainPartsPosix(parameters) {}
|
| +
|
| + protected:
|
| + virtual void PreMainMessageLoopStart() {
|
| + BrowserMainPartsPosix::PreMainMessageLoopStart();
|
| +
|
| + // Tell Cooca to finish its initalization, which we want to do manually
|
| + // instead of calling NSApplicationMain(). The primary reason is that NSAM()
|
| + // never returns, which would leave all the objects currently on the stack
|
| + // in scoped_ptrs hanging and never cleaned up. We then load the main nib
|
| + // directly. The main event loop is run from common code using the
|
| + // MessageLoop API, which works out ok for us because it's a wrapper around
|
| + // CFRunLoop.
|
| +
|
| + // Initialize NSApplication using the custom subclass.
|
| + [BrowserCrApplication sharedApplication];
|
| +
|
| + // If ui_task is not NULL, the app is actually a browser_test, so startup is
|
| + // handled outside of BrowserMain (which is what called this).
|
| + if (!parameters().ui_task) {
|
| + // The browser process only wants to support the language Cocoa will use,
|
| + // so force the app locale to be overriden with that value.
|
| + l10n_util::OverrideLocaleWithCocoaLocale();
|
| +
|
| + // Before we load the nib, we need to start up the resource bundle so we
|
| + // have the strings avaiable for localization.
|
| + std::wstring pref_locale;
|
| + // TODO(markusheintz): Read preference pref::kApplicationLocale in order
|
| + // to enforce the application locale.
|
| + ResourceBundle::InitSharedInstance(pref_locale);
|
| +
|
| + FilePath resources_pack_path;
|
| + PathService::Get(chrome::FILE_RESOURCES_PACK, &resources_pack_path);
|
| + ResourceBundle::AddDataPackToSharedInstance(resources_pack_path);
|
| + }
|
| +
|
| + // Now load the nib (from the right bundle).
|
| + scoped_nsobject<NSNib>
|
| + nib([[NSNib alloc] initWithNibNamed:@"MainMenu"
|
| + bundle:mac_util::MainAppBundle()]);
|
| + [nib instantiateNibWithOwner:NSApp topLevelObjects:nil];
|
| + // Make sure the app controller has been created.
|
| + DCHECK([NSApp delegate]);
|
| +
|
| + // This is a no-op if the KeystoneRegistration framework is not present.
|
| + // The framework is only distributed with branded Google Chrome builds.
|
| + [[KeystoneGlue defaultKeystoneGlue] registerWithKeystone];
|
| +
|
| + // Prevent Cocoa from turning command-line arguments into
|
| + // |-application:openFiles:|, since we already handle them directly.
|
| + [[NSUserDefaults standardUserDefaults]
|
| + setObject:@"NO" forKey:@"NSTreatUnknownArgumentsAsOpen"];
|
| + }
|
| +};
|
| +
|
| +// static
|
| +BrowserMainParts* BrowserMainParts::CreateBrowserMainParts(
|
| + const MainFunctionParams& parameters) {
|
| + return new BrowserMainPartsMac(parameters);
|
| +}
|
|
|