OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/common/extensions/manifest_handler.h" | 5 #include "chrome/common/extensions/manifest_handler.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 | 8 |
| 9 #include "base/logging.h" |
9 #include "base/stl_util.h" | 10 #include "base/stl_util.h" |
10 #include "chrome/common/extensions/extension.h" | 11 #include "chrome/common/extensions/extension.h" |
11 | 12 |
12 namespace extensions { | 13 namespace extensions { |
13 | 14 |
14 namespace { | 15 namespace { |
15 | 16 |
16 static base::LazyInstance<ManifestHandlerRegistry> g_registry = | 17 static base::LazyInstance<ManifestHandlerRegistry> g_registry = |
17 LAZY_INSTANCE_INITIALIZER; | 18 LAZY_INSTANCE_INITIALIZER; |
18 static ManifestHandlerRegistry* g_registry_override = NULL; | 19 static ManifestHandlerRegistry* g_registry_override = NULL; |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
50 } | 51 } |
51 | 52 |
52 void ManifestHandler::Register() { | 53 void ManifestHandler::Register() { |
53 linked_ptr<ManifestHandler> this_linked(this); | 54 linked_ptr<ManifestHandler> this_linked(this); |
54 const std::vector<std::string> keys = Keys(); | 55 const std::vector<std::string> keys = Keys(); |
55 for (size_t i = 0; i < keys.size(); ++i) | 56 for (size_t i = 0; i < keys.size(); ++i) |
56 GetRegistry()->RegisterManifestHandler(keys[i], this_linked); | 57 GetRegistry()->RegisterManifestHandler(keys[i], this_linked); |
57 } | 58 } |
58 | 59 |
59 // static | 60 // static |
60 void ManifestHandler::ClearRegistryForTesting() { | |
61 GetRegistry()->ClearForTesting(); | |
62 } | |
63 | |
64 // static | |
65 bool ManifestHandler::ParseExtension(Extension* extension, string16* error) { | 61 bool ManifestHandler::ParseExtension(Extension* extension, string16* error) { |
66 return GetRegistry()->ParseExtension(extension, error); | 62 return GetRegistry()->ParseExtension(extension, error); |
67 } | 63 } |
68 | 64 |
69 // static | 65 // static |
70 bool ManifestHandler::ValidateExtension(const Extension* extension, | 66 bool ManifestHandler::ValidateExtension(const Extension* extension, |
71 std::string* error, | 67 std::string* error, |
72 std::vector<InstallWarning>* warnings) { | 68 std::vector<InstallWarning>* warnings) { |
73 return GetRegistry()->ValidateExtension(extension, error, warnings); | 69 return GetRegistry()->ValidateExtension(extension, error, warnings); |
74 } | 70 } |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
126 } | 122 } |
127 } | 123 } |
128 for (std::set<ManifestHandler*>::iterator iter = handlers.begin(); | 124 for (std::set<ManifestHandler*>::iterator iter = handlers.begin(); |
129 iter != handlers.end(); ++iter) { | 125 iter != handlers.end(); ++iter) { |
130 if (!(*iter)->Validate(extension, error, warnings)) | 126 if (!(*iter)->Validate(extension, error, warnings)) |
131 return false; | 127 return false; |
132 } | 128 } |
133 return true; | 129 return true; |
134 } | 130 } |
135 | 131 |
136 void ManifestHandlerRegistry::ClearForTesting() { | |
137 priority_map_.clear(); | |
138 handlers_.clear(); | |
139 is_sorted_ = false; | |
140 } | |
141 | |
142 // static | 132 // static |
143 ManifestHandlerRegistry* ManifestHandlerRegistry::SetForTesting( | 133 ManifestHandlerRegistry* ManifestHandlerRegistry::SetForTesting( |
144 ManifestHandlerRegistry* new_registry) { | 134 ManifestHandlerRegistry* new_registry) { |
145 ManifestHandlerRegistry* old_registry = GetRegistry(); | 135 ManifestHandlerRegistry* old_registry = GetRegistry(); |
146 if (new_registry != g_registry.Pointer()) | 136 if (new_registry != g_registry.Pointer()) |
147 g_registry_override = new_registry; | 137 g_registry_override = new_registry; |
148 else | 138 else |
149 g_registry_override = NULL; | 139 g_registry_override = NULL; |
150 return old_registry; | 140 return old_registry; |
151 } | 141 } |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
198 | 188 |
199 // If there are any leftover unsorted handlers, they must have had | 189 // If there are any leftover unsorted handlers, they must have had |
200 // circular dependencies. | 190 // circular dependencies. |
201 CHECK(unsorted_handlers.size() == 0) << "Extension manifest handlers have " | 191 CHECK(unsorted_handlers.size() == 0) << "Extension manifest handlers have " |
202 << "circular dependencies!"; | 192 << "circular dependencies!"; |
203 | 193 |
204 is_sorted_ = true; | 194 is_sorted_ = true; |
205 } | 195 } |
206 | 196 |
207 } // namespace extensions | 197 } // namespace extensions |
OLD | NEW |