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 "chrome/browser/policy/file_selection_dialogs_policy_handler.h" 6 7 #include "base/prefs/pref_value_map.h" 8 #include "base/values.h" 9 #include "chrome/common/pref_names.h" 10 #include "components/policy/core/common/policy_map.h" 11 #include "policy/policy_constants.h" 12 13 namespace policy { 14 15 FileSelectionDialogsPolicyHandler::FileSelectionDialogsPolicyHandler() 16 : TypeCheckingPolicyHandler(key::kAllowFileSelectionDialogs, 17 base::Value::TYPE_BOOLEAN) {} 18 19 FileSelectionDialogsPolicyHandler::~FileSelectionDialogsPolicyHandler() {} 20 21 void FileSelectionDialogsPolicyHandler::ApplyPolicySettings( 22 const PolicyMap& policies, 23 PrefValueMap* prefs) { 24 bool allow_dialogs; 25 const base::Value* value = policies.GetValue(policy_name()); 26 if (value && value->GetAsBoolean(&allow_dialogs)) { 27 prefs->SetValue(prefs::kAllowFileSelectionDialogs, 28 base::Value::CreateBooleanValue(allow_dialogs)); 29 // Disallow selecting the download location if file dialogs are disabled. 30 if (!allow_dialogs) { 31 prefs->SetValue(prefs::kPromptForDownload, 32 base::Value::CreateBooleanValue(false)); 33 } 34 } 35 } 36 37 } // namespace policy 38