Chromium Code Reviews| 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 "chrome/browser/policy/user_policy_cache.h" | 5 #include "chrome/browser/policy/user_policy_cache.h" |
| 6 | 6 |
| 7 #include <limits> | 7 #include <limits> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/bind.h" | |
| 11 #include "base/callback.h" | |
| 10 #include "base/file_util.h" | 12 #include "base/file_util.h" |
| 11 #include "base/message_loop.h" | 13 #include "base/message_loop.h" |
| 12 #include "base/scoped_temp_dir.h" | 14 #include "base/scoped_temp_dir.h" |
| 13 #include "base/values.h" | 15 #include "base/values.h" |
| 14 #include "chrome/browser/policy/proto/cloud_policy.pb.h" | 16 #include "chrome/browser/policy/proto/cloud_policy.pb.h" |
| 15 #include "chrome/browser/policy/proto/device_management_backend.pb.h" | 17 #include "chrome/browser/policy/proto/device_management_backend.pb.h" |
| 16 #include "chrome/browser/policy/proto/device_management_local.pb.h" | 18 #include "chrome/browser/policy/proto/device_management_local.pb.h" |
| 17 #include "chrome/browser/policy/proto/old_generic_format.pb.h" | 19 #include "chrome/browser/policy/proto/old_generic_format.pb.h" |
| 18 #include "content/test/test_browser_thread.h" | 20 #include "content/test/test_browser_thread.h" |
| 19 #include "policy/policy_constants.h" | 21 #include "policy/policy_constants.h" |
| 20 #include "testing/gmock/include/gmock/gmock.h" | 22 #include "testing/gmock/include/gmock/gmock.h" |
| 21 #include "testing/gtest/include/gtest/gtest.h" | 23 #include "testing/gtest/include/gtest/gtest.h" |
| 22 | 24 |
| 23 using content::BrowserThread; | 25 using content::BrowserThread; |
| 24 using testing::_; | 26 using testing::_; |
| 25 | 27 |
| 26 namespace em = enterprise_management; | 28 namespace em = enterprise_management; |
| 27 | 29 |
| 30 namespace { | |
| 31 | |
| 32 // Used to verify if a callback was invoked or not. | |
| 33 void SetTrue(bool* flag) { | |
|
Mattias Nissler (ping if slow)
2012/02/16 10:24:11
Use a MOCK_METHOD on UserPolicyCacheTest instead?
| |
| 34 *flag = true; | |
| 35 } | |
| 36 | |
| 37 } // namespace | |
| 38 | |
| 28 namespace policy { | 39 namespace policy { |
| 29 | 40 |
| 30 // Decodes a CloudPolicySettings object into a PolicyMap. | 41 // Decodes a CloudPolicySettings object into a PolicyMap. |
| 31 // The implementation is generated code in policy/cloud_policy_generated.cc. | 42 // The implementation is generated code in policy/cloud_policy_generated.cc. |
| 32 void DecodePolicy(const em::CloudPolicySettings& policy, | 43 void DecodePolicy(const em::CloudPolicySettings& policy, |
| 33 PolicyMap* policies); | 44 PolicyMap* policies); |
| 34 | 45 |
| 35 // The implementations of these methods are in cloud_policy_generated.cc. | 46 // The implementations of these methods are in cloud_policy_generated.cc. |
| 36 Value* DecodeIntegerValue(google::protobuf::int64 value); | 47 Value* DecodeIntegerValue(google::protobuf::int64 value); |
| 37 ListValue* DecodeStringList(const em::StringList& string_list); | 48 ListValue* DecodeStringList(const em::StringList& string_list); |
| (...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 198 string_list.add_entries("ponies"); | 209 string_list.add_entries("ponies"); |
| 199 string_list.add_entries("more ponies"); | 210 string_list.add_entries("more ponies"); |
| 200 scoped_ptr<ListValue> decoded(DecodeStringList(string_list)); | 211 scoped_ptr<ListValue> decoded(DecodeStringList(string_list)); |
| 201 ListValue expected; | 212 ListValue expected; |
| 202 expected.Append(Value::CreateStringValue("ponies")); | 213 expected.Append(Value::CreateStringValue("ponies")); |
| 203 expected.Append(Value::CreateStringValue("more ponies")); | 214 expected.Append(Value::CreateStringValue("more ponies")); |
| 204 EXPECT_TRUE(decoded->Equals(&expected)); | 215 EXPECT_TRUE(decoded->Equals(&expected)); |
| 205 } | 216 } |
| 206 | 217 |
| 207 TEST_F(UserPolicyCacheTest, Empty) { | 218 TEST_F(UserPolicyCacheTest, Empty) { |
| 208 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */); | 219 UserPolicyCache cache(test_file(), false, base::Closure()); |
| 209 PolicyMap empty; | 220 PolicyMap empty; |
| 210 EXPECT_TRUE(empty.Equals(*cache.policy())); | 221 EXPECT_TRUE(empty.Equals(*cache.policy())); |
| 211 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); | 222 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); |
| 212 } | 223 } |
| 213 | 224 |
| 214 TEST_F(UserPolicyCacheTest, LoadNoFile) { | 225 TEST_F(UserPolicyCacheTest, LoadNoFile) { |
| 215 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */); | 226 UserPolicyCache cache(test_file(), false, base::Closure()); |
| 216 cache.Load(); | 227 cache.Load(); |
| 217 loop_.RunAllPending(); | 228 loop_.RunAllPending(); |
| 218 PolicyMap empty; | 229 PolicyMap empty; |
| 219 EXPECT_TRUE(empty.Equals(*cache.policy())); | 230 EXPECT_TRUE(empty.Equals(*cache.policy())); |
| 220 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); | 231 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); |
| 221 } | 232 } |
| 222 | 233 |
| 223 TEST_F(UserPolicyCacheTest, RejectFuture) { | 234 TEST_F(UserPolicyCacheTest, RejectFuture) { |
| 224 scoped_ptr<em::PolicyFetchResponse> policy_response( | 235 scoped_ptr<em::PolicyFetchResponse> policy_response( |
| 225 CreateHomepagePolicy("", base::Time::NowFromSystemTime() + | 236 CreateHomepagePolicy("", base::Time::NowFromSystemTime() + |
| 226 base::TimeDelta::FromMinutes(5), | 237 base::TimeDelta::FromMinutes(5), |
| 227 em::PolicyOptions::MANDATORY)); | 238 em::PolicyOptions::MANDATORY)); |
| 228 WritePolicy(*policy_response); | 239 WritePolicy(*policy_response); |
| 229 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */); | 240 UserPolicyCache cache(test_file(), false, base::Closure()); |
| 230 cache.Load(); | 241 cache.Load(); |
| 231 loop_.RunAllPending(); | 242 loop_.RunAllPending(); |
| 232 PolicyMap empty; | 243 PolicyMap empty; |
| 233 EXPECT_TRUE(empty.Equals(*cache.policy())); | 244 EXPECT_TRUE(empty.Equals(*cache.policy())); |
| 234 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); | 245 EXPECT_EQ(base::Time(), cache.last_policy_refresh_time()); |
| 235 } | 246 } |
| 236 | 247 |
| 237 TEST_F(UserPolicyCacheTest, LoadWithFile) { | 248 TEST_F(UserPolicyCacheTest, LoadWithFile) { |
| 238 scoped_ptr<em::PolicyFetchResponse> policy_response( | 249 scoped_ptr<em::PolicyFetchResponse> policy_response( |
| 239 CreateHomepagePolicy("", base::Time::NowFromSystemTime(), | 250 CreateHomepagePolicy("", base::Time::NowFromSystemTime(), |
| 240 em::PolicyOptions::MANDATORY)); | 251 em::PolicyOptions::MANDATORY)); |
| 241 WritePolicy(*policy_response); | 252 WritePolicy(*policy_response); |
| 242 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */); | 253 UserPolicyCache cache(test_file(), false, base::Closure()); |
| 243 cache.Load(); | 254 cache.Load(); |
| 244 loop_.RunAllPending(); | 255 loop_.RunAllPending(); |
| 245 PolicyMap empty; | 256 PolicyMap empty; |
| 246 EXPECT_TRUE(empty.Equals(*cache.policy())); | 257 EXPECT_TRUE(empty.Equals(*cache.policy())); |
| 247 EXPECT_NE(base::Time(), cache.last_policy_refresh_time()); | 258 EXPECT_NE(base::Time(), cache.last_policy_refresh_time()); |
| 248 EXPECT_GE(base::Time::Now(), cache.last_policy_refresh_time()); | 259 EXPECT_GE(base::Time::Now(), cache.last_policy_refresh_time()); |
| 249 } | 260 } |
| 250 | 261 |
| 251 TEST_F(UserPolicyCacheTest, LoadWithData) { | 262 TEST_F(UserPolicyCacheTest, LoadWithData) { |
| 252 scoped_ptr<em::PolicyFetchResponse> policy( | 263 scoped_ptr<em::PolicyFetchResponse> policy( |
| 253 CreateHomepagePolicy("http://www.example.com", | 264 CreateHomepagePolicy("http://www.example.com", |
| 254 base::Time::NowFromSystemTime(), | 265 base::Time::NowFromSystemTime(), |
| 255 em::PolicyOptions::MANDATORY)); | 266 em::PolicyOptions::MANDATORY)); |
| 256 WritePolicy(*policy); | 267 WritePolicy(*policy); |
| 257 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */); | 268 UserPolicyCache cache(test_file(), false, base::Closure()); |
| 258 cache.Load(); | 269 cache.Load(); |
| 259 loop_.RunAllPending(); | 270 loop_.RunAllPending(); |
| 260 PolicyMap expected; | 271 PolicyMap expected; |
| 261 expected.Set(key::kHomepageLocation, | 272 expected.Set(key::kHomepageLocation, |
| 262 POLICY_LEVEL_MANDATORY, | 273 POLICY_LEVEL_MANDATORY, |
| 263 POLICY_SCOPE_USER, | 274 POLICY_SCOPE_USER, |
| 264 Value::CreateStringValue("http://www.example.com")); | 275 Value::CreateStringValue("http://www.example.com")); |
| 265 EXPECT_TRUE(expected.Equals(*cache.policy())); | 276 EXPECT_TRUE(expected.Equals(*cache.policy())); |
| 266 } | 277 } |
| 267 | 278 |
| 268 TEST_F(UserPolicyCacheTest, SetPolicy) { | 279 TEST_F(UserPolicyCacheTest, SetPolicy) { |
| 269 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */); | 280 UserPolicyCache cache(test_file(), false, base::Closure()); |
| 270 em::PolicyFetchResponse* policy = | 281 em::PolicyFetchResponse* policy = |
| 271 CreateHomepagePolicy("http://www.example.com", | 282 CreateHomepagePolicy("http://www.example.com", |
| 272 base::Time::NowFromSystemTime(), | 283 base::Time::NowFromSystemTime(), |
| 273 em::PolicyOptions::MANDATORY); | 284 em::PolicyOptions::MANDATORY); |
| 274 SetPolicy(&cache, policy); | 285 SetPolicy(&cache, policy); |
| 275 em::PolicyFetchResponse* policy2 = | 286 em::PolicyFetchResponse* policy2 = |
| 276 CreateHomepagePolicy("http://www.example.com", | 287 CreateHomepagePolicy("http://www.example.com", |
| 277 base::Time::NowFromSystemTime(), | 288 base::Time::NowFromSystemTime(), |
| 278 em::PolicyOptions::MANDATORY); | 289 em::PolicyOptions::MANDATORY); |
| 279 SetPolicy(&cache, policy2); | 290 SetPolicy(&cache, policy2); |
| 280 PolicyMap expected; | 291 PolicyMap expected; |
| 281 expected.Set(key::kHomepageLocation, | 292 expected.Set(key::kHomepageLocation, |
| 282 POLICY_LEVEL_MANDATORY, | 293 POLICY_LEVEL_MANDATORY, |
| 283 POLICY_SCOPE_USER, | 294 POLICY_SCOPE_USER, |
| 284 Value::CreateStringValue("http://www.example.com")); | 295 Value::CreateStringValue("http://www.example.com")); |
| 285 EXPECT_TRUE(expected.Equals(*cache.policy())); | 296 EXPECT_TRUE(expected.Equals(*cache.policy())); |
| 286 policy = CreateHomepagePolicy("http://www.example.com", | 297 policy = CreateHomepagePolicy("http://www.example.com", |
| 287 base::Time::NowFromSystemTime(), | 298 base::Time::NowFromSystemTime(), |
| 288 em::PolicyOptions::RECOMMENDED); | 299 em::PolicyOptions::RECOMMENDED); |
| 289 SetPolicy(&cache, policy); | 300 SetPolicy(&cache, policy); |
| 290 expected.Set(key::kHomepageLocation, | 301 expected.Set(key::kHomepageLocation, |
| 291 POLICY_LEVEL_RECOMMENDED, | 302 POLICY_LEVEL_RECOMMENDED, |
| 292 POLICY_SCOPE_USER, | 303 POLICY_SCOPE_USER, |
| 293 Value::CreateStringValue("http://www.example.com")); | 304 Value::CreateStringValue("http://www.example.com")); |
| 294 EXPECT_TRUE(expected.Equals(*cache.policy())); | 305 EXPECT_TRUE(expected.Equals(*cache.policy())); |
| 295 } | 306 } |
| 296 | 307 |
| 297 TEST_F(UserPolicyCacheTest, ResetPolicy) { | 308 TEST_F(UserPolicyCacheTest, ResetPolicy) { |
| 298 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */); | 309 UserPolicyCache cache(test_file(), false, base::Closure()); |
| 299 | 310 |
| 300 em::PolicyFetchResponse* policy = | 311 em::PolicyFetchResponse* policy = |
| 301 CreateHomepagePolicy("http://www.example.com", | 312 CreateHomepagePolicy("http://www.example.com", |
| 302 base::Time::NowFromSystemTime(), | 313 base::Time::NowFromSystemTime(), |
| 303 em::PolicyOptions::MANDATORY); | 314 em::PolicyOptions::MANDATORY); |
| 304 SetPolicy(&cache, policy); | 315 SetPolicy(&cache, policy); |
| 305 PolicyMap expected; | 316 PolicyMap expected; |
| 306 expected.Set(key::kHomepageLocation, | 317 expected.Set(key::kHomepageLocation, |
| 307 POLICY_LEVEL_MANDATORY, | 318 POLICY_LEVEL_MANDATORY, |
| 308 POLICY_SCOPE_USER, | 319 POLICY_SCOPE_USER, |
| 309 Value::CreateStringValue("http://www.example.com")); | 320 Value::CreateStringValue("http://www.example.com")); |
| 310 EXPECT_TRUE(expected.Equals(*cache.policy())); | 321 EXPECT_TRUE(expected.Equals(*cache.policy())); |
| 311 | 322 |
| 312 em::PolicyFetchResponse* empty_policy = | 323 em::PolicyFetchResponse* empty_policy = |
| 313 CreateHomepagePolicy("", base::Time::NowFromSystemTime(), | 324 CreateHomepagePolicy("", base::Time::NowFromSystemTime(), |
| 314 em::PolicyOptions::MANDATORY); | 325 em::PolicyOptions::MANDATORY); |
| 315 SetPolicy(&cache, empty_policy); | 326 SetPolicy(&cache, empty_policy); |
| 316 PolicyMap empty; | 327 PolicyMap empty; |
| 317 EXPECT_TRUE(empty.Equals(*cache.policy())); | 328 EXPECT_TRUE(empty.Equals(*cache.policy())); |
| 318 } | 329 } |
| 319 | 330 |
| 320 TEST_F(UserPolicyCacheTest, PersistPolicy) { | 331 TEST_F(UserPolicyCacheTest, PersistPolicy) { |
| 321 { | 332 { |
| 322 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */); | 333 UserPolicyCache cache(test_file(), false, base::Closure()); |
| 323 scoped_ptr<em::PolicyFetchResponse> policy( | 334 scoped_ptr<em::PolicyFetchResponse> policy( |
| 324 CreateHomepagePolicy("http://www.example.com", | 335 CreateHomepagePolicy("http://www.example.com", |
| 325 base::Time::NowFromSystemTime(), | 336 base::Time::NowFromSystemTime(), |
| 326 em::PolicyOptions::MANDATORY)); | 337 em::PolicyOptions::MANDATORY)); |
| 327 cache.SetPolicy(*policy); | 338 cache.SetPolicy(*policy); |
| 328 } | 339 } |
| 329 | 340 |
| 330 loop_.RunAllPending(); | 341 loop_.RunAllPending(); |
| 331 | 342 |
| 332 EXPECT_TRUE(file_util::PathExists(test_file())); | 343 EXPECT_TRUE(file_util::PathExists(test_file())); |
| 333 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */); | 344 UserPolicyCache cache(test_file(), false, base::Closure()); |
| 334 cache.Load(); | 345 cache.Load(); |
| 335 loop_.RunAllPending(); | 346 loop_.RunAllPending(); |
| 336 PolicyMap expected; | 347 PolicyMap expected; |
| 337 expected.Set(key::kHomepageLocation, | 348 expected.Set(key::kHomepageLocation, |
| 338 POLICY_LEVEL_MANDATORY, | 349 POLICY_LEVEL_MANDATORY, |
| 339 POLICY_SCOPE_USER, | 350 POLICY_SCOPE_USER, |
| 340 Value::CreateStringValue("http://www.example.com")); | 351 Value::CreateStringValue("http://www.example.com")); |
| 341 EXPECT_TRUE(expected.Equals(*cache.policy())); | 352 EXPECT_TRUE(expected.Equals(*cache.policy())); |
| 342 } | 353 } |
| 343 | 354 |
| 344 TEST_F(UserPolicyCacheTest, FreshPolicyOverride) { | 355 TEST_F(UserPolicyCacheTest, FreshPolicyOverride) { |
| 345 scoped_ptr<em::PolicyFetchResponse> policy( | 356 scoped_ptr<em::PolicyFetchResponse> policy( |
| 346 CreateHomepagePolicy("http://www.example.com", | 357 CreateHomepagePolicy("http://www.example.com", |
| 347 base::Time::NowFromSystemTime(), | 358 base::Time::NowFromSystemTime(), |
| 348 em::PolicyOptions::MANDATORY)); | 359 em::PolicyOptions::MANDATORY)); |
| 349 WritePolicy(*policy); | 360 WritePolicy(*policy); |
| 350 | 361 |
| 351 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */); | 362 UserPolicyCache cache(test_file(), false, base::Closure()); |
| 352 em::PolicyFetchResponse* updated_policy = | 363 em::PolicyFetchResponse* updated_policy = |
| 353 CreateHomepagePolicy("http://www.chromium.org", | 364 CreateHomepagePolicy("http://www.chromium.org", |
| 354 base::Time::NowFromSystemTime(), | 365 base::Time::NowFromSystemTime(), |
| 355 em::PolicyOptions::MANDATORY); | 366 em::PolicyOptions::MANDATORY); |
| 356 SetPolicy(&cache, updated_policy); | 367 SetPolicy(&cache, updated_policy); |
| 357 | 368 |
| 358 cache.Load(); | 369 cache.Load(); |
| 359 loop_.RunAllPending(); | 370 loop_.RunAllPending(); |
| 360 PolicyMap expected; | 371 PolicyMap expected; |
| 361 expected.Set(key::kHomepageLocation, | 372 expected.Set(key::kHomepageLocation, |
| 362 POLICY_LEVEL_MANDATORY, | 373 POLICY_LEVEL_MANDATORY, |
| 363 POLICY_SCOPE_USER, | 374 POLICY_SCOPE_USER, |
| 364 Value::CreateStringValue("http://www.chromium.org")); | 375 Value::CreateStringValue("http://www.chromium.org")); |
| 365 EXPECT_TRUE(expected.Equals(*cache.policy())); | 376 EXPECT_TRUE(expected.Equals(*cache.policy())); |
| 366 } | 377 } |
| 367 | 378 |
| 368 TEST_F(UserPolicyCacheTest, SetReady) { | 379 TEST_F(UserPolicyCacheTest, SetReady) { |
| 369 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */); | 380 UserPolicyCache cache(test_file(), false, base::Closure()); |
| 370 cache.AddObserver(&observer_); | 381 cache.AddObserver(&observer_); |
| 371 scoped_ptr<em::PolicyFetchResponse> policy( | 382 scoped_ptr<em::PolicyFetchResponse> policy( |
| 372 CreateHomepagePolicy("http://www.example.com", | 383 CreateHomepagePolicy("http://www.example.com", |
| 373 base::Time::NowFromSystemTime(), | 384 base::Time::NowFromSystemTime(), |
| 374 em::PolicyOptions::MANDATORY)); | 385 em::PolicyOptions::MANDATORY)); |
| 375 EXPECT_CALL(observer_, OnCacheUpdate(_)).Times(0); | 386 EXPECT_CALL(observer_, OnCacheUpdate(_)).Times(0); |
| 376 cache.SetPolicy(*policy); | 387 cache.SetPolicy(*policy); |
| 377 testing::Mock::VerifyAndClearExpectations(&observer_); | 388 testing::Mock::VerifyAndClearExpectations(&observer_); |
| 378 | 389 |
| 379 // Switching the cache to ready should send a notification. | 390 // Switching the cache to ready should send a notification. |
| 380 EXPECT_CALL(observer_, OnCacheUpdate(_)).Times(1); | 391 EXPECT_CALL(observer_, OnCacheUpdate(_)).Times(1); |
| 381 SetReady(&cache); | 392 SetReady(&cache); |
| 382 cache.RemoveObserver(&observer_); | 393 cache.RemoveObserver(&observer_); |
| 383 } | 394 } |
| 384 | 395 |
| 385 // Test case for the temporary support for GenericNamedValues in the | 396 // Test case for the temporary support for GenericNamedValues in the |
| 386 // CloudPolicySettings protobuf. Can be removed when this support is no longer | 397 // CloudPolicySettings protobuf. Can be removed when this support is no longer |
| 387 // required. | 398 // required. |
| 388 TEST_F(UserPolicyCacheTest, OldStylePolicy) { | 399 TEST_F(UserPolicyCacheTest, OldStylePolicy) { |
| 389 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */); | 400 UserPolicyCache cache(test_file(), false, base::Closure()); |
| 390 em::PolicyFetchResponse* policy = new em::PolicyFetchResponse(); | 401 em::PolicyFetchResponse* policy = new em::PolicyFetchResponse(); |
| 391 em::PolicyData signed_response; | 402 em::PolicyData signed_response; |
| 392 em::LegacyChromeSettingsProto settings; | 403 em::LegacyChromeSettingsProto settings; |
| 393 em::GenericNamedValue* named_value = settings.add_named_value(); | 404 em::GenericNamedValue* named_value = settings.add_named_value(); |
| 394 named_value->set_name("HomepageLocation"); | 405 named_value->set_name("HomepageLocation"); |
| 395 em::GenericValue* value_container = named_value->mutable_value(); | 406 em::GenericValue* value_container = named_value->mutable_value(); |
| 396 value_container->set_value_type(em::GenericValue::VALUE_TYPE_STRING); | 407 value_container->set_value_type(em::GenericValue::VALUE_TYPE_STRING); |
| 397 value_container->set_string_value("http://www.example.com"); | 408 value_container->set_string_value("http://www.example.com"); |
| 398 EXPECT_TRUE( | 409 EXPECT_TRUE( |
| 399 settings.SerializeToString(signed_response.mutable_policy_value())); | 410 settings.SerializeToString(signed_response.mutable_policy_value())); |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 416 em::PolicyOptions::RECOMMENDED); | 427 em::PolicyOptions::RECOMMENDED); |
| 417 expected.Set(key::kHomepageLocation, | 428 expected.Set(key::kHomepageLocation, |
| 418 POLICY_LEVEL_RECOMMENDED, | 429 POLICY_LEVEL_RECOMMENDED, |
| 419 POLICY_SCOPE_USER, | 430 POLICY_SCOPE_USER, |
| 420 Value::CreateStringValue("http://www.example.com")); | 431 Value::CreateStringValue("http://www.example.com")); |
| 421 SetPolicy(&cache, policy); | 432 SetPolicy(&cache, policy); |
| 422 EXPECT_TRUE(expected.Equals(*cache.policy())); | 433 EXPECT_TRUE(expected.Equals(*cache.policy())); |
| 423 } | 434 } |
| 424 | 435 |
| 425 TEST_F(UserPolicyCacheTest, CheckReadyNoWaiting) { | 436 TEST_F(UserPolicyCacheTest, CheckReadyNoWaiting) { |
| 426 UserPolicyCache cache(test_file(), false /* wait_for_policy_fetch */); | 437 UserPolicyCache cache(test_file(), false, base::Closure()); |
| 427 EXPECT_FALSE(cache.IsReady()); | 438 EXPECT_FALSE(cache.IsReady()); |
| 428 cache.Load(); | 439 cache.Load(); |
| 429 loop_.RunAllPending(); | 440 loop_.RunAllPending(); |
| 430 EXPECT_TRUE(cache.IsReady()); | 441 EXPECT_TRUE(cache.IsReady()); |
| 431 } | 442 } |
| 432 | 443 |
| 433 TEST_F(UserPolicyCacheTest, CheckReadyWaitForFetch) { | 444 TEST_F(UserPolicyCacheTest, CheckReadyWaitForFetch) { |
| 434 UserPolicyCache cache(test_file(), true /* wait_for_policy_fetch */); | 445 bool ready_callback_was_invoked_ = false; |
| 446 UserPolicyCache cache(test_file(), | |
| 447 true, | |
| 448 base::Bind(SetTrue, &ready_callback_was_invoked_)); | |
| 435 EXPECT_FALSE(cache.IsReady()); | 449 EXPECT_FALSE(cache.IsReady()); |
| 450 EXPECT_FALSE(ready_callback_was_invoked_); | |
| 436 cache.Load(); | 451 cache.Load(); |
| 437 loop_.RunAllPending(); | 452 loop_.RunAllPending(); |
| 438 EXPECT_FALSE(cache.IsReady()); | 453 EXPECT_FALSE(cache.IsReady()); |
| 454 EXPECT_FALSE(ready_callback_was_invoked_); | |
| 439 cache.SetFetchingDone(); | 455 cache.SetFetchingDone(); |
| 440 EXPECT_TRUE(cache.IsReady()); | 456 EXPECT_TRUE(cache.IsReady()); |
| 457 EXPECT_TRUE(ready_callback_was_invoked_); | |
| 441 } | 458 } |
| 442 | 459 |
| 443 TEST_F(UserPolicyCacheTest, CheckReadyWaitForDisk) { | 460 TEST_F(UserPolicyCacheTest, CheckReadyWaitForDisk) { |
| 444 UserPolicyCache cache(test_file(), true /* wait_for_policy_fetch */); | 461 bool ready_callback_was_invoked_ = false; |
| 462 UserPolicyCache cache(test_file(), | |
| 463 true, | |
| 464 base::Bind(SetTrue, &ready_callback_was_invoked_)); | |
| 445 EXPECT_FALSE(cache.IsReady()); | 465 EXPECT_FALSE(cache.IsReady()); |
| 466 EXPECT_FALSE(ready_callback_was_invoked_); | |
| 446 cache.SetFetchingDone(); | 467 cache.SetFetchingDone(); |
| 447 EXPECT_FALSE(cache.IsReady()); | 468 EXPECT_FALSE(cache.IsReady()); |
| 469 EXPECT_FALSE(ready_callback_was_invoked_); | |
| 448 cache.Load(); | 470 cache.Load(); |
| 449 loop_.RunAllPending(); | 471 loop_.RunAllPending(); |
| 450 EXPECT_TRUE(cache.IsReady()); | 472 EXPECT_TRUE(cache.IsReady()); |
| 473 EXPECT_TRUE(ready_callback_was_invoked_); | |
| 451 } | 474 } |
| 452 | 475 |
| 453 } // namespace policy | 476 } // namespace policy |
| OLD | NEW |