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

Unified Diff: grit/format/policy_templates/writers/adml_writer.py

Issue 695613003: Fix duplicated strings in ADMX templates. (Closed) Base URL: https://chromium.googlesource.com/external/grit-i18n.git@master
Patch Set: added tests Created 6 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: grit/format/policy_templates/writers/adml_writer.py
diff --git a/grit/format/policy_templates/writers/adml_writer.py b/grit/format/policy_templates/writers/adml_writer.py
index c5256027334013f8e20e6401d62bfe76ad9983d3..f7dd2ec9365140bd1e2edbf74d5b6adef6439a07 100644
--- a/grit/format/policy_templates/writers/adml_writer.py
+++ b/grit/format/policy_templates/writers/adml_writer.py
@@ -30,19 +30,24 @@ class ADMLWriter(xml_formatted_writer.XMLFormattedWriter):
# describe the presentation of Policy-Groups and Policies.
_presentation_table_elem = None
- def _AddString(self, parent, id, text):
- ''' Adds an ADML "string" element to the passed parent. The following
+ def _AddString(self, id, text):
+ ''' Adds an ADML "string" element to _string_table_elem. The following
ADML snippet contains an example:
<string id="$(id)">$(text)</string>
Args:
- parent: Parent element to which the new "string" element is added.
id: ID of the newly created "string" element.
text: Value of the newly created "string" element.
'''
- string_elem = self.AddElement(parent, 'string', {'id': id})
- string_elem.appendChild(self._doc.createTextNode(text))
+ id = id.replace('.', '_')
+ if id in self.strings_seen:
+ assert text == self.strings_seen[id]
+ else:
+ self.strings_seen[id] = text
+ string_elem = self.AddElement(
+ self._string_table_elem, 'string', {'id': id})
+ string_elem.appendChild(self._doc.createTextNode(text))
def WritePolicy(self, policy):
'''Generates the ADML elements for a Policy.
@@ -75,9 +80,8 @@ class ADMLWriter(xml_formatted_writer.XMLFormattedWriter):
else:
policy_label = policy_name
- self._AddString(self._string_table_elem, policy_name, policy_caption)
- self._AddString(self._string_table_elem, policy_name + '_Explain',
- policy_description)
+ self._AddString(policy_name, policy_caption)
+ self._AddString(policy_name + '_Explain', policy_description)
presentation_elem = self.AddElement(
self._presentation_table_elem, 'presentation', {'id': policy_name})
@@ -95,14 +99,12 @@ class ADMLWriter(xml_formatted_writer.XMLFormattedWriter):
textbox_elem.appendChild(self._doc.createTextNode(policy_label + ':'))
elif policy_type in ('int-enum', 'string-enum'):
for item in policy['items']:
- self._AddString(self._string_table_elem, item['name'], item['caption'])
+ self._AddString(item['name'], item['caption'])
dropdownlist_elem = self.AddElement(presentation_elem, 'dropdownList',
{'refId': policy_name})
dropdownlist_elem.appendChild(self._doc.createTextNode(policy_label))
elif policy_type in ('list', 'string-enum-list'):
- self._AddString(self._string_table_elem,
- policy_name + 'Desc',
- policy_caption)
+ self._AddString(policy_name + 'Desc', policy_caption)
listbox_elem = self.AddElement(presentation_elem, 'listBox',
{'refId': policy_name + 'Desc'})
listbox_elem.appendChild(self._doc.createTextNode(policy_label))
@@ -128,33 +130,27 @@ class ADMLWriter(xml_formatted_writer.XMLFormattedWriter):
'''
# Add ADML "string" elements to the string-table that are required by a
# Policy-Group.
- self._AddString(self._string_table_elem, group['name'] + '_group',
- group['caption'])
+ self._AddString(group['name'] + '_group', group['caption'])
- def _AddBaseStrings(self, string_table_elem, build):
+ def _AddBaseStrings(self, build):
''' Adds ADML "string" elements to the string-table that are referenced by
the ADMX file but not related to any specific Policy-Group or Policy.
'''
- self._AddString(string_table_elem, self.config['win_supported_os'],
+ self._AddString(self.config['win_supported_os'],
self.messages['win_supported_winxpsp2']['text'])
recommended_name = '%s - %s' % \
(self.config['app_name'], self.messages['doc_recommended']['text'])
if build == 'chrome':
- self._AddString(string_table_elem,
- self.config['win_mandatory_category_path'][0],
+ self._AddString(self.config['win_mandatory_category_path'][0],
'Google')
- self._AddString(string_table_elem,
- self.config['win_mandatory_category_path'][1],
+ self._AddString(self.config['win_mandatory_category_path'][1],
self.config['app_name'])
- self._AddString(string_table_elem,
- self.config['win_recommended_category_path'][1],
+ self._AddString(self.config['win_recommended_category_path'][1],
recommended_name)
elif build == 'chromium':
- self._AddString(string_table_elem,
- self.config['win_mandatory_category_path'][0],
+ self._AddString(self.config['win_mandatory_category_path'][0],
self.config['app_name'])
- self._AddString(string_table_elem,
- self.config['win_recommended_category_path'][0],
+ self._AddString(self.config['win_recommended_category_path'][0],
recommended_name)
def BeginTemplate(self):
@@ -170,10 +166,14 @@ class ADMLWriter(xml_formatted_writer.XMLFormattedWriter):
resources_elem = self.AddElement(policy_definitions_resources_elem,
'resources')
self._string_table_elem = self.AddElement(resources_elem, 'stringTable')
- self._AddBaseStrings(self._string_table_elem, self.config['build'])
+ self._AddBaseStrings(self.config['build'])
self._presentation_table_elem = self.AddElement(resources_elem,
'presentationTable')
+ def Init(self):
+ # Map of all strings seen.
+ self.strings_seen = {}
+
def GetTemplateText(self):
# Using "toprettyxml()" confuses the Windows Group Policy Editor
# (gpedit.msc) because it interprets whitespace characters in text between

Powered by Google App Engine
This is Rietveld 408576698