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

Side by Side 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "extensions/common/features/feature_provider.h" 5 #include "extensions/common/features/feature_provider.h"
6 6
7 #include <map>
8
7 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/lazy_instance.h"
11 #include "base/memory/linked_ptr.h"
8 #include "extensions/common/extensions_client.h" 12 #include "extensions/common/extensions_client.h"
9 13
10 namespace extensions { 14 namespace extensions {
11 15
16 namespace {
17
18 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.
19 Static() {
20 ExtensionsClient* client = ExtensionsClient::Get();
21 feature_providers["api"] =
22 make_linked_ptr(client->CreateFeatureProvider("api"));
23 feature_providers["manifest"] =
24 make_linked_ptr(client->CreateFeatureProvider("manifest"));
25 feature_providers["permission"] =
26 make_linked_ptr(client->CreateFeatureProvider("permission"));
27 }
28
29 typedef std::map<std::string, linked_ptr<FeatureProvider> >
30 FeatureProviderMap;
31
32 FeatureProvider* GetFeatures(const std::string& name) const {
33 FeatureProviderMap::const_iterator it = feature_providers.find(name);
34 CHECK(it != feature_providers.end());
35 return it->second.get();
36 }
37
38 FeatureProviderMap feature_providers;
39 };
40
41 base::LazyInstance<Static> g_static = LAZY_INSTANCE_INITIALIZER;
42
43 } // namespace
44
12 // static 45 // static
13 FeatureProvider* FeatureProvider::GetByName(const std::string& name) { 46 FeatureProvider* FeatureProvider::GetByName(const std::string& name) {
14 return ExtensionsClient::Get()->GetFeatureProviderByName(name); 47 return g_static.Get().GetFeatures(name);
15 } 48 }
16 49
17 // static 50 // static
18 FeatureProvider* FeatureProvider::GetAPIFeatures() { 51 FeatureProvider* FeatureProvider::GetAPIFeatures() {
19 return GetByName("api"); 52 return GetByName("api");
20 } 53 }
21 54
22 // static 55 // static
23 FeatureProvider* FeatureProvider::GetManifestFeatures() { 56 FeatureProvider* FeatureProvider::GetManifestFeatures() {
24 return GetByName("manifest"); 57 return GetByName("manifest");
25 } 58 }
26 59
27 // static 60 // static
28 FeatureProvider* FeatureProvider::GetPermissionFeatures() { 61 FeatureProvider* FeatureProvider::GetPermissionFeatures() {
29 return GetByName("permission"); 62 return GetByName("permission");
30 } 63 }
31 64
32 } // namespace extensions 65 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698