Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(684)

Unified Diff: tools/grit/grit/format/policy_templates/policy_template_generator.py

Issue 4704006: Add version information to the policy templates (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: fix typo in merge Created 10 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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
« no previous file with comments | « chrome/app/policy/policy_templates.json ('k') | tools/grit/grit/format/policy_templates/policy_template_generator_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698