Consumer management enrollment signin screen change:
- Show Gaia signin page instead of account picker. - Pre-fill owner email in Gaia signin page. - Show only the enrollment message in Gaia screen right panel. - Show only a cancel button (in addition to Shutdown) at the bottom. BUG=chromium:353050 TEST=manually test the signin page. Review URL: https://codereview.chromium.org/426153003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@287143 0039d316-1c4b-4281-b951-d872f2087c98
This commit is contained in:
chrome
app
browser
resources
ui
ui/login
@ -5053,6 +5053,9 @@ Battery full
|
||||
<message name="IDS_LOGIN_CONNECTING_INDICATOR_TEXT" desc="A message to show telling the user that the device is attempting to re-connect to the network.">
|
||||
Connecting and verifying<ph name="ANIMATED_ELLIPSIS">$1<ex>...</ex></ph>
|
||||
</message>
|
||||
<message name="IDS_LOGIN_CONSUMER_MANAGEMENT_ENROLLMENT" desc="A message to show at the signin page when consumer management enrollment is in progress.">
|
||||
The owner must sign in to complete enrollment with Google Device Manager.
|
||||
</message>
|
||||
|
||||
<!-- Idle warning dialog -->
|
||||
<message name="IDS_IDLE_WARNING_TITLE" desc="Title of the warning dialog shown when the user becomes idle and is about to get logged out.">
|
||||
|
@ -26,4 +26,10 @@
|
||||
i18n-content="cancel"></button>
|
||||
</button>
|
||||
</div>
|
||||
<div id="cancel-consumer-management-enrollment" class="header-bar-item"
|
||||
hidden>
|
||||
<button id="cancel-consumer-management-enrollment-button"
|
||||
class="custom-appearance" i18n-content="cancel"></button>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -45,6 +45,9 @@ cr.define('login', function() {
|
||||
this.handleSignoutClick_);
|
||||
$('cancel-multiple-sign-in-button').addEventListener('click',
|
||||
this.handleCancelMultipleSignInClick_);
|
||||
$('cancel-consumer-management-enrollment-button')
|
||||
.addEventListener('click',
|
||||
this.handleCancelConsumerManagementEnrollmentClick_);
|
||||
if (Oobe.getInstance().displayType == DISPLAY_TYPE.LOGIN ||
|
||||
Oobe.getInstance().displayType == DISPLAY_TYPE.OOBE) {
|
||||
if (Oobe.getInstance().newKioskUI)
|
||||
@ -153,6 +156,16 @@ cr.define('login', function() {
|
||||
e.stopPropagation();
|
||||
},
|
||||
|
||||
/**
|
||||
* Cancel consumer management enrollment button handler.
|
||||
*
|
||||
* @private
|
||||
*/
|
||||
handleCancelConsumerManagementEnrollmentClick_: function(e) {
|
||||
chrome.send('cancelConsumerManagementEnrollment');
|
||||
e.stopPropagation();
|
||||
},
|
||||
|
||||
/**
|
||||
* If true then "Browse as Guest" button is shown.
|
||||
*
|
||||
@ -213,6 +226,8 @@ cr.define('login', function() {
|
||||
(this.signinUIState_ == SIGNIN_UI_STATE.WRONG_HWID_WARNING);
|
||||
var isSamlPasswordConfirm =
|
||||
(this.signinUIState_ == SIGNIN_UI_STATE.SAML_PASSWORD_CONFIRM);
|
||||
var isEnrollingConsumerManagement = (this.signinUIState_ ==
|
||||
SIGNIN_UI_STATE.CONSUMER_MANAGEMENT_ENROLLMENT);
|
||||
var isMultiProfilesUI =
|
||||
(Oobe.getInstance().displayType == DISPLAY_TYPE.USER_ADDING);
|
||||
var isLockScreen =
|
||||
@ -237,6 +252,8 @@ cr.define('login', function() {
|
||||
$('apps-header-bar-item').hidden = !this.hasApps_ ||
|
||||
(!gaiaIsActive && !accountPickerIsActive);
|
||||
$('cancel-multiple-sign-in-item').hidden = !isMultiProfilesUI;
|
||||
$('cancel-consumer-management-enrollment').hidden =
|
||||
!isEnrollingConsumerManagement;
|
||||
|
||||
if (!Oobe.getInstance().newKioskUI) {
|
||||
if (!$('apps-header-bar-item').hidden)
|
||||
|
@ -24,6 +24,7 @@
|
||||
<div id="createSupervisedUserLinkPlaceholder"></div>
|
||||
<div id="createSupervisedUserNoManagerText" hidden></div>
|
||||
</div>
|
||||
<div id="consumerManagementEnrollment" class="signin-text"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="gaia-loading" class="step-loading">
|
||||
|
@ -55,6 +55,13 @@ login.createScreen('GaiaSigninScreen', 'gaia-signin', function() {
|
||||
*/
|
||||
email: '',
|
||||
|
||||
/**
|
||||
* Whether consumer management enrollment is in progress.
|
||||
* @type {boolean}
|
||||
* @private
|
||||
*/
|
||||
isEnrollingConsumerManagement_: false,
|
||||
|
||||
/**
|
||||
* Timer id of pending load.
|
||||
* @type {number}
|
||||
@ -211,7 +218,10 @@ login.createScreen('GaiaSigninScreen', 'gaia-signin', function() {
|
||||
*/
|
||||
onBeforeShow: function(data) {
|
||||
chrome.send('loginUIStateChanged', ['gaia-signin', true]);
|
||||
$('login-header-bar').signinUIState = SIGNIN_UI_STATE.GAIA_SIGNIN;
|
||||
$('login-header-bar').signinUIState =
|
||||
this.isEnrollingConsumerManagement_ ?
|
||||
SIGNIN_UI_STATE.CONSUMER_MANAGEMENT_ENROLLMENT :
|
||||
SIGNIN_UI_STATE.GAIA_SIGNIN;
|
||||
|
||||
// Ensure that GAIA signin (or loading UI) is actually visible.
|
||||
window.webkitRequestAnimationFrame(function() {
|
||||
@ -308,14 +318,20 @@ login.createScreen('GaiaSigninScreen', 'gaia-signin', function() {
|
||||
$('createSupervisedUserNoManagerText').textContent =
|
||||
data.supervisedUsersRestrictionReason;
|
||||
|
||||
$('consumerManagementEnrollment').hidden =
|
||||
!data.isEnrollingConsumerManagement;
|
||||
|
||||
this.isShowUsers_ = data.isShowUsers;
|
||||
this.updateCancelButtonState();
|
||||
|
||||
this.isEnrollingConsumerManagement_ = data.isEnrollingConsumerManagement;
|
||||
|
||||
// Sign-in right panel is hidden if all of its items are hidden.
|
||||
var noRightPanel = $('gaia-signin-reason').hidden &&
|
||||
$('createAccount').hidden &&
|
||||
$('guestSignin').hidden &&
|
||||
$('createSupervisedUserPane').hidden;
|
||||
$('createSupervisedUserPane').hidden &&
|
||||
$('consumerManagementEnrollment').hidden;
|
||||
this.classList.toggle('no-right-panel', noRightPanel);
|
||||
if (Oobe.getInstance().currentScreen === this)
|
||||
Oobe.getInstance().updateScreenSize(this);
|
||||
@ -563,6 +579,8 @@ login.createScreen('GaiaSigninScreen', 'gaia-signin', function() {
|
||||
'createSupervisedUser',
|
||||
'<a id="createSupervisedUserLink" class="signin-link" href="#">',
|
||||
'</a>');
|
||||
$('consumerManagementEnrollment').innerHTML = loadTimeData.getString(
|
||||
'consumerManagementEnrollmentSigninMessage');
|
||||
$('createAccountLink').addEventListener('click', function(e) {
|
||||
chrome.send('createAccount');
|
||||
e.preventDefault();
|
||||
|
@ -36,7 +36,8 @@ namespace {
|
||||
|
||||
const char kJsScreenPath[] = "login.GaiaSigninScreen";
|
||||
|
||||
void UpdateAuthParams(base::DictionaryValue* params, bool has_users) {
|
||||
void UpdateAuthParams(base::DictionaryValue* params, bool has_users,
|
||||
bool is_enrolling_consumer_management) {
|
||||
CrosSettings* cros_settings = CrosSettings::Get();
|
||||
bool allow_new_user = true;
|
||||
cros_settings->GetBoolean(kAccountsPrefAllowNewUser, &allow_new_user);
|
||||
@ -73,7 +74,10 @@ void UpdateAuthParams(base::DictionaryValue* params, bool has_users) {
|
||||
|
||||
// Now check whether we're in multi-profiles user adding scenario and
|
||||
// disable GAIA right panel features if that's the case.
|
||||
if (UserAddingScreen::Get()->IsRunning()) {
|
||||
// For consumer management enrollment, we also hide all right panel components
|
||||
// and show only an enrollment message.
|
||||
if (UserAddingScreen::Get()->IsRunning() ||
|
||||
is_enrolling_consumer_management) {
|
||||
params->SetBoolean("createAccount", false);
|
||||
params->SetBoolean("guestSignin", false);
|
||||
params->SetBoolean("supervisedUsersEnabled", false);
|
||||
@ -116,6 +120,7 @@ GaiaScreenHandler::GaiaScreenHandler(
|
||||
focus_stolen_(false),
|
||||
gaia_silent_load_(false),
|
||||
using_saml_api_(false),
|
||||
is_enrolling_consumer_management_(false),
|
||||
test_expects_complete_login_(false),
|
||||
signin_screen_handler_(NULL),
|
||||
weak_factory_(this) {
|
||||
@ -134,8 +139,11 @@ void GaiaScreenHandler::LoadGaia(const GaiaContext& context) {
|
||||
params.SetBoolean("isShowUsers", context.show_users);
|
||||
params.SetBoolean("useOffline", context.use_offline);
|
||||
params.SetString("email", context.email);
|
||||
params.SetBoolean("isEnrollingConsumerManagement",
|
||||
context.is_enrolling_consumer_management);
|
||||
|
||||
UpdateAuthParams(¶ms, context.has_users);
|
||||
UpdateAuthParams(¶ms, context.has_users,
|
||||
context.is_enrolling_consumer_management);
|
||||
|
||||
if (!context.use_offline) {
|
||||
const std::string app_locale = g_browser_process->GetApplicationLocale();
|
||||
@ -178,7 +186,8 @@ void GaiaScreenHandler::LoadGaia(const GaiaContext& context) {
|
||||
|
||||
void GaiaScreenHandler::UpdateGaia(const GaiaContext& context) {
|
||||
base::DictionaryValue params;
|
||||
UpdateAuthParams(¶ms, context.has_users);
|
||||
UpdateAuthParams(¶ms, context.has_users,
|
||||
context.is_enrolling_consumer_management);
|
||||
CallJS("updateAuthExtension", params);
|
||||
}
|
||||
|
||||
@ -209,6 +218,8 @@ void GaiaScreenHandler::DeclareLocalizedValues(
|
||||
IDS_CREATE_LOCALLY_MANAGED_USER_HTML);
|
||||
builder->Add("createSupervisedUserFeatureName",
|
||||
IDS_CREATE_LOCALLY_MANAGED_USER_FEATURE_NAME);
|
||||
builder->Add("consumerManagementEnrollmentSigninMessage",
|
||||
IDS_LOGIN_CONSUMER_MANAGEMENT_ENROLLMENT);
|
||||
|
||||
// Strings used by the SAML fatal error dialog.
|
||||
builder->Add("fatalErrorMessageNoEmail", IDS_LOGIN_FATAL_ERROR_NO_EMAIL);
|
||||
@ -278,6 +289,14 @@ void GaiaScreenHandler::HandleCompleteAuthentication(
|
||||
void GaiaScreenHandler::HandleCompleteLogin(const std::string& typed_email,
|
||||
const std::string& password,
|
||||
bool using_saml) {
|
||||
std::string owner_email = UserManager::Get()->GetOwnerEmail();
|
||||
if (is_enrolling_consumer_management_ && typed_email != owner_email) {
|
||||
// Show Gaia signin page again since we only allow the owner to sign in.
|
||||
populated_email_ = owner_email;
|
||||
ShowGaia(is_enrolling_consumer_management_);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!Delegate())
|
||||
return;
|
||||
|
||||
@ -446,7 +465,8 @@ void GaiaScreenHandler::SetSAMLPrincipalsAPIUsed(bool api_used) {
|
||||
UMA_HISTOGRAM_BOOLEAN("ChromeOS.SAML.APIUsed", api_used);
|
||||
}
|
||||
|
||||
void GaiaScreenHandler::ShowGaia() {
|
||||
void GaiaScreenHandler::ShowGaia(bool is_enrolling_consumer_management) {
|
||||
is_enrolling_consumer_management_ = is_enrolling_consumer_management;
|
||||
if (gaia_silent_load_ && populated_email_.empty()) {
|
||||
dns_cleared_ = true;
|
||||
cookies_cleared_ = true;
|
||||
@ -523,6 +543,7 @@ void GaiaScreenHandler::LoadAuthExtension(bool force,
|
||||
password_changed_for_.count(populated_email_);
|
||||
context.use_offline = offline;
|
||||
context.email = populated_email_;
|
||||
context.is_enrolling_consumer_management = is_enrolling_consumer_management_;
|
||||
if (Delegate()) {
|
||||
context.show_users = Delegate()->IsShowUsers();
|
||||
context.has_users = !Delegate()->GetUsers().empty();
|
||||
|
@ -39,6 +39,9 @@ struct GaiaContext {
|
||||
|
||||
// Email of current user.
|
||||
std::string email;
|
||||
|
||||
// Whether consumer management enrollment is in progress.
|
||||
bool is_enrolling_consumer_management;
|
||||
};
|
||||
|
||||
// A class that handles WebUI hooks in Gaia screen.
|
||||
@ -116,7 +119,7 @@ class GaiaScreenHandler : public BaseScreenHandler {
|
||||
// principals API was used during SAML login.
|
||||
void SetSAMLPrincipalsAPIUsed(bool api_used);
|
||||
|
||||
void ShowGaia();
|
||||
void ShowGaia(bool is_enrolling_consumer_management);
|
||||
|
||||
// Shows signin screen after dns cache and cookie cleanup operations finish.
|
||||
void ShowGaiaScreenIfReady();
|
||||
@ -178,6 +181,9 @@ class GaiaScreenHandler : public BaseScreenHandler {
|
||||
// API was used.
|
||||
bool using_saml_api_;
|
||||
|
||||
// Whether consumer management enrollment is in progress.
|
||||
bool is_enrolling_consumer_management_;
|
||||
|
||||
// Test credentials.
|
||||
std::string test_user_;
|
||||
std::string test_pass_;
|
||||
|
@ -8,6 +8,7 @@
|
||||
|
||||
#include "base/bind.h"
|
||||
#include "base/bind_helpers.h"
|
||||
#include "base/command_line.h"
|
||||
#include "base/debug/trace_event.h"
|
||||
#include "base/location.h"
|
||||
#include "base/logging.h"
|
||||
@ -35,6 +36,7 @@
|
||||
#include "chrome/browser/chromeos/login/ui/login_display_host_impl.h"
|
||||
#include "chrome/browser/chromeos/login/ui/webui_login_display.h"
|
||||
#include "chrome/browser/chromeos/login/users/multi_profile_user_controller.h"
|
||||
#include "chrome/browser/chromeos/login/users/user_manager.h"
|
||||
#include "chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.h"
|
||||
#include "chrome/browser/chromeos/login/wizard_controller.h"
|
||||
#include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
|
||||
@ -52,6 +54,7 @@
|
||||
#include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h"
|
||||
#include "chrome/common/pref_names.h"
|
||||
#include "chrome/common/url_constants.h"
|
||||
#include "chromeos/chromeos_switches.h"
|
||||
#include "chromeos/dbus/dbus_thread_manager.h"
|
||||
#include "chromeos/dbus/power_manager_client.h"
|
||||
#include "chromeos/ime/ime_keyboard.h"
|
||||
@ -295,6 +298,13 @@ SigninScreenHandler::SigninScreenHandler(
|
||||
chromeos::input_method::InputMethodManager::Get()->GetImeKeyboard();
|
||||
if (keyboard)
|
||||
keyboard->AddObserver(this);
|
||||
|
||||
CommandLine* command_line = CommandLine::ForCurrentProcess();
|
||||
PrefService* prefs = g_browser_process->local_state();
|
||||
is_enrolling_consumer_management_ =
|
||||
command_line->HasSwitch(chromeos::switches::kEnableConsumerManagement) &&
|
||||
prefs->GetBoolean(prefs::kConsumerManagementEnrollmentRequested);
|
||||
|
||||
}
|
||||
|
||||
SigninScreenHandler::~SigninScreenHandler() {
|
||||
@ -418,7 +428,17 @@ void SigninScreenHandler::Show(const LoginScreenContext& context) {
|
||||
|
||||
// Just initialize internal fields from context and call ShowImpl().
|
||||
oobe_ui_ = context.oobe_ui();
|
||||
gaia_screen_handler_->PopulateEmail(context.email());
|
||||
|
||||
std::string email;
|
||||
if (is_enrolling_consumer_management_) {
|
||||
// We don't check if the value of the owner email is trusted because it is
|
||||
// only used to pre-fill the email field in Gaia sign-in page and a cached
|
||||
// value is sufficient.
|
||||
CrosSettings::Get()->GetString(kDeviceOwner, &email);
|
||||
} else {
|
||||
email = context.email();
|
||||
}
|
||||
gaia_screen_handler_->PopulateEmail(email);
|
||||
ShowImpl();
|
||||
}
|
||||
|
||||
@ -457,7 +477,7 @@ void SigninScreenHandler::ShowImpl() {
|
||||
return;
|
||||
}
|
||||
|
||||
if (oobe_ui_) {
|
||||
if (oobe_ui_ || is_enrolling_consumer_management_) {
|
||||
// Shows new user sign-in for OOBE.
|
||||
OnShowAddUser();
|
||||
} else {
|
||||
@ -749,6 +769,8 @@ void SigninScreenHandler::RegisterMessages() {
|
||||
&SigninScreenHandler::HandleRetrieveAuthenticatedUserEmail);
|
||||
AddCallback("getPublicSessionKeyboardLayouts",
|
||||
&SigninScreenHandler::HandleGetPublicSessionKeyboardLayouts);
|
||||
AddCallback("cancelConsumerManagementEnrollment",
|
||||
&SigninScreenHandler::HandleCancelConsumerManagementEnrollment);
|
||||
|
||||
|
||||
// This message is sent by the kiosk app menu, but is handled here
|
||||
@ -1322,6 +1344,13 @@ void SigninScreenHandler::HandleLaunchKioskApp(const std::string& app_id,
|
||||
delegate_->Login(context, specifics);
|
||||
}
|
||||
|
||||
void SigninScreenHandler::HandleCancelConsumerManagementEnrollment() {
|
||||
PrefService* prefs = g_browser_process->local_state();
|
||||
prefs->SetBoolean(prefs::kConsumerManagementEnrollmentRequested, false);
|
||||
is_enrolling_consumer_management_ = false;
|
||||
ShowImpl();
|
||||
}
|
||||
|
||||
bool SigninScreenHandler::AllWhitelistedUsersPresent() {
|
||||
CrosSettings* cros_settings = CrosSettings::Get();
|
||||
bool allow_new_user = false;
|
||||
@ -1427,7 +1456,7 @@ void SigninScreenHandler::ContinueKioskEnableFlow(
|
||||
void SigninScreenHandler::OnShowAddUser() {
|
||||
is_account_picker_showing_first_time_ = false;
|
||||
DCHECK(gaia_screen_handler_);
|
||||
gaia_screen_handler_->ShowGaia();
|
||||
gaia_screen_handler_->ShowGaia(is_enrolling_consumer_management_);
|
||||
}
|
||||
|
||||
GaiaScreenHandler::FrameState SigninScreenHandler::FrameState() const {
|
||||
|
@ -359,6 +359,7 @@ class SigninScreenHandler
|
||||
void HandleRetrieveAuthenticatedUserEmail(double attempt_token);
|
||||
void HandleGetPublicSessionKeyboardLayouts(const std::string& user_id,
|
||||
const std::string& locale);
|
||||
void HandleCancelConsumerManagementEnrollment();
|
||||
|
||||
// Sends the list of keyboard layouts available for the currently selected
|
||||
// public session locale.
|
||||
@ -470,6 +471,9 @@ class SigninScreenHandler
|
||||
// Helper that retrieves the authenticated user's e-mail address.
|
||||
scoped_ptr<AuthenticatedUserEmailRetriever> email_retriever_;
|
||||
|
||||
// Whether consumer management enrollment is in progress.
|
||||
bool is_enrolling_consumer_management_;
|
||||
|
||||
base::WeakPtrFactory<SigninScreenHandler> weak_factory_;
|
||||
|
||||
DISALLOW_COPY_AND_ASSIGN(SigninScreenHandler);
|
||||
|
@ -55,6 +55,7 @@
|
||||
WRONG_HWID_WARNING: 3,
|
||||
SUPERVISED_USER_CREATION_FLOW: 4,
|
||||
SAML_PASSWORD_CONFIRM: 5,
|
||||
CONSUMER_MANAGEMENT_ENROLLMENT: 6,
|
||||
};
|
||||
|
||||
/* Possible UI states of the error screen. */
|
||||
|
Reference in New Issue
Block a user