diff options
| author | peletskyi <peletskyi@chromium.org> | 2015-04-07 08:56:52 -0700 | 
|---|---|---|
| committer | Commit bot <commit-bot@chromium.org> | 2015-04-07 15:57:46 +0000 | 
| commit | 4266e4cb376444ab767ee39c1a96267626bd5da9 (patch) | |
| tree | 8b3031ea79747c79392926abcb83987ea2410673 | |
| parent | 66411d520b55d8496628d6394ec3eeae8ed1dad2 (diff) | |
| download | chromium_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}
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_ | 
