| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 <vector> | 5 #include <vector> |
| 6 | 6 |
| 7 #include "base/callback.h" | 7 #include "base/callback.h" |
| 8 #include "base/files/scoped_temp_dir.h" | 8 #include "base/files/scoped_temp_dir.h" |
| 9 #include "base/json/json_reader.h" | 9 #include "base/json/json_reader.h" |
| 10 #include "base/run_loop.h" | 10 #include "base/run_loop.h" |
| (...skipping 23 matching lines...) Expand all Loading... |
| 34 #include "url/gurl.h" | 34 #include "url/gurl.h" |
| 35 | 35 |
| 36 using testing::Return; | 36 using testing::Return; |
| 37 using testing::_; | 37 using testing::_; |
| 38 | 38 |
| 39 namespace { | 39 namespace { |
| 40 | 40 |
| 41 std::vector<std::string> PopulateExpectedPolicy( | 41 std::vector<std::string> PopulateExpectedPolicy( |
| 42 const std::string& name, | 42 const std::string& name, |
| 43 const std::string& value, | 43 const std::string& value, |
| 44 const std::string& source, | |
| 45 const policy::PolicyMap::Entry* metadata, | 44 const policy::PolicyMap::Entry* metadata, |
| 46 bool unknown) { | 45 bool unknown) { |
| 47 std::vector<std::string> expected_policy; | 46 std::vector<std::string> expected_policy; |
| 48 | 47 |
| 49 // Populate expected scope. | 48 // Populate expected scope. |
| 50 if (metadata) { | 49 if (metadata) { |
| 51 expected_policy.push_back(l10n_util::GetStringUTF8( | 50 expected_policy.push_back(l10n_util::GetStringUTF8( |
| 52 metadata->scope == policy::POLICY_SCOPE_MACHINE ? | 51 metadata->scope == policy::POLICY_SCOPE_MACHINE ? |
| 53 IDS_POLICY_SCOPE_DEVICE : IDS_POLICY_SCOPE_USER)); | 52 IDS_POLICY_SCOPE_DEVICE : IDS_POLICY_SCOPE_USER)); |
| 54 } else { | 53 } else { |
| 55 expected_policy.push_back(std::string()); | 54 expected_policy.push_back(std::string()); |
| 56 } | 55 } |
| 57 | 56 |
| 58 // Populate expected level. | 57 // Populate expected level. |
| 59 if (metadata) { | 58 if (metadata) { |
| 60 expected_policy.push_back(l10n_util::GetStringUTF8( | 59 expected_policy.push_back(l10n_util::GetStringUTF8( |
| 61 metadata->level == policy::POLICY_LEVEL_RECOMMENDED ? | 60 metadata->level == policy::POLICY_LEVEL_RECOMMENDED ? |
| 62 IDS_POLICY_LEVEL_RECOMMENDED : IDS_POLICY_LEVEL_MANDATORY)); | 61 IDS_POLICY_LEVEL_RECOMMENDED : IDS_POLICY_LEVEL_MANDATORY)); |
| 63 } else { | 62 } else { |
| 64 expected_policy.push_back(std::string()); | 63 expected_policy.push_back(std::string()); |
| 65 } | 64 } |
| 66 // Populate expected source name. | |
| 67 expected_policy.push_back(source); | |
| 68 | 65 |
| 69 // Populate expected policy name. | 66 // Populate expected policy name. |
| 70 expected_policy.push_back(name); | 67 expected_policy.push_back(name); |
| 71 | 68 |
| 72 // Populate expected policy value. | 69 // Populate expected policy value. |
| 73 expected_policy.push_back(value); | 70 expected_policy.push_back(value); |
| 74 | 71 |
| 75 // Populate expected status. | 72 // Populate expected status. |
| 76 if (unknown) | 73 if (unknown) |
| 77 expected_policy.push_back(l10n_util::GetStringUTF8(IDS_POLICY_UNKNOWN)); | 74 expected_policy.push_back(l10n_util::GetStringUTF8(IDS_POLICY_UNKNOWN)); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 114 PolicyUITest::~PolicyUITest() { | 111 PolicyUITest::~PolicyUITest() { |
| 115 } | 112 } |
| 116 | 113 |
| 117 void PolicyUITest::SetUpInProcessBrowserTestFixture() { | 114 void PolicyUITest::SetUpInProcessBrowserTestFixture() { |
| 118 EXPECT_CALL(provider_, IsInitializationComplete(_)) | 115 EXPECT_CALL(provider_, IsInitializationComplete(_)) |
| 119 .WillRepeatedly(Return(true)); | 116 .WillRepeatedly(Return(true)); |
| 120 policy::BrowserPolicyConnector::SetPolicyProviderForTesting(&provider_); | 117 policy::BrowserPolicyConnector::SetPolicyProviderForTesting(&provider_); |
| 121 } | 118 } |
| 122 | 119 |
| 123 void PolicyUITest::UpdateProviderPolicy(const policy::PolicyMap& policy) { | 120 void PolicyUITest::UpdateProviderPolicy(const policy::PolicyMap& policy) { |
| 124 provider_.UpdateChromePolicy(policy); | 121 provider_.UpdateChromePolicy(policy); |
| 125 base::RunLoop loop; | 122 base::RunLoop loop; |
| 126 loop.RunUntilIdle(); | 123 loop.RunUntilIdle(); |
| 127 } | 124 } |
| 128 | 125 |
| 129 void PolicyUITest::VerifyPolicies( | 126 void PolicyUITest::VerifyPolicies( |
| 130 const std::vector<std::vector<std::string> >& expected_policies) { | 127 const std::vector<std::vector<std::string> >& expected_policies) { |
| 131 ui_test_utils::NavigateToURL(browser(), GURL("chrome://policy")); | 128 ui_test_utils::NavigateToURL(browser(), GURL("chrome://policy")); |
| 132 | 129 |
| 133 // Retrieve the text contents of the policy table cells for all policies. | 130 // Retrieve the text contents of the policy table cells for all policies. |
| 134 const std::string javascript = | 131 const std::string javascript = |
| 135 "var entries = document.querySelectorAll(" | 132 "var entries = document.querySelectorAll(" |
| 136 " 'section.policy-table-section > * > tbody');" | 133 " 'section.policy-table-section > * > tbody');" |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 183 | 180 |
| 184 // Expect that the policy table contains all known policies in alphabetical | 181 // Expect that the policy table contains all known policies in alphabetical |
| 185 // order and none of the policies have a set value. | 182 // order and none of the policies have a set value. |
| 186 std::vector<std::vector<std::string> > expected_policies; | 183 std::vector<std::vector<std::string> > expected_policies; |
| 187 policy::Schema chrome_schema = | 184 policy::Schema chrome_schema = |
| 188 policy::Schema::Wrap(policy::GetChromeSchemaData()); | 185 policy::Schema::Wrap(policy::GetChromeSchemaData()); |
| 189 ASSERT_TRUE(chrome_schema.valid()); | 186 ASSERT_TRUE(chrome_schema.valid()); |
| 190 for (policy::Schema::Iterator it = chrome_schema.GetPropertiesIterator(); | 187 for (policy::Schema::Iterator it = chrome_schema.GetPropertiesIterator(); |
| 191 !it.IsAtEnd(); it.Advance()) { | 188 !it.IsAtEnd(); it.Advance()) { |
| 192 expected_policies.push_back( | 189 expected_policies.push_back( |
| 193 PopulateExpectedPolicy( | 190 PopulateExpectedPolicy(it.key(), std::string(), NULL, false)); |
| 194 it.key(), std::string(), std::string(), nullptr, false)); | |
| 195 } | 191 } |
| 196 | 192 |
| 197 // Retrieve the contents of the policy table from the UI and verify that it | 193 // Retrieve the contents of the policy table from the UI and verify that it |
| 198 // matches the expectation. | 194 // matches the expectation. |
| 199 VerifyPolicies(expected_policies); | 195 VerifyPolicies(expected_policies); |
| 200 } | 196 } |
| 201 | 197 |
| 202 IN_PROC_BROWSER_TEST_F(PolicyUITest, SendPolicyValues) { | 198 IN_PROC_BROWSER_TEST_F(PolicyUITest, SendPolicyValues) { |
| 203 // Verifies that policy values are sent to the UI and processed there | 199 // Verifies that policy values are sent to the UI and processed there |
| 204 // correctly by setting the values of four known and one unknown policy and | 200 // correctly by setting the values of four known and one unknown policy and |
| 205 // checking that the policy table contains the policy names, values and | 201 // checking that the policy table contains the policy names, values and |
| 206 // metadata in the correct order. | 202 // metadata in the correct order. |
| 207 policy::PolicyMap values; | 203 policy::PolicyMap values; |
| 208 std::map<std::string, std::string> expected_values; | 204 std::map<std::string, std::string> expected_values; |
| 209 | 205 |
| 210 // Set the values of four existing policies. | 206 // Set the values of four existing policies. |
| 211 base::ListValue* restore_on_startup_urls = new base::ListValue; | 207 base::ListValue* restore_on_startup_urls = new base::ListValue; |
| 212 restore_on_startup_urls->Append(new base::StringValue("aaa")); | 208 restore_on_startup_urls->Append(new base::StringValue("aaa")); |
| 213 restore_on_startup_urls->Append(new base::StringValue("bbb")); | 209 restore_on_startup_urls->Append(new base::StringValue("bbb")); |
| 214 restore_on_startup_urls->Append(new base::StringValue("ccc")); | 210 restore_on_startup_urls->Append(new base::StringValue("ccc")); |
| 215 values.Set(policy::key::kRestoreOnStartupURLs, | 211 values.Set(policy::key::kRestoreOnStartupURLs, |
| 216 policy::POLICY_LEVEL_MANDATORY, | 212 policy::POLICY_LEVEL_MANDATORY, |
| 217 policy::POLICY_SCOPE_USER, | 213 policy::POLICY_SCOPE_USER, |
| 218 policy::POLICY_SOURCE_CLOUD, | |
| 219 restore_on_startup_urls, | 214 restore_on_startup_urls, |
| 220 NULL); | 215 NULL); |
| 221 expected_values[policy::key::kRestoreOnStartupURLs] = "aaa,bbb,ccc"; | 216 expected_values[policy::key::kRestoreOnStartupURLs] = "aaa,bbb,ccc"; |
| 222 values.Set(policy::key::kHomepageLocation, | 217 values.Set(policy::key::kHomepageLocation, |
| 223 policy::POLICY_LEVEL_MANDATORY, | 218 policy::POLICY_LEVEL_MANDATORY, |
| 224 policy::POLICY_SCOPE_MACHINE, | 219 policy::POLICY_SCOPE_MACHINE, |
| 225 policy::POLICY_SOURCE_CLOUD, | |
| 226 new base::StringValue("http://google.com"), | 220 new base::StringValue("http://google.com"), |
| 227 NULL); | 221 NULL); |
| 228 expected_values[policy::key::kHomepageLocation] = "http://google.com"; | 222 expected_values[policy::key::kHomepageLocation] = "http://google.com"; |
| 229 values.Set(policy::key::kRestoreOnStartup, | 223 values.Set(policy::key::kRestoreOnStartup, |
| 230 policy::POLICY_LEVEL_RECOMMENDED, | 224 policy::POLICY_LEVEL_RECOMMENDED, |
| 231 policy::POLICY_SCOPE_USER, | 225 policy::POLICY_SCOPE_USER, |
| 232 policy::POLICY_SOURCE_CLOUD, | |
| 233 new base::FundamentalValue(4), | 226 new base::FundamentalValue(4), |
| 234 NULL); | 227 NULL); |
| 235 expected_values[policy::key::kRestoreOnStartup] = "4"; | 228 expected_values[policy::key::kRestoreOnStartup] = "4"; |
| 236 values.Set(policy::key::kShowHomeButton, | 229 values.Set(policy::key::kShowHomeButton, |
| 237 policy::POLICY_LEVEL_RECOMMENDED, | 230 policy::POLICY_LEVEL_RECOMMENDED, |
| 238 policy::POLICY_SCOPE_MACHINE, | 231 policy::POLICY_SCOPE_MACHINE, |
| 239 policy::POLICY_SOURCE_CLOUD, | |
| 240 new base::FundamentalValue(true), | 232 new base::FundamentalValue(true), |
| 241 NULL); | 233 NULL); |
| 242 expected_values[policy::key::kShowHomeButton] = "true"; | 234 expected_values[policy::key::kShowHomeButton] = "true"; |
| 243 // Set the value of a policy that does not exist. | 235 // Set the value of a policy that does not exist. |
| 244 const std::string kUnknownPolicy = "NoSuchThing"; | 236 const std::string kUnknownPolicy = "NoSuchThing"; |
| 245 values.Set(kUnknownPolicy, | 237 values.Set(kUnknownPolicy, |
| 246 policy::POLICY_LEVEL_MANDATORY, | 238 policy::POLICY_LEVEL_MANDATORY, |
| 247 policy::POLICY_SCOPE_USER, | 239 policy::POLICY_SCOPE_USER, |
| 248 policy::POLICY_SOURCE_PLATFORM, | |
| 249 new base::FundamentalValue(true), | 240 new base::FundamentalValue(true), |
| 250 NULL); | 241 NULL); |
| 251 expected_values[kUnknownPolicy] = "true"; | 242 expected_values[kUnknownPolicy] = "true"; |
| 252 UpdateProviderPolicy(values); | 243 UpdateProviderPolicy(values); |
| 253 | 244 |
| 254 // Expect that the policy table contains, in order: | 245 // Expect that the policy table contains, in order: |
| 255 // * All known policies whose value has been set, in alphabetical order. | 246 // * All known policies whose value has been set, in alphabetical order. |
| 256 // * The unknown policy. | 247 // * The unknown policy. |
| 257 // * All known policies whose value has not been set, in alphabetical order. | 248 // * All known policies whose value has not been set, in alphabetical order. |
| 258 std::vector<std::vector<std::string> > expected_policies; | 249 std::vector<std::vector<std::string> > expected_policies; |
| 259 size_t first_unset_position = 0; | 250 size_t first_unset_position = 0; |
| 260 policy::Schema chrome_schema = | 251 policy::Schema chrome_schema = |
| 261 policy::Schema::Wrap(policy::GetChromeSchemaData()); | 252 policy::Schema::Wrap(policy::GetChromeSchemaData()); |
| 262 ASSERT_TRUE(chrome_schema.valid()); | 253 ASSERT_TRUE(chrome_schema.valid()); |
| 263 for (policy::Schema::Iterator props = chrome_schema.GetPropertiesIterator(); | 254 for (policy::Schema::Iterator props = chrome_schema.GetPropertiesIterator(); |
| 264 !props.IsAtEnd(); props.Advance()) { | 255 !props.IsAtEnd(); props.Advance()) { |
| 265 std::map<std::string, std::string>::const_iterator it = | 256 std::map<std::string, std::string>::const_iterator it = |
| 266 expected_values.find(props.key()); | 257 expected_values.find(props.key()); |
| 267 const std::string value = | 258 const std::string value = |
| 268 it == expected_values.end() ? std::string() : it->second; | 259 it == expected_values.end() ? std::string() : it->second; |
| 269 const std::string source = | |
| 270 it == expected_values.end() ? std::string() : "Cloud"; | |
| 271 const policy::PolicyMap::Entry* metadata = values.Get(props.key()); | 260 const policy::PolicyMap::Entry* metadata = values.Get(props.key()); |
| 272 expected_policies.insert( | 261 expected_policies.insert( |
| 273 metadata ? expected_policies.begin() + first_unset_position++ : | 262 metadata ? expected_policies.begin() + first_unset_position++ : |
| 274 expected_policies.end(), | 263 expected_policies.end(), |
| 275 PopulateExpectedPolicy(props.key(), value, source, metadata, false)); | 264 PopulateExpectedPolicy(props.key(), value, metadata, false)); |
| 276 } | 265 } |
| 277 expected_policies.insert( | 266 expected_policies.insert( |
| 278 expected_policies.begin() + first_unset_position++, | 267 expected_policies.begin() + first_unset_position++, |
| 279 PopulateExpectedPolicy(kUnknownPolicy, | 268 PopulateExpectedPolicy(kUnknownPolicy, |
| 280 expected_values[kUnknownPolicy], | 269 expected_values[kUnknownPolicy], |
| 281 "Platform", | |
| 282 values.Get(kUnknownPolicy), | 270 values.Get(kUnknownPolicy), |
| 283 true)); | 271 true)); |
| 284 | 272 |
| 285 // Retrieve the contents of the policy table from the UI and verify that it | 273 // Retrieve the contents of the policy table from the UI and verify that it |
| 286 // matches the expectation. | 274 // matches the expectation. |
| 287 VerifyPolicies(expected_policies); | 275 VerifyPolicies(expected_policies); |
| 288 } | 276 } |
| 289 | 277 |
| 290 IN_PROC_BROWSER_TEST_F(PolicyUITest, ExtensionLoadAndSendPolicy) { | 278 IN_PROC_BROWSER_TEST_F(PolicyUITest, ExtensionLoadAndSendPolicy) { |
| 291 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIPolicyURL)); | 279 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIPolicyURL)); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 323 0); | 311 0); |
| 324 | 312 |
| 325 std::vector<std::vector<std::string>> expected_policies; | 313 std::vector<std::vector<std::string>> expected_policies; |
| 326 policy::Schema chrome_schema = | 314 policy::Schema chrome_schema = |
| 327 policy::Schema::Wrap(policy::GetChromeSchemaData()); | 315 policy::Schema::Wrap(policy::GetChromeSchemaData()); |
| 328 ASSERT_TRUE(chrome_schema.valid()); | 316 ASSERT_TRUE(chrome_schema.valid()); |
| 329 | 317 |
| 330 for (policy::Schema::Iterator it = chrome_schema.GetPropertiesIterator(); | 318 for (policy::Schema::Iterator it = chrome_schema.GetPropertiesIterator(); |
| 331 !it.IsAtEnd(); it.Advance()) { | 319 !it.IsAtEnd(); it.Advance()) { |
| 332 expected_policies.push_back( | 320 expected_policies.push_back( |
| 333 PopulateExpectedPolicy( | 321 PopulateExpectedPolicy(it.key(), std::string(), NULL, false)); |
| 334 it.key(), std::string(), std::string(), nullptr, false)); | |
| 335 } | 322 } |
| 336 // Add newly added policy to expected policy list. | 323 // Add newly added policy to expected policy list. |
| 337 expected_policies.push_back(PopulateExpectedPolicy( | 324 expected_policies.push_back(PopulateExpectedPolicy( |
| 338 newly_added_policy_name, std::string(), std::string(), nullptr, false)); | 325 newly_added_policy_name, std::string(), NULL, false)); |
| 339 | 326 |
| 340 // Verify if policy UI includes policy that extension have. | 327 // Verify if policy UI includes policy that extension have. |
| 341 VerifyPolicies(expected_policies); | 328 VerifyPolicies(expected_policies); |
| 342 } | 329 } |
| OLD | NEW |