| OLD | NEW | 
|   1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |   1 // Copyright (c) 2012 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 #ifndef CHROME_COMMON_EXTENSIONS_FEATURES_BASE_FEATURE_PROVIDER_H_ |   5 #ifndef CHROME_COMMON_EXTENSIONS_FEATURES_BASE_FEATURE_PROVIDER_H_ | 
|   6 #define CHROME_COMMON_EXTENSIONS_FEATURES_BASE_FEATURE_PROVIDER_H_ |   6 #define CHROME_COMMON_EXTENSIONS_FEATURES_BASE_FEATURE_PROVIDER_H_ | 
|   7  |   7  | 
|   8 #include <map> |   8 #include <map> | 
|   9 #include <set> |   9 #include <set> | 
|  10 #include <string> |  10 #include <string> | 
|  11  |  11  | 
|  12 #include "base/memory/linked_ptr.h" |  12 #include "base/memory/linked_ptr.h" | 
|  13 #include "base/values.h" |  13 #include "base/values.h" | 
|  14 #include "chrome/common/extensions/features/feature_provider.h" |  14 #include "chrome/common/extensions/features/feature_provider.h" | 
|  15 #include "chrome/common/extensions/features/simple_feature.h" |  15 #include "chrome/common/extensions/features/simple_feature.h" | 
|  16  |  16  | 
|  17 namespace extensions { |  17 namespace extensions { | 
|  18  |  18  | 
|  19 // Reads Features out of a simple JSON file description. |  19 // Reads Features out of a simple JSON file description. | 
|  20 class BaseFeatureProvider : public FeatureProvider { |  20 class BaseFeatureProvider : public FeatureProvider { | 
|  21  public: |  21  public: | 
|  22   typedef SimpleFeature*(*FeatureFactory)(); |  22   typedef SimpleFeature*(*FeatureFactory)(); | 
|  23  |  23  | 
|  24   // Creates a new BaseFeatureProvider. Pass null to |factory| to have the |  24   // Creates a new BaseFeatureProvider. Pass null to |factory| to have the | 
|  25   // provider create plain old Feature instances. |  25   // provider create plain old Feature instances. | 
|  26   BaseFeatureProvider(const DictionaryValue& root, FeatureFactory factory); |  26   BaseFeatureProvider(const DictionaryValue& root, FeatureFactory factory); | 
|  27   virtual ~BaseFeatureProvider(); |  27   virtual ~BaseFeatureProvider(); | 
|  28  |  28  | 
 |  29   // Gets an instance for the _api_features.json file that is baked into | 
 |  30   // Chrome as a resource. | 
 |  31   static BaseFeatureProvider* GetApiFeatures(); | 
 |  32  | 
|  29   // Gets an instance for the _manifest_features.json file that is baked into |  33   // Gets an instance for the _manifest_features.json file that is baked into | 
|  30   // Chrome as a resource. |  34   // Chrome as a resource. | 
|  31   static BaseFeatureProvider* GetManifestFeatures(); |  35   static BaseFeatureProvider* GetManifestFeatures(); | 
|  32  |  36  | 
|  33   // Gets an instance for the _permission_features.json file that is baked into |  37   // Gets an instance for the _permission_features.json file that is baked into | 
|  34   // Chrome as a resource. |  38   // Chrome as a resource. | 
|  35   static BaseFeatureProvider* GetPermissionFeatures(); |  39   static BaseFeatureProvider* GetPermissionFeatures(); | 
|  36  |  40  | 
|  37   // Returns all features described by this instance. |  41   // Returns all features described by this instance. | 
|  38   std::set<std::string> GetAllFeatureNames() const; |  42   std::set<std::string> GetAllFeatureNames() const; | 
|  39  |  43  | 
|  40   // Gets the feature |feature_name|, if it exists. |  44   // Gets the feature |feature_name|, if it exists. | 
|  41   virtual Feature* GetFeature(const std::string& feature_name) OVERRIDE; |  45   virtual Feature* GetFeature(const std::string& feature_name) OVERRIDE; | 
|  42  |  46  | 
|  43  private: |  47  private: | 
|  44   typedef std::map<std::string, linked_ptr<Feature> > FeatureMap; |  48   typedef std::map<std::string, linked_ptr<Feature> > FeatureMap; | 
|  45   FeatureMap features_; |  49   FeatureMap features_; | 
|  46  |  50  | 
|  47   FeatureFactory factory_; |  51   FeatureFactory factory_; | 
|  48 }; |  52 }; | 
|  49  |  53  | 
|  50 }  // namespace extensions |  54 }  // namespace extensions | 
|  51  |  55  | 
|  52 #endif  // CHROME_COMMON_EXTENSIONS_FEATURES_BASE_FEATURE_PROVIDER_H_ |  56 #endif  // CHROME_COMMON_EXTENSIONS_FEATURES_BASE_FEATURE_PROVIDER_H_ | 
| OLD | NEW |