cros: Launch the Account Access help app from "Learn more" button.
Bug: 863620
Change-Id: Id15fc12e23ca4fd51b92454d27d87133120aee82
Reviewed-on: https://chromium-review.googlesource.com/1157249
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Mitsuru Oshima <oshima@chromium.org>
Reviewed-by: Jacob Dufault <jdufault@chromium.org>
Commit-Queue: Quan Nguyen <qnnguyen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#580332}
diff --git a/ash/login/login_screen_controller.cc b/ash/login/login_screen_controller.cc
index 7f52f9a..38d36f18 100644
--- a/ash/login/login_screen_controller.cc
+++ b/ash/login/login_screen_controller.cc
@@ -440,6 +440,10 @@
login_screen_client_->ShowResetScreen();
}
+void LoginScreenController::ShowAccountAccessHelpApp() {
+ login_screen_client_->ShowAccountAccessHelpApp();
+}
+
void LoginScreenController::DoAuthenticateUser(const AccountId& account_id,
const std::string& password,
bool authenticated_by_pin,
diff --git a/ash/login/login_screen_controller.h b/ash/login/login_screen_controller.h
index 3aa7d02..4e70e5e 100644
--- a/ash/login/login_screen_controller.h
+++ b/ash/login/login_screen_controller.h
@@ -85,6 +85,7 @@
void LaunchKioskApp(const std::string& app_id);
void LaunchArcKioskApp(const AccountId& account_id);
void ShowResetScreen();
+ void ShowAccountAccessHelpApp();
// Add or remove an observer.
void AddObserver(LoginScreenControllerObserver* observer);
diff --git a/ash/login/mock_login_screen_client.h b/ash/login/mock_login_screen_client.h
index ad7594b..a2a9097 100644
--- a/ash/login/mock_login_screen_client.h
+++ b/ash/login/mock_login_screen_client.h
@@ -71,6 +71,7 @@
MOCK_METHOD1(LaunchKioskApp, void(const std::string& app_id));
MOCK_METHOD1(LaunchArcKioskApp, void(const AccountId& account_id));
MOCK_METHOD0(ShowResetScreen, void());
+ MOCK_METHOD0(ShowAccountAccessHelpApp, void());
private:
bool authenticate_user_callback_result_ = true;
diff --git a/ash/login/ui/lock_contents_view.cc b/ash/login/ui/lock_contents_view.cc
index d05f793e..2fc8ba1 100644
--- a/ash/login/ui/lock_contents_view.cc
+++ b/ash/login/ui/lock_contents_view.cc
@@ -128,7 +128,7 @@
}
void ButtonPressed(Button* sender, const ui::Event& event) override {
- // TODO(qnnguyen): Launch the help app for signin trouble.
+ Shell::Get()->login_screen_controller()->ShowAccountAccessHelpApp();
}
};
diff --git a/ash/public/interfaces/login_screen.mojom b/ash/public/interfaces/login_screen.mojom
index 2b9c593..008256de 100644
--- a/ash/public/interfaces/login_screen.mojom
+++ b/ash/public/interfaces/login_screen.mojom
@@ -237,4 +237,7 @@
// Show the powerwash (device reset) dialog.
ShowResetScreen();
+
+ // Show the help app for when users have trouble signing in to their account.
+ ShowAccountAccessHelpApp();
};
diff --git a/chrome/browser/chromeos/login/ui/fake_login_display_host.cc b/chrome/browser/chromeos/login/ui/fake_login_display_host.cc
index ebee6661..0a413b2 100644
--- a/chrome/browser/chromeos/login/ui/fake_login_display_host.cc
+++ b/chrome/browser/chromeos/login/ui/fake_login_display_host.cc
@@ -142,6 +142,8 @@
void FakeLoginDisplayHost::ShowResetScreen() {}
+void FakeLoginDisplayHost::ShowAccountAccessHelpApp() {}
+
void FakeLoginDisplayHost::ShowDialogForCaptivePortal() {}
void FakeLoginDisplayHost::HideDialogForCaptivePortal() {}
diff --git a/chrome/browser/chromeos/login/ui/fake_login_display_host.h b/chrome/browser/chromeos/login/ui/fake_login_display_host.h
index a6415c54..7c09a82d 100644
--- a/chrome/browser/chromeos/login/ui/fake_login_display_host.h
+++ b/chrome/browser/chromeos/login/ui/fake_login_display_host.h
@@ -66,6 +66,7 @@
void ResyncUserData() override;
void ShowFeedback() override;
void ShowResetScreen() override;
+ void ShowAccountAccessHelpApp() override;
void ShowDialogForCaptivePortal() override;
void HideDialogForCaptivePortal() override;
void UpdateAddUserButtonStatus() override;
diff --git a/chrome/browser/chromeos/login/ui/login_display_host.h b/chrome/browser/chromeos/login/ui/login_display_host.h
index ba21d944..00272c98 100644
--- a/chrome/browser/chromeos/login/ui/login_display_host.h
+++ b/chrome/browser/chromeos/login/ui/login_display_host.h
@@ -197,6 +197,9 @@
// Shows the powerwash dialog.
virtual void ShowResetScreen() = 0;
+ // Start up the help application for trouble signin in.
+ virtual void ShowAccountAccessHelpApp() = 0;
+
// In the views case, make the OobeUIDialogDelegate visible so that Captive
// Portal web modal can be seen. In webui login, this should be a no-op.
virtual void ShowDialogForCaptivePortal() = 0;
diff --git a/chrome/browser/chromeos/login/ui/login_display_host_mojo.cc b/chrome/browser/chromeos/login/ui/login_display_host_mojo.cc
index 1fcc680..6cdad38 100644
--- a/chrome/browser/chromeos/login/ui/login_display_host_mojo.cc
+++ b/chrome/browser/chromeos/login/ui/login_display_host_mojo.cc
@@ -317,6 +317,12 @@
GetOobeUI()->ForwardAccelerator(kAccelReset);
}
+void LoginDisplayHostMojo::ShowAccountAccessHelpApp() {
+ scoped_refptr<HelpAppLauncher>(new HelpAppLauncher(GetNativeWindow()))
+ ->ShowHelpTopic(HelpAppLauncher::HELP_CANT_ACCESS_ACCOUNT);
+ dialog_->Show();
+}
+
void LoginDisplayHostMojo::UpdateAddUserButtonStatus() {
DCHECK(GetOobeUI());
LoginScreenClient::Get()->login_screen()->SetAddUserButtonEnabled(
diff --git a/chrome/browser/chromeos/login/ui/login_display_host_mojo.h b/chrome/browser/chromeos/login/ui/login_display_host_mojo.h
index 1591ac0..332ae3ea 100644
--- a/chrome/browser/chromeos/login/ui/login_display_host_mojo.h
+++ b/chrome/browser/chromeos/login/ui/login_display_host_mojo.h
@@ -93,6 +93,7 @@
void OnCancelPasswordChangedFlow() override;
void ShowFeedback() override;
void ShowResetScreen() override;
+ void ShowAccountAccessHelpApp() override;
void ShowDialogForCaptivePortal() override;
void HideDialogForCaptivePortal() override;
void UpdateAddUserButtonStatus() override;
diff --git a/chrome/browser/chromeos/login/ui/login_display_host_webui.cc b/chrome/browser/chromeos/login/ui/login_display_host_webui.cc
index adb7f006..ccda02c 100644
--- a/chrome/browser/chromeos/login/ui/login_display_host_webui.cc
+++ b/chrome/browser/chromeos/login/ui/login_display_host_webui.cc
@@ -1177,6 +1177,10 @@
NOTREACHED();
}
+void LoginDisplayHostWebUI::ShowAccountAccessHelpApp() {
+ NOTREACHED();
+}
+
// This is handled differently in webui.
void LoginDisplayHostWebUI::ShowDialogForCaptivePortal() {}
diff --git a/chrome/browser/chromeos/login/ui/login_display_host_webui.h b/chrome/browser/chromeos/login/ui/login_display_host_webui.h
index 1fb0dbfd4..07e385d 100644
--- a/chrome/browser/chromeos/login/ui/login_display_host_webui.h
+++ b/chrome/browser/chromeos/login/ui/login_display_host_webui.h
@@ -81,6 +81,7 @@
const user_manager::UserList GetUsers() override;
void ShowFeedback() override;
void ShowResetScreen() override;
+ void ShowAccountAccessHelpApp() override;
void ShowDialogForCaptivePortal() override;
void HideDialogForCaptivePortal() override;
void UpdateAddUserButtonStatus() override;
diff --git a/chrome/browser/chromeos/login/ui/mock_login_display_host.h b/chrome/browser/chromeos/login/ui/mock_login_display_host.h
index dbaa6e4..d7a2a39e 100644
--- a/chrome/browser/chromeos/login/ui/mock_login_display_host.h
+++ b/chrome/browser/chromeos/login/ui/mock_login_display_host.h
@@ -73,6 +73,7 @@
MOCK_METHOD0(ResyncUserData, void());
MOCK_METHOD0(ShowFeedback, void());
MOCK_METHOD0(ShowResetScreen, void());
+ MOCK_METHOD0(ShowAccountAccessHelpApp, void());
MOCK_METHOD0(OnCancelPasswordChangedFlow, void());
MOCK_METHOD0(ShowDialogForCaptivePortal, void());
MOCK_METHOD0(HideDialogForCaptivePortal, void());
diff --git a/chrome/browser/ui/ash/login_screen_client.cc b/chrome/browser/ui/ash/login_screen_client.cc
index 036848b..f1a3f9c 100644
--- a/chrome/browser/ui/ash/login_screen_client.cc
+++ b/chrome/browser/ui/ash/login_screen_client.cc
@@ -166,6 +166,10 @@
chromeos::LoginDisplayHost::default_host()->ShowResetScreen();
}
+void LoginScreenClient::ShowAccountAccessHelpApp() {
+ chromeos::LoginDisplayHost::default_host()->ShowAccountAccessHelpApp();
+}
+
void LoginScreenClient::LoadWallpaper(const AccountId& account_id) {
WallpaperControllerClient::Get()->ShowUserWallpaper(account_id);
}
diff --git a/chrome/browser/ui/ash/login_screen_client.h b/chrome/browser/ui/ash/login_screen_client.h
index 160c5ff..0525a29 100644
--- a/chrome/browser/ui/ash/login_screen_client.h
+++ b/chrome/browser/ui/ash/login_screen_client.h
@@ -86,6 +86,7 @@
void LaunchKioskApp(const std::string& app_id) override;
void LaunchArcKioskApp(const AccountId& account_id) override;
void ShowResetScreen() override;
+ void ShowAccountAccessHelpApp() override;
private:
void SetPublicSessionKeyboardLayout(