| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <algorithm> | 5 #include <algorithm> |
| 6 #include <map> | 6 #include <map> |
| 7 #include <sstream> | 7 #include <sstream> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 74 // Contains the testing details for a single pref affected by a policy. This is | 74 // Contains the testing details for a single pref affected by a policy. This is |
| 75 // part of the data loaded from chrome/test/data/policy/policy_test_cases.json. | 75 // part of the data loaded from chrome/test/data/policy/policy_test_cases.json. |
| 76 class PrefMapping { | 76 class PrefMapping { |
| 77 public: | 77 public: |
| 78 PrefMapping(const std::string& pref, | 78 PrefMapping(const std::string& pref, |
| 79 bool is_local_state, | 79 bool is_local_state, |
| 80 const std::string& indicator_test_setup_js, | 80 const std::string& indicator_test_setup_js, |
| 81 const std::string& indicator_selector) | 81 const std::string& indicator_selector) |
| 82 : pref_(pref), | 82 : pref_(pref), |
| 83 is_local_state_(is_local_state), | 83 is_local_state_(is_local_state), |
| 84 indicator_test_setup_js_(indicator_test_setup_js), | |
| 85 indicator_selector_(indicator_selector) { | 84 indicator_selector_(indicator_selector) { |
| 85 indicator_test_setup_js_ = ASCIIToWide(indicator_test_setup_js); |
| 86 } | 86 } |
| 87 ~PrefMapping() {} | 87 ~PrefMapping() {} |
| 88 | 88 |
| 89 const std::string& pref() const { return pref_; } | 89 const std::string& pref() const { return pref_; } |
| 90 | 90 |
| 91 bool is_local_state() const { return is_local_state_; } | 91 bool is_local_state() const { return is_local_state_; } |
| 92 | 92 |
| 93 const std::string& indicator_test_setup_js() const { | 93 const std::wstring& indicator_test_setup_js() const { |
| 94 return indicator_test_setup_js_; | 94 return indicator_test_setup_js_; |
| 95 } | 95 } |
| 96 | 96 |
| 97 const std::string& indicator_selector() const { | 97 const std::string& indicator_selector() const { |
| 98 return indicator_selector_; | 98 return indicator_selector_; |
| 99 } | 99 } |
| 100 | 100 |
| 101 const ScopedVector<IndicatorTestCase>& indicator_test_cases() const { | 101 const ScopedVector<IndicatorTestCase>& indicator_test_cases() const { |
| 102 return indicator_test_cases_; | 102 return indicator_test_cases_; |
| 103 } | 103 } |
| 104 void AddIndicatorTestCase(IndicatorTestCase* test_case) { | 104 void AddIndicatorTestCase(IndicatorTestCase* test_case) { |
| 105 indicator_test_cases_.push_back(test_case); | 105 indicator_test_cases_.push_back(test_case); |
| 106 } | 106 } |
| 107 | 107 |
| 108 private: | 108 private: |
| 109 std::string pref_; | 109 std::string pref_; |
| 110 bool is_local_state_; | 110 bool is_local_state_; |
| 111 std::string indicator_test_setup_js_; | 111 std::wstring indicator_test_setup_js_; |
| 112 std::string indicator_selector_; | 112 std::string indicator_selector_; |
| 113 ScopedVector<IndicatorTestCase> indicator_test_cases_; | 113 ScopedVector<IndicatorTestCase> indicator_test_cases_; |
| 114 | 114 |
| 115 DISALLOW_COPY_AND_ASSIGN(PrefMapping); | 115 DISALLOW_COPY_AND_ASSIGN(PrefMapping); |
| 116 }; | 116 }; |
| 117 | 117 |
| 118 // Contains the testing details for a single policy. This is part of the data | 118 // Contains the testing details for a single policy. This is part of the data |
| 119 // loaded from chrome/test/data/policy/policy_test_cases.json. | 119 // loaded from chrome/test/data/policy/policy_test_cases.json. |
| 120 class PolicyTestCase { | 120 class PolicyTestCase { |
| 121 public: | 121 public: |
| (...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 304 PolicyTestCaseMap* policy_test_cases_; | 304 PolicyTestCaseMap* policy_test_cases_; |
| 305 | 305 |
| 306 DISALLOW_COPY_AND_ASSIGN(PolicyTestCases); | 306 DISALLOW_COPY_AND_ASSIGN(PolicyTestCases); |
| 307 }; | 307 }; |
| 308 | 308 |
| 309 void VerifyControlledSettingIndicators(Browser* browser, | 309 void VerifyControlledSettingIndicators(Browser* browser, |
| 310 const std::string& selector, | 310 const std::string& selector, |
| 311 const std::string& value, | 311 const std::string& value, |
| 312 const std::string& controlled_by, | 312 const std::string& controlled_by, |
| 313 bool readonly) { | 313 bool readonly) { |
| 314 std::stringstream javascript; | 314 std::wstringstream javascript; |
| 315 javascript << "var nodes = document.querySelectorAll(" | 315 javascript << "var nodes = document.querySelectorAll(" |
| 316 << " 'span.controlled-setting-indicator" | 316 << " 'span.controlled-setting-indicator" |
| 317 << selector.c_str() << "');" | 317 << selector.c_str() << "');" |
| 318 << "var indicators = [];" | 318 << "var indicators = [];" |
| 319 << "for (var i = 0; i < nodes.length; i++) {" | 319 << "for (var i = 0; i < nodes.length; i++) {" |
| 320 << " var node = nodes[i];" | 320 << " var node = nodes[i];" |
| 321 << " var indicator = {};" | 321 << " var indicator = {};" |
| 322 << " indicator.value = node.value || '';" | 322 << " indicator.value = node.value || '';" |
| 323 << " indicator.controlledBy = node.controlledBy || '';" | 323 << " indicator.controlledBy = node.controlledBy || '';" |
| 324 << " indicator.readOnly = node.readOnly || false;" | 324 << " indicator.readOnly = node.readOnly || false;" |
| 325 << " indicator.visible =" | 325 << " indicator.visible =" |
| 326 << " window.getComputedStyle(node).display != 'none';" | 326 << " window.getComputedStyle(node).display != 'none';" |
| 327 << " indicators.push(indicator)" | 327 << " indicators.push(indicator)" |
| 328 << "}" | 328 << "}" |
| 329 << "domAutomationController.send(JSON.stringify(indicators));"; | 329 << "domAutomationController.send(JSON.stringify(indicators));"; |
| 330 content::WebContents* contents = chrome::GetActiveWebContents(browser); | 330 content::WebContents* contents = chrome::GetActiveWebContents(browser); |
| 331 std::string json; | 331 std::string json; |
| 332 // Retrieve the state of all controlled setting indicators matching the | 332 // Retrieve the state of all controlled setting indicators matching the |
| 333 // |selector| as JSON. | 333 // |selector| as JSON. |
| 334 ASSERT_TRUE(content::ExecuteJavaScriptAndExtractString( | 334 ASSERT_TRUE(content::ExecuteJavaScriptAndExtractString( |
| 335 contents->GetRenderViewHost(), "", javascript.str(), &json)); | 335 contents->GetRenderViewHost(), L"", javascript.str(), &json)); |
| 336 scoped_ptr<base::Value> value_ptr(base::JSONReader::Read(json)); | 336 scoped_ptr<base::Value> value_ptr(base::JSONReader::Read(json)); |
| 337 const base::ListValue* indicators = NULL; | 337 const base::ListValue* indicators = NULL; |
| 338 ASSERT_TRUE(value_ptr.get()); | 338 ASSERT_TRUE(value_ptr.get()); |
| 339 ASSERT_TRUE(value_ptr->GetAsList(&indicators)); | 339 ASSERT_TRUE(value_ptr->GetAsList(&indicators)); |
| 340 // Verify that controlled setting indicators representing |value| are visible | 340 // Verify that controlled setting indicators representing |value| are visible |
| 341 // and have the correct state while those not representing |value| are | 341 // and have the correct state while those not representing |value| are |
| 342 // invisible. | 342 // invisible. |
| 343 if (!controlled_by.empty()) { | 343 if (!controlled_by.empty()) { |
| 344 EXPECT_GT(indicators->GetSize(), 0u) | 344 EXPECT_GT(indicators->GetSize(), 0u) |
| 345 << "Expected to find at least one controlled setting indicator."; | 345 << "Expected to find at least one controlled setting indicator."; |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 485 pref_mapping != pref_mappings.end(); | 485 pref_mapping != pref_mappings.end(); |
| 486 ++pref_mapping) { | 486 ++pref_mapping) { |
| 487 const ScopedVector<IndicatorTestCase>& | 487 const ScopedVector<IndicatorTestCase>& |
| 488 indicator_test_cases = (*pref_mapping)->indicator_test_cases(); | 488 indicator_test_cases = (*pref_mapping)->indicator_test_cases(); |
| 489 if (indicator_test_cases.empty()) | 489 if (indicator_test_cases.empty()) |
| 490 continue; | 490 continue; |
| 491 | 491 |
| 492 ui_test_utils::NavigateToURL(browser(), GURL(kMainSettingsPage)); | 492 ui_test_utils::NavigateToURL(browser(), GURL(kMainSettingsPage)); |
| 493 if (!(*pref_mapping)->indicator_test_setup_js().empty()) { | 493 if (!(*pref_mapping)->indicator_test_setup_js().empty()) { |
| 494 ASSERT_TRUE(content::ExecuteJavaScript( | 494 ASSERT_TRUE(content::ExecuteJavaScript( |
| 495 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), | 495 chrome::GetActiveWebContents(browser())->GetRenderViewHost(), L"", |
| 496 "", | |
| 497 (*pref_mapping)->indicator_test_setup_js())); | 496 (*pref_mapping)->indicator_test_setup_js())); |
| 498 } | 497 } |
| 499 | 498 |
| 500 std::string indicator_selector = (*pref_mapping)->indicator_selector(); | 499 std::string indicator_selector = (*pref_mapping)->indicator_selector(); |
| 501 if (indicator_selector.empty()) | 500 if (indicator_selector.empty()) |
| 502 indicator_selector = "[pref=\"" + (*pref_mapping)->pref() + "\"]"; | 501 indicator_selector = "[pref=\"" + (*pref_mapping)->pref() + "\"]"; |
| 503 for (ScopedVector<IndicatorTestCase>::const_iterator | 502 for (ScopedVector<IndicatorTestCase>::const_iterator |
| 504 indicator_test_case = indicator_test_cases.begin(); | 503 indicator_test_case = indicator_test_cases.begin(); |
| 505 indicator_test_case != indicator_test_cases.end(); | 504 indicator_test_case != indicator_test_cases.end(); |
| 506 ++indicator_test_case) { | 505 ++indicator_test_case) { |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 555 } | 554 } |
| 556 } | 555 } |
| 557 | 556 |
| 558 INSTANTIATE_TEST_CASE_P( | 557 INSTANTIATE_TEST_CASE_P( |
| 559 PolicyPrefsTestInstance, | 558 PolicyPrefsTestInstance, |
| 560 PolicyPrefsTest, | 559 PolicyPrefsTest, |
| 561 testing::ValuesIn(GetChromePolicyDefinitionList()->begin, | 560 testing::ValuesIn(GetChromePolicyDefinitionList()->begin, |
| 562 GetChromePolicyDefinitionList()->end)); | 561 GetChromePolicyDefinitionList()->end)); |
| 563 | 562 |
| 564 } // namespace policy | 563 } // namespace policy |
| OLD | NEW |