Commit e78efab9 authored by Jacob Dufault's avatar Jacob Dufault Committed by Commit Bot

cros: Fix crash when showing user-add screen.

Bug: 855650
Change-Id: Ib9abc4447eb81365439611953e641d30f97cc58d
Reviewed-on: https://chromium-review.googlesource.com/1112344Reviewed-by: default avatarXiyuan Xia <xiyuan@chromium.org>
Commit-Queue: Jacob Dufault <jdufault@chromium.org>
Cr-Commit-Position: refs/heads/master@{#569695}
parent 57b856f8
...@@ -135,7 +135,7 @@ class LoginDisplay { ...@@ -135,7 +135,7 @@ class LoginDisplay {
protected: protected:
// Login UI delegate (controller). // Login UI delegate (controller).
Delegate* delegate_; Delegate* delegate_ = nullptr;
// Parent window, might be used to create dialog windows. // Parent window, might be used to create dialog windows.
gfx::NativeWindow parent_window_ = nullptr; gfx::NativeWindow parent_window_ = nullptr;
......
...@@ -647,8 +647,7 @@ void LoginDisplayHostWebUI::OnStartUserAdding() { ...@@ -647,8 +647,7 @@ void LoginDisplayHostWebUI::OnStartUserAdding() {
NOTIMPLEMENTED(); NOTIMPLEMENTED();
} }
existing_user_controller_.reset(); // Only one controller in a time. CreateExistingUserController();
existing_user_controller_.reset(new ExistingUserController(this));
if (!signin_screen_controller_.get()) { if (!signin_screen_controller_.get()) {
signin_screen_controller_.reset(new SignInScreenController(GetOobeUI())); signin_screen_controller_.reset(new SignInScreenController(GetOobeUI()));
...@@ -698,9 +697,7 @@ void LoginDisplayHostWebUI::OnStartSignInScreen( ...@@ -698,9 +697,7 @@ void LoginDisplayHostWebUI::OnStartSignInScreen(
} }
DVLOG(1) << "Starting sign in screen"; DVLOG(1) << "Starting sign in screen";
existing_user_controller_.reset(); // Only one controller in a time. CreateExistingUserController();
existing_user_controller_.reset(new ExistingUserController(this));
login_display_->set_delegate(existing_user_controller_.get());
if (!signin_screen_controller_.get()) { if (!signin_screen_controller_.get()) {
signin_screen_controller_.reset(new SignInScreenController(GetOobeUI())); signin_screen_controller_.reset(new SignInScreenController(GetOobeUI()));
...@@ -1138,6 +1135,13 @@ void LoginDisplayHostWebUI::OnLoginPromptVisible() { ...@@ -1138,6 +1135,13 @@ void LoginDisplayHostWebUI::OnLoginPromptVisible() {
TryToPlayOobeStartupSound(); TryToPlayOobeStartupSound();
} }
void LoginDisplayHostWebUI::CreateExistingUserController() {
// There can only be one |ExistingUserController| instance at a time.
existing_user_controller_.reset();
existing_user_controller_.reset(new ExistingUserController(this));
login_display_->set_delegate(existing_user_controller_.get());
}
// static // static
void LoginDisplayHostWebUI::DisableRestrictiveProxyCheckForTest() { void LoginDisplayHostWebUI::DisableRestrictiveProxyCheckForTest() {
default_host() default_host()
......
...@@ -177,6 +177,9 @@ class LoginDisplayHostWebUI : public LoginDisplayHostCommon, ...@@ -177,6 +177,9 @@ class LoginDisplayHostWebUI : public LoginDisplayHostCommon,
// Called when login-prompt-visible signal is caught. // Called when login-prompt-visible signal is caught.
void OnLoginPromptVisible(); void OnLoginPromptVisible();
// Creates or recreates |existing_user_controller_|.
void CreateExistingUserController();
// Sign in screen controller. // Sign in screen controller.
std::unique_ptr<ExistingUserController> existing_user_controller_; std::unique_ptr<ExistingUserController> existing_user_controller_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment