11e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 21e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 31e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// found in the LICENSE file. 41e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 51e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "chrome/browser/policy/javascript_policy_handler.h" 61e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "chrome/common/pref_names.h" 71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "components/content_settings/core/common/content_settings.h" 8a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "components/policy/core/browser/configuration_policy_pref_store.h" 9a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "components/policy/core/browser/configuration_policy_pref_store_test.h" 10a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "components/policy/core/browser/policy_error_map.h" 11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "components/policy/core/common/policy_map.h" 121e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "policy/policy_constants.h" 131e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 141e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)namespace policy { 151e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 161e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)class JavascriptPolicyHandlerTest : public ConfigurationPolicyPrefStoreTest { 171e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) virtual void SetUp() OVERRIDE { 181e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) handler_list_.AddHandler(make_scoped_ptr<ConfigurationPolicyHandler>( 191e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) new JavascriptPolicyHandler)); 201e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } 211e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}; 221e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 231e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)TEST_F(JavascriptPolicyHandlerTest, JavascriptEnabled) { 241e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // This is a boolean policy, but affects an integer preference. 251e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) EXPECT_FALSE(store_->GetValue(prefs::kManagedDefaultJavaScriptSetting, NULL)); 261e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) PolicyMap policy; 271e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) policy.Set(key::kJavascriptEnabled, 281e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) POLICY_LEVEL_MANDATORY, 291e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) POLICY_SCOPE_USER, 30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch new base::FundamentalValue(true), 311e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) NULL); 321e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) UpdateProviderPolicy(policy); 331e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) EXPECT_FALSE(store_->GetValue(prefs::kManagedDefaultJavaScriptSetting, NULL)); 341e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) policy.Set(key::kJavascriptEnabled, 351e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) POLICY_LEVEL_MANDATORY, 361e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) POLICY_SCOPE_USER, 37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch new base::FundamentalValue(false), 381e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) NULL); 391e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) UpdateProviderPolicy(policy); 401e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) const base::Value* value = NULL; 411e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) EXPECT_TRUE(store_->GetValue(prefs::kManagedDefaultJavaScriptSetting, 421e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) &value)); 431e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) EXPECT_TRUE(base::FundamentalValue(CONTENT_SETTING_BLOCK).Equals(value)); 441e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)} 451e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 461e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)TEST_F(JavascriptPolicyHandlerTest, JavascriptEnabledOverridden) { 471e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) EXPECT_FALSE(store_->GetValue(prefs::kManagedDefaultJavaScriptSetting, NULL)); 481e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) PolicyMap policy; 491e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) policy.Set(key::kJavascriptEnabled, 501e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) POLICY_LEVEL_MANDATORY, 511e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) POLICY_SCOPE_USER, 52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch new base::FundamentalValue(false), 531e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) NULL); 541e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) UpdateProviderPolicy(policy); 551e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) const base::Value* value = NULL; 561e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) EXPECT_TRUE(store_->GetValue(prefs::kManagedDefaultJavaScriptSetting, 571e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) &value)); 581e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) EXPECT_TRUE(base::FundamentalValue(CONTENT_SETTING_BLOCK).Equals(value)); 591e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // DefaultJavaScriptSetting overrides JavascriptEnabled. 601e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) policy.Set(key::kDefaultJavaScriptSetting, 611e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) POLICY_LEVEL_MANDATORY, 621e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) POLICY_SCOPE_USER, 635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) new base::FundamentalValue(CONTENT_SETTING_ALLOW), 641e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) NULL); 651e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) UpdateProviderPolicy(policy); 661e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) EXPECT_TRUE(store_->GetValue(prefs::kManagedDefaultJavaScriptSetting, 671e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) &value)); 681e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) EXPECT_TRUE(base::FundamentalValue(CONTENT_SETTING_ALLOW).Equals(value)); 691e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)} 701e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 711e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)} // namespace policy 72