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

Unified Diff: chrome/tools/build/generate_policy_source.py

Issue 9111022: Removed ConfigurationPolicyType and extended PolicyMap. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased Created 8 years, 11 months 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
« no previous file with comments | « chrome/browser/resources/policy.js ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/tools/build/generate_policy_source.py
diff --git a/chrome/tools/build/generate_policy_source.py b/chrome/tools/build/generate_policy_source.py
index a0655694ed8826b6f2c3a713728d7e83c22a1022..35349c06faac9b1fbc94b08db15d7761d16fe02b 100755
--- a/chrome/tools/build/generate_policy_source.py
+++ b/chrome/tools/build/generate_policy_source.py
@@ -33,26 +33,23 @@ TYPE_MAP = {
def main():
parser = OptionParser(usage=__doc__)
- parser.add_option("--pch", "--policy-constants-header", dest="header_path",
- help="generate header file of policy constants",
- metavar="FILE")
- parser.add_option("--pcc", "--policy-constants-source", dest="source_path",
- help="generate source file of policy constants",
- metavar="FILE")
- parser.add_option("--pth", "--policy-type-header", dest="type_path",
- help="generate header file for policy type enumeration",
- metavar="FILE")
- parser.add_option("--ppb", "--policy-protobuf", dest="proto_path",
- help="generate cloud policy protobuf file",
- metavar="FILE")
- parser.add_option("--ppd", "--protobuf-decoder", dest="decoder_path",
- help="generate C++ code decoding the policy protobuf",
- metavar="FILE")
+ parser.add_option('--pch', '--policy-constants-header', dest='header_path',
+ help='generate header file of policy constants',
+ metavar='FILE')
+ parser.add_option('--pcc', '--policy-constants-source', dest='source_path',
+ help='generate source file of policy constants',
+ metavar='FILE')
+ parser.add_option('--ppb', '--policy-protobuf', dest='proto_path',
+ help='generate cloud policy protobuf file',
+ metavar='FILE')
+ parser.add_option('--ppd', '--protobuf-decoder', dest='decoder_path',
+ help='generate C++ code decoding the policy protobuf',
+ metavar='FILE')
(opts, args) = parser.parse_args()
if len(args) != 3:
- print "exactly platform, chromium_os flag and input file must be specified."
+ print 'exactly platform, chromium_os flag and input file must be specified.'
parser.print_help()
return 2
template_file_contents = _LoadJSONFile(args[2])
@@ -60,8 +57,6 @@ def main():
_WritePolicyConstantHeader(template_file_contents, args, opts)
if opts.source_path is not None:
_WritePolicyConstantSource(template_file_contents, args, opts)
- if opts.type_path is not None:
- _WritePolicyTypeEnumerationHeader(template_file_contents, args, opts)
if opts.proto_path is not None:
_WriteProtobuf(template_file_contents, args, opts.proto_path)
if opts.decoder_path is not None:
@@ -83,10 +78,10 @@ def _OutputGeneratedWarningForC(f, template_file_path):
def _GetPolicyDetails(policy):
name = policy['name']
if not TYPE_MAP.has_key(policy['type']):
- print "Unknown policy type for %s: %s" % (name, policy['type'])
+ print 'Unknown policy type for %s: %s' % (name, policy['type'])
sys.exit(3)
vtype = TYPE_MAP[policy['type']]
- # platforms is a list of "chrome", "chrome_os" and/or "chrome_frame".
+ # platforms is a list of 'chrome', 'chrome_os' and/or 'chrome_frame'.
platforms = [ x.split(':')[0] for x in policy['supported_on'] ]
is_deprecated = policy.get('deprecated', False)
return (name, vtype, platforms, is_deprecated)
@@ -122,7 +117,7 @@ def _GetDeprecatedPolicyList(template_file_contents):
def _LoadJSONFile(json_file):
- with open(json_file, "r") as f:
+ with open(json_file, 'r') as f:
text = f.read()
return eval(text)
@@ -130,19 +125,20 @@ def _LoadJSONFile(json_file):
#------------------ policy constants header ------------------------#
def _WritePolicyConstantHeader(template_file_contents, args, opts):
os = args[0]
- with open(opts.header_path, "w") as f:
+ with open(opts.header_path, 'w') as f:
_OutputGeneratedWarningForC(f, args[2])
f.write('#ifndef CHROME_COMMON_POLICY_CONSTANTS_H_\n'
'#define CHROME_COMMON_POLICY_CONSTANTS_H_\n'
'#pragma once\n'
'\n'
+ '#include <string>\n'
+ '\n'
'#include "base/values.h"\n'
- '#include "policy/configuration_policy_type.h"\n'
'\n'
'namespace policy {\n\n')
- if os == "win":
+ if os == 'win':
f.write('// The windows registry path where mandatory policy '
'configuration resides.\n'
'extern const wchar_t kRegistryMandatorySubKey[];\n'
@@ -154,20 +150,16 @@ def _WritePolicyConstantHeader(template_file_contents, args, opts):
'// Used to initialize ConfigurationPolicyProviders.\n'
'struct PolicyDefinitionList {\n'
' struct Entry {\n'
- ' ConfigurationPolicyType policy_type;\n'
- ' base::Value::Type value_type;\n'
' const char* name;\n'
+ ' base::Value::Type value_type;\n'
' };\n'
'\n'
' const Entry* begin;\n'
' const Entry* end;\n'
'};\n'
'\n'
- '// Gets the policy name for the given policy type.\n'
- 'const char* GetPolicyName(ConfigurationPolicyType type);\n'
- '\n'
'// Returns true if the given policy is deprecated.\n'
- 'bool IsDeprecatedPolicy(ConfigurationPolicyType type);\n'
+ 'bool IsDeprecatedPolicy(const std::string& policy);\n'
'\n'
'// Returns the default policy definition list for Chrome.\n'
'const PolicyDefinitionList* GetChromePolicyDefinitionList();\n\n')
@@ -183,7 +175,7 @@ def _WritePolicyConstantHeader(template_file_contents, args, opts):
#------------------ policy constants source ------------------------#
def _WritePolicyConstantSource(template_file_contents, args, opts):
os = args[0]
- is_chromium_os = args[1] == "1"
+ is_chromium_os = args[1] == '1'
platform = None
platform_wildcard = None
if is_chromium_os:
@@ -191,7 +183,7 @@ def _WritePolicyConstantSource(template_file_contents, args, opts):
else:
platform = 'chrome.' + os.lower()
platform_wildcard = 'chrome.*'
- with open(opts.source_path, "w") as f:
+ with open(opts.source_path, 'w') as f:
_OutputGeneratedWarningForC(f, args[2])
f.write('#include "base/basictypes.h"\n'
@@ -206,7 +198,7 @@ def _WritePolicyConstantSource(template_file_contents, args, opts):
policy_list = _GetChromePolicyList(template_file_contents)
for (name, platforms, vtype) in policy_list:
if (platform in platforms) or (platform_wildcard in platforms):
- f.write(' { kPolicy%s, Value::%s, key::k%s },\n' % (name, vtype, name))
+ f.write(' { key::k%s, Value::%s },\n' % (name, vtype))
f.write('};\n\n')
f.write('const PolicyDefinitionList kChromePolicyList = {\n'
@@ -214,21 +206,15 @@ def _WritePolicyConstantSource(template_file_contents, args, opts):
' kEntries + arraysize(kEntries),\n'
'};\n\n')
- f.write('// Maps a policy-type enum value to the policy name.\n'
- 'const char* kPolicyNameMap[] = {\n')
- for name in _GetPolicyNameList(template_file_contents):
- f.write(' key::k%s,\n' % name)
- f.write('};\n\n')
-
f.write('// List of deprecated policies.\n'
- 'const ConfigurationPolicyType kDeprecatedPolicyList[] = {\n')
+ 'const char* kDeprecatedPolicyList[] = {\n')
for name in _GetDeprecatedPolicyList(template_file_contents):
- f.write(' kPolicy%s,\n' % name)
+ f.write(' key::k%s,\n' % name)
f.write('};\n\n')
f.write('} // namespace\n\n')
- if os == "win":
+ if os == 'win':
f.write('#if defined(GOOGLE_CHROME_BUILD)\n'
'const wchar_t kRegistryMandatorySubKey[] = '
'L"' + CHROME_MANDATORY_SUBKEY + '";\n'
@@ -241,16 +227,10 @@ def _WritePolicyConstantSource(template_file_contents, args, opts):
'L"' + CHROMIUM_RECOMMENDED_SUBKEY + '";\n'
'#endif\n\n')
- f.write('const char* GetPolicyName(ConfigurationPolicyType type) {\n'
- ' CHECK(type >= 0 && '
- 'static_cast<size_t>(type) < arraysize(kPolicyNameMap));\n'
- ' return kPolicyNameMap[type];\n'
- '}\n'
- '\n'
- 'bool IsDeprecatedPolicy(ConfigurationPolicyType type) {\n'
+ f.write('bool IsDeprecatedPolicy(const std::string& policy) {\n'
' for (size_t i = 0; i < arraysize(kDeprecatedPolicyList);'
' ++i) {\n'
- ' if (kDeprecatedPolicyList[i] == type)\n'
+ ' if (policy == kDeprecatedPolicyList[i])\n'
' return true;\n'
' }\n'
' return false;\n'
@@ -267,24 +247,6 @@ def _WritePolicyConstantSource(template_file_contents, args, opts):
'} // namespace policy\n')
-#------------------ policy type enumeration header -----------------#
-def _WritePolicyTypeEnumerationHeader(template_file_contents, args, opts):
- with open(opts.type_path, "w") as f:
- _OutputGeneratedWarningForC(f, args[2])
- f.write('#ifndef CHROME_BROWSER_POLICY_CONFIGURATION_POLICY_TYPE_H_\n'
- '#define CHROME_BROWSER_POLICY_CONFIGURATION_POLICY_TYPE_H_\n'
- '#pragma once\n'
- '\n'
- 'namespace policy {\n'
- '\n'
- 'enum ConfigurationPolicyType {\n')
- for policy_name in _GetPolicyNameList(template_file_contents):
- f.write(' kPolicy' + policy_name + ",\n")
- f.write('};\n\n'
- '} // namespace policy\n\n'
- '#endif // CHROME_BROWSER_POLICY_CONFIGURATION_POLICY_TYPE_H_\n')
-
-
#------------------ policy protobuf --------------------------------#
PROTO_HEAD = '''
syntax = "proto2";
@@ -365,15 +327,13 @@ def _WriteProtobuf(template_file_contents, args, outfilepath):
#------------------ protobuf decoder -------------------------------#
CPP_HEAD = '''
#include <limits>
-#include <map>
#include <string>
#include "base/logging.h"
#include "base/values.h"
-#include "chrome/browser/policy/configuration_policy_provider.h"
#include "chrome/browser/policy/policy_map.h"
#include "chrome/browser/policy/proto/cloud_policy.pb.h"
-#include "policy/configuration_policy_type.h"
+#include "policy/policy_constants.h"
using google::protobuf::RepeatedPtrField;
@@ -402,10 +362,7 @@ ListValue* DecodeStringList(const em::StringList& string_list) {
return list_value;
}
-void DecodePolicy(const em::CloudPolicySettings& policy,
- PolicyMap* mandatory, PolicyMap* recommended) {
- DCHECK(mandatory);
- DCHECK(recommended);
+void DecodePolicy(const em::CloudPolicySettings& policy, PolicyMap* map) {
'''
@@ -435,33 +392,36 @@ def _WritePolicyCode(file, policy):
if policy.get('device_only', False):
return
membername = policy['name'].lower()
- proto_type = "%sProto" % policy['name']
- proto_name = "%s_proto" % membername
+ proto_type = '%sProto' % policy['name']
+ proto_name = '%s_proto' % membername
file.write(' if (policy.has_%s()) {\n' % membername)
file.write(' const em::%s& %s = policy.%s();\n' %
(proto_type, proto_name, membername))
file.write(' if (%s.has_%s()) {\n' % (proto_name, membername))
- file.write(' PolicyMap* destination = mandatory;\n'
+ file.write(' PolicyLevel level = POLICY_LEVEL_MANDATORY;\n'
+ ' bool do_set = true;\n'
' if (%s.has_policy_options()) {\n'
+ ' do_set = false;\n'
' switch(%s.policy_options().mode()) {\n' %
(proto_name, proto_name))
file.write(' case em::PolicyOptions::MANDATORY:\n'
- ' destination = mandatory;\n'
+ ' do_set = true;\n'
+ ' level = POLICY_LEVEL_MANDATORY;\n'
' break;\n'
' case em::PolicyOptions::RECOMMENDED:\n'
- ' destination = recommended;\n'
+ ' do_set = true;\n'
+ ' level = POLICY_LEVEL_RECOMMENDED;\n'
' break;\n'
' case em::PolicyOptions::UNSET:\n'
- ' default:\n'
- ' destination = NULL;\n'
' break;\n'
' }\n'
' }\n'
- ' if (destination) {\n')
+ ' if (do_set) {\n')
file.write(' Value* value = %s;\n' %
(_CreateValue(policy['type'],
'%s.%s()' % (proto_name, membername))))
- file.write(' destination->Set(kPolicy%s, value);\n' % policy['name'])
+ file.write(' map->Set(key::k%s, level, POLICY_SCOPE_USER, value);\n' %
+ policy['name'])
file.write(' }\n'
' }\n'
' }\n')
« no previous file with comments | « chrome/browser/resources/policy.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698