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.
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/browser/policy/policy_map.h"
9 #include "chrome/common/pref_names.h"
10 #include "policy/policy_constants.h"
11 #include "testing/gtest/include/gtest/gtest.h"
15 // Test cases for how the AllowFileSelectionDialogs policy influences the
16 // PromptForDownload preference.
17 class FileSelectionDialogsPolicyTest : public testing::Test {
20 FileSelectionDialogsPolicyHandler handler_;
24 TEST_F(FileSelectionDialogsPolicyTest, Default) {
25 handler_.ApplyPolicySettings(policy_, &prefs_);
26 EXPECT_FALSE(prefs_.GetValue(prefs::kPromptForDownload, NULL));
29 TEST_F(FileSelectionDialogsPolicyTest, EnableFileSelectionDialogs) {
30 policy_.Set(key::kAllowFileSelectionDialogs,
31 POLICY_LEVEL_MANDATORY,
33 base::Value::CreateBooleanValue(true),
35 handler_.ApplyPolicySettings(policy_, &prefs_);
37 // Allowing file-selection dialogs should not influence the PromptForDownload
39 EXPECT_FALSE(prefs_.GetValue(prefs::kPromptForDownload, NULL));
42 TEST_F(FileSelectionDialogsPolicyTest, DisableFileSelectionDialogs) {
43 policy_.Set(key::kAllowFileSelectionDialogs,
44 POLICY_LEVEL_MANDATORY,
46 base::Value::CreateBooleanValue(false),
48 handler_.ApplyPolicySettings(policy_, &prefs_);
50 // Disabling file-selection dialogs should disable the PromptForDownload pref.
51 const base::Value* value = NULL;
52 EXPECT_TRUE(prefs_.GetValue(prefs::kPromptForDownload, &value));
54 bool prompt_for_download = true;
55 bool result = value->GetAsBoolean(&prompt_for_download);
57 EXPECT_FALSE(prompt_for_download);