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 {
constexpr char kGaiaURL[] = "chrome://oobe/gaia-signin";
constexpr int kGaiaDialogHeight = 640;
constexpr int kGaiaDialogWidth = 768;
constexpr char kAppLaunchBailout[] = "app_launch_bailout";
} // namespace
......@@ -37,6 +38,8 @@ OobeUIDialogDelegate::OobeUIDialogDelegate(
tablet_mode_observer_(this) {
display_observer_.Add(display::Screen::GetScreen());
tablet_mode_observer_.Add(TabletModeClient::Get());
accel_map_[ui::Accelerator(
ui::VKEY_S, ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN)] = kAppLaunchBailout;
}
OobeUIDialogDelegate::~OobeUIDialogDelegate() {
......@@ -188,7 +191,12 @@ bool OobeUIDialogDelegate::HandleContextMenu(
std::vector<ui::Accelerator> OobeUIDialogDelegate::GetAccelerators() {
// 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(
......@@ -202,7 +210,12 @@ bool OobeUIDialogDelegate::AcceleratorPressed(
return true;
}
auto entry = accel_map_.find(accelerator);
if (entry == accel_map_.end())
return false;
GetOobeUI()->ForwardAccelerator(entry->second);
return true;
}
} // namespace chromeos
......@@ -114,6 +114,8 @@ class OobeUIDialogDelegate : public display::DisplayObserver,
ScopedObserver<TabletModeClient, TabletModeClientObserver>
tablet_mode_observer_;
std::map<ui::Accelerator, std::string> accel_map_;
DISALLOW_COPY_AND_ASSIGN(OobeUIDialogDelegate);
};
......
......@@ -297,6 +297,7 @@ void CoreOobeHandler::SetClientAreaSize(int width, int height) {
void CoreOobeHandler::HandleInitialized() {
ExecuteDeferredJSCalls();
oobe_ui_->InitializeHandlers();
AllowJavascript();
}
void CoreOobeHandler::HandleSkipUpdateEnrollAfterEula() {
......@@ -441,6 +442,10 @@ void CoreOobeHandler::SetLoginUserCount(int user_count) {
CallJSOrDefer("setLoginUserCount", user_count);
}
void CoreOobeHandler::ForwardAccelerator(std::string accelerator_name) {
CallJSOrDefer("handleAccelerator", accelerator_name);
}
void CoreOobeHandler::UpdateA11yState() {
if (!features::IsAshInBrowserProcess()) {
NOTIMPLEMENTED();
......
......@@ -80,6 +80,9 @@ class CoreOobeHandler : public BaseWebUIHandler,
// Notify WebUI of the user count on the views login screen.
void SetLoginUserCount(int user_count);
// Forwards an accelerator value to cr.ui.Oobe.handleAccelerator.
void ForwardAccelerator(std::string accelerator_name);
private:
// CoreOobeView implementation:
void ShowSignInError(int login_attempts,
......
......@@ -669,6 +669,10 @@ void OobeUI::ShowSigninScreen(const LoginScreenContext& context,
signin_screen_handler_->Show(actual_context);
}
void OobeUI::ForwardAccelerator(std::string accelerator_name) {
core_handler_->ForwardAccelerator(accelerator_name);
}
void OobeUI::ResetSigninScreenHandlerDelegate() {
signin_screen_handler_->SetDelegate(nullptr);
signin_screen_handler_->SetNativeWindowDelegate(nullptr);
......
......@@ -161,6 +161,9 @@ class OobeUI : public content::WebUIController,
SigninScreenHandlerDelegate* 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.
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