| Index: chrome/common/extensions/docs/server2/features_utility.py
|
| diff --git a/chrome/common/extensions/docs/server2/features_utility.py b/chrome/common/extensions/docs/server2/features_utility.py
|
| index f9626914811c32a81cfb047bf03454637d763161..023c228a6168ef851fa24222bf51cfa46302c414 100644
|
| --- a/chrome/common/extensions/docs/server2/features_utility.py
|
| +++ b/chrome/common/extensions/docs/server2/features_utility.py
|
| @@ -4,10 +4,8 @@
|
|
|
| '''
|
| Utility functions for working with the Feature abstraction. Features are grouped
|
| -into a dictionary by name. Each Feature is guaranteed to have the following two
|
| -keys:
|
| - name - a string, the name of the feature
|
| - platform - a list containing 'app' or 'extension', both, or neither.
|
| +into a dictionary by name. Each Feature is guaranteed to have a 'name' key
|
| +holding the name of the feature.
|
|
|
| A Feature may have other keys from a _features.json file as well. Features with
|
| a whitelist are ignored as they are only useful to specific apps or extensions.
|
| @@ -22,7 +20,7 @@ def Parse(features_json):
|
| features = {}
|
|
|
| for name, value in deepcopy(features_json).iteritems():
|
| - # Some feature names corrispond to a list; force a list down to a single
|
| + # Some feature names correspond to a list; force a list down to a single
|
| # feature by removing entries that have a 'whitelist'.
|
| if isinstance(value, list):
|
| values = [subvalue for subvalue in value if not 'whitelist' in subvalue]
|
| @@ -34,31 +32,19 @@ def Parse(features_json):
|
| if 'whitelist' in value:
|
| continue
|
|
|
| - features[name] = { 'platforms': [] }
|
| -
|
| - platforms = value.pop('extension_types')
|
| - if platforms == 'all' or 'platform_app' in platforms:
|
| - features[name]['platforms'].append('app')
|
| - if platforms == 'all' or 'extension' in platforms:
|
| - features[name]['platforms'].append('extension')
|
| -
|
| + features[name] = {}
|
| features[name]['name'] = name
|
| features[name].update(value)
|
|
|
| return features
|
|
|
| -def Filtered(features, platform=None):
|
| - '''Create a new Features dictionary from |features| that contains only items
|
| - relevant to |platform|. Items retained are deepcopied. Returns new features
|
| - dictionary.
|
| - '''
|
| - filtered_features = {}
|
| -
|
| - for name, feature in features.iteritems():
|
| - if not platform or platform in feature['platforms']:
|
| - filtered_features[name] = deepcopy(feature)
|
| -
|
| - return filtered_features
|
| +def GetPlatformSetForExtensionTypes(extension_types):
|
| + platforms = set()
|
| + if extension_types == 'all' or 'platform_app' in extension_types:
|
| + platforms.add('apps')
|
| + if extension_types == 'all' or 'extension' in extension_types:
|
| + platforms.add('extensions')
|
| + return platforms
|
|
|
| def MergedWith(features, other):
|
| '''Merge |features| with an additional dictionary to create a new features
|
| @@ -75,7 +61,5 @@ def MergedWith(features, other):
|
| # Ensure the Feature schema is enforced for all added items.
|
| if not 'name' in features[key]:
|
| features[key]['name'] = key
|
| - if not 'platforms' in features[key]:
|
| - features[key]['platforms'] = []
|
|
|
| return features
|
|
|