| OLD | NEW | 
|---|
| 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 from collections import Mapping | 5 from collections import Mapping | 
| 6 import os | 6 import os | 
| 7 | 7 | 
| 8 from api_schema_graph import APISchemaGraph | 8 from api_schema_graph import APISchemaGraph | 
| 9 from branch_utility import BranchUtility | 9 from branch_utility import BranchUtility | 
| 10 from compiled_file_system import CompiledFileSystem | 10 from compiled_file_system import CompiledFileSystem | 
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 132 | 132 | 
| 133   def _CheckStableAvailability(self, api_name, file_system, version): | 133   def _CheckStableAvailability(self, api_name, file_system, version): | 
| 134     '''Checks for availability of an API, |api_name|, on the stable channel. | 134     '''Checks for availability of an API, |api_name|, on the stable channel. | 
| 135     Considers several _features.json files, file system existence, and | 135     Considers several _features.json files, file system existence, and | 
| 136     extension_api.json depending on the given |version|. | 136     extension_api.json depending on the given |version|. | 
| 137     ''' | 137     ''' | 
| 138     if version < 5: | 138     if version < 5: | 
| 139       # SVN data isn't available below version 5. | 139       # SVN data isn't available below version 5. | 
| 140       return False | 140       return False | 
| 141     available_channel = None | 141     available_channel = None | 
| 142     fs_factory = CompiledFileSystem.Factory(file_system, | 142     fs_factory = CompiledFileSystem.Factory(self._object_store_creator) | 
| 143                                             self._object_store_creator) | 143     features_fs = fs_factory.Create(file_system, | 
| 144     features_fs = fs_factory.Create(lambda _, json: json_parse.Parse(json), | 144                                     lambda _, json: json_parse.Parse(json), | 
| 145                                     AvailabilityFinder, | 145                                     AvailabilityFinder, | 
| 146                                     category='features') | 146                                     category='features') | 
| 147     if version >= 28: | 147     if version >= 28: | 
| 148       # The _api_features.json file first appears in version 28 and should be | 148       # The _api_features.json file first appears in version 28 and should be | 
| 149       # the most reliable for finding API availability. | 149       # the most reliable for finding API availability. | 
| 150       available_channel = _GetChannelFromApiFeatures(api_name, features_fs) | 150       available_channel = _GetChannelFromApiFeatures(api_name, features_fs) | 
| 151     if version >= 20: | 151     if version >= 20: | 
| 152       # The _permission_features.json and _manifest_features.json files are | 152       # The _permission_features.json and _manifest_features.json files are | 
| 153       # present in Chrome 20 and onwards. Use these if no information could be | 153       # present in Chrome 20 and onwards. Use these if no information could be | 
| 154       # found using _api_features.json. | 154       # found using _api_features.json. | 
| 155       available_channel = available_channel or ( | 155       available_channel = available_channel or ( | 
| 156           _GetChannelFromPermissionFeatures(api_name, features_fs) | 156           _GetChannelFromPermissionFeatures(api_name, features_fs) | 
| 157           or _GetChannelFromManifestFeatures(api_name, features_fs)) | 157           or _GetChannelFromManifestFeatures(api_name, features_fs)) | 
| 158       if available_channel is not None: | 158       if available_channel is not None: | 
| 159         return available_channel == 'stable' | 159         return available_channel == 'stable' | 
| 160     if version >= 5: | 160     if version >= 5: | 
| 161       # Fall back to a check for file system existence if the API is not | 161       # Fall back to a check for file system existence if the API is not | 
| 162       # stable in any of the _features.json files, or if the _features files | 162       # stable in any of the _features.json files, or if the _features files | 
| 163       # do not exist (version 19 and earlier). | 163       # do not exist (version 19 and earlier). | 
| 164       return _HasApiSchema(api_name, file_system) | 164       return _HasApiSchema(api_name, file_system) | 
| 165 | 165 | 
| 166   def _CheckChannelAvailability(self, api_name, file_system, channel_name): | 166   def _CheckChannelAvailability(self, api_name, file_system, channel_name): | 
| 167     '''Searches through the _features files in a given |file_system| and | 167     '''Searches through the _features files in a given |file_system| and | 
| 168     determines whether or not an API is available on the given channel, | 168     determines whether or not an API is available on the given channel, | 
| 169     |channel_name|. | 169     |channel_name|. | 
| 170     ''' | 170     ''' | 
| 171     fs_factory = CompiledFileSystem.Factory(file_system, | 171     fs_factory = CompiledFileSystem.Factory(self._object_store_creator) | 
| 172                                             self._object_store_creator) | 172     features_fs = fs_factory.Create(file_system, | 
| 173     features_fs = fs_factory.Create(lambda _, json: json_parse.Parse(json), | 173                                     lambda _, json: json_parse.Parse(json), | 
| 174                                     AvailabilityFinder, | 174                                     AvailabilityFinder, | 
| 175                                     category='features') | 175                                     category='features') | 
| 176     available_channel = (_GetChannelFromApiFeatures(api_name, features_fs) | 176     available_channel = (_GetChannelFromApiFeatures(api_name, features_fs) | 
| 177         or _GetChannelFromPermissionFeatures(api_name, features_fs) | 177         or _GetChannelFromPermissionFeatures(api_name, features_fs) | 
| 178         or _GetChannelFromManifestFeatures(api_name, features_fs)) | 178         or _GetChannelFromManifestFeatures(api_name, features_fs)) | 
| 179     if available_channel is None and _HasApiSchema(api_name, file_system): | 179     if available_channel is None and _HasApiSchema(api_name, file_system): | 
| 180       # If an API is not represented in any of the _features files, but exists | 180       # If an API is not represented in any of the _features files, but exists | 
| 181       # in the filesystem, then assume it is available in this version. | 181       # in the filesystem, then assume it is available in this version. | 
| 182       # The windows API is an example of this. | 182       # The windows API is an example of this. | 
| 183       available_channel = channel_name | 183       available_channel = channel_name | 
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 245 | 245 | 
| 246       # Continue looping until there are no longer differences between this | 246       # Continue looping until there are no longer differences between this | 
| 247       # version and trunk. | 247       # version and trunk. | 
| 248       return trunk_graph != version_graph | 248       return trunk_graph != version_graph | 
| 249 | 249 | 
| 250     self._file_system_iterator.Ascending(self.GetApiAvailability(api_name), | 250     self._file_system_iterator.Ascending(self.GetApiAvailability(api_name), | 
| 251                                          update_availability_graph) | 251                                          update_availability_graph) | 
| 252 | 252 | 
| 253     self._node_level_object_store.Set(api_name, availability_graph) | 253     self._node_level_object_store.Set(api_name, availability_graph) | 
| 254     return availability_graph | 254     return availability_graph | 
| OLD | NEW | 
|---|