Chromium Code Reviews| Index: chrome/browser/chrome_browser_main.cc |
| diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_browser_main.cc |
| index c8ac46b6794cde967f352591dc42f7da1562d88e..d20a097ade7f39df07f13895fd2a0415d1d7761d 100644 |
| --- a/chrome/browser/chrome_browser_main.cc |
| +++ b/chrome/browser/chrome_browser_main.cc |
| @@ -59,7 +59,6 @@ |
| #include "chrome/browser/notifications/desktop_notification_service.h" |
| #include "chrome/browser/notifications/desktop_notification_service_factory.h" |
| #include "chrome/browser/plugin_prefs.h" |
| -#include "chrome/browser/policy/browser_policy_connector.h" |
| #include "chrome/browser/prefs/pref_service.h" |
| #include "chrome/browser/prefs/pref_value_store.h" |
| #include "chrome/browser/prerender/prerender_field_trial.h" |
| @@ -88,7 +87,6 @@ |
| #include "chrome/common/env_vars.h" |
| #include "chrome/common/json_pref_store.h" |
| #include "chrome/common/jstemplate_builder.h" |
| -#include "chrome/common/logging_chrome.h" |
| #include "chrome/common/net/net_resource_provider.h" |
| #include "chrome/common/pref_names.h" |
| #include "chrome/common/profiling.h" |
| @@ -128,25 +126,9 @@ |
| #endif |
| #if defined(OS_CHROMEOS) |
| -#include "chrome/browser/chromeos/audio_handler.h" |
| -#include "chrome/browser/chromeos/boot_times_loader.h" |
| #include "chrome/browser/chromeos/cros/cros_library.h" |
| -#include "chrome/browser/chromeos/cros/screen_lock_library.h" |
| #include "chrome/browser/chromeos/cros_settings.h" |
| #include "chrome/browser/chromeos/cros_settings_names.h" |
| -#include "chrome/browser/chromeos/customization_document.h" |
| -#include "chrome/browser/chromeos/dbus/dbus_thread_manager.h" |
| -#include "chrome/browser/chromeos/external_metrics.h" |
| -#include "chrome/browser/chromeos/login/authenticator.h" |
| -#include "chrome/browser/chromeos/login/login_utils.h" |
| -#include "chrome/browser/chromeos/login/ownership_service.h" |
| -#include "chrome/browser/chromeos/login/screen_locker.h" |
| -#include "chrome/browser/chromeos/login/user_manager.h" |
| -#include "chrome/browser/chromeos/system/runtime_environment.h" |
| -#include "chrome/browser/chromeos/system_key_event_listener.h" |
| -#include "chrome/browser/chromeos/xinput_hierarchy_changed_event_listener.h" |
| -#include "chrome/browser/oom_priority_manager.h" |
| -#include "chrome/browser/ui/views/browser_dialogs.h" |
|
satorux1
2011/11/23 23:51:53
Great to see them gone!
|
| #endif |
| // TODO(port): several win-only methods have been pulled out of this, but |
| @@ -471,107 +453,6 @@ Profile* CreateProfile(const content::MainFunctionParams& parameters, |
| return NULL; |
| } |
| -#if defined(OS_CHROMEOS) |
| - |
| -// Class is used to login using passed username and password. |
| -// The instance will be deleted upon success or failure. |
| -class StubLogin : public chromeos::LoginStatusConsumer, |
| - public chromeos::LoginUtils::Delegate { |
| - public: |
| - StubLogin(std::string username, std::string password) |
| - : pending_requests_(false), |
| - profile_prepared_(false) { |
| - authenticator_ = chromeos::LoginUtils::Get()->CreateAuthenticator(this); |
| - authenticator_.get()->AuthenticateToLogin( |
| - g_browser_process->profile_manager()->GetDefaultProfile(), |
| - username, |
| - password, |
| - std::string(), |
| - std::string()); |
| - } |
| - |
| - ~StubLogin() { |
| - chromeos::LoginUtils::Get()->DelegateDeleted(this); |
| - } |
| - |
| - void OnLoginFailure(const chromeos::LoginFailure& error) { |
| - LOG(ERROR) << "Login Failure: " << error.GetErrorString(); |
| - delete this; |
| - } |
| - |
| - void OnLoginSuccess(const std::string& username, |
| - const std::string& password, |
| - const GaiaAuthConsumer::ClientLoginResult& credentials, |
| - bool pending_requests, |
| - bool using_oauth) { |
| - pending_requests_ = pending_requests; |
| - if (!profile_prepared_) { |
| - // Will call OnProfilePrepared in the end. |
| - chromeos::LoginUtils::Get()->PrepareProfile(username, |
| - password, |
| - credentials, |
| - pending_requests, |
| - using_oauth, |
| - false, |
| - this); |
| - } else if (!pending_requests) { |
| - delete this; |
| - } |
| - } |
| - |
| - // LoginUtils::Delegate implementation: |
| - virtual void OnProfilePrepared(Profile* profile) { |
| - profile_prepared_ = true; |
| - chromeos::LoginUtils::DoBrowserLaunch(profile, NULL); |
| - if (!pending_requests_) |
| - delete this; |
| - } |
| - |
| - scoped_refptr<chromeos::Authenticator> authenticator_; |
| - bool pending_requests_; |
| - bool profile_prepared_; |
| -}; |
| - |
| -void OptionallyRunChromeOSLoginManager(const CommandLine& parsed_command_line, |
| - Profile* profile) { |
| - if (parsed_command_line.HasSwitch(switches::kLoginManager)) { |
| - std::string first_screen = |
| - parsed_command_line.GetSwitchValueASCII(switches::kLoginScreen); |
| - std::string size_arg = |
| - parsed_command_line.GetSwitchValueASCII( |
| - switches::kLoginScreenSize); |
| - gfx::Size size(0, 0); |
| - // Allow the size of the login window to be set explicitly. If not set, |
| - // default to the entire screen. This is mostly useful for testing. |
| - if (size_arg.size()) { |
| - std::vector<std::string> dimensions; |
| - base::SplitString(size_arg, ',', &dimensions); |
| - if (dimensions.size() == 2) { |
| - int width, height; |
| - if (base::StringToInt(dimensions[0], &width) && |
| - base::StringToInt(dimensions[1], &height)) |
| - size.SetSize(width, height); |
| - } |
| - } |
| - browser::ShowLoginWizard(first_screen, size); |
| - } else if (parsed_command_line.HasSwitch(switches::kLoginUser) && |
| - parsed_command_line.HasSwitch(switches::kLoginPassword)) { |
| - chromeos::BootTimesLoader::Get()->RecordLoginAttempted(); |
| - new StubLogin( |
| - parsed_command_line.GetSwitchValueASCII(switches::kLoginUser), |
| - parsed_command_line.GetSwitchValueASCII(switches::kLoginPassword)); |
| - } else { |
| - if (!parsed_command_line.HasSwitch(switches::kTestName)) { |
| - // We did not log in (we crashed or are debugging), so we need to |
| - // set the user name for sync. |
| - chromeos::LoginUtils::Get()->RestoreAuthenticationSession( |
| - chromeos::UserManager::Get()->logged_in_user().email(), profile); |
| - } |
| - } |
| -} |
| - |
| -#endif // defined(OS_CHROMEOS) |
| - |
| #if defined(OS_MACOSX) |
| OSStatus KeychainCallback(SecKeychainEvent keychain_event, |
| SecKeychainCallbackInfo *info, void *context) { |
| @@ -1156,12 +1037,6 @@ void ChromeBrowserMainParts::SetupFieldTrials(bool metrics_recording_enabled, |
| // ----------------------------------------------------------------------------- |
| // TODO(viettrungluu): move more/rest of BrowserMain() into BrowserMainParts. |
| -#if defined(OS_CHROMEOS) |
| -// Allows authenticator to be invoked without adding refcounting. The instances |
| -// will delete themselves upon completion. |
| -DISABLE_RUNNABLE_METHOD_REFCOUNT(StubLogin); |
| -#endif |
| - |
| #if defined(OS_WIN) |
| #define DLLEXPORT __declspec(dllexport) |
| @@ -1213,6 +1088,26 @@ void ChromeBrowserMainParts::PreMainMessageLoopRun() { |
| chrome_extra_parts_[i]->PreMainMessageLoopRun(); |
| } |
| +void ChromeBrowserMainParts::PostBrowserProcessInit() { |
| + for (size_t i = 0; i < chrome_extra_parts_.size(); ++i) |
| + chrome_extra_parts_[i]->PostBrowserProcessInit(); |
| +} |
| + |
| +void ChromeBrowserMainParts::PostProfileInitialized() { |
| + for (size_t i = 0; i < chrome_extra_parts_.size(); ++i) |
| + chrome_extra_parts_[i]->PostProfileInitialized(); |
| +} |
| + |
| +void ChromeBrowserMainParts::PreBrowserStart() { |
| + for (size_t i = 0; i < chrome_extra_parts_.size(); ++i) |
| + chrome_extra_parts_[i]->PreBrowserStart(); |
| +} |
| + |
| +void ChromeBrowserMainParts::PostBrowserStart() { |
| + for (size_t i = 0; i < chrome_extra_parts_.size(); ++i) |
| + chrome_extra_parts_[i]->PostBrowserStart(); |
| +} |
| + |
| int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { |
| run_message_loop_ = false; |
| FilePath user_data_dir; |
| @@ -1422,24 +1317,6 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { |
| CreateChildThreads(browser_process_.get()); |
| -#if defined(OS_CHROMEOS) |
| - // Now that the file thread exists we can record our stats. |
| - chromeos::BootTimesLoader::Get()->RecordChromeMainStats(); |
| - |
| -#if defined(TOOLKIT_USES_GTK) |
| - // Read locale-specific GTK resource information. |
| - std::string gtkrc = l10n_util::GetStringUTF8(IDS_LOCALE_GTKRC); |
| - if (!gtkrc.empty()) |
| - gtk_rc_parse_string(gtkrc.c_str()); |
| -#else |
| - // TODO(saintlou): Need to provide an Aura equivalent. |
| - NOTIMPLEMENTED(); |
| -#endif |
| - |
| - // Trigger prefetching of ownership status. |
| - chromeos::OwnershipService::GetSharedInstance()->Prewarm(); |
| -#endif |
| - |
| // Record last shutdown time into a histogram. |
| browser_shutdown::ReadLastShutdownInfo(); |
| @@ -1525,47 +1402,10 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { |
| #endif |
| // Desktop construction occurs here, (required before profile creation). |
| - for (size_t i = 0; i < chrome_extra_parts_.size(); ++i) |
| - chrome_extra_parts_[i]->PostBrowserProcessInit(); |
| + PostBrowserProcessInit(); |
| // Profile creation ---------------------------------------------------------- |
| -#if defined(OS_CHROMEOS) |
| - // Initialize the screen locker now so that it can receive |
| - // LOGIN_USER_CHANGED notification from UserManager. |
| - chromeos::ScreenLocker::InitClass(); |
| - |
| - // This forces the ProfileManager to be created and register for the |
| - // notification it needs to track the logged in user. |
| - g_browser_process->profile_manager(); |
| - |
| - // TODO(abarth): Should this move to InitializeNetworkOptions()? |
| - // Allow access to file:// on ChromeOS for tests. |
| - if (parsed_command_line().HasSwitch(switches::kAllowFileAccess)) |
| - net::URLRequest::AllowFileAccess(); |
| - |
| - // There are two use cases for kLoginUser: |
| - // 1) if passed in tandem with kLoginPassword, to drive a "StubLogin" |
| - // 2) if passed alone, to signal that the indicated user has already |
| - // logged in and we should behave accordingly. |
| - // This handles case 2. |
| - if (parsed_command_line().HasSwitch(switches::kLoginUser) && |
| - !parsed_command_line().HasSwitch(switches::kLoginPassword)) { |
| - std::string username = |
| - parsed_command_line().GetSwitchValueASCII(switches::kLoginUser); |
| - VLOG(1) << "Relaunching browser for user: " << username; |
| - chromeos::UserManager::Get()->UserLoggedIn(username); |
| - |
| - // Redirects Chrome logging to the user data dir. |
| - logging::RedirectChromeLogging(parsed_command_line()); |
| - |
| - // Initialize user policy before creating the profile so the profile |
| - // initialization code sees policy settings. |
| - g_browser_process->browser_policy_connector()->InitializeUserPolicy( |
| - username, false /* wait_for_policy_fetch */); |
| - } |
| -#endif |
| - |
| if (is_first_run) { |
| // Warn the ProfileManager that an import process will run, possibly |
| // locking the WebDataService directory of the next Profile created. |
| @@ -1584,22 +1424,6 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { |
| } |
| // Post-profile init --------------------------------------------------------- |
| -#if defined(OS_CHROMEOS) |
| - // Pass the TokenService pointer to the policy connector so user policy can |
| - // grab a token and register with the policy server. |
| - // TODO(mnissler): Remove once OAuth is the only authentication mechanism. |
| - if (parsed_command_line().HasSwitch(switches::kLoginUser) && |
| - !parsed_command_line().HasSwitch(switches::kLoginPassword)) { |
| - g_browser_process->browser_policy_connector()->SetUserPolicyTokenService( |
| - profile_->GetTokenService()); |
| - } |
| - |
| - // Tests should be able to tune login manager before showing it. |
| - // Thus only show login manager in normal (non-testing) mode. |
| - if (!parameters().ui_task) |
| - OptionallyRunChromeOSLoginManager(parsed_command_line(), profile_); |
| -#endif |
| - |
| #if !defined(OS_MACOSX) |
| // Importing other browser settings is done in a browser-like process |
| // that exits when this task has finished. |
| @@ -1648,8 +1472,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { |
| // TODO(stevenjb): Move ChromeOS login code into PostProfileInitialized(). |
| // (Requires making ChromeBrowserMainPartsChromeos a non "main" Parts). |
| - for (size_t i = 0; i < chrome_extra_parts_.size(); ++i) |
| - chrome_extra_parts_[i]->PostProfileInitialized(); |
| + PostProfileInitialized(); |
| // Show the First Run UI if this is the first time Chrome has been run on |
| // this computer, or we're being compelled to do so by a command line flag. |
| @@ -1807,20 +1630,6 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { |
| #if defined(OS_CHROMEOS) |
| metrics->StartExternalMetrics(); |
| - |
| - // Initialize the audio handler on ChromeOS. |
| - chromeos::AudioHandler::Initialize(); |
| - |
| - // Listen for system key events so that the user will be able to adjust the |
| - // volume on the login screen, if Chrome is running on Chrome OS |
| - // (i.e. not Linux desktop), and in non-test mode. |
| - if (chromeos::system::runtime_environment::IsRunningOnChromeOS() && |
| - !parameters().ui_task) { // ui_task is non-NULL when running tests. |
| - chromeos::SystemKeyEventListener::Initialize(); |
| - } |
| - |
| - // Listen for XI_HierarchyChanged events. |
| - chromeos::XInputHierarchyChangedEventListener::GetInstance(); |
| #endif |
| // The extension service may be available at this point. If the command line |
| @@ -1849,13 +1658,6 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { |
| ChildProcess::WaitForDebugger("Browser"); |
| } |
| -#if defined(OS_CHROMEOS) |
| - // Wait until here to start the out-of-memory priority manager so that |
| - // we give the most amount of time for the other services to start up |
| - // before we start adjusting the oom priority. |
| - g_browser_process->oom_priority_manager()->Start(); |
| -#endif |
| - |
| // Create the instance of the cloud print proxy service so that it can launch |
| // the service process if needed. This is needed because the service process |
| // might have shutdown because an update was available. |
| @@ -1873,6 +1675,8 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { |
| NaClProcessHost::EarlyStartup(); |
| #endif |
| + PreBrowserStart(); |
| + |
| // Instantiate the notification UI manager, as this triggers a perf timer |
| // used to measure startup time. TODO(stevenjb): Figure out what is actually |
| // triggering the timer and call that explicitly in the approprate place. |
| @@ -1948,6 +1752,9 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { |
| } |
| } |
| browser_init_.reset(); |
| + |
| + PostBrowserStart(); |
| + |
| return result_code_; |
| } |
| @@ -1973,10 +1780,6 @@ bool ChromeBrowserMainParts::MainMessageLoopRun(int* result_code) { |
| #elif defined(OS_POSIX) |
| MessageLoopForUI::current()->Run(); |
| #endif |
| -#if defined(OS_CHROMEOS) |
| - chromeos::BootTimesLoader::Get()->AddLogoutTimeMarker("UIMessageLoopEnded", |
| - true); |
| -#endif |
| return true; |
| } |
| @@ -2034,10 +1837,6 @@ void ChromeBrowserMainParts::PostMainMessageLoopRun() { |
| } |
| #endif |
| -#if defined(OS_CHROMEOS) |
| - g_browser_process->oom_priority_manager()->Stop(); |
| -#endif |
| - |
| // Some tests don't set parameters.ui_task, so they started translate |
| // language fetch that was never completed so we need to cleanup here |
| // otherwise it will be done by the destructor in a wrong thread. |
| @@ -2052,17 +1851,6 @@ void ChromeBrowserMainParts::PostMainMessageLoopRun() { |
| g_browser_process->metrics_service()->Stop(); |
| -#if defined(OS_CHROMEOS) |
| - // The XInput2 event listener needs to be shut down earlier than when |
| - // Singletons are finally destroyed in AtExitManager. |
| - chromeos::XInputHierarchyChangedEventListener::GetInstance()->Stop(); |
| - |
| - // chromeos::SystemKeyEventListener::Shutdown() is always safe to call, |
| - // even if Initialize() wasn't called. |
| - chromeos::SystemKeyEventListener::Shutdown(); |
| - chromeos::AudioHandler::Shutdown(); |
| -#endif |
| - |
| // browser_shutdown takes care of deleting browser_process, so we need to |
| // release it. |
| ignore_result(browser_process_.release()); |