| 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 8bda78350df31f1238c48b1eef33d2f86fea62bf..3e91859b3eda708f228e37fb7e3a7a297270477e 100644
|
| --- a/chrome/common/extensions/chrome_extensions_client.cc
|
| +++ b/chrome/common/extensions/chrome_extensions_client.cc
|
| @@ -17,7 +17,12 @@
|
| #include "extensions/common/api/generated_schemas.h"
|
| #include "extensions/common/common_manifest_handlers.h"
|
| #include "extensions/common/extension.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_constants.h"
|
| #include "extensions/common/manifest_handler.h"
|
| #include "extensions/common/permissions/api_permission_set.h"
|
| @@ -25,15 +30,27 @@
|
| #include "extensions/common/switches.h"
|
| #include "extensions/common/url_pattern.h"
|
| #include "extensions/common/url_pattern_set.h"
|
| +#include "grit/common_resources.h"
|
| +#include "grit/extensions_resources.h"
|
| #include "grit/generated_resources.h"
|
| #include "ui/base/l10n/l10n_util.h"
|
| #include "url/gurl.h"
|
|
|
| +namespace extensions {
|
| +
|
| namespace {
|
| +
|
| const char kThumbsWhiteListedExtension[] = "khopmbdjffemhegeeobelklnbglcdgfh";
|
| -} // namespace
|
|
|
| -namespace extensions {
|
| +template <class FeatureClass>
|
| +SimpleFeature* CreateFeature() {
|
| + SimpleFeature* feature = new FeatureClass;
|
| + feature->AddFilter(
|
| + scoped_ptr<SimpleFeatureFilter>(new ChromeChannelFeatureFilter(feature)));
|
| + return feature;
|
| +}
|
| +
|
| +} // namespace
|
|
|
| static base::LazyInstance<ChromeExtensionsClient> g_client =
|
| LAZY_INSTANCE_INITIALIZER;
|
| @@ -79,9 +96,28 @@ ChromeExtensionsClient::GetPermissionMessageProvider() const {
|
| return permission_message_provider_;
|
| }
|
|
|
| -FeatureProvider* ChromeExtensionsClient::GetFeatureProviderByName(
|
| +scoped_ptr<FeatureProvider> ChromeExtensionsClient::CreateFeatureProvider(
|
| const std::string& name) const {
|
| - return BaseFeatureProvider::GetByName(name);
|
| + JSONFeatureProviderSource source(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>));
|
| + } 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>));
|
| + } 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>));
|
| + } else {
|
| + NOTREACHED();
|
| + }
|
| + return scoped_ptr<FeatureProvider>();
|
| }
|
|
|
| void ChromeExtensionsClient::FilterHostPermissions(
|
| @@ -159,29 +195,23 @@ bool ChromeExtensionsClient::IsScriptableURL(
|
| bool ChromeExtensionsClient::IsAPISchemaGenerated(
|
| const std::string& name) const {
|
| // Test from most common to least common.
|
| - return extensions::api::GeneratedSchemas::IsGenerated(name) ||
|
| - extensions::core_api::GeneratedSchemas::IsGenerated(name) ||
|
| + return api::GeneratedSchemas::IsGenerated(name) ||
|
| + core_api::GeneratedSchemas::IsGenerated(name) ||
|
| apps::api::GeneratedSchemas::IsGenerated(name);
|
| }
|
|
|
| base::StringPiece ChromeExtensionsClient::GetAPISchema(
|
| const std::string& name) const {
|
| // Test from most common to least common.
|
| - if (extensions::api::GeneratedSchemas::IsGenerated(name))
|
| - return extensions::api::GeneratedSchemas::Get(name);
|
| + if (api::GeneratedSchemas::IsGenerated(name))
|
| + return api::GeneratedSchemas::Get(name);
|
|
|
| - if (extensions::core_api::GeneratedSchemas::IsGenerated(name))
|
| - return extensions::core_api::GeneratedSchemas::Get(name);
|
| + if (core_api::GeneratedSchemas::IsGenerated(name))
|
| + return core_api::GeneratedSchemas::Get(name);
|
|
|
| return apps::api::GeneratedSchemas::Get(name);
|
| }
|
|
|
| -void ChromeExtensionsClient::AddExtraFeatureFilters(
|
| - SimpleFeature* feature) const {
|
| - feature->AddFilter(
|
| - scoped_ptr<SimpleFeatureFilter>(new ChromeChannelFeatureFilter(feature)));
|
| -}
|
| -
|
| bool ChromeExtensionsClient::ShouldSuppressFatalErrors() const {
|
| // <= dev means dev, canary, and trunk.
|
| return GetCurrentChannel() <= chrome::VersionInfo::CHANNEL_DEV;
|
|
|