121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen// Copyright (c) 2010 The Chromium Authors. All rights reserved. 221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen// Use of this source code is governed by a BSD-style license that can be 321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen// found in the LICENSE file. 421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "chrome/browser/policy/asynchronous_policy_loader.h" 621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "chrome/browser/policy/asynchronous_policy_provider.h" 721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "chrome/browser/policy/asynchronous_policy_test_base.h" 821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "chrome/browser/policy/configuration_policy_pref_store.h" 921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "chrome/browser/policy/mock_configuration_policy_store.h" 1072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "policy/policy_constants.h" 1121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "testing/gmock/include/gmock/gmock.h" 1221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "testing/gtest/include/gtest/gtest.h" 1321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 1421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenusing ::testing::_; 1521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenusing ::testing::InSequence; 1621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenusing ::testing::Return; 1721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 1821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsennamespace policy { 1921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 2021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen// Creating the provider should provide initial policy. 2121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian MonsenTEST_F(AsynchronousPolicyTestBase, Provide) { 2221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen InSequence s; 2321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen DictionaryValue* policies = new DictionaryValue(); 2421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen policies->SetBoolean(policy::key::kSyncDisabled, true); 2521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen EXPECT_CALL(*delegate_, Load()).WillOnce(Return(policies)); 2621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen EXPECT_CALL(*store_, Apply(policy::kPolicySyncDisabled, _)).Times(1); 2721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen AsynchronousPolicyProvider provider( 2821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen ConfigurationPolicyPrefStore::GetChromePolicyDefinitionList(), 2921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen new AsynchronousPolicyLoader(delegate_.release(), 10)); 3021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen provider.Provide(store_.get()); 3121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen} 3221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 3321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 3421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen// Trigger a refresh manually and ensure that policy gets reloaded. 3521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian MonsenTEST_F(AsynchronousPolicyTestBase, ProvideAfterRefresh) { 3621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen InSequence s; 3721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen DictionaryValue* original_policies = new DictionaryValue(); 3821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen original_policies->SetBoolean(policy::key::kSyncDisabled, true); 3921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen EXPECT_CALL(*delegate_, Load()).WillOnce(Return(original_policies)); 4021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen DictionaryValue* refresh_policies = new DictionaryValue(); 4121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen refresh_policies->SetBoolean( 4221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen policy::key::kJavascriptEnabled, 4321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen true); 4421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen EXPECT_CALL(*delegate_, Load()).WillOnce(Return(refresh_policies)); 4521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen AsynchronousPolicyLoader* loader = 4621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen new AsynchronousPolicyLoader(delegate_.release(), 10); 4721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen AsynchronousPolicyProvider provider( 4821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen ConfigurationPolicyPrefStore::GetChromePolicyDefinitionList(), 4921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen loader); 5021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen loop_.RunAllPending(); 5121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen loader->Reload(); 5221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen loop_.RunAllPending(); 5321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen EXPECT_CALL(*store_, Apply(policy::kPolicyJavascriptEnabled, _)).Times(1); 5421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen provider.Provide(store_.get()); 5521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen} 5621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 5721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen} // namespace policy 58