1// Copyright 2012 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/extensions/standard_management_policy_provider.h"
6
7#include "base/prefs/pref_service.h"
8#include "chrome/browser/extensions/blacklist.h"
9#include "chrome/browser/extensions/extension_prefs.h"
10#include "chrome/common/pref_names.h"
11#include "extensions/browser/admin_policy.h"
12#include "extensions/common/extension.h"
13
14namespace extensions {
15
16StandardManagementPolicyProvider::StandardManagementPolicyProvider(
17    ExtensionPrefs* prefs)
18    : prefs_(prefs) {
19}
20
21StandardManagementPolicyProvider::~StandardManagementPolicyProvider() {
22}
23
24std::string
25    StandardManagementPolicyProvider::GetDebugPolicyProviderName() const {
26#ifdef NDEBUG
27  NOTREACHED();
28  return std::string();
29#else
30  return "admin policy black/white/forcelist, via the ExtensionPrefs";
31#endif
32}
33
34bool StandardManagementPolicyProvider::UserMayLoad(
35    const Extension* extension,
36    base::string16* error) const {
37  PrefService* pref_service = prefs_->pref_service();
38
39  const base::ListValue* blacklist =
40      pref_service->GetList(prefs::kExtensionInstallDenyList);
41  const base::ListValue* whitelist =
42      pref_service->GetList(prefs::kExtensionInstallAllowList);
43  const base::DictionaryValue* forcelist =
44      pref_service->GetDictionary(prefs::kExtensionInstallForceList);
45  const base::ListValue* allowed_types = NULL;
46  if (pref_service->HasPrefPath(prefs::kExtensionAllowedTypes))
47    allowed_types = pref_service->GetList(prefs::kExtensionAllowedTypes);
48
49  return admin_policy::UserMayLoad(
50      blacklist, whitelist, forcelist, allowed_types, extension, error);
51}
52
53bool StandardManagementPolicyProvider::UserMayModifySettings(
54    const Extension* extension,
55    base::string16* error) const {
56  return admin_policy::UserMayModifySettings(extension, error);
57}
58
59bool StandardManagementPolicyProvider::MustRemainEnabled(
60    const Extension* extension,
61    base::string16* error) const {
62  return admin_policy::MustRemainEnabled(extension, error);
63}
64
65}  // namespace extensions
66