Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 '''python %prog [options] platform chromium_os_flag template | 6 '''python %prog [options] platform chromium_os_flag template |
| 7 | 7 |
| 8 platform specifies which platform source is being generated for | 8 platform specifies which platform source is being generated for |
| 9 and can be one of (win, mac, linux) | 9 and can be one of (win, mac, linux) |
| 10 chromium_os_flag should be 1 if this is a Chromium OS build | 10 chromium_os_flag should be 1 if this is a Chromium OS build |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 50 def __init__(self, item): | 50 def __init__(self, item): |
| 51 self.caption = PolicyDetails._RemovePlaceholders(item['caption']) | 51 self.caption = PolicyDetails._RemovePlaceholders(item['caption']) |
| 52 self.value = item['value'] | 52 self.value = item['value'] |
| 53 | 53 |
| 54 def __init__(self, policy, os, is_chromium_os): | 54 def __init__(self, policy, os, is_chromium_os): |
| 55 self.id = policy['id'] | 55 self.id = policy['id'] |
| 56 self.name = policy['name'] | 56 self.name = policy['name'] |
| 57 self.is_deprecated = policy.get('deprecated', False) | 57 self.is_deprecated = policy.get('deprecated', False) |
| 58 self.is_device_only = policy.get('device_only', False) | 58 self.is_device_only = policy.get('device_only', False) |
| 59 self.schema = policy.get('schema', {}) | 59 self.schema = policy.get('schema', {}) |
| 60 self.has_enterprise_default = 'default_for_enterprise_users' in policy | |
| 61 if self.has_enterprise_default: | |
| 62 self.enterprise_default = policy['default_for_enterprise_users'] | |
| 60 | 63 |
| 61 expected_platform = 'chrome_os' if is_chromium_os else os.lower() | 64 expected_platform = 'chrome_os' if is_chromium_os else os.lower() |
| 62 self.platforms = [] | 65 self.platforms = [] |
| 63 for platform, version in [ p.split(':') for p in policy['supported_on'] ]: | 66 for platform, version in [ p.split(':') for p in policy['supported_on'] ]: |
| 64 if not version.endswith('-'): | 67 if not version.endswith('-'): |
| 65 continue | 68 continue |
| 66 | 69 |
| 67 if platform.startswith('chrome.'): | 70 if platform.startswith('chrome.'): |
| 68 platform_sub = platform[7:] | 71 platform_sub = platform[7:] |
| 69 if platform_sub == '*': | 72 if platform_sub == '*': |
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 228 'configuration resides.\n' | 231 'configuration resides.\n' |
| 229 'extern const wchar_t kRegistryChromePolicyKey[];\n') | 232 'extern const wchar_t kRegistryChromePolicyKey[];\n') |
| 230 | 233 |
| 231 f.write('// Returns the PolicyDetails for |policy| if |policy| is a known\n' | 234 f.write('// Returns the PolicyDetails for |policy| if |policy| is a known\n' |
| 232 '// Chrome policy, otherwise returns NULL.\n' | 235 '// Chrome policy, otherwise returns NULL.\n' |
| 233 'const PolicyDetails* GetChromePolicyDetails(' | 236 'const PolicyDetails* GetChromePolicyDetails(' |
| 234 'const std::string& policy);\n' | 237 'const std::string& policy);\n' |
| 235 '\n' | 238 '\n' |
| 236 '// Returns the schema data of the Chrome policy schema.\n' | 239 '// Returns the schema data of the Chrome policy schema.\n' |
| 237 'const internal::SchemaData* GetChromeSchemaData();\n' | 240 'const internal::SchemaData* GetChromeSchemaData();\n' |
| 238 '\n') | 241 '\n') |
|
Joao da Silva
2014/08/29 09:11:42
Add a forward declaration for SetEnterpriseUsersDe
merkulova
2014/08/29 14:02:52
Done.
| |
| 239 f.write('// Key names for the policy settings.\n' | 242 f.write('// Key names for the policy settings.\n' |
| 240 'namespace key {\n\n') | 243 'namespace key {\n\n') |
| 241 for policy in policies: | 244 for policy in policies: |
| 242 # TODO(joaodasilva): Include only supported policies in | 245 # TODO(joaodasilva): Include only supported policies in |
| 243 # configuration_policy_handler.cc and configuration_policy_handler_list.cc | 246 # configuration_policy_handler.cc and configuration_policy_handler_list.cc |
| 244 # so that these names can be conditional on 'policy.is_supported'. | 247 # so that these names can be conditional on 'policy.is_supported'. |
| 245 # http://crbug.com/223616 | 248 # http://crbug.com/223616 |
| 246 f.write('extern const char k' + policy.name + '[];\n') | 249 f.write('extern const char k' + policy.name + '[];\n') |
| 247 f.write('\n} // namespace key\n\n' | 250 f.write('\n} // namespace key\n\n' |
| 248 '} // namespace policy\n\n' | 251 '} // namespace policy\n\n' |
| (...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 566 self.properties_nodes) | 569 self.properties_nodes) |
| 567 | 570 |
| 568 def _WritePolicyConstantSource(policies, os, f): | 571 def _WritePolicyConstantSource(policies, os, f): |
| 569 f.write('#include "policy/policy_constants.h"\n' | 572 f.write('#include "policy/policy_constants.h"\n' |
| 570 '\n' | 573 '\n' |
| 571 '#include <algorithm>\n' | 574 '#include <algorithm>\n' |
| 572 '#include <climits>\n' | 575 '#include <climits>\n' |
| 573 '\n' | 576 '\n' |
| 574 '#include "base/logging.h"\n' | 577 '#include "base/logging.h"\n' |
| 575 '#include "components/policy/core/common/schema_internal.h"\n' | 578 '#include "components/policy/core/common/schema_internal.h"\n' |
| 579 '#include "components/policy/core/common/policy_map.h"\n' | |
|
Joao da Silva
2014/08/29 09:11:42
Includes in alphabetical order, so this comes befo
merkulova
2014/08/29 14:02:53
Done.
| |
| 576 '\n' | 580 '\n' |
| 577 'namespace policy {\n' | 581 'namespace policy {\n' |
| 578 '\n' | 582 '\n' |
| 579 'namespace {\n' | 583 'namespace {\n' |
| 580 '\n') | 584 '\n') |
| 581 | 585 |
| 582 # Generate the Chrome schema. | 586 # Generate the Chrome schema. |
| 583 chrome_schema = { | 587 chrome_schema = { |
| 584 'type': 'object', | 588 'type': 'object', |
| 585 'properties': {}, | 589 'properties': {}, |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 623 'L"' + CHROME_POLICY_KEY + '";\n' | 627 'L"' + CHROME_POLICY_KEY + '";\n' |
| 624 '#else\n' | 628 '#else\n' |
| 625 'const wchar_t kRegistryChromePolicyKey[] = ' | 629 'const wchar_t kRegistryChromePolicyKey[] = ' |
| 626 'L"' + CHROMIUM_POLICY_KEY + '";\n' | 630 'L"' + CHROMIUM_POLICY_KEY + '";\n' |
| 627 '#endif\n\n') | 631 '#endif\n\n') |
| 628 | 632 |
| 629 f.write('const internal::SchemaData* GetChromeSchemaData() {\n' | 633 f.write('const internal::SchemaData* GetChromeSchemaData() {\n' |
| 630 ' return &kChromeSchemaData;\n' | 634 ' return &kChromeSchemaData;\n' |
| 631 '}\n\n') | 635 '}\n\n') |
| 632 | 636 |
| 637 f.write('#if defined(OS_CHROMEOS)\n' | |
| 638 'void SetEnterpriseUsersDefaults(PolicyMap* policy_map) {\n') | |
| 639 | |
| 640 for policy in policies: | |
| 641 if policy.has_enterprise_default: | |
|
Joao da Silva
2014/08/29 09:11:42
Use 2 spaces for indentation instead of 4 (below t
merkulova
2014/08/29 14:02:53
Done.
| |
| 642 if policy.policy_type == 'TYPE_BOOLEAN': | |
| 643 creation_expression = 'new bool(%s)' % policy.enterprise_default | |
|
Joao da Silva
2014/08/29 09:11:43
new base::FundamentalValue()
Also, the |policy.en
merkulova
2014/08/29 14:02:53
Done.
| |
| 644 elif policy.policy_type == 'TYPE_INTEGER': | |
| 645 creation_expression = 'new int(%s)' % policy.enterprise_default | |
|
Joao da Silva
2014/08/29 09:11:42
new base::FundamentalValue
merkulova
2014/08/29 14:02:52
Done.
| |
| 646 elif policy.policy_type == 'TYPE_STRING': | |
| 647 creation_expression = 'new base::StringValue("%s")' %\ | |
| 648 policy.enterprise_default | |
| 649 else: | |
| 650 raise RuntimeError('Type %s of policy %s is not supported at ' | |
| 651 'enterprise defaults' % (policy.policy_type, | |
| 652 policy.name)) | |
| 653 f.write(' if (!policy_map->Get("%s")) {\n' | |
| 654 ' policy_map->Set("%s",\n' | |
|
Joao da Silva
2014/08/29 09:11:42
These 2 lines are duplicating the string for the p
merkulova
2014/08/29 14:02:52
Done.
| |
| 655 ' POLICY_LEVEL_MANDATORY,\n' | |
| 656 ' POLICY_SCOPE_USER,\n' | |
| 657 ' %s,\n' | |
| 658 ' NULL);\n' | |
| 659 ' }\n' % (policy.name, policy.name, creation_expression)) | |
| 660 | |
| 661 f.write('}\n\n' | |
|
Joao da Silva
2014/08/29 09:11:42
Single newline here, so that the #endif comes righ
merkulova
2014/08/29 14:02:52
Done.
| |
| 662 '#endif\n\n') | |
| 663 | |
| 633 f.write('const PolicyDetails* GetChromePolicyDetails(' | 664 f.write('const PolicyDetails* GetChromePolicyDetails(' |
| 634 'const std::string& policy) {\n' | 665 'const std::string& policy) {\n' |
| 635 ' // First index in kPropertyNodes of the Chrome policies.\n' | 666 ' // First index in kPropertyNodes of the Chrome policies.\n' |
| 636 ' static const int begin_index = %s;\n' | 667 ' static const int begin_index = %s;\n' |
| 637 ' // One-past-the-end of the Chrome policies in kPropertyNodes.\n' | 668 ' // One-past-the-end of the Chrome policies in kPropertyNodes.\n' |
| 638 ' static const int end_index = %s;\n' % | 669 ' static const int end_index = %s;\n' % |
| 639 (schema_generator.root_properties_begin, | 670 (schema_generator.root_properties_begin, |
| 640 schema_generator.root_properties_end)) | 671 schema_generator.root_properties_end)) |
| 641 f.write(' const internal::PropertyNode* begin =\n' | 672 f.write(' const internal::PropertyNode* begin =\n' |
| 642 ' kPropertyNodes + begin_index;\n' | 673 ' kPropertyNodes + begin_index;\n' |
| (...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 919 def _WriteCloudPolicyDecoder(policies, os, f): | 950 def _WriteCloudPolicyDecoder(policies, os, f): |
| 920 f.write(CPP_HEAD) | 951 f.write(CPP_HEAD) |
| 921 for policy in policies: | 952 for policy in policies: |
| 922 if policy.is_supported and not policy.is_device_only: | 953 if policy.is_supported and not policy.is_device_only: |
| 923 _WritePolicyCode(f, policy) | 954 _WritePolicyCode(f, policy) |
| 924 f.write(CPP_FOOT) | 955 f.write(CPP_FOOT) |
| 925 | 956 |
| 926 | 957 |
| 927 if __name__ == '__main__': | 958 if __name__ == '__main__': |
| 928 sys.exit(main()) | 959 sys.exit(main()) |
| OLD | NEW |