Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(253)

Unified Diff: extensions/common/features/feature_provider.cc

Issue 246423002: Split feature definitions into extensions and chrome features. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: repack2 Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: extensions/common/features/feature_provider.cc
diff --git a/extensions/common/features/feature_provider.cc b/extensions/common/features/feature_provider.cc
index d5357f18d9ebb112515e98afccda280f62143bb2..b8f21f32db44984b248088fed4779d6c2701c1f4 100644
--- a/extensions/common/features/feature_provider.cc
+++ b/extensions/common/features/feature_provider.cc
@@ -4,14 +4,51 @@
#include "extensions/common/features/feature_provider.h"
+#include <map>
+
#include "base/basictypes.h"
+#include "base/lazy_instance.h"
+#include "base/memory/linked_ptr.h"
#include "extensions/common/extensions_client.h"
namespace extensions {
+namespace {
+
+class Static {
+ public:
+ FeatureProvider* GetFeatures(const std::string& name) const {
+ FeatureProviderMap::const_iterator it = feature_providers_.find(name);
+ CHECK(it != feature_providers_.end());
+ return it->second.get();
+ }
+
+ private:
+ friend struct base::DefaultLazyInstanceTraits<Static>;
+
+ Static() {
+ ExtensionsClient* client = ExtensionsClient::Get();
+ feature_providers_["api"] =
+ make_linked_ptr(client->CreateFeatureProvider("api").release());
+ feature_providers_["manifest"] =
+ make_linked_ptr(client->CreateFeatureProvider("manifest").release());
+ feature_providers_["permission"] =
+ make_linked_ptr(client->CreateFeatureProvider("permission").release());
+ }
+
+ typedef std::map<std::string, linked_ptr<FeatureProvider> >
+ FeatureProviderMap;
+
+ FeatureProviderMap feature_providers_;
+};
+
+base::LazyInstance<Static> g_static = LAZY_INSTANCE_INITIALIZER;
+
+} // namespace
+
// static
FeatureProvider* FeatureProvider::GetByName(const std::string& name) {
- return ExtensionsClient::Get()->GetFeatureProviderByName(name);
+ return g_static.Get().GetFeatures(name);
}
// static

Powered by Google App Engine
This is Rietveld 408576698