Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1098)

Unified Diff: chrome/browser/chrome_browser_main.cc

Issue 8670001: Move chromeos specific code to ChromeBrowserMainPartsChromeos (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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());

Powered by Google App Engine
This is Rietveld 408576698