Index: components/policy/BUILD.gn |
diff --git a/components/policy/BUILD.gn b/components/policy/BUILD.gn |
index fc76b3518926abfd969e3b523c04ebc7e135fb5b..bf7ceca0df574078cdf66dadacc47c33013ecf53 100644 |
--- a/components/policy/BUILD.gn |
+++ b/components/policy/BUILD.gn |
@@ -9,6 +9,8 @@ import("//components/policy/resources/policy_templates.gni") |
import("//third_party/protobuf/proto_library.gni") |
import("//tools/grit/grit_rule.gni") |
+assert(!is_ios, "Policy should not be referenced on iOS") |
+ |
# To test policy generation for platforms different than your OS, override and |
# enable these flags (but don't check that in!). |
gen_policy_templates_common = true |
@@ -44,351 +46,348 @@ config("component_implementation") { |
defines = [ "POLICY_COMPONENT_IMPLEMENTATION" ] |
} |
-if (enable_configuration_policy) { |
- # This protobuf is equivalent to chrome_settings.proto but shares messages |
- # for policies of the same type, so that less classes have to be generated |
- # and compiled. |
- cloud_policy_proto_path = "$target_gen_dir/proto/cloud_policy.proto" |
- |
- # This is the "full" protobuf, which defines one protobuf message per |
- # policy. It is also the format currently used by the server. |
- chrome_settings_proto_path = "$target_gen_dir/proto/chrome_settings.proto" |
- |
- constants_header_path = "$target_gen_dir/policy_constants.h" |
- constants_source_path = "$target_gen_dir/policy_constants.cc" |
- protobuf_decoder_path = "$target_gen_dir/cloud_policy_generated.cc" |
- app_restrictions_path = "$target_gen_dir/app_restrictions.xml" |
- risk_tag_header_path = "$target_gen_dir/risk_tag.h" |
- |
- action("cloud_policy_code_generate") { |
- script = "tools/generate_policy_source.py" |
- chrome_version_abspath = "//chrome/VERSION" |
- chrome_version_path = rebase_path(chrome_version_abspath, root_build_dir) |
- |
- if (is_chromeos) { |
- chromeos_flag = "1" |
- } else { |
- chromeos_flag = "0" |
- } |
+# This protobuf is equivalent to chrome_settings.proto but shares messages |
+# for policies of the same type, so that less classes have to be generated |
+# and compiled. |
+cloud_policy_proto_path = "$target_gen_dir/proto/cloud_policy.proto" |
+ |
+# This is the "full" protobuf, which defines one protobuf message per |
+# policy. It is also the format currently used by the server. |
+chrome_settings_proto_path = "$target_gen_dir/proto/chrome_settings.proto" |
+ |
+constants_header_path = "$target_gen_dir/policy_constants.h" |
+constants_source_path = "$target_gen_dir/policy_constants.cc" |
+protobuf_decoder_path = "$target_gen_dir/cloud_policy_generated.cc" |
+app_restrictions_path = "$target_gen_dir/app_restrictions.xml" |
+risk_tag_header_path = "$target_gen_dir/risk_tag.h" |
+ |
+action("cloud_policy_code_generate") { |
+ script = "tools/generate_policy_source.py" |
+ chrome_version_abspath = "//chrome/VERSION" |
+ chrome_version_path = rebase_path(chrome_version_abspath, root_build_dir) |
+ |
+ if (is_chromeos) { |
+ chromeos_flag = "1" |
+ } else { |
+ chromeos_flag = "0" |
+ } |
- inputs = [ |
- chrome_version_abspath, |
- "resources/policy_templates.json", |
- ] |
- outputs = [ |
- constants_header_path, |
- constants_source_path, |
- protobuf_decoder_path, |
- chrome_settings_proto_path, |
- cloud_policy_proto_path, |
- app_restrictions_path, |
- risk_tag_header_path, |
- ] |
+ inputs = [ |
+ chrome_version_abspath, |
+ "resources/policy_templates.json", |
+ ] |
+ outputs = [ |
+ constants_header_path, |
+ constants_source_path, |
+ protobuf_decoder_path, |
+ chrome_settings_proto_path, |
+ cloud_policy_proto_path, |
+ app_restrictions_path, |
+ risk_tag_header_path, |
+ ] |
+ |
+ if (target_os != "android") { |
+ outputs -= [ app_restrictions_path ] |
+ } |
- if (target_os != "android") { |
- outputs -= [ app_restrictions_path ] |
- } |
+ args = [ |
+ "--policy-constants-header=" + |
+ rebase_path(constants_header_path, root_build_dir), |
+ "--policy-constants-source=" + |
+ rebase_path(constants_source_path, root_build_dir), |
+ "--chrome-settings-protobuf=" + |
+ rebase_path(chrome_settings_proto_path, root_build_dir), |
+ "--cloud-policy-protobuf=" + |
+ rebase_path(cloud_policy_proto_path, root_build_dir), |
+ "--cloud-policy-decoder=" + |
+ rebase_path(protobuf_decoder_path, root_build_dir), |
+ "--app-restrictions-definition=" + |
+ rebase_path(app_restrictions_path, root_build_dir), |
+ "--risk-tag-header=" + rebase_path(risk_tag_header_path, root_build_dir), |
+ chrome_version_path, |
+ target_os, |
+ chromeos_flag, |
+ rebase_path("resources/policy_templates.json", root_build_dir), |
+ ] |
+} |
- args = [ |
- "--policy-constants-header=" + |
- rebase_path(constants_header_path, root_build_dir), |
- "--policy-constants-source=" + |
- rebase_path(constants_source_path, root_build_dir), |
- "--chrome-settings-protobuf=" + |
- rebase_path(chrome_settings_proto_path, root_build_dir), |
- "--cloud-policy-protobuf=" + |
- rebase_path(cloud_policy_proto_path, root_build_dir), |
- "--cloud-policy-decoder=" + |
- rebase_path(protobuf_decoder_path, root_build_dir), |
- "--app-restrictions-definition=" + |
- rebase_path(app_restrictions_path, root_build_dir), |
- "--risk-tag-header=" + rebase_path(risk_tag_header_path, root_build_dir), |
- chrome_version_path, |
- target_os, |
- chromeos_flag, |
- rebase_path("resources/policy_templates.json", root_build_dir), |
+policy_templates_grd_file = "resources/policy_templates.grd" |
+ |
+grit("grit_policy_templates") { |
+ source = policy_templates_grd_file |
+ use_qualified_include = true |
+ output_dir = "$root_gen_dir/chrome" |
+ outputs = [] |
+ defines = [] |
+ |
+ if (gen_policy_templates_common) { |
+ outputs += policy_templates_doc_outputs |
+ defines += [ "gen_policy_templates_common" ] |
+ } |
+ if (gen_policy_templates_android) { |
+ outputs += policy_templates_android_outputs |
+ defines += [ "gen_policy_templates_android" ] |
+ } |
+ if (gen_policy_templates_linux) { |
+ outputs += policy_templates_linux_outputs |
+ defines += [ "gen_policy_templates_linux" ] |
+ } |
+ if (gen_policy_templates_mac) { |
+ outputs += policy_templates_mac_outputs |
+ defines += [ |
+ "mac_bundle_id=$chrome_mac_bundle_id", |
+ "gen_policy_templates_mac", |
] |
} |
+ if (gen_policy_templates_win) { |
+ outputs += policy_templates_windows_outputs |
+ defines += [ "gen_policy_templates_win" ] |
+ } |
+} |
- policy_templates_grd_file = "resources/policy_templates.grd" |
- |
- grit("grit_policy_templates") { |
- source = policy_templates_grd_file |
- use_qualified_include = true |
- output_dir = "$root_gen_dir/chrome" |
- outputs = [] |
- defines = [] |
+if (gen_policy_templates_win && is_chrome_branded) { |
+ # Creates google.admx and google.adml files that define a common 'Google' |
+ # category used for Chrome, Chrome OS and possibly external tools, see |
+ # crbug.com/665400. |
+ action("create_google_admx") { |
+ script = "tools/create_google_admx.py" |
+ inputs = [ |
+ policy_templates_grd_file, |
+ grit_info_script, |
+ ] + policy_templates_windows_outputs |
+ outputs = policy_templates_windows_google_outputs |
+ deps = [ |
+ ":grit_policy_templates", |
+ ] |
- if (gen_policy_templates_common) { |
- outputs += policy_templates_doc_outputs |
- defines += [ "gen_policy_templates_common" ] |
- } |
- if (gen_policy_templates_android) { |
- outputs += policy_templates_android_outputs |
- defines += [ "gen_policy_templates_android" ] |
- } |
- if (gen_policy_templates_linux) { |
- outputs += policy_templates_linux_outputs |
- defines += [ "gen_policy_templates_linux" ] |
- } |
- if (gen_policy_templates_mac) { |
- outputs += policy_templates_mac_outputs |
- defines += [ |
- "mac_bundle_id=$chrome_mac_bundle_id", |
- "gen_policy_templates_mac", |
- ] |
- } |
- if (gen_policy_templates_win) { |
- outputs += policy_templates_windows_outputs |
- defines += [ "gen_policy_templates_win" ] |
- } |
+ # Don't pass in outputs directly, it would exceed a limit on Windows! |
+ args = [ |
+ "--basedir", |
+ rebase_path(policy_templates_base_dir, root_build_dir), |
+ "--grd_strip_path_prefix", |
+ "app/policy/", |
+ "--grd_input", |
+ rebase_path(policy_templates_grd_file, root_build_dir), |
+ "--grit_info", |
+ rebase_path(grit_info_script, root_build_dir), |
+ "-D", |
+ "gen_policy_templates_win", |
+ ] + grit_defines |
} |
+} |
+group("policy_templates") { |
+ public_deps = [ |
+ ":grit_policy_templates", |
+ ] |
if (gen_policy_templates_win && is_chrome_branded) { |
- # Creates google.admx and google.adml files that define a common 'Google' |
- # category used for Chrome, Chrome OS and possibly external tools, see |
- # crbug.com/665400. |
- action("create_google_admx") { |
- script = "tools/create_google_admx.py" |
- inputs = [ |
- policy_templates_grd_file, |
- grit_info_script, |
- ] + policy_templates_windows_outputs |
- outputs = policy_templates_windows_google_outputs |
- deps = [ |
- ":grit_policy_templates", |
- ] |
- |
- # Don't pass in outputs directly, it would exceed a limit on Windows! |
- args = [ |
- "--basedir", |
- rebase_path(policy_templates_base_dir, root_build_dir), |
- "--grd_strip_path_prefix", |
- "app/policy/", |
- "--grd_input", |
- rebase_path(policy_templates_grd_file, root_build_dir), |
- "--grit_info", |
- rebase_path(grit_info_script, root_build_dir), |
- "-D", |
- "gen_policy_templates_win", |
- ] + grit_defines |
- } |
+ public_deps += [ ":create_google_admx" ] |
} |
+} |
- group("policy_templates") { |
- public_deps = [ |
- ":grit_policy_templates", |
+# Run the proto compiler over the generated file and make it a component. |
+component("cloud_policy_proto_generated_compile") { |
+ public_deps = [ |
+ ":cloud_policy_proto_generated_compile_proto", |
+ ] |
+} |
+proto_library("cloud_policy_proto_generated_compile_proto") { |
+ visibility = [ ":cloud_policy_proto_generated_compile" ] |
+ sources = [ |
+ cloud_policy_proto_path, |
+ ] |
+ |
+ proto_out_dir = "components/policy/proto" |
+ cc_generator_options = "dllexport_decl=POLICY_PROTO_EXPORT:" |
+ cc_include = "components/policy/proto/policy_proto_export.h" |
+ component_build_force_source_set = true |
+ defines = [ "POLICY_PROTO_COMPILATION" ] |
+ |
+ deps = [ |
+ ":cloud_policy_code_generate", |
+ ] |
+} |
+ |
+# This target builds the "full" protobuf, used for tests only. |
+proto_library("chrome_settings_proto") { |
+ testonly = true |
+ sources = [ |
+ chrome_settings_proto_path, |
+ ] |
+ proto_out_dir = "components/policy/proto" |
+ |
+ deps = [ |
+ ":cloud_policy_code_generate", |
+ ":cloud_policy_proto_generated_compile", |
+ ] |
+} |
+ |
+static_library("generated") { |
+ sources = [ |
+ constants_header_path, |
+ constants_source_path, |
+ protobuf_decoder_path, |
+ risk_tag_header_path, |
+ ] |
+ |
+ defines = [ "POLICY_COMPONENT_IMPLEMENTATION" ] |
+ public_deps = [ |
+ ":cloud_policy_code_generate", |
+ ":cloud_policy_proto_generated_compile", |
+ "//base", |
+ "//third_party/protobuf:protobuf_lite", |
+ ] |
+} |
+ |
+if (gen_policy_templates_android && is_android) { |
+ import("//build/config/android/rules.gni") |
+ |
+ _generated_resources_dir = "$root_gen_dir/chrome/app/policy/android" |
+ |
+ copy("app_restrictions_resources_copy") { |
+ sources = [ |
+ app_restrictions_path, |
+ ] |
+ outputs = [ |
+ "$_generated_resources_dir/xml-v21/app_restrictions.xml", |
+ ] |
+ deps = [ |
+ ":cloud_policy_code_generate", |
+ ":policy_templates", |
] |
- if (gen_policy_templates_win && is_chrome_branded) { |
- public_deps += [ ":create_google_admx" ] |
- } |
} |
- # Run the proto compiler over the generated file and make it a component. |
- component("cloud_policy_proto_generated_compile") { |
- public_deps = [ |
- ":cloud_policy_proto_generated_compile_proto", |
+ android_resources("app_restrictions_resources") { |
+ resource_dirs = [] |
+ generated_resource_dirs = [ |
+ "$policy_templates_base_dir/android", |
+ _generated_resources_dir, |
+ ] |
+ generated_resource_files = |
+ policy_templates_android_outputs + |
+ [ "$_generated_resources_dir/xml-v21/app_restrictions.xml" ] |
+ deps = [ |
+ ":app_restrictions_resources_copy", |
+ ":grit_policy_templates", |
] |
} |
- proto_library("cloud_policy_proto_generated_compile_proto") { |
- visibility = [ ":cloud_policy_proto_generated_compile" ] |
+} else if (gen_policy_templates_mac && is_mac) { |
+ action("convert_mcx_plist") { |
+ script = "//build/config/mac/xcrun.py" |
sources = [ |
- cloud_policy_proto_path, |
+ "$policy_templates_base_dir/mac/app-Manifest.plist", |
+ ] |
+ inputs = [ |
+ script, |
+ ] |
+ outputs = [ |
+ "$target_gen_dir/$chrome_mac_bundle_id.manifest", |
] |
- proto_out_dir = "components/policy/proto" |
- cc_generator_options = "dllexport_decl=POLICY_PROTO_EXPORT:" |
- cc_include = "components/policy/proto/policy_proto_export.h" |
- component_build_force_source_set = true |
- defines = [ "POLICY_PROTO_COMPILATION" ] |
+ if (use_system_xcode) { |
+ args = [] |
+ } else { |
+ args = [ |
+ "--developer_dir", |
+ hermetic_xcode_path, |
+ ] |
+ } |
+ args += [ |
+ "plutil", |
+ "-convert", |
+ "xml1", |
+ ] + rebase_path(sources, root_out_dir) + [ "-o" ] + |
+ rebase_path(outputs, root_out_dir) |
deps = [ |
- ":cloud_policy_code_generate", |
+ ":policy_templates", |
] |
} |
- # This target builds the "full" protobuf, used for tests only. |
- proto_library("chrome_settings_proto") { |
- testonly = true |
- sources = [ |
- chrome_settings_proto_path, |
+ bundle_data("manifest_bundle_data") { |
+ sources = get_target_outputs(":convert_mcx_plist") |
+ outputs = [ |
+ "{{bundle_resources_dir}}/{{source_file_part}}", |
] |
- proto_out_dir = "components/policy/proto" |
- |
- deps = [ |
- ":cloud_policy_code_generate", |
- ":cloud_policy_proto_generated_compile", |
+ public_deps = [ |
+ ":convert_mcx_plist", |
] |
} |
- static_library("generated") { |
+ # The reason we are not enumerating all the locales is that |
+ # the translations would eat up 3.5MB disk space in the |
+ # application bundle. |
+ bundle_data("manifest_strings_bundle_data") { |
sources = [ |
- constants_header_path, |
- constants_source_path, |
- protobuf_decoder_path, |
- risk_tag_header_path, |
+ "$policy_templates_base_dir/mac/strings/en.lproj/Localizable.strings", |
+ ] |
+ outputs = [ |
+ "{{bundle_resources_dir}}/en.lproj/{{source_file_part}}", |
] |
- |
- defines = [ "POLICY_COMPONENT_IMPLEMENTATION" ] |
public_deps = [ |
- ":cloud_policy_code_generate", |
- ":cloud_policy_proto_generated_compile", |
- "//base", |
- "//third_party/protobuf:protobuf_lite", |
+ ":policy_templates", |
] |
} |
- if (gen_policy_templates_android && is_android) { |
- import("//build/config/android/rules.gni") |
- |
- _generated_resources_dir = "$root_gen_dir/chrome/app/policy/android" |
- |
- copy("app_restrictions_resources_copy") { |
- sources = [ |
- app_restrictions_path, |
- ] |
- outputs = [ |
- "$_generated_resources_dir/xml-v21/app_restrictions.xml", |
- ] |
- deps = [ |
- ":cloud_policy_code_generate", |
- ":policy_templates", |
- ] |
- } |
- |
- android_resources("app_restrictions_resources") { |
- resource_dirs = [] |
- generated_resource_dirs = [ |
- "$policy_templates_base_dir/android", |
- _generated_resources_dir, |
- ] |
- generated_resource_files = |
- policy_templates_android_outputs + |
- [ "$_generated_resources_dir/xml-v21/app_restrictions.xml" ] |
- deps = [ |
- ":app_restrictions_resources_copy", |
- ":grit_policy_templates", |
- ] |
- } |
- } else if (gen_policy_templates_mac && is_mac) { |
- action("convert_mcx_plist") { |
- script = "//build/config/mac/xcrun.py" |
- sources = [ |
- "$policy_templates_base_dir/mac/app-Manifest.plist", |
- ] |
- inputs = [ |
- script, |
- ] |
- outputs = [ |
- "$target_gen_dir/$chrome_mac_bundle_id.manifest", |
- ] |
- |
- if (use_system_xcode) { |
- args = [] |
- } else { |
- args = [ |
- "--developer_dir", |
- hermetic_xcode_path, |
- ] |
- } |
- args += [ |
- "plutil", |
- "-convert", |
- "xml1", |
- ] + rebase_path(sources, root_out_dir) + [ "-o" ] + |
- rebase_path(outputs, root_out_dir) |
- |
- deps = [ |
- ":policy_templates", |
- ] |
- } |
+ create_bundle("chrome_manifest_bundle") { |
+ bundle_root_dir = "$root_out_dir/$chrome_mac_bundle_id.manifest/Contents" |
+ bundle_resources_dir = "$bundle_root_dir/Resources" |
- bundle_data("manifest_bundle_data") { |
- sources = get_target_outputs(":convert_mcx_plist") |
- outputs = [ |
- "{{bundle_resources_dir}}/{{source_file_part}}", |
- ] |
- public_deps = [ |
- ":convert_mcx_plist", |
- ] |
- } |
- |
- # The reason we are not enumerating all the locales is that |
- # the translations would eat up 3.5MB disk space in the |
- # application bundle. |
- bundle_data("manifest_strings_bundle_data") { |
- sources = [ |
- "$policy_templates_base_dir/mac/strings/en.lproj/Localizable.strings", |
- ] |
- outputs = [ |
- "{{bundle_resources_dir}}/en.lproj/{{source_file_part}}", |
- ] |
- public_deps = [ |
- ":policy_templates", |
- ] |
- } |
- |
- create_bundle("chrome_manifest_bundle") { |
- bundle_root_dir = "$root_out_dir/$chrome_mac_bundle_id.manifest/Contents" |
- bundle_resources_dir = "$bundle_root_dir/Resources" |
- |
- deps = [ |
- ":manifest_bundle_data", |
- ":manifest_strings_bundle_data", |
- ] |
- } |
+ deps = [ |
+ ":manifest_bundle_data", |
+ ":manifest_strings_bundle_data", |
+ ] |
} |
+} |
- if (gen_policy_templates_common && gen_policy_templates_win) { |
- version_file = "VERSION" |
- version_path = "$policy_templates_base_dir/$version_file" |
+if (gen_policy_templates_common && gen_policy_templates_win) { |
+ version_file = "VERSION" |
+ version_path = "$policy_templates_base_dir/$version_file" |
- copy("add_version") { |
- sources = [ |
- "//chrome/VERSION", |
- ] |
- outputs = [ |
- version_path, |
- ] |
- } |
+ copy("add_version") { |
+ sources = [ |
+ "//chrome/VERSION", |
+ ] |
+ outputs = [ |
+ version_path, |
+ ] |
+ } |
- action("pack_policy_templates") { |
- output_zip_file = "$root_out_dir/policy_templates.zip" |
- script = "tools/make_policy_zip.py" |
- inputs = |
- [ |
- version_path, |
- policy_templates_grd_file, |
- grit_info_script, |
- ] + policy_templates_windows_outputs + policy_templates_doc_outputs |
- outputs = [ |
- output_zip_file, |
- ] |
- args = [ |
- "--output", |
- rebase_path(output_zip_file, root_build_dir), |
- "--basedir", |
- rebase_path(policy_templates_base_dir, root_build_dir), |
- "--grd_input", |
- rebase_path(policy_templates_grd_file, root_build_dir), |
- "--grd_strip_path_prefix", |
- "app/policy", |
- "--extra_input", |
- version_file, |
- "--grit_info", |
- rebase_path(grit_info_script, root_build_dir), |
- "-D", |
- "gen_policy_templates_common", |
- "-D", |
- "gen_policy_templates_win", |
- ] + grit_defines |
- if (is_chrome_branded) { |
- args += [ "--include_google_admx" ] |
- } |
- deps = [ |
- ":add_version", |
- ":policy_templates", |
- ] |
+ action("pack_policy_templates") { |
+ output_zip_file = "$root_out_dir/policy_templates.zip" |
+ script = "tools/make_policy_zip.py" |
+ inputs = [ |
+ version_path, |
+ policy_templates_grd_file, |
+ grit_info_script, |
+ ] + policy_templates_windows_outputs + policy_templates_doc_outputs |
+ outputs = [ |
+ output_zip_file, |
+ ] |
+ args = [ |
+ "--output", |
+ rebase_path(output_zip_file, root_build_dir), |
+ "--basedir", |
+ rebase_path(policy_templates_base_dir, root_build_dir), |
+ "--grd_input", |
+ rebase_path(policy_templates_grd_file, root_build_dir), |
+ "--grd_strip_path_prefix", |
+ "app/policy", |
+ "--extra_input", |
+ version_file, |
+ "--grit_info", |
+ rebase_path(grit_info_script, root_build_dir), |
+ "-D", |
+ "gen_policy_templates_common", |
+ "-D", |
+ "gen_policy_templates_win", |
+ ] + grit_defines |
+ if (is_chrome_branded) { |
+ args += [ "--include_google_admx" ] |
} |
+ deps = [ |
+ ":add_version", |
+ ":policy_templates", |
+ ] |
} |
} |