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()); |