| Index: chrome/common/extensions/docs/server2/features_bundle.py
|
| diff --git a/chrome/common/extensions/docs/server2/features_bundle.py b/chrome/common/extensions/docs/server2/features_bundle.py
|
| index 155a395e6bac53a0fd31c4564dc9cb5495169239..98a0dfe1d49ac693b51d3d6b37a21ac8fd2216e4 100644
|
| --- a/chrome/common/extensions/docs/server2/features_bundle.py
|
| +++ b/chrome/common/extensions/docs/server2/features_bundle.py
|
| @@ -23,10 +23,10 @@ def _GetFeaturePaths(feature_file, *extra_paths):
|
| return paths
|
|
|
|
|
| -def _AddPlatformsFromDependencies(feature,
|
| - api_features,
|
| - manifest_features,
|
| - permission_features):
|
| +def _AddPlatformsAndChannelsFromDependencies(feature,
|
| + api_features,
|
| + manifest_features,
|
| + permission_features):
|
| features_map = {
|
| 'api': api_features,
|
| 'manifest': manifest_features,
|
| @@ -34,8 +34,9 @@ def _AddPlatformsFromDependencies(feature,
|
| }
|
| dependencies = feature.get('dependencies')
|
| if dependencies is None:
|
| - return ['apps', 'extensions']
|
| + return
|
| platforms = set()
|
| + channel = None
|
| for dependency in dependencies:
|
| dep_type, dep_name = dependency.split(':')
|
| dependency_features = features_map[dep_type]
|
| @@ -43,9 +44,18 @@ def _AddPlatformsFromDependencies(feature,
|
| # If the dependency can't be resolved, it is inaccessible and therefore
|
| # so is this feature.
|
| if dependency_feature is None:
|
| - return []
|
| - platforms = platforms.union(dependency_feature['platforms'])
|
| - feature['platforms'] = list(platforms)
|
| + return
|
| + # Import the platforms from the dependency. The logic is a bit odd; if
|
| + # |feature| specifies platforms the it's considered an override. If not,
|
| + # we form the union of all dependency's platforms.
|
| + # TODO(kalman): Fix this (see http://crbug.com/322094).
|
| + platforms.update(dependency_feature.get('platforms', set()))
|
| + # Import the channel from the dependency.
|
| + channel = dependency_feature.get('channel', channel)
|
| + if platforms and not feature.get('platforms'):
|
| + feature['platforms'] = list(platforms)
|
| + if channel and not feature.get('channel'):
|
| + feature['channel'] = channel
|
|
|
|
|
| class _FeaturesCache(object):
|
| @@ -126,7 +136,7 @@ class FeaturesBundle(object):
|
| # If we don't store this value before annotating platforms, inter-API
|
| # dependencies will lead to infinite recursion.
|
| for feature in api_features.itervalues():
|
| - _AddPlatformsFromDependencies(
|
| + _AddPlatformsAndChannelsFromDependencies(
|
| feature, api_features, manifest_features, permission_features)
|
| self._object_store.Set('api_features', api_features)
|
| return api_features
|
|
|