1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "base/prefs/pref_value_map.h" 6#include "base/values.h" 7#include "chrome/browser/policy/file_selection_dialogs_policy_handler.h" 8#include "chrome/common/pref_names.h" 9#include "components/policy/core/common/policy_map.h" 10#include "policy/policy_constants.h" 11#include "testing/gtest/include/gtest/gtest.h" 12 13namespace policy { 14 15// Test cases for how the AllowFileSelectionDialogs policy influences the 16// PromptForDownload preference. 17class FileSelectionDialogsPolicyTest : public testing::Test { 18 protected: 19 PolicyMap policy_; 20 FileSelectionDialogsPolicyHandler handler_; 21 PrefValueMap prefs_; 22}; 23 24TEST_F(FileSelectionDialogsPolicyTest, Default) { 25 handler_.ApplyPolicySettings(policy_, &prefs_); 26 EXPECT_FALSE(prefs_.GetValue(prefs::kPromptForDownload, NULL)); 27} 28 29TEST_F(FileSelectionDialogsPolicyTest, EnableFileSelectionDialogs) { 30 policy_.Set(key::kAllowFileSelectionDialogs, 31 POLICY_LEVEL_MANDATORY, 32 POLICY_SCOPE_USER, 33 new base::FundamentalValue(true), 34 NULL); 35 handler_.ApplyPolicySettings(policy_, &prefs_); 36 37 // Allowing file-selection dialogs should not influence the PromptForDownload 38 // pref. 39 EXPECT_FALSE(prefs_.GetValue(prefs::kPromptForDownload, NULL)); 40} 41 42TEST_F(FileSelectionDialogsPolicyTest, DisableFileSelectionDialogs) { 43 policy_.Set(key::kAllowFileSelectionDialogs, 44 POLICY_LEVEL_MANDATORY, 45 POLICY_SCOPE_USER, 46 new base::FundamentalValue(false), 47 NULL); 48 handler_.ApplyPolicySettings(policy_, &prefs_); 49 50 // Disabling file-selection dialogs should disable the PromptForDownload pref. 51 const base::Value* value = NULL; 52 EXPECT_TRUE(prefs_.GetValue(prefs::kPromptForDownload, &value)); 53 ASSERT_TRUE(value); 54 bool prompt_for_download = true; 55 bool result = value->GetAsBoolean(&prompt_for_download); 56 EXPECT_TRUE(result); 57 EXPECT_FALSE(prompt_for_download); 58} 59 60} // namespace policy 61