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