summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpeletskyi <peletskyi@chromium.org>2015-04-07 08:56:52 -0700
committerCommit bot <commit-bot@chromium.org>2015-04-07 15:57:46 +0000
commit4266e4cb376444ab767ee39c1a96267626bd5da9 (patch)
tree8b3031ea79747c79392926abcb83987ea2410673
parent66411d520b55d8496628d6394ec3eeae8ed1dad2 (diff)
downloadchromium_src-4266e4cb376444ab767ee39c1a96267626bd5da9.zip
chromium_src-4266e4cb376444ab767ee39c1a96267626bd5da9.tar.gz
chromium_src-4266e4cb376444ab767ee39c1a96267626bd5da9.tar.bz2
Expose kDeviceLoginScreenDomainAutoComplete through CrosSettings
BUG=471242 Review URL: https://codereview.chromium.org/1052673002 Cr-Commit-Position: refs/heads/master@{#324048}
-rw-r--r--chrome/browser/chromeos/policy/device_policy_decoder_chromeos.cc22
-rw-r--r--chrome/browser/chromeos/policy/proto/chrome_device_policy.proto20
-rw-r--r--chrome/browser/chromeos/settings/device_settings_provider.cc15
-rw-r--r--chrome/browser/chromeos/settings/device_settings_provider_unittest.cc35
-rw-r--r--chrome/browser/policy/configuration_policy_handler_list_factory.cc3
-rw-r--r--chromeos/settings/cros_settings_names.cc5
-rw-r--r--chromeos/settings/cros_settings_names.h2
7 files changed, 79 insertions, 23 deletions
diff --git a/chrome/browser/chromeos/policy/device_policy_decoder_chromeos.cc b/chrome/browser/chromeos/policy/device_policy_decoder_chromeos.cc
index bfc5b14..5e3c970 100644
--- a/chrome/browser/chromeos/policy/device_policy_decoder_chromeos.cc
+++ b/chrome/browser/chromeos/policy/device_policy_decoder_chromeos.cc
@@ -595,18 +595,6 @@ void DecodeAccessibilityPolicies(const em::ChromeDeviceSettingsProto& policy,
container.login_screen_default_virtual_keyboard_enabled()),
NULL);
}
-
- // The behavior when policy is not set and when it is set to an empty string
- // is the same. Thus lets add policy to the map only if it is set and its
- // value is not an empty string.
- if (container.has_login_screen_domain_auto_complete() &&
- !container.login_screen_domain_auto_complete().empty()) {
- policies->Set(
- key::kDeviceLoginScreenDomainAutoComplete, POLICY_LEVEL_MANDATORY,
- POLICY_SCOPE_MACHINE,
- new base::StringValue(container.login_screen_domain_auto_complete()),
- nullptr);
- }
}
}
@@ -770,6 +758,16 @@ void DecodeGenericPolicies(const em::ChromeDeviceSettingsProto& policy,
nullptr);
}
}
+
+ if (policy.has_login_screen_domain_auto_complete()) {
+ const em::LoginScreenDomainAutoCompleteProto& container(
+ policy.login_screen_domain_auto_complete());
+ policies->Set(
+ key::kDeviceLoginScreenDomainAutoComplete, POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_MACHINE,
+ new base::StringValue(container.login_screen_domain_auto_complete()),
+ nullptr);
+ }
}
} // namespace
diff --git a/chrome/browser/chromeos/policy/proto/chrome_device_policy.proto b/chrome/browser/chromeos/policy/proto/chrome_device_policy.proto
index 9e99890..ceee1d0 100644
--- a/chrome/browser/chromeos/policy/proto/chrome_device_policy.proto
+++ b/chrome/browser/chromeos/policy/proto/chrome_device_policy.proto
@@ -465,14 +465,6 @@ message AccessibilitySettingsProto {
// shown. Users can enable or disable the on-screen keyboard anytime and its
// status on the login screen is persisted between users.
optional bool login_screen_default_virtual_keyboard_enabled = 5;
-
- // If this policy is not configured or set to a blank string,
- // no autocomplete option during user sign-in flow will be shown.
- // If this policy is set to a string representing a domain name, an
- // autocomplete option during user sign-in will be shown allowing the user
- // to type in only his user name without the domain name extension. The user
- // will be able to overwrite this domain name extension.
- optional string login_screen_domain_auto_complete = 6;
}
message SupervisedUsersSettingsProto {
@@ -622,6 +614,16 @@ message ExtensionCacheSizeProto {
optional int64 extension_cache_size = 1;
}
+message LoginScreenDomainAutoCompleteProto {
+ // If this policy is not configured or set to a blank string,
+ // no autocomplete option during user sign-in flow will be shown.
+ // If this policy is set to a string representing a domain name, an
+ // autocomplete option during user sign-in will be shown allowing the user
+ // to type in only his user name without the domain name extension. The user
+ // will be able to overwrite this domain name extension.
+ optional string login_screen_domain_auto_complete = 1;
+}
+
message ChromeDeviceSettingsProto {
optional DevicePolicyRefreshRateProto device_policy_refresh_rate = 1;
optional UserWhitelistProto user_whitelist = 2;
@@ -661,4 +663,6 @@ message ChromeDeviceSettingsProto {
optional RebootOnShutdownProto reboot_on_shutdown = 34;
optional DeviceHeartbeatSettingsProto device_heartbeat_settings = 35;
optional ExtensionCacheSizeProto extension_cache_size = 36;
+ optional LoginScreenDomainAutoCompleteProto
+ login_screen_domain_auto_complete = 37;
}
diff --git a/chrome/browser/chromeos/settings/device_settings_provider.cc b/chrome/browser/chromeos/settings/device_settings_provider.cc
index 02bb836..a33b23f 100644
--- a/chrome/browser/chromeos/settings/device_settings_provider.cc
+++ b/chrome/browser/chromeos/settings/device_settings_provider.cc
@@ -51,6 +51,7 @@ const char* const kKnownSettings[] = {
kAccountsPrefSupervisedUsersEnabled,
kAccountsPrefTransferSAMLCookies,
kAccountsPrefUsers,
+ kAccountsPrefLoginScreenDomainAutoComplete,
kAllowRedeemChromeOsRegistrationOffers,
kAllowedConnectionTypesForUpdate,
kAttestationForContentProtectionEnabled,
@@ -246,6 +247,20 @@ void DecodeLoginPolicies(
kAccountsPrefTransferSAMLCookies,
policy.saml_settings().transfer_saml_cookies());
}
+
+ // The behavior when policy is not set and when it is set to an empty string
+ // is the same. Thus lets add policy only if it is set and its value is not
+ // an empty string.
+ if (policy.has_login_screen_domain_auto_complete() &&
+ policy.login_screen_domain_auto_complete()
+ .has_login_screen_domain_auto_complete() &&
+ !policy.login_screen_domain_auto_complete()
+ .login_screen_domain_auto_complete()
+ .empty()) {
+ new_values_cache->SetString(kAccountsPrefLoginScreenDomainAutoComplete,
+ policy.login_screen_domain_auto_complete()
+ .login_screen_domain_auto_complete());
+ }
}
void DecodeNetworkPolicies(
diff --git a/chrome/browser/chromeos/settings/device_settings_provider_unittest.cc b/chrome/browser/chromeos/settings/device_settings_provider_unittest.cc
index 824f615..5451f0d 100644
--- a/chrome/browser/chromeos/settings/device_settings_provider_unittest.cc
+++ b/chrome/browser/chromeos/settings/device_settings_provider_unittest.cc
@@ -142,6 +142,26 @@ class DeviceSettingsProviderTest : public DeviceSettingsTestBase {
&expected_frequency_value));
}
+ // Helper routine to set LoginScreenDomainAutoComplete policy.
+ void SetDomainAutoComplete(const std::string& domain) {
+ EXPECT_CALL(*this, SettingChanged(_)).Times(AtLeast(1));
+ em::LoginScreenDomainAutoCompleteProto* proto =
+ device_policy_.payload().mutable_login_screen_domain_auto_complete();
+ proto->set_login_screen_domain_auto_complete(domain);
+ device_policy_.Build();
+ device_settings_test_helper_.set_policy_blob(device_policy_.GetBlob());
+ ReloadDeviceSettings();
+ Mock::VerifyAndClearExpectations(this);
+ }
+
+ // Helper routine to check value of the LoginScreenDomainAutoComplete policy.
+ void VerifyDomainAutoComplete(
+ const base::StringValue* const ptr_to_expected_value) {
+ EXPECT_TRUE(base::Value::Equals(
+ provider_->Get(kAccountsPrefLoginScreenDomainAutoComplete),
+ ptr_to_expected_value));
+ }
+
ScopedTestingLocalState local_state_;
scoped_ptr<DeviceSettingsProvider> provider_;
@@ -445,4 +465,19 @@ TEST_F(DeviceSettingsProviderTest, DecodeHeartbeatSettings) {
VerifyHeartbeatSettings(false, heartbeat_frequency);
}
+TEST_F(DeviceSettingsProviderTest, DecodeDomainAutoComplete) {
+ // By default LoginScreenDomainAutoComplete policy should not be set.
+ VerifyDomainAutoComplete(nullptr);
+
+ // Empty string means that the policy is not set.
+ SetDomainAutoComplete("");
+ VerifyDomainAutoComplete(nullptr);
+
+ // Check some meaningful value. Policy should be set.
+ const std::string domain = "domain.test";
+ const base::StringValue domain_value(domain);
+ SetDomainAutoComplete(domain);
+ VerifyDomainAutoComplete(&domain_value);
+}
+
} // namespace chromeos
diff --git a/chrome/browser/policy/configuration_policy_handler_list_factory.cc b/chrome/browser/policy/configuration_policy_handler_list_factory.cc
index 2b60aeb..0864a1b 100644
--- a/chrome/browser/policy/configuration_policy_handler_list_factory.cc
+++ b/chrome/browser/policy/configuration_policy_handler_list_factory.cc
@@ -466,9 +466,6 @@ const PolicyToPreferenceMapEntry kSimplePolicyMap[] = {
{ key::kCaptivePortalAuthenticationIgnoresProxy,
prefs::kCaptivePortalAuthenticationIgnoresProxy,
base::Value::TYPE_BOOLEAN },
- { key::kDeviceLoginScreenDomainAutoComplete,
- NULL,
- base::Value::TYPE_STRING },
#endif // defined(OS_CHROMEOS)
#if !defined(OS_MACOSX) && !defined(OS_CHROMEOS)
diff --git a/chromeos/settings/cros_settings_names.cc b/chromeos/settings/cros_settings_names.cc
index 921f1b2..4d717fe 100644
--- a/chromeos/settings/cros_settings_names.cc
+++ b/chromeos/settings/cros_settings_names.cc
@@ -39,6 +39,11 @@ const char kAccountsPrefSupervisedUsersEnabled[] =
const char kAccountsPrefTransferSAMLCookies[] =
"cros.accounts.transferSAMLCookies";
+// A string pref that specifies a domain name for the autocomplete option during
+// user sign-in flow.
+const char kAccountsPrefLoginScreenDomainAutoComplete[] =
+ "cros.accounts.login_screen_domain_auto_complete";
+
// All cros.signed.* settings are stored in SignedSettings.
const char kSignedDataRoamingEnabled[] = "cros.signed.data_roaming_enabled";
diff --git a/chromeos/settings/cros_settings_names.h b/chromeos/settings/cros_settings_names.h
index 030bb16..00fa07d 100644
--- a/chromeos/settings/cros_settings_names.h
+++ b/chromeos/settings/cros_settings_names.h
@@ -33,6 +33,7 @@ CHROMEOS_EXPORT extern const char
kAccountsPrefDeviceLocalAccountPromptForNetworkWhenOffline[];
CHROMEOS_EXPORT extern const char kAccountsPrefSupervisedUsersEnabled[];
CHROMEOS_EXPORT extern const char kAccountsPrefTransferSAMLCookies[];
+CHROMEOS_EXPORT extern const char kAccountsPrefLoginScreenDomainAutoComplete[];
CHROMEOS_EXPORT extern const char kSignedDataRoamingEnabled[];
@@ -88,6 +89,7 @@ CHROMEOS_EXPORT extern const char kDeviceDisabledMessage[];
CHROMEOS_EXPORT extern const char kRebootOnShutdown[];
CHROMEOS_EXPORT extern const char kExtensionCacheSize[];
+
} // namespace chromeos
#endif // CHROMEOS_SETTINGS_CROS_SETTINGS_NAMES_H_