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

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

Issue 1442863002: Remove contents of grit's SVN repository. (Closed) Base URL: http://grit-i18n.googlecode.com/svn/trunk/
Patch Set: Created 5 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
===================================================================
--- grit/format/policy_templates/writers/adml_writer.py (revision 202)
+++ grit/format/policy_templates/writers/adml_writer.py (working copy)
@@ -1,186 +0,0 @@
-#!/usr/bin/env python
-# Copyright (c) 2012 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-from xml.dom import minidom
-from grit.format.policy_templates.writers import xml_formatted_writer
-
-
-def GetWriter(config):
- '''Factory method for instanciating the ADMLWriter. Every Writer needs a
- GetWriter method because the TemplateFormatter uses this method to
- instantiate a Writer.
- '''
- return ADMLWriter(['win'], config)
-
-
-class ADMLWriter(xml_formatted_writer.XMLFormattedWriter):
- ''' Class for generating an ADML policy template. It is used by the
- PolicyTemplateGenerator to write the ADML file.
- '''
-
- # DOM root node of the generated ADML document.
- _doc = None
-
- # The string-table contains all ADML "string" elements.
- _string_table_elem = None
-
- # The presentation-table is the container for presentation elements, that
- # describe the presentation of Policy-Groups and Policies.
- _presentation_table_elem = None
-
- 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:
- id: ID of the newly created "string" element.
- text: Value of the newly created "string" element.
- '''
- 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.
- <stringTable>
- ...
- <string id="$(policy_group_name)">$(caption)</string>
- <string id="$(policy_group_name)_Explain">$(description)</string>
- </stringTable>
-
- <presentationTables>
- ...
- <presentation id=$(policy_group_name)/>
- </presentationTables>
-
- Args:
- policy: The Policy to generate ADML elements for.
- '''
- policy_type = policy['type']
- policy_name = policy['name']
- if 'caption' in policy:
- policy_caption = policy['caption']
- else:
- policy_caption = policy_name
- if 'desc' in policy:
- policy_description = policy['desc']
- else:
- policy_description = policy_name
- if 'label' in policy:
- policy_label = policy['label']
- else:
- policy_label = policy_name
-
- 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})
-
- if policy_type == 'main':
- pass
- elif policy_type in ('string', 'dict'):
- # 'dict' policies are configured as JSON-encoded strings on Windows.
- textbox_elem = self.AddElement(presentation_elem, 'textBox',
- {'refId': policy_name})
- label_elem = self.AddElement(textbox_elem, 'label')
- label_elem.appendChild(self._doc.createTextNode(policy_label))
- elif policy_type == 'int':
- textbox_elem = self.AddElement(presentation_elem, 'decimalTextBox',
- {'refId': policy_name})
- textbox_elem.appendChild(self._doc.createTextNode(policy_label + ':'))
- elif policy_type in ('int-enum', 'string-enum'):
- for item in policy['items']:
- 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(policy_name + 'Desc', policy_caption)
- listbox_elem = self.AddElement(presentation_elem, 'listBox',
- {'refId': policy_name + 'Desc'})
- listbox_elem.appendChild(self._doc.createTextNode(policy_label))
- elif policy_type == 'group':
- pass
- elif policy_type == 'external':
- # This type can only be set through cloud policy.
- pass
- else:
- raise Exception('Unknown policy type %s.' % policy_type)
-
- def BeginPolicyGroup(self, group):
- '''Generates ADML elements for a Policy-Group. For each Policy-Group two
- ADML "string" elements are added to the string-table. One contains the
- caption of the Policy-Group and the other a description. A Policy-Group also
- requires an ADML "presentation" element that must be added to the
- presentation-table. The "presentation" element is the container for the
- elements that define the visual presentation of the Policy-Goup's Policies.
- The following ADML snippet shows an example:
-
- Args:
- group: The Policy-Group to generate ADML elements for.
- '''
- # Add ADML "string" elements to the string-table that are required by a
- # Policy-Group.
- self._AddString(group['name'] + '_group', group['caption'])
-
- 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(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(self.config['win_mandatory_category_path'][0],
- 'Google')
- self._AddString(self.config['win_mandatory_category_path'][1],
- self.config['app_name'])
- self._AddString(self.config['win_recommended_category_path'][1],
- recommended_name)
- elif build == 'chromium':
- self._AddString(self.config['win_mandatory_category_path'][0],
- self.config['app_name'])
- self._AddString(self.config['win_recommended_category_path'][0],
- recommended_name)
-
- def BeginTemplate(self):
- dom_impl = minidom.getDOMImplementation('')
- self._doc = dom_impl.createDocument(None, 'policyDefinitionResources',
- None)
- if self._GetChromiumVersionString() is not None:
- self.AddComment(self._doc.documentElement, self.config['build'] + \
- ' version: ' + self._GetChromiumVersionString())
- policy_definitions_resources_elem = self._doc.documentElement
- policy_definitions_resources_elem.attributes['revision'] = '1.0'
- policy_definitions_resources_elem.attributes['schemaVersion'] = '1.0'
-
- self.AddElement(policy_definitions_resources_elem, 'displayName')
- self.AddElement(policy_definitions_resources_elem, 'description')
- resources_elem = self.AddElement(policy_definitions_resources_elem,
- 'resources')
- self._string_table_elem = self.AddElement(resources_elem, 'stringTable')
- 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
- # the "string" tags. This prevents gpedit.msc from displaying the category
- # names correctly.
- # TODO(markusheintz): Find a better formatting that works with gpedit.
- return self._doc.toxml()

Powered by Google App Engine
This is Rietveld 408576698