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

Unified Diff: grit/format/policy_templates/writers/plist_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/plist_writer.py
===================================================================
--- grit/format/policy_templates/writers/plist_writer.py (revision 202)
+++ grit/format/policy_templates/writers/plist_writer.py (working copy)
@@ -1,149 +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 plist_helper
-from grit.format.policy_templates.writers import xml_formatted_writer
-
-
-# This writer outputs a Preferences Manifest file as documented at
-# https://developer.apple.com/library/mac/documentation/MacOSXServer/Conceptual/Preference_Manifest_Files
-
-
-def GetWriter(config):
- '''Factory method for creating PListWriter objects.
- See the constructor of TemplateWriter for description of
- arguments.
- '''
- return PListWriter(['mac'], config)
-
-
-class PListWriter(xml_formatted_writer.XMLFormattedWriter):
- '''Class for generating policy templates in Mac plist format.
- It is used by PolicyTemplateGenerator to write plist files.
- '''
-
- STRING_TABLE = 'Localizable.strings'
- TYPE_TO_INPUT = {
- 'string': 'string',
- 'int': 'integer',
- 'int-enum': 'integer',
- 'string-enum': 'string',
- 'string-enum-list': 'array',
- 'main': 'boolean',
- 'list': 'array',
- 'dict': 'dictionary',
- }
-
- def _AddKeyValuePair(self, parent, key_string, value_tag):
- '''Adds a plist key-value pair to a parent XML element.
-
- A key-value pair in plist consists of two XML elements next two each other:
- <key>key_string</key>
- <value_tag>...</value_tag>
-
- Args:
- key_string: The content of the key tag.
- value_tag: The name of the value element.
-
- Returns:
- The XML element of the value tag.
- '''
- self.AddElement(parent, 'key', {}, key_string)
- return self.AddElement(parent, value_tag)
-
- def _AddStringKeyValuePair(self, parent, key_string, value_string):
- '''Adds a plist key-value pair to a parent XML element, where the
- value element contains a string. The name of the value element will be
- <string>.
-
- Args:
- key_string: The content of the key tag.
- value_string: The content of the value tag.
- '''
- self.AddElement(parent, 'key', {}, key_string)
- self.AddElement(parent, 'string', {}, value_string)
-
- def _AddTargets(self, parent, policy):
- '''Adds the following XML snippet to an XML element:
- <key>pfm_targets</key>
- <array>
- <string>user-managed</string>
- </array>
-
- Args:
- parent: The parent XML element where the snippet will be added.
- '''
- array = self._AddKeyValuePair(parent, 'pfm_targets', 'array')
- if self.CanBeRecommended(policy):
- self.AddElement(array, 'string', {}, 'user')
- if self.CanBeMandatory(policy):
- self.AddElement(array, 'string', {}, 'user-managed')
-
- def PreprocessPolicies(self, policy_list):
- return self.FlattenGroupsAndSortPolicies(policy_list)
-
- def WritePolicy(self, policy):
- policy_name = policy['name']
- policy_type = policy['type']
- if policy_type == 'external':
- # This type can only be set through cloud policy.
- return
-
- dict = self.AddElement(self._array, 'dict')
- self._AddStringKeyValuePair(dict, 'pfm_name', policy_name)
- # Set empty strings for title and description. They will be taken by the
- # OSX Workgroup Manager from the string table in a Localizable.strings file.
- # Those files are generated by plist_strings_writer.
- self._AddStringKeyValuePair(dict, 'pfm_description', '')
- self._AddStringKeyValuePair(dict, 'pfm_title', '')
- self._AddTargets(dict, policy)
- self._AddStringKeyValuePair(dict, 'pfm_type',
- self.TYPE_TO_INPUT[policy_type])
- if policy_type in ('int-enum', 'string-enum'):
- range_list = self._AddKeyValuePair(dict, 'pfm_range_list', 'array')
- for item in policy['items']:
- if policy_type == 'int-enum':
- element_type = 'integer'
- else:
- element_type = 'string'
- self.AddElement(range_list, element_type, {}, str(item['value']))
- elif policy_type in ('list', 'string-enum-list'):
- subkeys = self._AddKeyValuePair(dict, 'pfm_subkeys', 'array')
- subkeys_dict = self.AddElement(subkeys, 'dict')
- subkeys_type = self._AddKeyValuePair(subkeys_dict, 'pfm_type', 'string')
- self.AddText(subkeys_type, 'string')
-
- def BeginTemplate(self):
- self._plist.attributes['version'] = '1'
- dict = self.AddElement(self._plist, 'dict')
- if self._GetChromiumVersionString() is not None:
- self.AddComment(self._plist, self.config['build'] + ' version: ' + \
- self._GetChromiumVersionString())
- app_name = plist_helper.GetPlistFriendlyName(self.config['app_name'])
- self._AddStringKeyValuePair(dict, 'pfm_name', app_name)
- self._AddStringKeyValuePair(dict, 'pfm_description', '')
- self._AddStringKeyValuePair(dict, 'pfm_title', '')
- self._AddStringKeyValuePair(dict, 'pfm_version', '1')
- self._AddStringKeyValuePair(dict, 'pfm_domain',
- self.config['mac_bundle_id'])
-
- self._array = self._AddKeyValuePair(dict, 'pfm_subkeys', 'array')
-
- def CreatePlistDocument(self):
- dom_impl = minidom.getDOMImplementation('')
- doctype = dom_impl.createDocumentType(
- 'plist',
- '-//Apple//DTD PLIST 1.0//EN',
- 'http://www.apple.com/DTDs/PropertyList-1.0.dtd')
- return dom_impl.createDocument(None, 'plist', doctype)
-
- def Init(self):
- self._doc = self.CreatePlistDocument()
- self._plist = self._doc.documentElement
-
- def GetTemplateText(self):
- return self.ToPrettyXml(self._doc)

Powered by Google App Engine
This is Rietveld 408576698