Commit 9bc084d8 authored by Quan Nguyen's avatar Quan Nguyen Committed by Commit Bot

Implement kiosk splash screen bailout shortcut

Bug: 836861
Change-Id: I6ac30f0e187750b55cd7f14bd39f5d477497c003
Reviewed-on: https://chromium-review.googlesource.com/1109208
Commit-Queue: Quan Nguyen <qnnguyen@chromium.org>
Reviewed-by: default avatarXiyuan Xia <xiyuan@chromium.org>
Reviewed-by: default avatarDaniel Cheng <dcheng@chromium.org>
Cr-Commit-Position: refs/heads/master@{#569760}
parent ae3d08a5
...@@ -26,6 +26,7 @@ namespace { ...@@ -26,6 +26,7 @@ namespace {
constexpr char kGaiaURL[] = "chrome://oobe/gaia-signin"; constexpr char kGaiaURL[] = "chrome://oobe/gaia-signin";
constexpr int kGaiaDialogHeight = 640; constexpr int kGaiaDialogHeight = 640;
constexpr int kGaiaDialogWidth = 768; constexpr int kGaiaDialogWidth = 768;
constexpr char kAppLaunchBailout[] = "app_launch_bailout";
} // namespace } // namespace
...@@ -37,6 +38,8 @@ OobeUIDialogDelegate::OobeUIDialogDelegate( ...@@ -37,6 +38,8 @@ OobeUIDialogDelegate::OobeUIDialogDelegate(
tablet_mode_observer_(this) { tablet_mode_observer_(this) {
display_observer_.Add(display::Screen::GetScreen()); display_observer_.Add(display::Screen::GetScreen());
tablet_mode_observer_.Add(TabletModeClient::Get()); tablet_mode_observer_.Add(TabletModeClient::Get());
accel_map_[ui::Accelerator(
ui::VKEY_S, ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN)] = kAppLaunchBailout;
} }
OobeUIDialogDelegate::~OobeUIDialogDelegate() { OobeUIDialogDelegate::~OobeUIDialogDelegate() {
...@@ -188,7 +191,12 @@ bool OobeUIDialogDelegate::HandleContextMenu( ...@@ -188,7 +191,12 @@ bool OobeUIDialogDelegate::HandleContextMenu(
std::vector<ui::Accelerator> OobeUIDialogDelegate::GetAccelerators() { std::vector<ui::Accelerator> OobeUIDialogDelegate::GetAccelerators() {
// TODO(crbug.com/809648): Adding necessory accelerators. // TODO(crbug.com/809648): Adding necessory accelerators.
return std::vector<ui::Accelerator>(); std::vector<ui::Accelerator> output;
for (const auto& pair : accel_map_)
output.push_back(pair.first);
return output;
} }
bool OobeUIDialogDelegate::AcceleratorPressed( bool OobeUIDialogDelegate::AcceleratorPressed(
...@@ -202,7 +210,12 @@ bool OobeUIDialogDelegate::AcceleratorPressed( ...@@ -202,7 +210,12 @@ bool OobeUIDialogDelegate::AcceleratorPressed(
return true; return true;
} }
return false; auto entry = accel_map_.find(accelerator);
if (entry == accel_map_.end())
return false;
GetOobeUI()->ForwardAccelerator(entry->second);
return true;
} }
} // namespace chromeos } // namespace chromeos
...@@ -114,6 +114,8 @@ class OobeUIDialogDelegate : public display::DisplayObserver, ...@@ -114,6 +114,8 @@ class OobeUIDialogDelegate : public display::DisplayObserver,
ScopedObserver<TabletModeClient, TabletModeClientObserver> ScopedObserver<TabletModeClient, TabletModeClientObserver>
tablet_mode_observer_; tablet_mode_observer_;
std::map<ui::Accelerator, std::string> accel_map_;
DISALLOW_COPY_AND_ASSIGN(OobeUIDialogDelegate); DISALLOW_COPY_AND_ASSIGN(OobeUIDialogDelegate);
}; };
......
...@@ -297,6 +297,7 @@ void CoreOobeHandler::SetClientAreaSize(int width, int height) { ...@@ -297,6 +297,7 @@ void CoreOobeHandler::SetClientAreaSize(int width, int height) {
void CoreOobeHandler::HandleInitialized() { void CoreOobeHandler::HandleInitialized() {
ExecuteDeferredJSCalls(); ExecuteDeferredJSCalls();
oobe_ui_->InitializeHandlers(); oobe_ui_->InitializeHandlers();
AllowJavascript();
} }
void CoreOobeHandler::HandleSkipUpdateEnrollAfterEula() { void CoreOobeHandler::HandleSkipUpdateEnrollAfterEula() {
...@@ -441,6 +442,10 @@ void CoreOobeHandler::SetLoginUserCount(int user_count) { ...@@ -441,6 +442,10 @@ void CoreOobeHandler::SetLoginUserCount(int user_count) {
CallJSOrDefer("setLoginUserCount", user_count); CallJSOrDefer("setLoginUserCount", user_count);
} }
void CoreOobeHandler::ForwardAccelerator(std::string accelerator_name) {
CallJSOrDefer("handleAccelerator", accelerator_name);
}
void CoreOobeHandler::UpdateA11yState() { void CoreOobeHandler::UpdateA11yState() {
if (!features::IsAshInBrowserProcess()) { if (!features::IsAshInBrowserProcess()) {
NOTIMPLEMENTED(); NOTIMPLEMENTED();
......
...@@ -80,6 +80,9 @@ class CoreOobeHandler : public BaseWebUIHandler, ...@@ -80,6 +80,9 @@ class CoreOobeHandler : public BaseWebUIHandler,
// Notify WebUI of the user count on the views login screen. // Notify WebUI of the user count on the views login screen.
void SetLoginUserCount(int user_count); void SetLoginUserCount(int user_count);
// Forwards an accelerator value to cr.ui.Oobe.handleAccelerator.
void ForwardAccelerator(std::string accelerator_name);
private: private:
// CoreOobeView implementation: // CoreOobeView implementation:
void ShowSignInError(int login_attempts, void ShowSignInError(int login_attempts,
......
...@@ -669,6 +669,10 @@ void OobeUI::ShowSigninScreen(const LoginScreenContext& context, ...@@ -669,6 +669,10 @@ void OobeUI::ShowSigninScreen(const LoginScreenContext& context,
signin_screen_handler_->Show(actual_context); signin_screen_handler_->Show(actual_context);
} }
void OobeUI::ForwardAccelerator(std::string accelerator_name) {
core_handler_->ForwardAccelerator(accelerator_name);
}
void OobeUI::ResetSigninScreenHandlerDelegate() { void OobeUI::ResetSigninScreenHandlerDelegate() {
signin_screen_handler_->SetDelegate(nullptr); signin_screen_handler_->SetDelegate(nullptr);
signin_screen_handler_->SetNativeWindowDelegate(nullptr); signin_screen_handler_->SetNativeWindowDelegate(nullptr);
......
...@@ -161,6 +161,9 @@ class OobeUI : public content::WebUIController, ...@@ -161,6 +161,9 @@ class OobeUI : public content::WebUIController,
SigninScreenHandlerDelegate* delegate, SigninScreenHandlerDelegate* delegate,
NativeWindowDelegate* native_window_delegate); NativeWindowDelegate* native_window_delegate);
// Forwards an accelerator to the webui to be handled.
void ForwardAccelerator(std::string accelerator_name);
// Resets the delegate set in ShowSigninScreen. // Resets the delegate set in ShowSigninScreen.
void ResetSigninScreenHandlerDelegate(); void ResetSigninScreenHandlerDelegate();
......
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