OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/browser/extensions/shared_module_service.h" | 5 #include "chrome/browser/extensions/shared_module_service.h" |
6 | 6 |
| 7 #include <memory> |
7 #include <utility> | 8 #include <utility> |
8 | 9 |
9 #include "base/memory/ref_counted.h" | 10 #include "base/memory/ref_counted.h" |
10 #include "base/memory/scoped_ptr.h" | |
11 #include "base/strings/string16.h" | 11 #include "base/strings/string16.h" |
12 #include "base/values.h" | 12 #include "base/values.h" |
13 #include "chrome/browser/extensions/extension_service.h" | 13 #include "chrome/browser/extensions/extension_service.h" |
14 #include "chrome/browser/extensions/extension_service_test_base.h" | 14 #include "chrome/browser/extensions/extension_service_test_base.h" |
15 #include "chrome/browser/extensions/pending_extension_manager.h" | 15 #include "chrome/browser/extensions/pending_extension_manager.h" |
16 #include "chrome/common/extensions/features/feature_channel.h" | 16 #include "chrome/common/extensions/features/feature_channel.h" |
17 #include "components/crx_file/id_util.h" | 17 #include "components/crx_file/id_util.h" |
18 #include "components/version_info/version_info.h" | 18 #include "components/version_info/version_info.h" |
19 #include "extensions/browser/extension_registry.h" | 19 #include "extensions/browser/extension_registry.h" |
20 #include "extensions/browser/install_flag.h" | 20 #include "extensions/browser/install_flag.h" |
(...skipping 23 matching lines...) Expand all Loading... |
44 builder.Set("import", import_list.Build()); | 44 builder.Set("import", import_list.Build()); |
45 } | 45 } |
46 return ExtensionBuilder() | 46 return ExtensionBuilder() |
47 .SetManifest(builder.Build()) | 47 .SetManifest(builder.Build()) |
48 .AddFlags(Extension::FROM_WEBSTORE) | 48 .AddFlags(Extension::FROM_WEBSTORE) |
49 .SetID(id) | 49 .SetID(id) |
50 .Build(); | 50 .Build(); |
51 } | 51 } |
52 | 52 |
53 scoped_refptr<Extension> CreateSharedModule(const std::string& module_id) { | 53 scoped_refptr<Extension> CreateSharedModule(const std::string& module_id) { |
54 scoped_ptr<base::DictionaryValue> manifest = | 54 std::unique_ptr<base::DictionaryValue> manifest = |
55 DictionaryBuilder() | 55 DictionaryBuilder() |
56 .Set("name", "Shared Module") | 56 .Set("name", "Shared Module") |
57 .Set("version", "1.0") | 57 .Set("version", "1.0") |
58 .Set("manifest_version", 2) | 58 .Set("manifest_version", 2) |
59 .Set("export", | 59 .Set("export", |
60 DictionaryBuilder() | 60 DictionaryBuilder() |
61 .Set("resources", ListBuilder().Append("foo.js").Build()) | 61 .Set("resources", ListBuilder().Append("foo.js").Build()) |
62 .Build()) | 62 .Build()) |
63 .Build(); | 63 .Build(); |
64 | 64 |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
170 EXPECT_FALSE(registry()->GetExtensionById(shared_module->id(), | 170 EXPECT_FALSE(registry()->GetExtensionById(shared_module->id(), |
171 ExtensionRegistry::EVERYTHING)); | 171 ExtensionRegistry::EVERYTHING)); |
172 } | 172 } |
173 | 173 |
174 TEST_F(SharedModuleServiceUnitTest, PruneSharedModulesOnUpdate) { | 174 TEST_F(SharedModuleServiceUnitTest, PruneSharedModulesOnUpdate) { |
175 // Create two modules which export a resource, and install them. | 175 // Create two modules which export a resource, and install them. |
176 scoped_refptr<Extension> shared_module_1 = | 176 scoped_refptr<Extension> shared_module_1 = |
177 CreateSharedModule("shared_module_1"); | 177 CreateSharedModule("shared_module_1"); |
178 EXPECT_TRUE(InstallExtension(shared_module_1.get(), false)); | 178 EXPECT_TRUE(InstallExtension(shared_module_1.get(), false)); |
179 | 179 |
180 scoped_ptr<base::DictionaryValue> manifest_2 = | 180 std::unique_ptr<base::DictionaryValue> manifest_2 = |
181 DictionaryBuilder() | 181 DictionaryBuilder() |
182 .Set("name", "Shared Module 2") | 182 .Set("name", "Shared Module 2") |
183 .Set("version", "1.0") | 183 .Set("version", "1.0") |
184 .Set("manifest_version", 2) | 184 .Set("manifest_version", 2) |
185 .Set("export", | 185 .Set("export", |
186 DictionaryBuilder() | 186 DictionaryBuilder() |
187 .Set("resources", ListBuilder().Append("foo.js").Build()) | 187 .Set("resources", ListBuilder().Append("foo.js").Build()) |
188 .Build()) | 188 .Build()) |
189 .Build(); | 189 .Build(); |
190 scoped_refptr<Extension> shared_module_2 = | 190 scoped_refptr<Extension> shared_module_2 = |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
229 EXPECT_FALSE(registry()->GetExtensionById(shared_module_2->id(), | 229 EXPECT_FALSE(registry()->GetExtensionById(shared_module_2->id(), |
230 ExtensionRegistry::EVERYTHING)); | 230 ExtensionRegistry::EVERYTHING)); |
231 | 231 |
232 } | 232 } |
233 | 233 |
234 TEST_F(SharedModuleServiceUnitTest, WhitelistedImports) { | 234 TEST_F(SharedModuleServiceUnitTest, WhitelistedImports) { |
235 std::string whitelisted_id = crx_file::id_util::GenerateId("whitelisted"); | 235 std::string whitelisted_id = crx_file::id_util::GenerateId("whitelisted"); |
236 std::string nonwhitelisted_id = | 236 std::string nonwhitelisted_id = |
237 crx_file::id_util::GenerateId("nonwhitelisted"); | 237 crx_file::id_util::GenerateId("nonwhitelisted"); |
238 // Create a module which exports to a restricted whitelist. | 238 // Create a module which exports to a restricted whitelist. |
239 scoped_ptr<base::DictionaryValue> manifest = | 239 std::unique_ptr<base::DictionaryValue> manifest = |
240 DictionaryBuilder() | 240 DictionaryBuilder() |
241 .Set("name", "Shared Module") | 241 .Set("name", "Shared Module") |
242 .Set("version", "1.0") | 242 .Set("version", "1.0") |
243 .Set("manifest_version", 2) | 243 .Set("manifest_version", 2) |
244 .Set("export", | 244 .Set("export", |
245 DictionaryBuilder() | 245 DictionaryBuilder() |
246 .Set("whitelist", | 246 .Set("whitelist", |
247 ListBuilder().Append(whitelisted_id).Build()) | 247 ListBuilder().Append(whitelisted_id).Build()) |
248 .Set("resources", ListBuilder().Append("*").Build()) | 248 .Set("resources", ListBuilder().Append("*").Build()) |
249 .Build()) | 249 .Build()) |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
304 // Since the modules were only referenced by that single extension, they | 304 // Since the modules were only referenced by that single extension, they |
305 // should have been uninstalled as a side-effect of uninstalling the extension | 305 // should have been uninstalled as a side-effect of uninstalling the extension |
306 // that depended upon it. | 306 // that depended upon it. |
307 EXPECT_FALSE(registry()->GetExtensionById(shared_module_one->id(), | 307 EXPECT_FALSE(registry()->GetExtensionById(shared_module_one->id(), |
308 ExtensionRegistry::EVERYTHING)); | 308 ExtensionRegistry::EVERYTHING)); |
309 EXPECT_FALSE(registry()->GetExtensionById(shared_module_two->id(), | 309 EXPECT_FALSE(registry()->GetExtensionById(shared_module_two->id(), |
310 ExtensionRegistry::EVERYTHING)); | 310 ExtensionRegistry::EVERYTHING)); |
311 } | 311 } |
312 | 312 |
313 } // namespace extensions | 313 } // namespace extensions |
OLD | NEW |