| Index: tools/grit/grit/format/policy_templates/writers/json_writer.py
|
| diff --git a/tools/grit/grit/format/policy_templates/writers/json_writer.py b/tools/grit/grit/format/policy_templates/writers/json_writer.py
|
| new file mode 100755
|
| index 0000000000000000000000000000000000000000..4dfd282064d1a1b5a3313983e0eef664ef4f4d60
|
| --- /dev/null
|
| +++ b/tools/grit/grit/format/policy_templates/writers/json_writer.py
|
| @@ -0,0 +1,95 @@
|
| +#!/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.
|
| +
|
| +import json
|
| +
|
| +from textwrap import TextWrapper
|
| +from grit.format.policy_templates.writers import template_writer
|
| +
|
| +
|
| +TEMPLATE_HEADER="""\
|
| +// Policy template for Linux.
|
| +// Uncomment the policies you wish to activate and change their values to
|
| +// something useful for your case. The provided values are for reference only
|
| +// and do not provide meaningful defaults!
|
| +{"""
|
| +
|
| +
|
| +HEADER_DELIMETER="""\
|
| + //-------------------------------------------------------------------------"""
|
| +
|
| +
|
| +def GetWriter(config):
|
| + '''Factory method for creating JsonWriter objects.
|
| + See the constructor of TemplateWriter for description of
|
| + arguments.
|
| + '''
|
| + return JsonWriter(['linux'], config)
|
| +
|
| +
|
| +class JsonWriter(template_writer.TemplateWriter):
|
| + '''Class for generating policy files in JSON format (for Linux). The
|
| + generated files will define all the supported policies with example values
|
| + set for them. This class is used by PolicyTemplateGenerator to write .json
|
| + files.
|
| + '''
|
| +
|
| + def PreprocessPolicies(self, policy_list):
|
| + return self.FlattenGroupsAndSortPolicies(policy_list)
|
| +
|
| + def WriteComment(self, comment):
|
| + self._out.append('// ' + comment)
|
| +
|
| + def WritePolicy(self, policy):
|
| + if policy['type'] == 'external':
|
| + # This type can only be set through cloud policy.
|
| + return
|
| + example_value_str = json.dumps(policy['example_value'], sort_keys=True)
|
| +
|
| + # Add comma to the end of the previous line.
|
| + if not self._first_written:
|
| + self._out[-2] += ','
|
| +
|
| + if not self.CanBeMandatory(policy) and self.CanBeRecommended(policy):
|
| + line = ' // Note: this policy is supported only in recommended mode.'
|
| + self._out.append(line)
|
| + line = ' // The JSON file should be placed in %srecommended.' % \
|
| + self.config['linux_policy_path']
|
| + self._out.append(line)
|
| +
|
| + line = ' // %s' % policy['caption']
|
| + self._out.append(line)
|
| + self._out.append(HEADER_DELIMETER)
|
| + description = self._text_wrapper.wrap(policy['desc'])
|
| + self._out += description;
|
| + line = ' //"%s": %s' % (policy['name'], example_value_str)
|
| + self._out.append('')
|
| + self._out.append(line)
|
| + self._out.append('')
|
| +
|
| + self._first_written = False
|
| +
|
| + def BeginTemplate(self):
|
| + if self._GetChromiumVersionString() is not None:
|
| + self.WriteComment(self.config['build'] + ''' version: ''' + \
|
| + self._GetChromiumVersionString())
|
| + self._out.append(TEMPLATE_HEADER)
|
| +
|
| + def EndTemplate(self):
|
| + self._out.append('}')
|
| +
|
| + def Init(self):
|
| + self._out = []
|
| + # The following boolean member is true until the first policy is written.
|
| + self._first_written = True
|
| + # Create the TextWrapper object once.
|
| + self._text_wrapper = TextWrapper(
|
| + initial_indent = ' // ',
|
| + subsequent_indent = ' // ',
|
| + break_long_words = False,
|
| + width = 80)
|
| +
|
| + def GetTemplateText(self):
|
| + return '\n'.join(self._out)
|
|
|