OLD | NEW |
| (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 | |
OLD | NEW |