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

Side by Side Diff: grit/format/policy_templates/writers/reg_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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 #!/usr/bin/env python
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
5
6
7 import json
8
9 from grit.format.policy_templates.writers import template_writer
10
11
12 def GetWriter(config):
13 '''Factory method for creating RegWriter objects.
14 See the constructor of TemplateWriter for description of
15 arguments.
16 '''
17 return RegWriter(['win'], config)
18
19
20 class RegWriter(template_writer.TemplateWriter):
21 '''Class for generating policy example files in .reg format (for Windows).
22 The generated files will define all the supported policies with example
23 values set for them. This class is used by PolicyTemplateGenerator to
24 write .reg files.
25 '''
26
27 NEWLINE = '\r\n'
28
29 def _EscapeRegString(self, string):
30 return string.replace('\\', '\\\\').replace('\"', '\\\"')
31
32 def _StartBlock(self, key, suffix, list):
33 key = 'HKEY_LOCAL_MACHINE\\' + key
34 if suffix:
35 key = key + '\\' + suffix
36 if key != self._last_key.get(id(list), None):
37 list.append('')
38 list.append('[%s]' % key)
39 self._last_key[id(list)] = key
40
41 def PreprocessPolicies(self, policy_list):
42 return self.FlattenGroupsAndSortPolicies(policy_list,
43 self.GetPolicySortingKey)
44
45 def GetPolicySortingKey(self, policy):
46 '''Extracts a sorting key from a policy. These keys can be used for
47 list.sort() methods to sort policies.
48 See TemplateWriter.SortPoliciesGroupsFirst for usage.
49 '''
50 is_list = policy['type'] in ('list', 'string-enum-list')
51 # Lists come after regular policies.
52 return (is_list, policy['name'])
53
54 def _WritePolicy(self, policy, key, list):
55 example_value = policy['example_value']
56
57 if policy['type'] == 'external':
58 # This type can only be set through cloud policy.
59 return
60 elif policy['type'] in ('list', 'string-enum-list'):
61 self._StartBlock(key, policy['name'], list)
62 i = 1
63 for item in example_value:
64 escaped_str = self._EscapeRegString(item)
65 list.append('"%d"="%s"' % (i, escaped_str))
66 i = i + 1
67 else:
68 self._StartBlock(key, None, list)
69 if policy['type'] in ('string', 'string-enum', 'dict'):
70 example_value_str = json.dumps(example_value, sort_keys=True)
71 if policy['type'] == 'dict':
72 example_value_str = '"%s"' % example_value_str
73 elif policy['type'] == 'main':
74 if example_value == True:
75 example_value_str = 'dword:00000001'
76 else:
77 example_value_str = 'dword:00000000'
78 elif policy['type'] in ('int', 'int-enum'):
79 example_value_str = 'dword:%08x' % example_value
80 else:
81 raise Exception('unknown policy type %s:' % policy['type'])
82
83 list.append('"%s"=%s' % (policy['name'], example_value_str))
84
85 def WriteComment(self, comment):
86 self._prefix.append('; ' + comment)
87
88 def WritePolicy(self, policy):
89 if self.CanBeMandatory(policy):
90 self._WritePolicy(policy,
91 self.config['win_reg_mandatory_key_name'],
92 self._mandatory)
93
94 def WriteRecommendedPolicy(self, policy):
95 self._WritePolicy(policy,
96 self.config['win_reg_recommended_key_name'],
97 self._recommended)
98
99 def BeginTemplate(self):
100 pass
101
102 def EndTemplate(self):
103 pass
104
105 def Init(self):
106 self._mandatory = []
107 self._recommended = []
108 self._last_key = {}
109 self._prefix = []
110
111 def GetTemplateText(self):
112 self._prefix.append('Windows Registry Editor Version 5.00')
113 if self._GetChromiumVersionString() is not None:
114 self.WriteComment(self.config['build'] + ' version: ' + \
115 self._GetChromiumVersionString())
116 all = self._prefix + self._mandatory + self._recommended
117 return self.NEWLINE.join(all)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698