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 3dca9c9a6ee4b9e51fa681ef94a6b662d39b62ed..7367c2571d7c4e1595217bc80c389ab16af3968a 100644 |
--- a/apps/shell/common/shell_extensions_client.cc |
+++ b/apps/shell/common/shell_extensions_client.cc |
@@ -11,14 +11,22 @@ |
#include "extensions/common/api/generated_schemas.h" |
#include "extensions/common/api/sockets/sockets_manifest_handler.h" |
#include "extensions/common/common_manifest_handlers.h" |
+#include "extensions/common/features/api_feature.h" |
#include "extensions/common/features/base_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" |
+#include "extensions/common/features/simple_feature.h" |
#include "extensions/common/manifest_handler.h" |
#include "extensions/common/permissions/permission_message_provider.h" |
#include "extensions/common/permissions/permissions_provider.h" |
#include "extensions/common/url_pattern_set.h" |
+#include "grit/common_resources.h" |
+#include "grit/extensions_resources.h" |
using extensions::APIPermissionInfo; |
using extensions::APIPermissionSet; |
+using extensions::BaseFeatureProvider; |
using extensions::Extension; |
using extensions::Manifest; |
using extensions::PermissionMessage; |
@@ -30,6 +38,11 @@ namespace apps { |
namespace { |
+template <class FeatureClass> |
+extensions::SimpleFeature* CreateFeature() { |
+ return new FeatureClass; |
+} |
+ |
// TODO(jamescook): Refactor ChromePermissionsMessageProvider so we can share |
// code. |
class ShellPermissionMessageProvider |
@@ -114,10 +127,29 @@ ShellExtensionsClient::GetPermissionMessageProvider() const { |
return provider; |
} |
-extensions::FeatureProvider* ShellExtensionsClient::GetFeatureProviderByName( |
+extensions::FeatureProvider* ShellExtensionsClient::CreateFeatureProvider( |
not at google - send to devlin
2014/04/22 21:39:09
scoped_ptr<> ?
Yoyo Zhou
2014/04/22 23:17:40
I think this is silly because it gets immediately
not at google - send to devlin
2014/04/23 01:22:32
make_linked_ptr should accept a scoped_ptr rvalue.
Yoyo Zhou
2014/04/24 16:34:50
Nope
|
const std::string& name) const { |
- // TODO(jamescook): Factor out an extensions module feature provider. |
- return extensions::BaseFeatureProvider::GetByName(name); |
+ extensions::JSONFeatureProviderSource source(name); |
+ if (name == "api") { |
+ // TODO(yoz): Only include src/extensions resources. |
+ source.LoadJSON(IDR_EXTENSION_API_FEATURES); |
+ source.LoadJSON(IDR_CHROME_EXTENSION_API_FEATURES); |
+ return new BaseFeatureProvider(source.dictionary(), |
+ &CreateFeature<extensions::APIFeature>); |
+ } else if (name == "manifest") { |
+ source.LoadJSON(IDR_EXTENSION_MANIFEST_FEATURES); |
+ source.LoadJSON(IDR_CHROME_EXTENSION_MANIFEST_FEATURES); |
+ return new BaseFeatureProvider(source.dictionary(), |
+ &CreateFeature<extensions::ManifestFeature>); |
+ } else if (name == "permission") { |
+ source.LoadJSON(IDR_EXTENSION_PERMISSION_FEATURES); |
+ source.LoadJSON(IDR_CHROME_EXTENSION_PERMISSION_FEATURES); |
+ return new BaseFeatureProvider( |
+ source.dictionary(), &CreateFeature<extensions::PermissionFeature>); |
+ } else { |
+ NOTREACHED(); |
+ } |
+ return NULL; |
} |
void ShellExtensionsClient::FilterHostPermissions( |
@@ -176,9 +208,6 @@ base::StringPiece ShellExtensionsClient::GetAPISchema( |
return extensions::core_api::GeneratedSchemas::Get(name); |
} |
-void ShellExtensionsClient::AddExtraFeatureFilters( |
- extensions::SimpleFeature* feature) const {} |
- |
bool ShellExtensionsClient::ShouldSuppressFatalErrors() const { return true; } |
} // namespace apps |