Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(119)

Side by Side Diff: chrome/browser/extensions/management_policy.cc

Issue 82773002: Move some dependencies of ExtensionService down to extensions. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Presubmit check fixed Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 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/management_policy.h"
6
7 namespace extensions {
8
9 namespace {
10
11 void GetExtensionNameAndId(const Extension* extension,
12 std::string* name,
13 std::string* id) {
14 // The extension may be NULL in testing.
15 *id = extension ? extension->id() : "[test]";
16 *name = extension ? extension->name() : "test";
17 }
18
19 } // namespace
20
21 ManagementPolicy::ManagementPolicy() {
22 }
23
24 ManagementPolicy::~ManagementPolicy() {
25 }
26
27 bool ManagementPolicy::Provider::UserMayLoad(const Extension* extension,
28 string16* error) const {
29 return true;
30 }
31
32 bool ManagementPolicy::Provider::UserMayModifySettings(
33 const Extension* extension, string16* error) const {
34 return true;
35 }
36
37 bool ManagementPolicy::Provider::MustRemainEnabled(const Extension* extension,
38 string16* error) const {
39 return false;
40 }
41
42 bool ManagementPolicy::Provider::MustRemainDisabled(
43 const Extension* extension,
44 Extension::DisableReason* reason,
45 string16* error) const {
46 return false;
47 }
48
49 void ManagementPolicy::RegisterProvider(Provider* provider) {
50 providers_.insert(provider);
51 }
52
53 void ManagementPolicy::UnregisterProvider(Provider* provider) {
54 providers_.erase(provider);
55 }
56
57 bool ManagementPolicy::UserMayLoad(const Extension* extension,
58 string16* error) const {
59 return ApplyToProviderList(&Provider::UserMayLoad, "Installation",
60 true, extension, error);
61 }
62
63 bool ManagementPolicy::UserMayModifySettings(const Extension* extension,
64 string16* error) const {
65 return ApplyToProviderList(&Provider::UserMayModifySettings, "Modification",
66 true, extension, error);
67 }
68
69 bool ManagementPolicy::MustRemainEnabled(const Extension* extension,
70 string16* error) const {
71 return ApplyToProviderList(&Provider::MustRemainEnabled, "Disabling",
72 false, extension, error);
73 }
74
75 bool ManagementPolicy::MustRemainDisabled(const Extension* extension,
76 Extension::DisableReason* reason,
77 string16* error) const {
78 for (ProviderList::const_iterator it = providers_.begin();
79 it != providers_.end(); ++it)
80 if ((*it)->MustRemainDisabled(extension, reason, error))
81 return true;
82
83 return false;
84 }
85
86 void ManagementPolicy::UnregisterAllProviders() {
87 providers_.clear();
88 }
89
90 int ManagementPolicy::GetNumProviders() const {
91 return providers_.size();
92 }
93
94 bool ManagementPolicy::ApplyToProviderList(ProviderFunction function,
95 const char* debug_operation_name,
96 bool normal_result,
97 const Extension* extension,
98 string16* error) const {
99 for (ProviderList::const_iterator it = providers_.begin();
100 it != providers_.end(); ++it) {
101 const Provider* provider = *it;
102 bool result = (provider->*function)(extension, error);
103 if (result != normal_result) {
104 std::string id;
105 std::string name;
106 GetExtensionNameAndId(extension, &name, &id);
107 DVLOG(1) << debug_operation_name << " of extension " << name
108 << " (" << id << ")"
109 << " prohibited by " << provider->GetDebugPolicyProviderName();
110 return !normal_result;
111 }
112 }
113 return normal_result;
114 }
115
116 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/management_policy.h ('k') | chrome/browser/extensions/management_policy_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698