| 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(
|
| + 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(
|
|
|