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

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: + 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..fc0ee5b46b420b5653272004d4d442c6441bdae4 100644
--- a/extensions/common/features/feature_provider.cc
+++ b/extensions/common/features/feature_provider.cc
@@ -4,14 +4,47 @@
#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 {
+
+struct Static {
not at google - send to devlin 2014/04/22 21:39:09 this seems more like a class, and |feature_provide
Yoyo Zhou 2014/04/22 23:17:40 Done.
+ Static() {
+ ExtensionsClient* client = ExtensionsClient::Get();
+ feature_providers["api"] =
+ make_linked_ptr(client->CreateFeatureProvider("api"));
+ feature_providers["manifest"] =
+ make_linked_ptr(client->CreateFeatureProvider("manifest"));
+ feature_providers["permission"] =
+ make_linked_ptr(client->CreateFeatureProvider("permission"));
+ }
+
+ typedef std::map<std::string, linked_ptr<FeatureProvider> >
+ FeatureProviderMap;
+
+ FeatureProvider* GetFeatures(const std::string& name) const {
+ FeatureProviderMap::const_iterator it = feature_providers.find(name);
+ CHECK(it != feature_providers.end());
+ return it->second.get();
+ }
+
+ 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