| Index: chrome/common/extensions/feature.h | 
| diff --git a/chrome/common/extensions/feature.h b/chrome/common/extensions/feature.h | 
| index 374767055efe108258c92cb676e9402e0d474749..fc71b78ee50de20ab5f460a5b8c445b613b2d3cb 100644 | 
| --- a/chrome/common/extensions/feature.h | 
| +++ b/chrome/common/extensions/feature.h | 
| @@ -101,11 +101,14 @@ class Feature { | 
| // Parses the JSON representation of a feature into the fields of this object. | 
| // Unspecified values in the JSON are not modified in the object. This allows | 
| // us to implement inheritance by parsing one value after another. | 
| -  void Parse(const DictionaryValue* value); | 
| +  virtual void Parse(const DictionaryValue* value); | 
|  | 
| // Returns true if the feature contains the same values as another. | 
| bool Equals(const Feature& other) const; | 
|  | 
| +  // Returns true if the Feature contains no specification. | 
| +  bool IsEmpty() const; | 
| + | 
| // Returns true if the feature is available to be parsed into a new extension | 
| // manifest. | 
| Availability IsAvailableToManifest(const std::string& extension_id, | 
| @@ -134,6 +137,11 @@ class Feature { | 
| // Returns an error message for an Availability code. | 
| std::string GetErrorMessage(Availability result); | 
|  | 
| + protected: | 
| +  static void ParseSet(const DictionaryValue* value, | 
| +                       const std::string& property, | 
| +                       std::set<std::string>* set); | 
| + | 
| private: | 
| std::string name_; | 
|  | 
|  |