Commit 7a8c1a43 authored by Roman Sorokin's avatar Roman Sorokin Committed by Commit Bot

Cros: Active Directory UI tweaks

Removed default autocomplete to device domain.
Removed message for device name input with regex.

BUG=chromium:865474
TEST=manual

Change-Id: Ib334f89ae0d4a27153cd69e5100253cce18f40a1
Reviewed-on: https://chromium-review.googlesource.com/c/1255730
Commit-Queue: Roman Sorokin <rsorokin@chromium.org>
Reviewed-by: default avatarJacob Dufault <jdufault@chromium.org>
Cr-Commit-Position: refs/heads/master@{#596692}
parent 304f457b
...@@ -3008,9 +3008,6 @@ ...@@ -3008,9 +3008,6 @@
<message name="IDS_AD_DEVICE_NAME_INPUT_LABEL" desc="Admin-facing. Label for device name input field on the Active Directory domain join screen. User should tell us the name of their device."> <message name="IDS_AD_DEVICE_NAME_INPUT_LABEL" desc="Admin-facing. Label for device name input field on the Active Directory domain join screen. User should tell us the name of their device.">
Chromebook device name Chromebook device name
</message> </message>
<message name="IDS_AD_DEVICE_NAME_REGEX_INPUT_LABEL" desc="Admin-facing. Label for device name input field on the Active Directory domain join screen. User should tell us the name of their device.">
Chromebook device name (<ph name="REGEX">$1<ex>^DEVICE_\d+$</ex></ph>)
</message>
<message name="IDS_AD_DOMAIN_JOIN_WELCOME_MESSAGE" desc="Admin-facing. Welcome message on the Active Directory domain join screen."> <message name="IDS_AD_DOMAIN_JOIN_WELCOME_MESSAGE" desc="Admin-facing. Welcome message on the Active Directory domain join screen.">
Join device to domain Join device to domain
</message> </message>
......
...@@ -73,7 +73,7 @@ class ActiveDirectoryLoginTest : public LoginManagerTest { ...@@ -73,7 +73,7 @@ class ActiveDirectoryLoginTest : public LoginManagerTest {
// Using the same realm as supervised user domain. Should be treated as // Using the same realm as supervised user domain. Should be treated as
// normal realm. // normal realm.
test_realm_(user_manager::kSupervisedUserDomain), test_realm_(user_manager::kSupervisedUserDomain),
autocomplete_realm_(test_realm_) {} test_user_(kTestActiveDirectoryUser + ("@" + test_realm_)) {}
~ActiveDirectoryLoginTest() override = default; ~ActiveDirectoryLoginTest() override = default;
...@@ -110,8 +110,7 @@ class ActiveDirectoryLoginTest : public LoginManagerTest { ...@@ -110,8 +110,7 @@ class ActiveDirectoryLoginTest : public LoginManagerTest {
void MarkAsActiveDirectoryEnterprise() { void MarkAsActiveDirectoryEnterprise() {
StartupUtils::MarkOobeCompleted(); StartupUtils::MarkOobeCompleted();
active_directory_test_helper::PrepareLogin(kTestActiveDirectoryUser + active_directory_test_helper::PrepareLogin(test_user_);
("@" + test_realm_));
} }
void TriggerPasswordChangeScreen() { void TriggerPasswordChangeScreen() {
...@@ -120,7 +119,7 @@ class ActiveDirectoryLoginTest : public LoginManagerTest { ...@@ -120,7 +119,7 @@ class ActiveDirectoryLoginTest : public LoginManagerTest {
fake_auth_policy_client()->set_auth_error( fake_auth_policy_client()->set_auth_error(
authpolicy::ERROR_PASSWORD_EXPIRED); authpolicy::ERROR_PASSWORD_EXPIRED);
SubmitActiveDirectoryCredentials(kTestActiveDirectoryUser, kPassword); SubmitActiveDirectoryCredentials(test_user_, kPassword);
screen_waiter.Wait(); screen_waiter.Wait();
TestAdPasswordChangeError(std::string()); TestAdPasswordChangeError(std::string());
} }
...@@ -157,7 +156,7 @@ class ActiveDirectoryLoginTest : public LoginManagerTest { ...@@ -157,7 +156,7 @@ class ActiveDirectoryLoginTest : public LoginManagerTest {
JSElement(kAdOfflineAuthId, kAdAutocompleteRealm) + innerText), JSElement(kAdOfflineAuthId, kAdAutocompleteRealm) + innerText),
base::kWhitespaceASCII, &autocomplete_domain_ui); base::kWhitespaceASCII, &autocomplete_domain_ui);
// Checks if realm is set to autocomplete username. // Checks if realm is set to autocomplete username.
EXPECT_EQ("@" + autocomplete_realm_, autocomplete_domain_ui); EXPECT_EQ(autocomplete_realm_, autocomplete_domain_ui);
// Checks if bottom bar is visible. // Checks if bottom bar is visible.
JSExpect("!Oobe.getInstance().headerHidden"); JSExpect("!Oobe.getInstance().headerHidden");
...@@ -180,6 +179,16 @@ class ActiveDirectoryLoginTest : public LoginManagerTest { ...@@ -180,6 +179,16 @@ class ActiveDirectoryLoginTest : public LoginManagerTest {
JSExpect(JSElement(kAdOfflineAuthId, kAdUserInput) + ".invalid"); JSExpect(JSElement(kAdOfflineAuthId, kAdUserInput) + ".invalid");
} }
void SetUserInput(const std::string& value) {
js_checker().ExecuteAsync(JSElement(kAdOfflineAuthId, kAdUserInput) +
".value='" + value + "'");
}
void TestUserInput(const std::string& value) {
js_checker().ExpectEQ(JSElement(kAdOfflineAuthId, kAdUserInput) + ".value",
value);
}
// Checks if password input is marked as invalid. // Checks if password input is marked as invalid.
void TestPasswordError() { void TestPasswordError() {
TestLoginVisible(); TestLoginVisible();
...@@ -277,6 +286,7 @@ class ActiveDirectoryLoginTest : public LoginManagerTest { ...@@ -277,6 +286,7 @@ class ActiveDirectoryLoginTest : public LoginManagerTest {
} }
const std::string test_realm_; const std::string test_realm_;
const std::string test_user_;
std::string autocomplete_realm_; std::string autocomplete_realm_;
private: private:
...@@ -295,7 +305,7 @@ class ActiveDirectoryLoginAutocompleteTest : public ActiveDirectoryLoginTest { ...@@ -295,7 +305,7 @@ class ActiveDirectoryLoginAutocompleteTest : public ActiveDirectoryLoginTest {
device_settings.mutable_login_screen_domain_auto_complete() device_settings.mutable_login_screen_domain_auto_complete()
->set_login_screen_domain_auto_complete(kTestUserRealm); ->set_login_screen_domain_auto_complete(kTestUserRealm);
fake_auth_policy_client()->set_device_policy(device_settings); fake_auth_policy_client()->set_device_policy(device_settings);
autocomplete_realm_ = kTestUserRealm; autocomplete_realm_ = "@" + std::string(kTestUserRealm);
} }
private: private:
...@@ -315,12 +325,12 @@ class ActiveDirectoryLoginAutocompleteTest : public ActiveDirectoryLoginTest { ...@@ -315,12 +325,12 @@ class ActiveDirectoryLoginAutocompleteTest : public ActiveDirectoryLoginTest {
// Test successful Active Directory login. // Test successful Active Directory login.
IN_PROC_BROWSER_TEST_F_WITH_PRE(ActiveDirectoryLoginTest, LoginSuccess) { IN_PROC_BROWSER_TEST_F_WITH_PRE(ActiveDirectoryLoginTest, LoginSuccess) {
TestNoError(); TestNoError();
TestDomainVisible(); TestDomainHidden();
content::WindowedNotificationObserver session_start_waiter( content::WindowedNotificationObserver session_start_waiter(
chrome::NOTIFICATION_SESSION_STARTED, chrome::NOTIFICATION_SESSION_STARTED,
content::NotificationService::AllSources()); content::NotificationService::AllSources());
SubmitActiveDirectoryCredentials(kTestActiveDirectoryUser, kPassword); SubmitActiveDirectoryCredentials(test_user_, kPassword);
session_start_waiter.Wait(); session_start_waiter.Wait();
} }
...@@ -328,17 +338,17 @@ IN_PROC_BROWSER_TEST_F_WITH_PRE(ActiveDirectoryLoginTest, LoginSuccess) { ...@@ -328,17 +338,17 @@ IN_PROC_BROWSER_TEST_F_WITH_PRE(ActiveDirectoryLoginTest, LoginSuccess) {
IN_PROC_BROWSER_TEST_F_WITH_PRE(ActiveDirectoryLoginTest, LoginErrors) { IN_PROC_BROWSER_TEST_F_WITH_PRE(ActiveDirectoryLoginTest, LoginErrors) {
SetupActiveDirectoryJSNotifications(); SetupActiveDirectoryJSNotifications();
TestNoError(); TestNoError();
TestDomainVisible(); TestDomainHidden();
content::DOMMessageQueue message_queue; content::DOMMessageQueue message_queue;
SubmitActiveDirectoryCredentials("", ""); SubmitActiveDirectoryCredentials("", "");
TestUserError(); TestUserError();
TestDomainVisible(); TestDomainHidden();
SubmitActiveDirectoryCredentials(kTestActiveDirectoryUser, ""); SubmitActiveDirectoryCredentials(test_user_, "");
TestPasswordError(); TestPasswordError();
TestDomainVisible(); TestDomainHidden();
SubmitActiveDirectoryCredentials(std::string(kTestActiveDirectoryUser) + "@", SubmitActiveDirectoryCredentials(std::string(kTestActiveDirectoryUser) + "@",
kPassword); kPassword);
...@@ -347,31 +357,30 @@ IN_PROC_BROWSER_TEST_F_WITH_PRE(ActiveDirectoryLoginTest, LoginErrors) { ...@@ -347,31 +357,30 @@ IN_PROC_BROWSER_TEST_F_WITH_PRE(ActiveDirectoryLoginTest, LoginErrors) {
TestDomainHidden(); TestDomainHidden();
fake_auth_policy_client()->set_auth_error(authpolicy::ERROR_BAD_USER_NAME); fake_auth_policy_client()->set_auth_error(authpolicy::ERROR_BAD_USER_NAME);
SubmitActiveDirectoryCredentials( SubmitActiveDirectoryCredentials(test_user_, kPassword);
std::string(kTestActiveDirectoryUser) + "@" + test_realm_, kPassword);
WaitForMessage(&message_queue, "\"ShowAuthError\""); WaitForMessage(&message_queue, "\"ShowAuthError\"");
TestUserError(); TestUserError();
TestDomainVisible(); TestDomainHidden();
fake_auth_policy_client()->set_auth_error(authpolicy::ERROR_BAD_PASSWORD); fake_auth_policy_client()->set_auth_error(authpolicy::ERROR_BAD_PASSWORD);
SubmitActiveDirectoryCredentials(kTestActiveDirectoryUser, kPassword); SubmitActiveDirectoryCredentials(test_user_, kPassword);
WaitForMessage(&message_queue, "\"ShowAuthError\""); WaitForMessage(&message_queue, "\"ShowAuthError\"");
TestPasswordError(); TestPasswordError();
TestDomainVisible(); TestDomainHidden();
fake_auth_policy_client()->set_auth_error(authpolicy::ERROR_UNKNOWN); fake_auth_policy_client()->set_auth_error(authpolicy::ERROR_UNKNOWN);
SubmitActiveDirectoryCredentials(kTestActiveDirectoryUser, kPassword); SubmitActiveDirectoryCredentials(test_user_, kPassword);
WaitForMessage(&message_queue, "\"ShowAuthError\""); WaitForMessage(&message_queue, "\"ShowAuthError\"");
// Inputs are not invalidated for the unknown error. // Inputs are not invalidated for the unknown error.
TestNoError(); TestNoError();
TestDomainVisible(); TestDomainHidden();
} }
// Test successful Active Directory login from the password change screen. // Test successful Active Directory login from the password change screen.
IN_PROC_BROWSER_TEST_F_WITH_PRE(ActiveDirectoryLoginTest, IN_PROC_BROWSER_TEST_F_WITH_PRE(ActiveDirectoryLoginTest,
PasswordChange_LoginSuccess) { PasswordChange_LoginSuccess) {
TestLoginVisible(); TestLoginVisible();
TestDomainVisible(); TestDomainHidden();
TriggerPasswordChangeScreen(); TriggerPasswordChangeScreen();
...@@ -389,7 +398,7 @@ IN_PROC_BROWSER_TEST_F_WITH_PRE(ActiveDirectoryLoginTest, ...@@ -389,7 +398,7 @@ IN_PROC_BROWSER_TEST_F_WITH_PRE(ActiveDirectoryLoginTest,
IN_PROC_BROWSER_TEST_F_WITH_PRE(ActiveDirectoryLoginTest, IN_PROC_BROWSER_TEST_F_WITH_PRE(ActiveDirectoryLoginTest,
PasswordChange_UIErrors) { PasswordChange_UIErrors) {
TestLoginVisible(); TestLoginVisible();
TestDomainVisible(); TestDomainHidden();
TriggerPasswordChangeScreen(); TriggerPasswordChangeScreen();
// Password rejected by UX. // Password rejected by UX.
...@@ -421,7 +430,7 @@ IN_PROC_BROWSER_TEST_F_WITH_PRE(ActiveDirectoryLoginTest, ...@@ -421,7 +430,7 @@ IN_PROC_BROWSER_TEST_F_WITH_PRE(ActiveDirectoryLoginTest,
IN_PROC_BROWSER_TEST_F_WITH_PRE(ActiveDirectoryLoginTest, IN_PROC_BROWSER_TEST_F_WITH_PRE(ActiveDirectoryLoginTest,
PasswordChange_ReopenClearErrors) { PasswordChange_ReopenClearErrors) {
TestLoginVisible(); TestLoginVisible();
TestDomainVisible(); TestDomainHidden();
TriggerPasswordChangeScreen(); TriggerPasswordChangeScreen();
...@@ -434,12 +443,50 @@ IN_PROC_BROWSER_TEST_F_WITH_PRE(ActiveDirectoryLoginTest, ...@@ -434,12 +443,50 @@ IN_PROC_BROWSER_TEST_F_WITH_PRE(ActiveDirectoryLoginTest,
TriggerPasswordChangeScreen(); TriggerPasswordChangeScreen();
} }
// Tests that DeviceLoginScreenDomainAutoComplete policy overrides device realm // Tests that autocomplete works. Submits username without domain.
// for user autocomplete. IN_PROC_BROWSER_TEST_F_WITH_PRE(ActiveDirectoryLoginAutocompleteTest,
LoginSuccess) {
TestNoError();
TestDomainVisible();
content::WindowedNotificationObserver session_start_waiter(
chrome::NOTIFICATION_SESSION_STARTED,
content::NotificationService::AllSources());
SubmitActiveDirectoryCredentials(kTestActiveDirectoryUser, kPassword);
session_start_waiter.Wait();
}
// Tests that user could override autocomplete domain.
IN_PROC_BROWSER_TEST_F_WITH_PRE(ActiveDirectoryLoginAutocompleteTest, IN_PROC_BROWSER_TEST_F_WITH_PRE(ActiveDirectoryLoginAutocompleteTest,
TestAutocomplete) { TestAutocomplete) {
SetupActiveDirectoryJSNotifications();
TestLoginVisible();
TestDomainVisible();
fake_auth_policy_client()->set_auth_error(authpolicy::ERROR_BAD_PASSWORD);
content::DOMMessageQueue message_queue;
// Submit with a different domain.
SetUserInput(test_user_);
TestDomainHidden();
TestUserInput(test_user_);
SubmitActiveDirectoryCredentials(test_user_, "password");
WaitForMessage(&message_queue, "\"ShowAuthError\"");
TestLoginVisible();
TestDomainHidden();
TestUserInput(test_user_);
// Set userinput with the autocomplete domain. JS will remove the autocomplete
// domain.
SetUserInput(kTestActiveDirectoryUser + autocomplete_realm_);
TestDomainVisible();
TestUserInput(kTestActiveDirectoryUser);
SubmitActiveDirectoryCredentials(
kTestActiveDirectoryUser + autocomplete_realm_, "password");
WaitForMessage(&message_queue, "\"ShowAuthError\"");
TestLoginVisible(); TestLoginVisible();
TestDomainVisible(); TestDomainVisible();
TestUserInput(kTestActiveDirectoryUser);
} }
#undef IN_PROC_BROWSER_TEST_F_WITH_PRE #undef IN_PROC_BROWSER_TEST_F_WITH_PRE
......
...@@ -101,7 +101,7 @@ ...@@ -101,7 +101,7 @@
hidden="[[!isDomainJoin]]" value="[[machineName]]" hidden="[[!isDomainJoin]]" value="[[machineName]]"
disabled="[[disabled]]" invalid="[[machineNameInvalid]]" disabled="[[disabled]]" invalid="[[machineNameInvalid]]"
pattern="[[machineNameInputPattern_]]" pattern="[[machineNameInputPattern_]]"
label="[[getMachineNameLabel_(locale, selectedConfigOption_)]]" label="[[i18nDynamic(locale, 'oauthEnrollAdMachineNameInput')]]"
on-keydown="onKeydownMachineNameInput_" on-keydown="onKeydownMachineNameInput_"
error-message="[[getMachineNameError_(locale, errorState, error-message="[[getMachineNameError_(locale, errorState,
selectedConfigOption_)]]"> selectedConfigOption_)]]">
...@@ -114,7 +114,7 @@ ...@@ -114,7 +114,7 @@
label="[[i18nDynamic(locale, 'adAuthLoginUsername')]]" label="[[i18nDynamic(locale, 'adAuthLoginUsername')]]"
on-keydown="onKeydownUserInput_" on-keydown="onKeydownUserInput_"
error-message="[[i18nDynamic(locale, 'adLoginInvalidUsername')]]"> error-message="[[i18nDynamic(locale, 'adLoginInvalidUsername')]]">
<span slot="suffix" hidden="[[domainHidden(userName)]]"> <span slot="suffix" hidden="[[domainHidden(userRealm, userName)]]">
[[userRealm]] [[userRealm]]
</span> </span>
</cr-input> </cr-input>
......
...@@ -429,15 +429,6 @@ Polymer({ ...@@ -429,15 +429,6 @@ Polymer({
return errorState != ACTIVE_DIRECTORY_ERROR_STATE.MACHINE_NAME_TOO_LONG; return errorState != ACTIVE_DIRECTORY_ERROR_STATE.MACHINE_NAME_TOO_LONG;
}, },
getMachineNameLabel_: function(locale) {
if (this.machineNameInputPattern_) {
return this.i18nDynamic(
locale, 'oauthEnrollAdMachineNameInputRegex',
this.machineNameInputPattern_);
}
return this.i18nDynamic(locale, 'oauthEnrollAdMachineNameInput');
},
getMachineNameError_: function(locale, errorState) { getMachineNameError_: function(locale, errorState) {
if (errorState == ACTIVE_DIRECTORY_ERROR_STATE.MACHINE_NAME_TOO_LONG) if (errorState == ACTIVE_DIRECTORY_ERROR_STATE.MACHINE_NAME_TOO_LONG)
return this.i18nDynamic(locale, 'adJoinErrorMachineNameTooLong'); return this.i18nDynamic(locale, 'adJoinErrorMachineNameTooLong');
...@@ -485,8 +476,8 @@ Polymer({ ...@@ -485,8 +476,8 @@ Polymer({
} }
}, },
domainHidden: function(userName) { domainHidden: function(userRealm, userName) {
return userName && userName.includes('@'); return !userRealm || (userName && userName.includes('@'));
}, },
onKeydownAuthPasswordInput_: function(e) { onKeydownAuthPasswordInput_: function(e) {
......
...@@ -1272,8 +1272,6 @@ login.createScreen('GaiaSigninScreen', 'gaia-signin', function() { ...@@ -1272,8 +1272,6 @@ login.createScreen('GaiaSigninScreen', 'gaia-signin', function() {
if ('emailDomain' in params) if ('emailDomain' in params)
adAuthUI.userRealm = '@' + params['emailDomain']; adAuthUI.userRealm = '@' + params['emailDomain'];
else if ('realm' in params)
adAuthUI.userRealm = '@' + params['realm'];
adAuthUI.userName = params['email']; adAuthUI.userName = params['email'];
adAuthUI.focus(); adAuthUI.focus();
......
...@@ -565,8 +565,6 @@ void EnrollmentScreenHandler::DeclareLocalizedValues( ...@@ -565,8 +565,6 @@ void EnrollmentScreenHandler::DeclareLocalizedValues(
/* Active Directory strings */ /* Active Directory strings */
builder->Add("oauthEnrollAdMachineNameInput", IDS_AD_DEVICE_NAME_INPUT_LABEL); builder->Add("oauthEnrollAdMachineNameInput", IDS_AD_DEVICE_NAME_INPUT_LABEL);
builder->Add("oauthEnrollAdMachineNameInputRegex",
IDS_AD_DEVICE_NAME_REGEX_INPUT_LABEL);
builder->Add("oauthEnrollAdDomainJoinWelcomeMessage", builder->Add("oauthEnrollAdDomainJoinWelcomeMessage",
IDS_AD_DOMAIN_JOIN_WELCOME_MESSAGE); IDS_AD_DOMAIN_JOIN_WELCOME_MESSAGE);
builder->Add("adAuthLoginUsername", IDS_AD_AUTH_LOGIN_USER); builder->Add("adAuthLoginUsername", IDS_AD_AUTH_LOGIN_USER);
......
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