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

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

Issue 11078023: Add controlled setting indicators for content settings (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Mark which of the policies considered can be recommended. 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
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 e25811c8e38f85e4c1597e6a3ceda43b1ea98a9a..62199bbfebb2e6fbe195ee76ca6b9f76a515c32f 100644
--- a/chrome/browser/policy/policy_prefs_browsertest.cc
+++ b/chrome/browser/policy/policy_prefs_browsertest.cc
@@ -15,6 +15,7 @@
#include "base/memory/scoped_ptr.h"
#include "base/memory/scoped_vector.h"
#include "base/stl_util.h"
+#include "base/utf_string_conversions.h"
#include "base/values.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/policy/browser_policy_connector.h"
@@ -102,6 +103,18 @@ class PolicyTestCase {
test_policy_.CopyFrom(policy);
}
+ 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 ScopedVector<IndicatorTestCase>& indicator_test_cases() const {
return indicator_test_cases_;
}
@@ -149,6 +162,8 @@ class PolicyTestCase {
std::string pref_;
bool can_be_recommended_;
PolicyMap test_policy_;
+ std::wstring indicator_test_setup_js_;
James Hawkins 2012/10/12 22:23:32 Why are you using wstring?
bartfab (slow) 2012/10/13 07:21:59 This value will be passed to ExecuteJavaScript() w
+ std::string indicator_selector_;
ScopedVector<IndicatorTestCase> indicator_test_cases_;
std::vector<GURL> settings_pages_;
std::vector<std::string> supported_os_;
@@ -226,6 +241,12 @@ class TestCases {
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) {
@@ -291,14 +312,14 @@ bool IsBannerVisible(Browser* browser) {
}
void VerifyControlledSettingIndicators(Browser* browser,
- const std::string& pref,
+ const std::string& selector,
const std::string& value,
const std::string& controlled_by,
bool readonly) {
std::wstringstream javascript;
javascript << "var nodes = document.querySelectorAll("
- << " 'span.controlled-setting-indicator["
- << " pref=" << pref.c_str() << "]');"
+ << " 'span.controlled-setting-indicator"
+ << selector.c_str() << "');"
<< "var indicators = [];"
<< "for (var i = 0; i < nodes.length; i++) {"
<< " var node = nodes[i];"
@@ -313,7 +334,8 @@ void VerifyControlledSettingIndicators(Browser* browser,
<< "domAutomationController.send(JSON.stringify(indicators));";
content::WebContents* contents = chrome::GetActiveWebContents(browser);
std::string json;
- // Retrieve the state of all controlled setting indicators for |pref| as JSON.
+ // Retrieve the state of all controlled setting indicators matching the
+ // |selector| as JSON.
ASSERT_TRUE(content::ExecuteJavaScriptAndExtractString(
contents->GetRenderViewHost(), L"", javascript.str(), &json));
scoped_ptr<base::Value> value_ptr(base::JSONReader::Read(json));
@@ -323,6 +345,10 @@ void VerifyControlledSettingIndicators(Browser* browser,
// Verify that controlled setting indicators representing |value| are visible
// and have the correct state while those not representing |value| are
// invisible.
+ if (!controlled_by.empty()) {
+ EXPECT_GT(indicators->GetSize(), 0u)
+ << "Expected to find at least one controlled setting indicator.";
+ }
for (base::ListValue::const_iterator indicator = indicators->begin();
indicator != indicators->end(); ++indicator) {
const base::DictionaryValue* properties = NULL;
@@ -492,8 +518,16 @@ IN_PROC_BROWSER_TEST_P(PolicyPrefsTest, CheckPolicyIndicators) {
const PrefService::Preference* pref =
prefs->FindPreference(policy_test_case->pref_name());
ASSERT_TRUE(pref);
- ui_test_utils::NavigateToURL(browser(), GURL(kSettingsPages[0]));
+ 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()));
Joao da Silva 2012/10/15 08:02:32 Put this within braces, fix indentation
bartfab (slow) 2012/10/15 12:34:07 Done.
+
+ 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();
@@ -502,26 +536,26 @@ IN_PROC_BROWSER_TEST_P(PolicyPrefsTest, CheckPolicyIndicators) {
// set by policy.
PolicyMap policies;
provider_.UpdateChromePolicy(policies);
- VerifyControlledSettingIndicators(browser(), policy_test_case->pref(),
+ 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(), policy_test_case->pref(),
+ VerifyControlledSettingIndicators(browser(), indicator_selector,
(*indicator_test_case)->value(),
"policy",
(*indicator_test_case)->readonly());
if (!policy_test_case->can_be_recommended())
- return;
+ continue;
Joao da Silva 2012/10/15 08:02:32 :D
bartfab (slow) 2012/10/15 12:34:07 Yeaaaah...
// 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(), policy_test_case->pref(),
+ VerifyControlledSettingIndicators(browser(), indicator_selector,
(*indicator_test_case)->value(),
"recommended",
(*indicator_test_case)->readonly());
@@ -529,7 +563,7 @@ IN_PROC_BROWSER_TEST_P(PolicyPrefsTest, CheckPolicyIndicators) {
// value is recommended by policy and the user has overriddent the
// recommendation.
prefs->Set(policy_test_case->pref_name(), *pref->GetValue());
- VerifyControlledSettingIndicators(browser(), policy_test_case->pref(),
+ VerifyControlledSettingIndicators(browser(), indicator_selector,
(*indicator_test_case)->value(),
"hasRecommendation",
(*indicator_test_case)->readonly());

Powered by Google App Engine
This is Rietveld 408576698