OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 <queue> | 5 #include <queue> |
6 #include <utility> | 6 #include <utility> |
7 | 7 |
8 #include "base/macros.h" | 8 #include "base/macros.h" |
9 #include "base/memory/linked_ptr.h" | 9 #include "base/memory/linked_ptr.h" |
10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
(...skipping 27 matching lines...) Expand all Loading... |
38 : service_(service), provider_(provider) { | 38 : service_(service), provider_(provider) { |
39 CHECK(service_); | 39 CHECK(service_); |
40 CHECK(provider_); | 40 CHECK(provider_); |
41 service_->AddObserver(this); | 41 service_->AddObserver(this); |
42 } | 42 } |
43 | 43 |
44 ~PrefsChecker() override { service_->RemoveObserver(this); } | 44 ~PrefsChecker() override { service_->RemoveObserver(this); } |
45 | 45 |
46 // OwnerSettingsService::Observer implementation: | 46 // OwnerSettingsService::Observer implementation: |
47 void OnSignedPolicyStored(bool success) override { | 47 void OnSignedPolicyStored(bool success) override { |
48 if (service_->has_pending_changes()) | 48 if (service_->HasPendingChanges()) |
49 return; | 49 return; |
50 | 50 |
51 while (!set_requests_.empty()) { | 51 while (!set_requests_.empty()) { |
52 SetRequest request = set_requests_.front(); | 52 SetRequest request = set_requests_.front(); |
53 set_requests_.pop(); | 53 set_requests_.pop(); |
54 const base::Value* value = provider_->Get(request.first); | 54 const base::Value* value = provider_->Get(request.first); |
55 ASSERT_TRUE(request.second->Equals(value)); | 55 ASSERT_TRUE(request.second->Equals(value)); |
56 } | 56 } |
57 loop_.Quit(); | 57 loop_.Quit(); |
58 } | 58 } |
(...skipping 12 matching lines...) Expand all Loading... |
71 OwnerSettingsServiceChromeOS* service_; | 71 OwnerSettingsServiceChromeOS* service_; |
72 DeviceSettingsProvider* provider_; | 72 DeviceSettingsProvider* provider_; |
73 base::RunLoop loop_; | 73 base::RunLoop loop_; |
74 | 74 |
75 typedef std::pair<std::string, linked_ptr<base::Value>> SetRequest; | 75 typedef std::pair<std::string, linked_ptr<base::Value>> SetRequest; |
76 std::queue<SetRequest> set_requests_; | 76 std::queue<SetRequest> set_requests_; |
77 | 77 |
78 DISALLOW_COPY_AND_ASSIGN(PrefsChecker); | 78 DISALLOW_COPY_AND_ASSIGN(PrefsChecker); |
79 }; | 79 }; |
80 | 80 |
| 81 bool FindInListValue(const std::string& needle, const base::Value* haystack) { |
| 82 const base::ListValue* list; |
| 83 if (!haystack->GetAsList(&list)) |
| 84 return false; |
| 85 return list->end() != list->Find(base::StringValue(needle)); |
| 86 } |
| 87 |
81 } // namespace | 88 } // namespace |
82 | 89 |
83 class OwnerSettingsServiceChromeOSTest : public DeviceSettingsTestBase { | 90 class OwnerSettingsServiceChromeOSTest : public DeviceSettingsTestBase { |
84 public: | 91 public: |
85 OwnerSettingsServiceChromeOSTest() | 92 OwnerSettingsServiceChromeOSTest() |
86 : service_(nullptr), | 93 : service_(nullptr), |
87 local_state_(TestingBrowserProcess::GetGlobal()), | 94 local_state_(TestingBrowserProcess::GetGlobal()), |
88 user_data_dir_override_(chrome::DIR_USER_DATA), | 95 user_data_dir_override_(chrome::DIR_USER_DATA), |
89 management_settings_set_(false) {} | 96 management_settings_set_(false) {} |
90 | 97 |
(...skipping 25 matching lines...) Expand all Loading... |
116 PrefsChecker checker(service, provider_.get()); | 123 PrefsChecker checker(service, provider_.get()); |
117 checker.Set(setting, in_value); | 124 checker.Set(setting, in_value); |
118 FlushDeviceSettings(); | 125 FlushDeviceSettings(); |
119 checker.Wait(); | 126 checker.Wait(); |
120 } | 127 } |
121 | 128 |
122 void OnManagementSettingsSet(bool success) { | 129 void OnManagementSettingsSet(bool success) { |
123 management_settings_set_ = success; | 130 management_settings_set_ = success; |
124 } | 131 } |
125 | 132 |
| 133 protected: |
126 OwnerSettingsServiceChromeOS* service_; | 134 OwnerSettingsServiceChromeOS* service_; |
127 ScopedTestingLocalState local_state_; | 135 ScopedTestingLocalState local_state_; |
128 scoped_ptr<DeviceSettingsProvider> provider_; | 136 scoped_ptr<DeviceSettingsProvider> provider_; |
129 base::ScopedPathOverride user_data_dir_override_; | 137 base::ScopedPathOverride user_data_dir_override_; |
130 bool management_settings_set_; | 138 bool management_settings_set_; |
131 | 139 |
132 private: | 140 private: |
133 DISALLOW_COPY_AND_ASSIGN(OwnerSettingsServiceChromeOSTest); | 141 DISALLOW_COPY_AND_ASSIGN(OwnerSettingsServiceChromeOSTest); |
134 }; | 142 }; |
135 | 143 |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
287 // Check that the loaded policy_data contains the expected values. | 295 // Check that the loaded policy_data contains the expected values. |
288 const em::PolicyData* policy_data = device_settings_service_.policy_data(); | 296 const em::PolicyData* policy_data = device_settings_service_.policy_data(); |
289 EXPECT_EQ(policy::dm_protocol::kChromeDevicePolicyType, | 297 EXPECT_EQ(policy::dm_protocol::kChromeDevicePolicyType, |
290 policy_data->policy_type()); | 298 policy_data->policy_type()); |
291 EXPECT_EQ(device_settings_service_.GetUsername(), policy_data->username()); | 299 EXPECT_EQ(device_settings_service_.GetUsername(), policy_data->username()); |
292 EXPECT_EQ(em::PolicyData::CONSUMER_MANAGED, policy_data->management_mode()); | 300 EXPECT_EQ(em::PolicyData::CONSUMER_MANAGED, policy_data->management_mode()); |
293 EXPECT_EQ("fake_request_token", policy_data->request_token()); | 301 EXPECT_EQ("fake_request_token", policy_data->request_token()); |
294 EXPECT_EQ("fake_device_id", policy_data->device_id()); | 302 EXPECT_EQ("fake_device_id", policy_data->device_id()); |
295 } | 303 } |
296 | 304 |
| 305 TEST_F(OwnerSettingsServiceChromeOSTest, ForceWhitelist) { |
| 306 EXPECT_FALSE(FindInListValue(device_policy_.policy_data().username(), |
| 307 provider_->Get(kAccountsPrefUsers))); |
| 308 // Force a settings write. |
| 309 TestSingleSet(service_, kReleaseChannel, base::StringValue("dev-channel")); |
| 310 EXPECT_TRUE(FindInListValue(device_policy_.policy_data().username(), |
| 311 provider_->Get(kAccountsPrefUsers))); |
| 312 } |
| 313 |
297 class OwnerSettingsServiceChromeOSNoOwnerTest | 314 class OwnerSettingsServiceChromeOSNoOwnerTest |
298 : public OwnerSettingsServiceChromeOSTest { | 315 : public OwnerSettingsServiceChromeOSTest { |
299 public: | 316 public: |
300 OwnerSettingsServiceChromeOSNoOwnerTest() {} | 317 OwnerSettingsServiceChromeOSNoOwnerTest() {} |
301 ~OwnerSettingsServiceChromeOSNoOwnerTest() override {} | 318 ~OwnerSettingsServiceChromeOSNoOwnerTest() override {} |
302 | 319 |
303 void SetUp() override { | 320 void SetUp() override { |
304 DeviceSettingsTestBase::SetUp(); | 321 DeviceSettingsTestBase::SetUp(); |
305 provider_.reset(new DeviceSettingsProvider(base::Bind(&OnPrefChanged), | 322 provider_.reset(new DeviceSettingsProvider(base::Bind(&OnPrefChanged), |
306 &device_settings_service_)); | 323 &device_settings_service_)); |
307 FlushDeviceSettings(); | 324 FlushDeviceSettings(); |
308 service_ = OwnerSettingsServiceChromeOSFactory::GetForBrowserContext( | 325 service_ = OwnerSettingsServiceChromeOSFactory::GetForBrowserContext( |
309 profile_.get()); | 326 profile_.get()); |
310 ASSERT_TRUE(service_); | 327 ASSERT_TRUE(service_); |
311 ASSERT_FALSE(service_->IsOwner()); | 328 ASSERT_FALSE(service_->IsOwner()); |
312 } | 329 } |
313 | 330 |
314 void TearDown() override { DeviceSettingsTestBase::TearDown(); } | 331 void TearDown() override { DeviceSettingsTestBase::TearDown(); } |
315 | 332 |
316 private: | 333 private: |
317 DISALLOW_COPY_AND_ASSIGN(OwnerSettingsServiceChromeOSNoOwnerTest); | 334 DISALLOW_COPY_AND_ASSIGN(OwnerSettingsServiceChromeOSNoOwnerTest); |
318 }; | 335 }; |
319 | 336 |
320 TEST_F(OwnerSettingsServiceChromeOSNoOwnerTest, SingleSetTest) { | 337 TEST_F(OwnerSettingsServiceChromeOSNoOwnerTest, SingleSetTest) { |
321 ASSERT_FALSE(service_->SetBoolean(kAccountsPrefAllowGuest, false)); | 338 ASSERT_FALSE(service_->SetBoolean(kAccountsPrefAllowGuest, false)); |
322 } | 339 } |
323 | 340 |
| 341 TEST_F(OwnerSettingsServiceChromeOSNoOwnerTest, TakeOwnershipForceWhitelist) { |
| 342 EXPECT_FALSE(FindInListValue(device_policy_.policy_data().username(), |
| 343 provider_->Get(kAccountsPrefUsers))); |
| 344 owner_key_util_->SetPrivateKey(device_policy_.GetSigningKey()); |
| 345 InitOwner(device_policy_.policy_data().username(), true); |
| 346 ReloadDeviceSettings(); |
| 347 ASSERT_TRUE(service_->IsOwner()); |
| 348 |
| 349 EXPECT_TRUE(FindInListValue(device_policy_.policy_data().username(), |
| 350 provider_->Get(kAccountsPrefUsers))); |
| 351 } |
| 352 |
324 } // namespace chromeos | 353 } // namespace chromeos |
OLD | NEW |