Chromium Code Reviews| Index: chrome/common/extensions/chrome_extensions_client.cc |
| diff --git a/chrome/common/extensions/chrome_extensions_client.cc b/chrome/common/extensions/chrome_extensions_client.cc |
| index b1cf2ebbaca9e2dfdfaef8ef5f49faafc6c09ea7..7e0f0eb4ac6f3f12c03baa43803118c87407f1ed 100644 |
| --- a/chrome/common/extensions/chrome_extensions_client.cc |
| +++ b/chrome/common/extensions/chrome_extensions_client.cc |
| @@ -19,6 +19,7 @@ |
| #include "extensions/common/extension.h" |
| #include "extensions/common/features/api_feature.h" |
| #include "extensions/common/features/base_feature_provider.h" |
| +#include "extensions/common/features/feature_provider.h" |
| #include "extensions/common/features/json_feature_provider_source.h" |
| #include "extensions/common/features/manifest_feature.h" |
| #include "extensions/common/features/permission_feature.h" |
| @@ -99,26 +100,43 @@ ChromeExtensionsClient::GetPermissionMessageProvider() const { |
| scoped_ptr<FeatureProvider> ChromeExtensionsClient::CreateFeatureProvider( |
| const std::string& name) const { |
| - JSONFeatureProviderSource source(name); |
| + scoped_ptr<FeatureProvider> provider; |
| + scoped_ptr<JSONFeatureProviderSource> source( |
| + CreateFeatureProviderSource(name)); |
| if (name == "api") { |
| - source.LoadJSON(IDR_EXTENSION_API_FEATURES); |
| - source.LoadJSON(IDR_CHROME_EXTENSION_API_FEATURES); |
| - return scoped_ptr<FeatureProvider>(new BaseFeatureProvider( |
| - source.dictionary(), CreateFeature<APIFeature>)); |
| + provider.reset(new BaseFeatureProvider(source->dictionary(), |
| + CreateFeature<APIFeature>)); |
| } else if (name == "manifest") { |
| - source.LoadJSON(IDR_EXTENSION_MANIFEST_FEATURES); |
| - source.LoadJSON(IDR_CHROME_EXTENSION_MANIFEST_FEATURES); |
| - return scoped_ptr<FeatureProvider>(new BaseFeatureProvider( |
| - source.dictionary(), CreateFeature<ManifestFeature>)); |
| + provider.reset(new BaseFeatureProvider(source->dictionary(), |
| + CreateFeature<ManifestFeature>)); |
| } else if (name == "permission") { |
| - source.LoadJSON(IDR_EXTENSION_PERMISSION_FEATURES); |
| - source.LoadJSON(IDR_CHROME_EXTENSION_PERMISSION_FEATURES); |
| - return scoped_ptr<FeatureProvider>(new BaseFeatureProvider( |
| - source.dictionary(), CreateFeature<PermissionFeature>)); |
| + provider.reset(new BaseFeatureProvider(source->dictionary(), |
| + CreateFeature<PermissionFeature>)); |
| } else { |
| NOTREACHED(); |
| } |
| - return scoped_ptr<FeatureProvider>(); |
| + return provider.Pass(); |
| +} |
| + |
| +scoped_ptr<JSONFeatureProviderSource> |
| +ChromeExtensionsClient::CreateFeatureProviderSource( |
|
James Cook
2014/05/20 18:15:47
btw, I like how you've introduced this API - nice
|
| + const std::string& name) const { |
| + scoped_ptr<JSONFeatureProviderSource> source( |
| + new JSONFeatureProviderSource(name)); |
| + if (name == "api") { |
| + source->LoadJSON(IDR_EXTENSION_API_FEATURES); |
| + source->LoadJSON(IDR_CHROME_EXTENSION_API_FEATURES); |
| + } else if (name == "manifest") { |
| + source->LoadJSON(IDR_EXTENSION_MANIFEST_FEATURES); |
| + source->LoadJSON(IDR_CHROME_EXTENSION_MANIFEST_FEATURES); |
| + } else if (name == "permission") { |
| + source->LoadJSON(IDR_EXTENSION_PERMISSION_FEATURES); |
| + source->LoadJSON(IDR_CHROME_EXTENSION_PERMISSION_FEATURES); |
| + } else { |
| + NOTREACHED(); |
| + source.reset(); |
| + } |
| + return source.Pass(); |
| } |
| void ChromeExtensionsClient::FilterHostPermissions( |