Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1727)

Unified Diff: chrome/browser/policy/policy_prefs_browsertest.cc

Issue 11193002: Add third batch of controlled setting indicators (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Comment addressed. Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/browser/resources/options/browser_options.css » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/policy/policy_prefs_browsertest.cc
diff --git a/chrome/browser/policy/policy_prefs_browsertest.cc b/chrome/browser/policy/policy_prefs_browsertest.cc
index 2f500d557ba4e49d38747199e1eaa4fd5a568eb1..9e47a1da1403da0a139eb09fca97b777333ff0de 100644
--- a/chrome/browser/policy/policy_prefs_browsertest.cc
+++ b/chrome/browser/policy/policy_prefs_browsertest.cc
@@ -53,9 +53,9 @@ const char* kSettingsPages[] = {
#endif
};
-// Contains the details of one test case verifying the behavior of controlled
-// setting indicators in the settings UI for a policy, part of the data loaded
-// from chrome/test/data/policy/policy_test_cases.json.
+// Contains the details of a single test case verifying that the controlled
+// setting indicators for a pref affected by a policy work correctly. This is
+// part of the data loaded from chrome/test/data/policy/policy_test_cases.json.
class IndicatorTestCase {
public:
IndicatorTestCase(const base::DictionaryValue& policy,
@@ -65,7 +65,9 @@ class IndicatorTestCase {
~IndicatorTestCase() {}
const base::DictionaryValue& policy() const { return *policy_; }
+
const std::string& value() const { return value_; }
+
bool readonly() const { return readonly_; }
private:
@@ -76,43 +78,31 @@ class IndicatorTestCase {
DISALLOW_COPY_AND_ASSIGN(IndicatorTestCase);
};
-// Contains the testing details for a single policy, loaded from
-// chrome/test/data/policy/policy_test_cases.json.
-class PolicyTestCase {
+// Contains the testing details for a single pref affected by a policy. This is
+// part of the data loaded from chrome/test/data/policy/policy_test_cases.json.
+class PrefMapping {
public:
- explicit PolicyTestCase(const std::string& name)
- : name_(name),
- can_be_recommended_(false),
- is_local_state_(false),
- official_only_(false) {}
- ~PolicyTestCase() {}
-
- const std::string& name() const { return name_; }
+ PrefMapping(const std::string& pref,
+ bool is_local_state,
+ const std::string& indicator_test_setup_js,
+ const std::string& indicator_selector)
+ : pref_(pref),
+ is_local_state_(is_local_state),
+ indicator_selector_(indicator_selector) {
+ indicator_test_setup_js_ = ASCIIToWide(indicator_test_setup_js);
+ }
+ ~PrefMapping() {}
- void set_pref(const std::string& pref) { pref_ = pref; }
const std::string& pref() const { return pref_; }
- const char* pref_name() const { return pref_.c_str(); }
-
- bool can_be_recommended() const { return can_be_recommended_; }
- void set_can_be_recommended(bool can_be_recommended) {
- can_be_recommended_ = can_be_recommended;
- }
- const PolicyMap& test_policy() const { return test_policy_; }
- void set_test_policy(const PolicyMap& policy) {
- test_policy_.CopyFrom(policy);
- }
+ bool is_local_state() const { return is_local_state_; }
const std::wstring& indicator_test_setup_js() const {
return indicator_test_setup_js_;
}
- void set_indicator_test_setup_js(const std::string& indicator_test_setup_js) {
- indicator_test_setup_js_ = ASCIIToWide(indicator_test_setup_js);
- }
- const std::string& indicator_selector() const { return indicator_selector_; }
- void set_indicator_selector(const std::string& indicator_selector) {
- indicator_selector_ = indicator_selector;
+ const std::string& indicator_selector() const {
+ return indicator_selector_;
}
const ScopedVector<IndicatorTestCase>& indicator_test_cases() const {
@@ -122,8 +112,33 @@ class PolicyTestCase {
indicator_test_cases_.push_back(test_case);
}
- const std::vector<GURL>& settings_pages() const { return settings_pages_; }
- void AddSettingsPage(const GURL& url) { settings_pages_.push_back(url); }
+ private:
+ std::string pref_;
+ bool is_local_state_;
+ std::wstring indicator_test_setup_js_;
+ std::string indicator_selector_;
+ ScopedVector<IndicatorTestCase> indicator_test_cases_;
+
+ DISALLOW_COPY_AND_ASSIGN(PrefMapping);
+};
+
+// Contains the testing details for a single policy. This is part of the data
+// loaded from chrome/test/data/policy/policy_test_cases.json.
+class PolicyTestCase {
+ public:
+ PolicyTestCase(const std::string& name,
+ bool is_official_only,
+ bool can_be_recommended)
+ : name_(name),
+ is_official_only_(is_official_only),
+ can_be_recommended_(can_be_recommended) {}
+ ~PolicyTestCase() {}
+
+ const std::string& name() const { return name_; }
+
+ bool is_official_only() const { return is_official_only_; }
+
+ bool can_be_recommended() const { return can_be_recommended_; }
bool IsOsSupported() const {
#if defined(OS_WIN)
@@ -140,15 +155,8 @@ class PolicyTestCase {
return std::find(supported_os_.begin(), supported_os_.end(), os) !=
supported_os_.end();
}
-
void AddSupportedOs(const std::string& os) { supported_os_.push_back(os); }
- bool is_local_state() const { return is_local_state_; }
- void set_local_state(bool flag) { is_local_state_ = flag; }
-
- bool is_official_only() const { return official_only_; }
- void set_official_only(bool flag) { official_only_ = flag; }
-
bool IsSupported() const {
#if !defined(OFFICIAL_BUILD)
if (is_official_only())
@@ -157,30 +165,41 @@ class PolicyTestCase {
return IsOsSupported();
}
+ const PolicyMap& test_policy() const { return test_policy_; }
+ void SetTestPolicy(const PolicyMap& policy) {
+ test_policy_.CopyFrom(policy);
+ }
+
+ const std::vector<GURL>& settings_pages() const { return settings_pages_; }
+ void AddSettingsPage(const GURL& url) { settings_pages_.push_back(url); }
+
+ const ScopedVector<PrefMapping>& pref_mappings() const {
+ return pref_mappings_;
+ }
+ void AddPrefMapping(PrefMapping* pref_mapping) {
+ pref_mappings_.push_back(pref_mapping);
+ }
+
private:
std::string name_;
- std::string pref_;
+ bool is_official_only_;
bool can_be_recommended_;
+ std::vector<std::string> supported_os_;
PolicyMap test_policy_;
- std::wstring indicator_test_setup_js_;
- std::string indicator_selector_;
- ScopedVector<IndicatorTestCase> indicator_test_cases_;
std::vector<GURL> settings_pages_;
- std::vector<std::string> supported_os_;
- bool is_local_state_;
- bool official_only_;
+ ScopedVector<PrefMapping> pref_mappings_;
DISALLOW_COPY_AND_ASSIGN(PolicyTestCase);
};
-// Parses all the test cases and makes then available in a map.
-class TestCases {
+// Parses all policy test cases and makes then available in a map.
+class PolicyTestCases {
public:
- typedef std::map<std::string, PolicyTestCase*> TestCaseMap;
- typedef TestCaseMap::const_iterator iterator;
+ typedef std::map<std::string, PolicyTestCase*> PolicyTestCaseMap;
+ typedef PolicyTestCaseMap::const_iterator iterator;
- TestCases() {
- test_cases_ = new std::map<std::string, PolicyTestCase*>();
+ PolicyTestCases() {
+ policy_test_cases_ = new std::map<std::string, PolicyTestCase*>();
FilePath path = ui_test_utils::GetTestFilePath(
FilePath(FILE_PATH_LITERAL("policy")),
@@ -202,94 +221,108 @@ class TestCases {
const PolicyDefinitionList* list = GetChromePolicyDefinitionList();
for (const PolicyDefinitionList::Entry* policy = list->begin;
policy != list->end; ++policy) {
- PolicyTestCase* test_case = GetTestCase(dict, policy->name);
- if (test_case)
- (*test_cases_)[policy->name] = test_case;
+ PolicyTestCase* policy_test_case = GetPolicyTestCase(dict, policy->name);
+ if (policy_test_case)
+ (*policy_test_cases_)[policy->name] = policy_test_case;
}
}
- ~TestCases() {
- STLDeleteValues(test_cases_);
- delete test_cases_;
+ ~PolicyTestCases() {
+ STLDeleteValues(policy_test_cases_);
+ delete policy_test_cases_;
}
const PolicyTestCase* Get(const std::string& name) {
- iterator it = test_cases_->find(name);
+ iterator it = policy_test_cases_->find(name);
return it == end() ? NULL : it->second;
}
- const TestCaseMap& map() const { return *test_cases_; }
- iterator begin() const { return test_cases_->begin(); }
- iterator end() const { return test_cases_->end(); }
+ const PolicyTestCaseMap& map() const { return *policy_test_cases_; }
+ iterator begin() const { return policy_test_cases_->begin(); }
+ iterator end() const { return policy_test_cases_->end(); }
private:
- PolicyTestCase* GetTestCase(const base::DictionaryValue* tests,
- const std::string& name) {
- const base::DictionaryValue* dict = NULL;
- if (!tests->GetDictionary(name, &dict))
+ PolicyTestCase* GetPolicyTestCase(const base::DictionaryValue* tests,
+ const std::string& name) {
+ const base::DictionaryValue* policy_test_dict = NULL;
+ if (!tests->GetDictionary(name, &policy_test_dict))
return NULL;
- PolicyTestCase* test_case = new PolicyTestCase(name);
- std::string pref;
- if (dict->GetString("pref", &pref))
- test_case->set_pref(pref);
- bool flag = false;
- if (dict->GetBoolean("can_be_recommended", &flag))
- test_case->set_can_be_recommended(flag);
- const base::DictionaryValue* policy_dict = NULL;
- if (dict->GetDictionary("test_policy", &policy_dict)) {
- PolicyMap policies;
- policies.LoadFrom(policy_dict, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER);
- test_case->set_test_policy(policies);
- }
- std::string indicator_test_setup_js;
- if (dict->GetString("indicator_test_setup_js", &indicator_test_setup_js))
- test_case->set_indicator_test_setup_js(indicator_test_setup_js);
- std::string indicator_selector;
- if (dict->GetString("indicator_selector", &indicator_selector))
- test_case->set_indicator_selector(indicator_selector);
- const base::ListValue* indicator_tests = NULL;
- if (dict->GetList("indicator_tests", &indicator_tests)) {
- for (size_t i = 0; i < indicator_tests->GetSize(); ++i) {
- const base::DictionaryValue* indicator_test_dict = NULL;
- const base::DictionaryValue* policy = NULL;
- if (!indicator_tests->GetDictionary(i, &indicator_test_dict) ||
- !indicator_test_dict->GetDictionary("policy", &policy)) {
- continue;
- }
- std::string value;
- indicator_test_dict->GetString("value", &value);
- bool readonly = false;
- indicator_test_dict->GetBoolean("readonly", &readonly);
- test_case->AddIndicatorTestCase(
- new IndicatorTestCase(*policy, value, readonly));
+ bool is_official_only = false;
+ policy_test_dict->GetBoolean("official_only", &is_official_only);
+ bool can_be_recommended = false;
+ policy_test_dict->GetBoolean("can_be_recommended", &can_be_recommended);
+ PolicyTestCase* policy_test_case =
+ new PolicyTestCase(name, is_official_only, can_be_recommended);
+ const base::ListValue* os_list = NULL;
+ if (policy_test_dict->GetList("os", &os_list)) {
+ for (size_t i = 0; i < os_list->GetSize(); ++i) {
+ std::string os;
+ if (os_list->GetString(i, &os))
+ policy_test_case->AddSupportedOs(os);
}
}
+ const base::DictionaryValue* policy_dict = NULL;
+ if (policy_test_dict->GetDictionary("test_policy", &policy_dict)) {
+ PolicyMap policy;
+ policy.LoadFrom(policy_dict, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER);
+ policy_test_case->SetTestPolicy(policy);
+ }
const base::ListValue* settings_pages = NULL;
- if (dict->GetList("settings_pages", &settings_pages)) {
+ if (policy_test_dict->GetList("settings_pages", &settings_pages)) {
for (size_t i = 0; i < settings_pages->GetSize(); ++i) {
std::string page;
if (settings_pages->GetString(i, &page))
- test_case->AddSettingsPage(GURL(page));
+ policy_test_case->AddSettingsPage(GURL(page));
}
}
- const base::ListValue* supported_os = NULL;
- if (dict->GetList("os", &supported_os)) {
- for (size_t i = 0; i < supported_os->GetSize(); ++i) {
- std::string os;
- if (supported_os->GetString(i, &os))
- test_case->AddSupportedOs(os);
+ const base::ListValue* pref_mappings = NULL;
+ if (policy_test_dict->GetList("pref_mappings", &pref_mappings)) {
+ for (size_t i = 0; i < pref_mappings->GetSize(); ++i) {
+ const base::DictionaryValue* pref_mapping_dict = NULL;
+ std::string pref;
+ if (!pref_mappings->GetDictionary(i, &pref_mapping_dict) ||
+ !pref_mapping_dict->GetString("pref", &pref)) {
+ ADD_FAILURE() << "Malformed pref_mappings entry in "
+ << "policy_test_cases.json.";
+ continue;
+ }
+ bool is_local_state = false;
+ pref_mapping_dict->GetBoolean("local_state", &is_local_state);
+ std::string indicator_test_setup_js;
+ pref_mapping_dict->GetString("indicator_test_setup_js",
+ &indicator_test_setup_js);
+ std::string indicator_selector;
+ pref_mapping_dict->GetString("indicator_selector", &indicator_selector);
+ PrefMapping* pref_mapping = new PrefMapping(
+ pref, is_local_state, indicator_test_setup_js, indicator_selector);
+ const base::ListValue* indicator_tests = NULL;
+ if (pref_mapping_dict->GetList("indicator_tests", &indicator_tests)) {
+ for (size_t i = 0; i < indicator_tests->GetSize(); ++i) {
+ const base::DictionaryValue* indicator_test_dict = NULL;
+ const base::DictionaryValue* policy = NULL;
+ if (!indicator_tests->GetDictionary(i, &indicator_test_dict) ||
+ !indicator_test_dict->GetDictionary("policy", &policy)) {
+ ADD_FAILURE() << "Malformed indicator_tests entry in "
+ << "policy_test_cases.json.";
+ continue;
+ }
+ std::string value;
+ indicator_test_dict->GetString("value", &value);
+ bool readonly = false;
+ indicator_test_dict->GetBoolean("readonly", &readonly);
+ pref_mapping->AddIndicatorTestCase(
+ new IndicatorTestCase(*policy, value, readonly));
+ }
+ }
+ policy_test_case->AddPrefMapping(pref_mapping);
}
}
- if (dict->GetBoolean("local_state", &flag))
- test_case->set_local_state(flag);
- if (dict->GetBoolean("official_only", &flag))
- test_case->set_official_only(flag);
- return test_case;
+ return policy_test_case;
}
- TestCaseMap* test_cases_;
+ PolicyTestCaseMap* policy_test_cases_;
- DISALLOW_COPY_AND_ASSIGN(TestCases);
+ DISALLOW_COPY_AND_ASSIGN(PolicyTestCases);
};
bool IsBannerVisible(Browser* browser) {
@@ -388,7 +421,7 @@ class PolicyBaseTest : public InProcessBrowserTest {
BrowserPolicyConnector::SetPolicyProviderForTesting(&provider_);
}
- TestCases test_cases_;
+ PolicyTestCases policy_test_cases_;
MockConfigurationPolicyProvider provider_;
};
@@ -406,11 +439,11 @@ TEST(PolicyPrefsTest, AllPoliciesHaveATestCase) {
// This test fails when a policy is added to
// chrome/app/policy/policy_templates.json but a test case is not added to
// chrome/test/data/policy/policy_test_cases.json.
- TestCases test_cases;
+ PolicyTestCases policy_test_cases;
const PolicyDefinitionList* list = GetChromePolicyDefinitionList();
for (const PolicyDefinitionList::Entry* policy = list->begin;
policy != list->end; ++policy) {
- EXPECT_TRUE(ContainsKey(test_cases.map(), policy->name))
+ EXPECT_TRUE(ContainsKey(policy_test_cases.map(), policy->name))
<< "Missing policy test case for: " << policy->name;
}
}
@@ -431,7 +464,7 @@ IN_PROC_BROWSER_TEST_F(PolicyPrefsBannerTest, TogglePolicyTogglesBanner) {
// removed.
// |test_case| is just a particular policy that should trigger the banner
// on the main settings page.
- const PolicyTestCase* test_case = test_cases_.Get("ShowHomeButton");
+ const PolicyTestCase* test_case = policy_test_cases_.Get("ShowHomeButton");
ASSERT_TRUE(test_case);
// No banner by default.
ui_test_utils::NavigateToURL(browser(), GURL(kSettingsPages[0]));
@@ -453,37 +486,45 @@ IN_PROC_BROWSER_TEST_F(PolicyPrefsBannerTest, TogglePolicyTogglesBanner) {
IN_PROC_BROWSER_TEST_P(PolicyPrefsTest, PolicyToPrefsMapping) {
// Verifies that policies make their corresponding preferences become managed,
// and that the user can't override that setting.
- const PolicyTestCase* test_case = test_cases_.Get(GetParam().name);
+ const PolicyTestCase* test_case = policy_test_cases_.Get(GetParam().name);
ASSERT_TRUE(test_case);
- if (!test_case->IsSupported() || test_case->pref().empty())
+ const ScopedVector<PrefMapping>& pref_mappings = test_case->pref_mappings();
+ if (!test_case->IsSupported() || pref_mappings.empty())
return;
LOG(INFO) << "Testing policy: " << test_case->name();
- PrefService* prefs = test_case->is_local_state() ?
- g_browser_process->local_state() : browser()->profile()->GetPrefs();
- // The preference must have been registered.
- const PrefService::Preference* pref =
- prefs->FindPreference(test_case->pref_name());
- ASSERT_TRUE(pref);
- prefs->ClearPref(test_case->pref_name());
-
- // Verify that setting the policy overrides the pref.
- EXPECT_TRUE(pref->IsDefaultValue());
- EXPECT_TRUE(pref->IsUserModifiable());
- EXPECT_FALSE(pref->IsUserControlled());
- EXPECT_FALSE(pref->IsManaged());
+ for (ScopedVector<PrefMapping>::const_iterator
+ pref_mapping = pref_mappings.begin();
+ pref_mapping != pref_mappings.end();
+ ++pref_mapping) {
+ PrefService* prefs = (*pref_mapping)->is_local_state() ?
+ g_browser_process->local_state() : browser()->profile()->GetPrefs();
+ // The preference must have been registered.
+ const PrefService::Preference* pref =
+ prefs->FindPreference((*pref_mapping)->pref().c_str());
+ ASSERT_TRUE(pref);
+ prefs->ClearPref((*pref_mapping)->pref().c_str());
+
+ // Verify that setting the policy overrides the pref.
+ const PolicyMap kNoPolicies;
+ provider_.UpdateChromePolicy(kNoPolicies);
+ EXPECT_TRUE(pref->IsDefaultValue());
+ EXPECT_TRUE(pref->IsUserModifiable());
+ EXPECT_FALSE(pref->IsUserControlled());
+ EXPECT_FALSE(pref->IsManaged());
- provider_.UpdateChromePolicy(test_case->test_policy());
- EXPECT_FALSE(pref->IsDefaultValue());
- EXPECT_FALSE(pref->IsUserModifiable());
- EXPECT_FALSE(pref->IsUserControlled());
- EXPECT_TRUE(pref->IsManaged());
+ provider_.UpdateChromePolicy(test_case->test_policy());
+ EXPECT_FALSE(pref->IsDefaultValue());
+ EXPECT_FALSE(pref->IsUserModifiable());
+ EXPECT_FALSE(pref->IsUserControlled());
+ EXPECT_TRUE(pref->IsManaged());
+ }
}
IN_PROC_BROWSER_TEST_P(PolicyPrefsTest, CheckAllPoliciesThatShowTheBanner) {
// Verifies that the banner appears for each policy that affects a control
// in the settings UI.
- const PolicyTestCase* test_case = test_cases_.Get(GetParam().name);
+ const PolicyTestCase* test_case = policy_test_cases_.Get(GetParam().name);
ASSERT_TRUE(test_case);
if (!test_case->IsSupported() || test_case->settings_pages().empty())
return;
@@ -504,71 +545,93 @@ IN_PROC_BROWSER_TEST_P(PolicyPrefsTest, CheckAllPoliciesThatShowTheBanner) {
IN_PROC_BROWSER_TEST_P(PolicyPrefsTest, CheckPolicyIndicators) {
// Verifies that controlled setting indicators correctly show whether a pref's
// value is recommended or enforced by a corresponding policy.
- const PolicyTestCase* policy_test_case = test_cases_.Get(GetParam().name);
+ const PolicyTestCase* policy_test_case =
+ policy_test_cases_.Get(GetParam().name);
ASSERT_TRUE(policy_test_case);
- const ScopedVector<IndicatorTestCase>& indicator_test_cases =
- policy_test_case->indicator_test_cases();
- if (!policy_test_case->IsSupported() || indicator_test_cases.empty())
+ const ScopedVector<PrefMapping>& pref_mappings =
+ policy_test_case->pref_mappings();
+ if (!policy_test_case->IsSupported() || pref_mappings.empty())
return;
- LOG(INFO) << "Testing policy: " << policy_test_case->name();
-
- PrefService* prefs = policy_test_case->is_local_state() ?
- g_browser_process->local_state() : browser()->profile()->GetPrefs();
- // The preference must have been registered.
- const PrefService::Preference* pref =
- prefs->FindPreference(policy_test_case->pref_name());
- ASSERT_TRUE(pref);
-
- ui_test_utils::NavigateToURL(browser(), GURL(kSettingsPages[0]));
- if (!policy_test_case->indicator_test_setup_js().empty()) {
- ASSERT_TRUE(content::ExecuteJavaScript(
- chrome::GetActiveWebContents(browser())->GetRenderViewHost(), L"",
- policy_test_case->indicator_test_setup_js()));
+ bool has_indicator_tests = false;
+ for (ScopedVector<PrefMapping>::const_iterator
+ pref_mapping = pref_mappings.begin();
+ pref_mapping != pref_mappings.end();
+ ++pref_mapping) {
+ if (!(*pref_mapping)->indicator_test_cases().empty()) {
+ has_indicator_tests = true;
+ break;
+ }
}
+ if (!has_indicator_tests)
+ return;
+ LOG(INFO) << "Testing policy: " << policy_test_case->name();
- std::string indicator_selector = policy_test_case->indicator_selector();
- if (indicator_selector.empty())
- indicator_selector = "[pref=\"" + policy_test_case->pref() + "\"]";
- for (ScopedVector<IndicatorTestCase>::const_iterator
- indicator_test_case = indicator_test_cases.begin();
- indicator_test_case != indicator_test_cases.end();
- ++indicator_test_case) {
- // Check that no controlled setting indicator is visible when no value is
- // set by policy.
- PolicyMap policies;
- provider_.UpdateChromePolicy(policies);
- VerifyControlledSettingIndicators(browser(), indicator_selector,
- "", "", false);
- // Check that the appropriate controlled setting indicator is shown when a
- // value is enforced by policy.
- policies.LoadFrom(&(*indicator_test_case)->policy(),
- POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER);
- provider_.UpdateChromePolicy(policies);
- VerifyControlledSettingIndicators(browser(), indicator_selector,
- (*indicator_test_case)->value(),
- "policy",
- (*indicator_test_case)->readonly());
- if (!policy_test_case->can_be_recommended())
+ for (ScopedVector<PrefMapping>::const_iterator
+ pref_mapping = pref_mappings.begin();
+ pref_mapping != pref_mappings.end();
+ ++pref_mapping) {
+ const ScopedVector<IndicatorTestCase>&
+ indicator_test_cases = (*pref_mapping)->indicator_test_cases();
+ if (indicator_test_cases.empty())
continue;
- // Check that the appropriate controlled setting indicator is shown when a
- // value is recommended by policy and the user has not overridden the
- // recommendation.
- policies.LoadFrom(&(*indicator_test_case)->policy(),
- POLICY_LEVEL_RECOMMENDED, POLICY_SCOPE_USER);
- provider_.UpdateChromePolicy(policies);
- VerifyControlledSettingIndicators(browser(), indicator_selector,
- (*indicator_test_case)->value(),
- "recommended",
- (*indicator_test_case)->readonly());
- // Check that the appropriate controlled setting indicator is shown when a
- // value is recommended by policy and the user has overriddent the
- // recommendation.
- prefs->Set(policy_test_case->pref_name(), *pref->GetValue());
- VerifyControlledSettingIndicators(browser(), indicator_selector,
- (*indicator_test_case)->value(),
- "hasRecommendation",
- (*indicator_test_case)->readonly());
- prefs->ClearPref(policy_test_case->pref_name());
+ PrefService* prefs = (*pref_mapping)->is_local_state() ?
+ g_browser_process->local_state() : browser()->profile()->GetPrefs();
+ // The preference must have been registered.
+ const PrefService::Preference* pref =
+ prefs->FindPreference((*pref_mapping)->pref().c_str());
+ ASSERT_TRUE(pref);
+
+ ui_test_utils::NavigateToURL(browser(), GURL(kSettingsPages[0]));
+ if (!(*pref_mapping)->indicator_test_setup_js().empty()) {
+ ASSERT_TRUE(content::ExecuteJavaScript(
+ chrome::GetActiveWebContents(browser())->GetRenderViewHost(), L"",
+ (*pref_mapping)->indicator_test_setup_js()));
+ }
+
+ std::string indicator_selector = (*pref_mapping)->indicator_selector();
+ if (indicator_selector.empty())
+ indicator_selector = "[pref=\"" + (*pref_mapping)->pref() + "\"]";
+ for (ScopedVector<IndicatorTestCase>::const_iterator
+ indicator_test_case = indicator_test_cases.begin();
+ indicator_test_case != indicator_test_cases.end();
+ ++indicator_test_case) {
+ // Check that no controlled setting indicator is visible when no value is
+ // set by policy.
+ PolicyMap policies;
+ provider_.UpdateChromePolicy(policies);
+ VerifyControlledSettingIndicators(browser(), indicator_selector,
+ "", "", false);
+ // Check that the appropriate controlled setting indicator is shown when a
+ // value is enforced by policy.
+ policies.LoadFrom(&(*indicator_test_case)->policy(),
+ POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER);
+ provider_.UpdateChromePolicy(policies);
+ VerifyControlledSettingIndicators(browser(), indicator_selector,
+ (*indicator_test_case)->value(),
+ "policy",
+ (*indicator_test_case)->readonly());
+ if (!policy_test_case->can_be_recommended())
+ continue;
+ // Check that the appropriate controlled setting indicator is shown when a
+ // value is recommended by policy and the user has not overridden the
+ // recommendation.
+ policies.LoadFrom(&(*indicator_test_case)->policy(),
+ POLICY_LEVEL_RECOMMENDED, POLICY_SCOPE_USER);
+ provider_.UpdateChromePolicy(policies);
+ VerifyControlledSettingIndicators(browser(), indicator_selector,
+ (*indicator_test_case)->value(),
+ "recommended",
+ (*indicator_test_case)->readonly());
+ // Check that the appropriate controlled setting indicator is shown when a
+ // value is recommended by policy and the user has overriddent the
+ // recommendation.
+ prefs->Set((*pref_mapping)->pref().c_str(), *pref->GetValue());
+ VerifyControlledSettingIndicators(browser(), indicator_selector,
+ (*indicator_test_case)->value(),
+ "hasRecommendation",
+ (*indicator_test_case)->readonly());
+ prefs->ClearPref((*pref_mapping)->pref().c_str());
+ }
}
}
« no previous file with comments | « no previous file | chrome/browser/resources/options/browser_options.css » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698