Index: extensions/test/test_extensions_client.cc |
diff --git a/extensions/test/test_extensions_client.cc b/extensions/test/test_extensions_client.cc |
index 8cee49a19c25046dd71f08138847451721b42cb9..47a6a4750877e313a039f162245dd87955d72437 100644 |
--- a/extensions/test/test_extensions_client.cc |
+++ b/extensions/test/test_extensions_client.cc |
@@ -4,15 +4,30 @@ |
#include "extensions/test/test_extensions_client.h" |
+#include "extensions/common/api/generated_schemas.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/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/manifest_handler.h" |
#include "extensions/common/url_pattern_set.h" |
#include "extensions/test/test_permission_message_provider.h" |
+#include "grit/extensions_resources.h" |
namespace extensions { |
+namespace { |
+ |
+template <class FeatureClass> |
+SimpleFeature* CreateFeature() { |
+ return new FeatureClass; |
+} |
+ |
+} // namespace |
+ |
TestExtensionsClient::TestExtensionsClient() { |
} |
@@ -34,17 +49,42 @@ TestExtensionsClient::GetPermissionMessageProvider() const { |
return provider; |
} |
-// TODO(yoz): Implement something reasonable here. |
scoped_ptr<FeatureProvider> TestExtensionsClient::CreateFeatureProvider( |
const std::string& name) const { |
- return scoped_ptr<FeatureProvider>(); |
+ scoped_ptr<FeatureProvider> provider; |
+ scoped_ptr<JSONFeatureProviderSource> source( |
+ CreateFeatureProviderSource(name)); |
+ if (name == "api") { |
+ provider.reset(new BaseFeatureProvider(source->dictionary(), |
+ CreateFeature<APIFeature>)); |
+ } else if (name == "manifest") { |
+ provider.reset(new BaseFeatureProvider(source->dictionary(), |
+ CreateFeature<ManifestFeature>)); |
+ } else if (name == "permission") { |
+ provider.reset(new BaseFeatureProvider(source->dictionary(), |
+ CreateFeature<PermissionFeature>)); |
+ } else { |
+ NOTREACHED(); |
+ } |
+ return provider.Pass(); |
} |
-// TODO(yoz): Implement something reasonable here. |
scoped_ptr<JSONFeatureProviderSource> |
TestExtensionsClient::CreateFeatureProviderSource( |
const std::string& name) const { |
- return scoped_ptr<JSONFeatureProviderSource>(); |
+ scoped_ptr<JSONFeatureProviderSource> source( |
+ new JSONFeatureProviderSource(name)); |
+ if (name == "api") { |
+ source->LoadJSON(IDR_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 TestExtensionsClient::FilterHostPermissions( |
@@ -77,12 +117,12 @@ bool TestExtensionsClient::IsScriptableURL(const GURL& url, |
bool TestExtensionsClient::IsAPISchemaGenerated( |
const std::string& name) const { |
- return false; |
+ return core_api::GeneratedSchemas::IsGenerated(name); |
} |
base::StringPiece TestExtensionsClient::GetAPISchema( |
const std::string& name) const { |
- return base::StringPiece(); |
+ return core_api::GeneratedSchemas::Get(name); |
} |
void TestExtensionsClient::RegisterAPISchemaResources(ExtensionAPI* api) const { |