| Index: apps/shell/common/shell_extensions_client.cc
|
| diff --git a/apps/shell/common/shell_extensions_client.cc b/apps/shell/common/shell_extensions_client.cc
|
| index fe01ea345263eb32c09f5677777ed3ff96f376b6..2dac9e121f96f5f3cf03e46c44e5803237573389 100644
|
| --- a/apps/shell/common/shell_extensions_client.cc
|
| +++ b/apps/shell/common/shell_extensions_client.cc
|
| @@ -29,6 +29,7 @@ using extensions::APIPermissionSet;
|
| using extensions::BaseFeatureProvider;
|
| using extensions::Extension;
|
| using extensions::FeatureProvider;
|
| +using extensions::JSONFeatureProviderSource;
|
| using extensions::Manifest;
|
| using extensions::PermissionMessage;
|
| using extensions::PermissionMessages;
|
| @@ -119,24 +120,41 @@ ShellExtensionsClient::GetPermissionMessageProvider() const {
|
|
|
| scoped_ptr<FeatureProvider> ShellExtensionsClient::CreateFeatureProvider(
|
| const std::string& name) const {
|
| - extensions::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_SHELL_EXTENSION_API_FEATURES);
|
| - return scoped_ptr<FeatureProvider>(new BaseFeatureProvider(
|
| - source.dictionary(), CreateFeature<extensions::APIFeature>));
|
| + provider.reset(new BaseFeatureProvider(
|
| + source->dictionary(), CreateFeature<extensions::APIFeature>));
|
| } else if (name == "manifest") {
|
| - source.LoadJSON(IDR_EXTENSION_MANIFEST_FEATURES);
|
| - return scoped_ptr<FeatureProvider>(new BaseFeatureProvider(
|
| - source.dictionary(), CreateFeature<extensions::ManifestFeature>));
|
| + provider.reset(new BaseFeatureProvider(
|
| + source->dictionary(), CreateFeature<extensions::ManifestFeature>));
|
| } else if (name == "permission") {
|
| - source.LoadJSON(IDR_EXTENSION_PERMISSION_FEATURES);
|
| - return scoped_ptr<FeatureProvider>(new BaseFeatureProvider(
|
| - source.dictionary(), CreateFeature<extensions::PermissionFeature>));
|
| + provider.reset(new BaseFeatureProvider(
|
| + source->dictionary(), CreateFeature<extensions::PermissionFeature>));
|
| } else {
|
| NOTREACHED();
|
| }
|
| - return scoped_ptr<FeatureProvider>();
|
| + return provider.Pass();
|
| +}
|
| +
|
| +scoped_ptr<JSONFeatureProviderSource>
|
| +ShellExtensionsClient::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_SHELL_EXTENSION_API_FEATURES);
|
| + } else if (name == "manifest") {
|
| + source->LoadJSON(IDR_EXTENSION_MANIFEST_FEATURES);
|
| + } else if (name == "permission") {
|
| + source->LoadJSON(IDR_EXTENSION_PERMISSION_FEATURES);
|
| + } else {
|
| + NOTREACHED();
|
| + source.reset();
|
| + }
|
| + return source.Pass();
|
| }
|
|
|
| void ShellExtensionsClient::FilterHostPermissions(
|
|
|