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