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

Unified Diff: chrome/browser/chromeos/login/login_display_host_impl.cc

Issue 13878010: Merge WebUILoginDisplayHost into LoginDisplayHostImpl (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merge + move method definition Created 7 years, 8 months 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/chromeos/login/login_display_host_impl.cc
diff --git a/chrome/browser/chromeos/login/login_display_host_impl.cc b/chrome/browser/chromeos/login/login_display_host_impl.cc
index 7163bb72f8881c921f609738fdcbf73a2957ee48..c4612c2f7cc8d88991fb09a2639b0cf474eec277 100644
--- a/chrome/browser/chromeos/login/login_display_host_impl.cc
+++ b/chrome/browser/chromeos/login/login_display_host_impl.cc
@@ -4,9 +4,12 @@
#include "chrome/browser/chromeos/login/login_display_host_impl.h"
+#include "ash/ash_switches.h"
#include "ash/desktop_background/desktop_background_controller.h"
+#include "ash/desktop_background/user_wallpaper_delegate.h"
#include "ash/shell.h"
#include "ash/shell_window_ids.h"
+#include "ash/wm/window_properties.h"
#include "base/bind.h"
#include "base/command_line.h"
#include "base/debug/trace_event.h"
@@ -14,7 +17,9 @@
#include "base/logging.h"
#include "base/prefs/pref_service.h"
#include "base/threading/thread_restrictions.h"
+#include "base/time.h"
#include "base/utf_string_conversions.h"
+#include "base/values.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/browser_shutdown.h"
#include "chrome/browser/chromeos/cros/cros_library.h"
@@ -22,15 +27,18 @@
#include "chrome/browser/chromeos/input_method/input_method_configuration.h"
#include "chrome/browser/chromeos/input_method/input_method_manager.h"
#include "chrome/browser/chromeos/input_method/input_method_util.h"
+#include "chrome/browser/chromeos/kiosk_mode/kiosk_mode_settings.h"
#include "chrome/browser/chromeos/language_preferences.h"
#include "chrome/browser/chromeos/login/existing_user_controller.h"
#include "chrome/browser/chromeos/login/helper.h"
#include "chrome/browser/chromeos/login/language_switch_menu.h"
#include "chrome/browser/chromeos/login/login_utils.h"
#include "chrome/browser/chromeos/login/login_wizard.h"
+#include "chrome/browser/chromeos/login/oobe_display.h"
#include "chrome/browser/chromeos/login/startup_utils.h"
#include "chrome/browser/chromeos/login/user_manager.h"
-#include "chrome/browser/chromeos/login/webui_login_display_host.h"
+#include "chrome/browser/chromeos/login/webui_login_display.h"
+#include "chrome/browser/chromeos/login/webui_login_view.h"
#include "chrome/browser/chromeos/login/wizard_controller.h"
#include "chrome/browser/chromeos/mobile_config.h"
#include "chrome/browser/chromeos/policy/auto_enrollment_client.h"
@@ -39,6 +47,7 @@
#include "chrome/browser/lifetime/application_lifetime.h"
#include "chrome/browser/managed_mode/managed_mode.h"
#include "chrome/browser/policy/browser_policy_connector.h"
+#include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h"
#include "chrome/common/chrome_notification_types.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/common/pref_names.h"
@@ -47,7 +56,12 @@
#include "chromeos/login/login_state.h"
#include "content/public/browser/notification_service.h"
#include "content/public/browser/notification_types.h"
+#include "content/public/browser/web_contents.h"
+#include "content/public/browser/web_contents_view.h"
+#include "content/public/browser/web_ui.h"
#include "googleurl/src/gurl.h"
+#include "ui/aura/env.h"
+#include "ui/aura/root_window.h"
#include "ui/aura/window.h"
#include "ui/base/events/event_utils.h"
#include "ui/base/resource/resource_bundle.h"
@@ -62,6 +76,26 @@
namespace {
+// URL which corresponds to the login WebUI.
+const char kLoginURL[] = "chrome://oobe/login";
+
+// URL which corresponds to the OOBE WebUI.
+const char kOobeURL[] = "chrome://oobe";
+
+// Duration of sign-in transition animation.
+const int kLoginFadeoutTransitionDurationMs = 700;
+
+// Number of times we try to reload OOBE/login WebUI if it crashes.
+const int kCrashCountLimit = 5;
+
+// Whether to enable tnitializing WebUI in hidden state (see
+// |initialize_webui_hidden_|) by default.
+const bool kHiddenWebUIInitializationDefault = true;
+
+// Switch values that might be used to override WebUI init type.
+const char kWebUIInitParallel[] = "parallel";
+const char kWebUIInitPostpone[] = "postpone";
+
// The delay of triggering initialization of the device policy subsystem
// after the login screen is initialized. This makes sure that device policy
// network requests are made while the system is idle waiting for user input.
@@ -122,7 +156,16 @@ LoginDisplayHostImpl::LoginDisplayHostImpl(const gfx::Rect& background_bounds)
ALLOW_THIS_IN_INITIALIZER_LIST(pointer_factory_(this)),
shutting_down_(false),
oobe_progress_bar_visible_(false),
- session_starting_(false) {
+ session_starting_(false),
+ login_window_(NULL),
+ login_view_(NULL),
+ webui_login_display_(NULL),
+ is_showing_login_(false),
+ is_wallpaper_loaded_(false),
+ status_area_saved_visibility_(false),
+ crash_count_(0),
+ restore_path_(RESTORE_UNKNOWN),
+ old_ignore_solo_window_frame_painter_policy_value_(false) {
// We need to listen to CLOSE_ALL_BROWSERS_REQUEST but not APP_TERMINATIN
// because/ APP_TERMINATING will never be fired as long as this keeps
// ref-count. CLOSE_ALL_BROWSERS_REQUEST is safe here because there will be no
@@ -148,9 +191,74 @@ LoginDisplayHostImpl::LoginDisplayHostImpl(const gfx::Rect& background_bounds)
// Make sure chrome won't exit while we are at login/oobe screen.
chrome::StartKeepAlive();
+
+ bool is_registered = StartupUtils::IsDeviceRegistered();
+ bool zero_delay_enabled = WizardController::IsZeroDelayEnabled();
+ bool disable_boot_animation = CommandLine::ForCurrentProcess()->
+ HasSwitch(switches::kDisableBootAnimation);
+ bool disable_oobe_animation = CommandLine::ForCurrentProcess()->
+ HasSwitch(switches::kDisableOobeAnimation);
+
+ waiting_for_wallpaper_load_ =
+ !zero_delay_enabled &&
+ (is_registered || !disable_oobe_animation) &&
+ (!is_registered || !disable_boot_animation);
+
+ // For slower hardware we have boot animation disabled so
+ // we'll be initializing WebUI hidden, waiting for user pods to load and then
+ // show WebUI at once.
+ waiting_for_user_pods_ = !zero_delay_enabled && !waiting_for_wallpaper_load_;
+
+ initialize_webui_hidden_ =
+ kHiddenWebUIInitializationDefault && !zero_delay_enabled;
+
+ is_boot_animation2_enabled_ = waiting_for_wallpaper_load_ &&
+ !CommandLine::ForCurrentProcess()->HasSwitch(
+ ash::switches::kAshDisableBootAnimation2);
+
+ // Prevents white flashing on OOBE (http://crbug.com/131569).
+ aura::Env::GetInstance()->set_render_white_bg(false);
+
+ // Check if WebUI init type is overriden.
+ if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAshWebUIInit)) {
+ const std::string override_type = CommandLine::ForCurrentProcess()->
+ GetSwitchValueASCII(switches::kAshWebUIInit);
+ if (override_type == kWebUIInitParallel)
+ initialize_webui_hidden_ = true;
+ else if (override_type == kWebUIInitPostpone)
+ initialize_webui_hidden_ = false;
+ }
+
+ // Always postpone WebUI initialization on first boot, otherwise we miss
+ // initial animation.
+ if (!StartupUtils::IsOobeCompleted())
+ initialize_webui_hidden_ = false;
+
+ // There is no wallpaper for KioskMode, don't initialize the webui hidden.
+ if (chromeos::KioskModeSettings::Get()->IsKioskModeEnabled())
+ initialize_webui_hidden_ = false;
+
+ if (waiting_for_wallpaper_load_) {
+ registrar_.Add(this, chrome::NOTIFICATION_WALLPAPER_ANIMATION_FINISHED,
+ content::NotificationService::AllSources());
+ }
+
+ // In boot-animation2 we want to show login WebUI as soon as possible.
+ if ((waiting_for_user_pods_ || is_boot_animation2_enabled_)
+ && initialize_webui_hidden_) {
+ registrar_.Add(this, chrome::NOTIFICATION_LOGIN_WEBUI_VISIBLE,
+ content::NotificationService::AllSources());
+ }
+ LOG(INFO) << "Login WebUI >> "
+ << "zero_delay: " << zero_delay_enabled
+ << " wait_for_wp_load_: " << waiting_for_wallpaper_load_
+ << " wait_for_pods_: " << waiting_for_user_pods_
+ << " init_webui_hidden_: " << initialize_webui_hidden_;
}
LoginDisplayHostImpl::~LoginDisplayHostImpl() {
+ ResetLoginWindowAndView();
+
// Let chrome process exit after login/oobe screen if needed.
chrome::EndKeepAlive();
@@ -160,6 +268,25 @@ LoginDisplayHostImpl::~LoginDisplayHostImpl() {
////////////////////////////////////////////////////////////////////////////////
// LoginDisplayHostImpl, LoginDisplayHost implementation:
+LoginDisplay* LoginDisplayHostImpl::CreateLoginDisplay(
+ LoginDisplay::Delegate* delegate) {
+ webui_login_display_ = new WebUILoginDisplay(delegate);
+ webui_login_display_->set_background_bounds(background_bounds());
+ return webui_login_display_;
+}
+
+gfx::NativeWindow LoginDisplayHostImpl::GetNativeWindow() const {
+ return login_window_ ? login_window_->GetNativeWindow() : NULL;
+}
+
+WebUILoginView* LoginDisplayHostImpl::GetWebUILoginView() const {
+ return login_view_;
+}
+
+views::Widget* LoginDisplayHostImpl::GetWidget() const {
+ return login_window_;
+}
+
void LoginDisplayHostImpl::BeforeSessionStart() {
session_starting_ = true;
}
@@ -183,9 +310,63 @@ void LoginDisplayHostImpl::OnCompleteLogin() {
auto_enrollment_client_.release()->CancelAndDeleteSoon();
}
+void LoginDisplayHostImpl::OpenProxySettings() {
+ if (login_view_)
+ login_view_->OpenProxySettings();
+}
+
+void LoginDisplayHostImpl::SetOobeProgressBarVisible(bool visible) {
+ GetOobeUI()->ShowOobeUI(visible);
+}
+
+void LoginDisplayHostImpl::SetShutdownButtonEnabled(bool enable) {
+}
+
+void LoginDisplayHostImpl::SetStatusAreaVisible(bool visible) {
+ if (initialize_webui_hidden_)
+ status_area_saved_visibility_ = visible;
+ else if (login_view_)
+ login_view_->SetStatusAreaVisible(visible);
+}
+
+void LoginDisplayHostImpl::CheckForAutoEnrollment() {
+ // This method is called when the controller determines that the
+ // auto-enrollment check can start. This happens either after the EULA is
+ // accepted, or right after a reboot if the EULA has already been accepted.
+
+ if (policy::AutoEnrollmentClient::IsDisabled()) {
+ VLOG(1) << "CheckForAutoEnrollment: auto-enrollment disabled";
+ return;
+ }
+
+ // Start by checking if the device has already been owned.
+ pointer_factory_.InvalidateWeakPtrs();
+ DeviceSettingsService::Get()->GetOwnershipStatusAsync(
+ base::Bind(&LoginDisplayHostImpl::OnOwnershipStatusCheckDone,
+ pointer_factory_.GetWeakPtr()));
+}
+
void LoginDisplayHostImpl::StartWizard(
const std::string& first_screen_name,
- DictionaryValue* screen_parameters) {
+ scoped_ptr<DictionaryValue> screen_parameters) {
+ // Keep parameters to restore if renderer crashes.
+ restore_path_ = RESTORE_WIZARD;
+ wizard_first_screen_name_ = first_screen_name;
+ if (screen_parameters.get())
+ wizard_screen_parameters_.reset(screen_parameters->DeepCopy());
+ else
+ wizard_screen_parameters_.reset();
+ is_showing_login_ = false;
+
+ if (waiting_for_wallpaper_load_ && !initialize_webui_hidden_) {
+ LOG(INFO) << "Login WebUI >> wizard postponed";
+ return;
+ }
+ LOG(INFO) << "Login WebUI >> wizard";
+
+ if (!login_window_)
+ LoadURL(GURL(kOobeURL));
+
DVLOG(1) << "Starting wizard, first_screen_name: " << first_screen_name;
// Create and show the wizard.
// Note, dtor of the old WizardController should be called before ctor of the
@@ -196,10 +377,26 @@ void LoginDisplayHostImpl::StartWizard(
oobe_progress_bar_visible_ = !StartupUtils::IsDeviceRegistered();
SetOobeProgressBarVisible(oobe_progress_bar_visible_);
- wizard_controller_->Init(first_screen_name, screen_parameters);
+ wizard_controller_->Init(first_screen_name, screen_parameters.Pass());
+}
+
+WizardController* LoginDisplayHostImpl::GetWizardController() {
+ return wizard_controller_.get();
}
void LoginDisplayHostImpl::StartSignInScreen() {
+ restore_path_ = RESTORE_SIGN_IN;
+ is_showing_login_ = true;
+
+ if (waiting_for_wallpaper_load_ && !initialize_webui_hidden_) {
+ LOG(INFO) << "Login WebUI >> sign in postponed";
+ return;
+ }
+ LOG(INFO) << "Login WebUI >> sign in";
+
+ if (!login_window_)
+ LoadURL(GURL(kLoginURL));
+
DVLOG(1) << "Starting sign in screen";
const chromeos::UserList& users = chromeos::UserManager::Get()->GetUsers();
@@ -234,10 +431,11 @@ void LoginDisplayHostImpl::StartSignInScreen() {
// Initiate device policy fetching.
g_browser_process->browser_policy_connector()->ScheduleServiceInitialization(
kPolicyServiceInitializationDelayMilliseconds);
-}
-WizardController* LoginDisplayHostImpl::GetWizardController() {
- return wizard_controller_.get();
+ CHECK(webui_login_display_);
+ GetOobeUI()->ShowSigninScreen(webui_login_display_, webui_login_display_);
+ if (chromeos::KioskModeSettings::Get()->IsKioskModeEnabled())
+ SetStatusAreaVisible(false);
}
void LoginDisplayHostImpl::ResumeSignInScreen() {
@@ -252,21 +450,30 @@ void LoginDisplayHostImpl::ResumeSignInScreen() {
sign_in_controller_->ResumeLogin();
}
-void LoginDisplayHostImpl::CheckForAutoEnrollment() {
- // This method is called when the controller determines that the
- // auto-enrollment check can start. This happens either after the EULA is
- // accepted, or right after a reboot if the EULA has already been accepted.
- if (policy::AutoEnrollmentClient::IsDisabled()) {
- VLOG(1) << "CheckForAutoEnrollment: auto-enrollment disabled";
- return;
- }
+void LoginDisplayHostImpl::OnPreferencesChanged() {
+ if (is_showing_login_)
+ webui_login_display_->OnPreferencesChanged();
+}
- // Start by checking if the device has already been owned.
- pointer_factory_.InvalidateWeakPtrs();
- DeviceSettingsService::Get()->GetOwnershipStatusAsync(
- base::Bind(&LoginDisplayHostImpl::OnOwnershipStatusCheckDone,
- pointer_factory_.GetWeakPtr()));
+////////////////////////////////////////////////////////////////////////////////
+// LoginDisplayHostImpl, public
+
+WizardController* LoginDisplayHostImpl::CreateWizardController() {
+ // TODO(altimofeev): ensure that WebUI is ready.
+ OobeDisplay* oobe_display = GetOobeUI();
+ return new WizardController(this, oobe_display);
+}
+
+void LoginDisplayHostImpl::OnBrowserCreated() {
+ // Close lock window now so that the launched browser can receive focus.
+ ResetLoginWindowAndView();
+}
+
+OobeUI* LoginDisplayHostImpl::GetOobeUI() const {
+ if (!login_view_)
+ return NULL;
+ return static_cast<OobeUI*>(login_view_->GetWebUI()->GetController());
}
////////////////////////////////////////////////////////////////////////////////
@@ -276,7 +483,38 @@ void LoginDisplayHostImpl::Observe(
int type,
const content::NotificationSource& source,
const content::NotificationDetails& details) {
- if (type == chrome::NOTIFICATION_CLOSE_ALL_BROWSERS_REQUEST) {
+ if (chrome::NOTIFICATION_WALLPAPER_ANIMATION_FINISHED == type) {
+ LOG(INFO) << "Login WebUI >> wp animation done";
+ is_wallpaper_loaded_ = true;
+ ash::Shell::GetInstance()->user_wallpaper_delegate()->
+ OnWallpaperBootAnimationFinished();
+ if (waiting_for_wallpaper_load_) {
+ // StartWizard / StartSignInScreen could be called multiple times through
+ // the lifetime of host.
+ // Make sure that subsequent calls are not postponed.
+ waiting_for_wallpaper_load_ = false;
+ if (initialize_webui_hidden_)
+ ShowWebUI();
+ else
+ StartPostponedWebUI();
+ }
+ registrar_.Remove(this,
+ chrome::NOTIFICATION_WALLPAPER_ANIMATION_FINISHED,
+ content::NotificationService::AllSources());
+ } else if (chrome::NOTIFICATION_LOGIN_WEBUI_VISIBLE == type) {
+ LOG(INFO) << "Login WebUI >> WEBUI_VISIBLE";
+ if (waiting_for_user_pods_ && initialize_webui_hidden_) {
+ waiting_for_user_pods_ = false;
+ ShowWebUI();
+ } else if (waiting_for_wallpaper_load_ && initialize_webui_hidden_) {
+ // Reduce time till login UI is shown - show it as soon as possible.
+ waiting_for_wallpaper_load_ = false;
+ ShowWebUI();
+ }
+ registrar_.Remove(this,
+ chrome::NOTIFICATION_LOGIN_WEBUI_VISIBLE,
+ content::NotificationService::AllSources());
+ } else if (type == chrome::NOTIFICATION_CLOSE_ALL_BROWSERS_REQUEST) {
ShutdownDisplayHost(true);
} else if (type == chrome::NOTIFICATION_BROWSER_OPENED && session_starting_) {
// Browsers created before session start (windows opened by extensions, for
@@ -300,6 +538,30 @@ void LoginDisplayHostImpl::Observe(
}
}
+////////////////////////////////////////////////////////////////////////////////
+// LoginDisplayHostImpl, WebContentsObserver implementation:
+
+void LoginDisplayHostImpl::RenderViewGone(base::TerminationStatus status) {
+ // Do not try to restore on shutdown
+ if (browser_shutdown::GetShutdownType() != browser_shutdown::NOT_VALID)
+ return;
+
+ crash_count_++;
+ if (crash_count_ > kCrashCountLimit)
+ return;
+
+ if (status != base::TERMINATION_STATUS_NORMAL_TERMINATION) {
+ // Render with login screen crashed. Let's crash browser process to let
+ // session manager restart it properly. It is hard to reload the page
+ // and get to controlled state that is fully functional.
+ // If you see check, search for renderer crash for the same client.
+ LOG(FATAL) << "Renderer crash on login window";
+ }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// LoginDisplayHostImpl, private
+
void LoginDisplayHostImpl::ShutdownDisplayHost(bool post_quit_task) {
if (shutting_down_)
return;
@@ -371,6 +633,129 @@ void LoginDisplayHostImpl::ForceAutoEnrollment() {
sign_in_controller_->DoAutoEnrollment();
}
+void LoginDisplayHostImpl::LoadURL(const GURL& url) {
+ InitLoginWindowAndView();
+ // Subscribe to crash events.
+ content::WebContentsObserver::Observe(login_view_->GetWebContents());
+ login_view_->LoadURL(url);
+}
+
+void LoginDisplayHostImpl::ShowWebUI() {
+ if (!login_window_ || !login_view_) {
+ NOTREACHED();
+ return;
+ }
+ LOG(INFO) << "Login WebUI >> Show already initialized UI";
+ login_window_->Show();
+ login_view_->GetWebContents()->GetView()->Focus();
+ login_view_->SetStatusAreaVisible(status_area_saved_visibility_);
+ login_view_->OnPostponedShow();
+ // We should reset this flag to allow changing of status area visibility.
+ initialize_webui_hidden_ = false;
+}
+
+void LoginDisplayHostImpl::StartPostponedWebUI() {
+ if (!is_wallpaper_loaded_) {
+ NOTREACHED();
+ return;
+ }
+ LOG(INFO) << "Login WebUI >> Init postponed WebUI";
+
+ // Wallpaper has finished loading before StartWizard/StartSignInScreen has
+ // been called. In general this should not happen.
+ // Let go through normal code path when one of those will be called.
+ if (restore_path_ == RESTORE_UNKNOWN) {
+ NOTREACHED();
+ return;
+ }
+
+ switch (restore_path_) {
+ case RESTORE_WIZARD:
+ StartWizard(wizard_first_screen_name_,
+ wizard_screen_parameters_.Pass());
+ break;
+ case RESTORE_SIGN_IN:
+ StartSignInScreen();
+ break;
+ default:
+ NOTREACHED();
+ break;
+ }
+}
+
+void LoginDisplayHostImpl::InitLoginWindowAndView() {
+ if (login_window_)
+ return;
+
+ views::Widget::InitParams params(
+ views::Widget::InitParams::TYPE_WINDOW_FRAMELESS);
+ params.bounds = background_bounds();
+ params.show_state = ui::SHOW_STATE_FULLSCREEN;
+ params.transparent = true;
+ params.parent =
+ ash::Shell::GetContainer(
+ ash::Shell::GetPrimaryRootWindow(),
+ ash::internal::kShellWindowId_LockScreenContainer);
+
+ login_window_ = new views::Widget;
+ login_window_->Init(params);
+ if (login_window_->GetNativeWindow()) {
+ aura::RootWindow* root = login_window_->GetNativeWindow()->GetRootWindow();
+ if (root) {
+ old_ignore_solo_window_frame_painter_policy_value_ =
+ root->GetProperty(ash::internal::kIgnoreSoloWindowFramePainterPolicy);
+ root->SetProperty(ash::internal::kIgnoreSoloWindowFramePainterPolicy,
+ true);
+ }
+ }
+ login_view_ = new WebUILoginView();
+
+ login_view_->Init(login_window_);
+
+ views::corewm::SetWindowVisibilityAnimationDuration(
+ login_window_->GetNativeView(),
+ base::TimeDelta::FromMilliseconds(kLoginFadeoutTransitionDurationMs));
+ views::corewm::SetWindowVisibilityAnimationTransition(
+ login_window_->GetNativeView(),
+ views::corewm::ANIMATE_HIDE);
+
+ login_window_->SetContentsView(login_view_);
+ login_view_->UpdateWindowType();
+
+ // If WebUI is initialized in hidden state, show it only if we're no
+ // longer waiting for wallpaper animation/user images loading. Otherwise,
+ // always show it.
+ if (!initialize_webui_hidden_ ||
+ (!waiting_for_wallpaper_load_ && !waiting_for_user_pods_)) {
+ LOG(INFO) << "Login WebUI >> show login wnd on create";
+ login_window_->Show();
+ } else {
+ LOG(INFO) << "Login WebUI >> login wnd is hidden on create";
+ login_view_->set_is_hidden(true);
+ }
+ login_window_->GetNativeView()->SetName("WebUILoginView");
+ login_view_->OnWindowCreated();
+}
+
+void LoginDisplayHostImpl::ResetLoginWindowAndView() {
+ if (!login_window_)
+ return;
+
+ if (login_window_->GetNativeWindow()) {
+ aura::RootWindow* root = login_window_->GetNativeWindow()->GetRootWindow();
+ if (root) {
+ root->SetProperty(ash::internal::kIgnoreSoloWindowFramePainterPolicy,
+ old_ignore_solo_window_frame_painter_policy_value_);
+ }
+ }
+ login_window_->Close();
+ login_window_ = NULL;
+ login_view_ = NULL;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// external
+
// Declared in login_wizard.h so that others don't need to depend on our .h.
// TODO(nkostylev): Split this into a smaller functions.
void ShowLoginWizard(const std::string& first_screen_name,
@@ -432,7 +817,7 @@ void ShowLoginWizard(const std::string& first_screen_name,
first_screen_name == chromeos::WizardController::kLoginScreenName;
chromeos::LoginDisplayHost* display_host;
- display_host = new chromeos::WebUILoginDisplayHost(screen_bounds);
+ display_host = new chromeos::LoginDisplayHostImpl(screen_bounds);
if (show_login_screen) {
// R11 > R12 migration fix. See http://crosbug.com/p/4898.
@@ -500,7 +885,8 @@ void ShowLoginWizard(const std::string& first_screen_name,
}
}
- display_host->StartWizard(first_screen_name, NULL);
+ scoped_ptr<DictionaryValue> params;
+ display_host->StartWizard(first_screen_name, params.Pass());
chromeos::LoginUtils::Get()->PrewarmAuthentication();
chromeos::DBusThreadManager::Get()->GetSessionManagerClient()
« no previous file with comments | « chrome/browser/chromeos/login/login_display_host_impl.h ('k') | chrome/browser/chromeos/login/mock_login_display_host.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698