Commit ef2725f7 authored by rsorokin's avatar rsorokin Committed by Commit bot

Added keyboard shortcut on GAIA "Add User" screen to dogfood GAIA /EmbeddedSignin

BUG=420438

Review URL: https://codereview.chromium.org/645003002

Cr-Commit-Position: refs/heads/master@{#299113}
parent 931ae3cb
......@@ -66,6 +66,7 @@ const char kAccelNameDeviceRequisitionRemora[] = "device_requisition_remora";
const char kAccelNameDeviceRequisitionShark[] = "device_requisition_shark";
const char kAccelNameAppLaunchBailout[] = "app_launch_bailout";
const char kAccelNameAppLaunchNetworkConfig[] = "app_launch_network_config";
const char kAccelNameEmbeddedSignin[] = "embedded_signin";
// A class to change arrow key traversal behavior when it's alive.
class ScopedArrowKeyTraversal {
......@@ -114,6 +115,9 @@ WebUILoginView::WebUILoginView()
accel_map_[ui::Accelerator(ui::VKEY_E,
ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN)] =
kAccelNameEnrollment;
accel_map_[ui::Accelerator(
ui::VKEY_G, ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | ui::EF_SHIFT_DOWN)] =
kAccelNameEmbeddedSignin;
accel_map_[ui::Accelerator(ui::VKEY_K,
ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN)] =
kAccelNameKioskEnable;
......
......@@ -21,6 +21,7 @@
#include "chrome/browser/io_thread.h"
#include "chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h"
#include "chrome/browser/ui/webui/signin/inline_login_ui.h"
#include "chrome/common/chrome_version_info.h"
#include "chrome/common/pref_names.h"
#include "chrome/grit/generated_resources.h"
#include "chromeos/chromeos_switches.h"
......@@ -146,6 +147,7 @@ GaiaScreenHandler::GaiaScreenHandler(
using_saml_api_(false),
is_enrolling_consumer_management_(false),
test_expects_complete_login_(false),
embedded_signin_enabled_by_shortcut_(false),
signin_screen_handler_(NULL),
weak_factory_(this) {
DCHECK(network_state_informer_.get());
......@@ -204,7 +206,7 @@ void GaiaScreenHandler::LoadGaia(const GaiaContext& context) {
: GaiaUrls::GetInstance()->gaia_url();
params.SetString("gaiaUrl", gaia_url.spec());
if (command_line->HasSwitch(chromeos::switches::kEnableEmbeddedSignin))
if (context.embedded_signin_enabled)
params.SetBoolean("useEmbedded", true);
frame_state_ = FRAME_STATE_LOADING;
......@@ -234,6 +236,22 @@ void GaiaScreenHandler::ReloadGaia(bool force_reload) {
CallJS("doReload");
}
void GaiaScreenHandler::SwitchToEmbeddedSignin() {
// This feature should not be working on Stable,Beta images.
chrome::VersionInfo::Channel channel = chrome::VersionInfo::GetChannel();
if (channel == chrome::VersionInfo::CHANNEL_STABLE ||
channel == chrome::VersionInfo::CHANNEL_BETA) {
return;
}
embedded_signin_enabled_by_shortcut_ = true;
LoadAuthExtension(
true /* force */, true /* silent_load */, false /* offline */);
}
void GaiaScreenHandler::CancelEmbeddedSignin() {
embedded_signin_enabled_by_shortcut_ = false;
}
void GaiaScreenHandler::DeclareLocalizedValues(
LocalizedValuesBuilder* builder) {
builder->Add("signinScreenTitle", IDS_SIGNIN_SCREEN_TITLE);
......@@ -654,6 +672,11 @@ void GaiaScreenHandler::LoadAuthExtension(bool force,
context.has_users = !Delegate()->GetUsers().empty();
}
context.embedded_signin_enabled =
CommandLine::ForCurrentProcess()->HasSwitch(
chromeos::switches::kEnableEmbeddedSignin) ||
embedded_signin_enabled_by_shortcut_;
populated_email_.clear();
LoadGaia(context);
......
......@@ -49,6 +49,9 @@ struct GaiaContext {
// Whether consumer management enrollment is in progress.
bool is_enrolling_consumer_management;
// True if embedded_signin is enabled.
bool embedded_signin_enabled;
};
// A class that handles WebUI hooks in Gaia screen.
......@@ -75,6 +78,12 @@ class GaiaScreenHandler : public BaseScreenHandler {
// not loading right now.
void ReloadGaia(bool force_reload);
// Reload gaia with embedded signin frame.
void SwitchToEmbeddedSignin();
// Cancel embedded signin for the next load.
void CancelEmbeddedSignin();
FrameState frame_state() const { return frame_state_; }
net::Error frame_error() const { return frame_error_; }
......@@ -214,6 +223,9 @@ class GaiaScreenHandler : public BaseScreenHandler {
std::string test_pass_;
bool test_expects_complete_login_;
// True if user pressed shortcut to enable embedded signin.
bool embedded_signin_enabled_by_shortcut_;
// Non-owning ptr to SigninScreenHandler instance. Should not be used
// in dtor.
// TODO (ygorshenin@): GaiaScreenHandler shouldn't communicate with
......
......@@ -744,6 +744,8 @@ void SigninScreenHandler::RegisterMessages() {
AddCallback("removeUser", &SigninScreenHandler::HandleRemoveUser);
AddCallback("toggleEnrollmentScreen",
&SigninScreenHandler::HandleToggleEnrollmentScreen);
AddCallback("switchToEmbeddedSignin",
&SigninScreenHandler::HandleSwitchToEmbeddedSignin);
AddCallback("toggleKioskEnableScreen",
&SigninScreenHandler::HandleToggleKioskEnableScreen);
AddCallback("createAccount", &SigninScreenHandler::HandleCreateAccount);
......@@ -1319,6 +1321,9 @@ void SigninScreenHandler::HandleLoginUIStateChanged(const std::string& source,
VLOG(0) << "Login WebUI >> active: " << new_value << ", "
<< "source: " << source;
if (source == "gaia-signin" && !new_value)
gaia_screen_handler_->CancelEmbeddedSignin();
if (!KioskAppManager::Get()->GetAutoLaunchApp().empty() &&
KioskAppManager::Get()->IsAutoLaunchRequested()) {
VLOG(0) << "Showing auto-launch warning";
......@@ -1434,6 +1439,10 @@ void SigninScreenHandler::HandleGetTouchViewState() {
}
}
void SigninScreenHandler::HandleSwitchToEmbeddedSignin() {
gaia_screen_handler_->SwitchToEmbeddedSignin();
}
bool SigninScreenHandler::AllWhitelistedUsersPresent() {
CrosSettings* cros_settings = CrosSettings::Get();
bool allow_new_user = false;
......
......@@ -399,6 +399,7 @@ class SigninScreenHandler
const std::string& locale);
void HandleCancelConsumerManagementEnrollment();
void HandleGetTouchViewState();
void HandleSwitchToEmbeddedSignin();
// Sends the list of |keyboard_layouts| available for the |locale| that is
// currently selected for the public session identified by |user_id|.
......
......@@ -46,6 +46,7 @@
/** @const */ var ACCELERATOR_APP_LAUNCH_BAILOUT = 'app_launch_bailout';
/** @const */ var ACCELERATOR_APP_LAUNCH_NETWORK_CONFIG =
'app_launch_network_config';
/** @const */ var ACCELERATOR_EMBEDDED_SIGNIN = 'embedded_signin';
/* Signin UI state constants. Used to control header bar UI. */
/** @const */ var SIGNIN_UI_STATE = {
......@@ -374,6 +375,9 @@ cr.define('cr.ui.login', function() {
} else if (name == ACCELERATOR_APP_LAUNCH_NETWORK_CONFIG) {
if (currentStepId == SCREEN_APP_LAUNCH_SPLASH)
chrome.send('networkConfigRequest');
} else if (name == ACCELERATOR_EMBEDDED_SIGNIN) {
if (currentStepId == SCREEN_GAIA_SIGNIN)
chrome.send('switchToEmbeddedSignin');
}
if (!this.forceKeyboardFlow_)
......
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