| Index: tools/grit/grit/format/policy_templates/policy_template_generator.py
|
| diff --git a/tools/grit/grit/format/policy_templates/policy_template_generator.py b/tools/grit/grit/format/policy_templates/policy_template_generator.py
|
| index a678ef10569806c5d3df81dd8684cccf679436e4..3b2447e59c0b191d26b701a17aa4589c454d1018 100644
|
| --- a/tools/grit/grit/format/policy_templates/policy_template_generator.py
|
| +++ b/tools/grit/grit/format/policy_templates/policy_template_generator.py
|
| @@ -3,6 +3,9 @@
|
| # found in the LICENSE file.
|
|
|
|
|
| +import copy
|
| +
|
| +
|
| def GetPolicySortingKey(policy):
|
| '''Extracts a sorting key from a policy. These keys can be used for
|
| list.sort() methods to sort policies.
|
| @@ -42,10 +45,10 @@ class PolicyTemplateGenerator:
|
| content.
|
| '''
|
| # List of all the policies:
|
| - self._policy_definitions = policy_definitions
|
| + self._policy_definitions = copy.deepcopy(policy_definitions)
|
| # Localized messages to be inserted to the policy_definitions structure:
|
| self._messages = messages
|
| - self._AddMessagesToPolicyList(self._policy_definitions)
|
| + self._ProcessPolicyList(self._policy_definitions)
|
| self._SortPolicies(self._policy_definitions)
|
|
|
| def _SortPolicies(self, policy_list):
|
| @@ -59,6 +62,56 @@ class PolicyTemplateGenerator:
|
| '''
|
| policy_list.sort(key=GetPolicySortingKey)
|
|
|
| + def _ProcessSupportedOn(self, supported_on):
|
| + '''Parses and converts the string items of the list of supported platforms
|
| + into dictionaries.
|
| +
|
| + Args:
|
| + supported_on: The list of supported platforms. E.g.:
|
| + ['chrome.win:8-10', 'chrome_frame:10-']
|
| +
|
| + Returns:
|
| + supported_on: The list with its items converted to dictionaries. E.g.:
|
| + [{
|
| + 'product': 'chrome',
|
| + 'platform': 'win',
|
| + 'since_version': '8',
|
| + 'until_version': '10'
|
| + }, {
|
| + 'product': 'chrome_frame',
|
| + 'platform': 'win',
|
| + 'since_version': '10',
|
| + 'until_version': ''
|
| + }]
|
| + '''
|
| + result = []
|
| + for supported_on_item in supported_on:
|
| + product_platform_part, version_part = supported_on_item.split(':')
|
| + if '.' in product_platform_part:
|
| + product, platform = product_platform_part.split('.')
|
| + if platform == '*':
|
| + # e.g.: 'chrome.*:8-10'
|
| + platforms = ['linux', 'mac', 'win']
|
| + else:
|
| + # e.g.: 'chrome.win:-10'
|
| + platforms = [platform]
|
| + else:
|
| + # e.g.: 'chrome_frame:7-'
|
| + product = product_platform_part
|
| + platform = {
|
| + 'chrome_os': 'chrome_os',
|
| + 'chrome_frame': 'win'
|
| + }[product]
|
| + platforms = [platform]
|
| + since_version, until_version = version_part.split('-')
|
| + result.append({
|
| + 'product': product,
|
| + 'platforms': platforms,
|
| + 'since_version': since_version,
|
| + 'until_version': until_version
|
| + })
|
| + return result
|
| +
|
| def _AddMessageToItem(self, item_name, item, message_name, default=None):
|
| '''Adds a localized message string to an item of the policy data structure
|
|
|
| @@ -85,8 +138,9 @@ class PolicyTemplateGenerator:
|
| raise Exception('No localized message for %s (missing %s).' %
|
| (item_name, long_message_name))
|
|
|
| - def _AddMessagesToPolicy(self, policy):
|
| + def _ProcessPolicy(self, policy):
|
| '''Adds localized message strings to a policy or group.
|
| + Also breaks up the content of 'supported_on' attribute into a list.
|
|
|
| Args:
|
| policy: The data structure of the policy or group, that will get message
|
| @@ -99,23 +153,26 @@ class PolicyTemplateGenerator:
|
| # 'label', that defaults to 'caption'.
|
| self._AddMessageToItem(
|
| policy['name'], policy, 'label', policy['caption'])
|
| + policy['supported_on'] = self._ProcessSupportedOn(
|
| + policy['supported_on'])
|
| if policy['type'] == 'group':
|
| - self._AddMessagesToPolicyList(policy['policies'])
|
| + self._ProcessPolicyList(policy['policies'])
|
| elif policy['type'] == 'enum':
|
| # Iterate through all the items of an enum-type policy, and add captions.
|
| for item in policy['items']:
|
| self._AddMessageToItem('ENUM_' + item['name'], item, 'caption')
|
|
|
| - def _AddMessagesToPolicyList(self, policy_list):
|
| + def _ProcessPolicyList(self, policy_list):
|
| '''Adds localized message strings to each item in a list of policies and
|
| - groups.
|
| + groups. Also breaks up the content of 'supported_on' attributes into lists
|
| + of dictionaries.
|
|
|
| Args:
|
| policy_list: A list of policies and groups. Message strings will be added
|
| for each item and to their child items, recursively.
|
| '''
|
| for policy in policy_list:
|
| - self._AddMessagesToPolicy(policy)
|
| + self._ProcessPolicy(policy)
|
|
|
| def GetTemplateText(self, template_writer):
|
| '''Generates the text of the template from the arguments given
|
|
|