Index: components/policy/BUILD.gn |
diff --git a/components/policy/BUILD.gn b/components/policy/BUILD.gn |
new file mode 100644 |
index 0000000000000000000000000000000000000000..200c5848b363da8760d67fd254d634c99399b60b |
--- /dev/null |
+++ b/components/policy/BUILD.gn |
@@ -0,0 +1,187 @@ |
+# Copyright 2014 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("//build/config/features.gni") |
+import("//third_party/protobuf/proto_library.gni") |
+import("//tools/grit/grit_rule.gni") |
+ |
+if (is_component_build) { |
+ component("policy_component") { |
+ deps = [ |
+ "//components/policy/core/browser", |
+ "//components/policy/core/common", |
+ ] |
+ } |
+ group("policy_component_browser") { |
+ deps = [ ":policy_component" ] |
+ } |
+ group("policy_component_common") { |
+ deps = [ ":policy_component" ] |
+ } |
+} else { # Compile to separate libraries. |
+ group("policy_component") { |
+ deps = [ |
+ ":policy_component_browser", |
+ ":policy_component_common", |
+ ] |
+ } |
+ component("policy_component_browser") { |
+ deps = [ "//components/policy/core/browser" ] |
+ } |
+ component("policy_component_common") { |
+ deps = [ "//components/policy/core/common" ] |
+ } |
+} |
+ |
+if (enable_configuration_policy) { |
+ # TODO(brettw) this component should use target_gen_dir instead but the GYP |
+ # build puts everything into the following directory. We do the same for now. |
+ policy_gen_dir = "$root_gen_dir/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 = "$policy_gen_dir/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 = "$policy_gen_dir/chrome_settings.proto" |
+ |
+ constants_header_path = "$policy_gen_dir/policy_constants.h" |
+ constants_source_path = "$policy_gen_dir/policy_constants.cc" |
+ protobuf_decoder_path = "$policy_gen_dir/cloud_policy_generated.cc" |
+ |
+ action("cloud_policy_code_generate") { |
+ script = "tools/generate_policy_source.py" |
+ |
+ if (is_chromeos) { |
+ chromeos_flag = "1" |
+ } else { |
+ chromeos_flag = "0" |
+ } |
+ |
+ source_prereqs = [ |
+ "resources/policy_templates.json", |
+ ] |
+ outputs = [ |
+ constants_header_path, |
+ constants_source_path, |
+ protobuf_decoder_path, |
+ chrome_settings_proto_path, |
+ cloud_policy_proto_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), |
+ os, |
+ chromeos_flag, |
+ rebase_path("resources/policy_templates.json", root_build_dir), |
+ ] |
+ } |
+ |
+ proto_library("cloud_policy_proto_generated_compile") { |
+ sources = [ cloud_policy_proto_path ] |
+ |
+ proto_in_dir = policy_gen_dir |
+ proto_out_dir = "policy/proto" |
+ cc_generator_options = "dllexport_decl=POLICY_PROTO_EXPORT:" |
+ cc_include = "components/policy/policy_proto_export.h" |
+ defines = [ "POLICY_PROTO_COMPILATION" ] |
+ |
+ deps = [ |
+ ":cloud_policy_code_generate", |
+ ] |
+ } |
+ |
+ # This target builds the "full" protobuf, used for tests only. |
+ proto_library("chrome_settings_proto_generated_compile") { |
+ sources = [ chrome_settings_proto_path ] |
+ proto_in_dir = policy_gen_dir |
+ proto_out_dir = "policy/proto" |
+ |
+ deps = [ |
+ ":cloud_policy_code_generate", |
+ ":cloud_policy_proto_generated_compile", |
+ ] |
+ } |
+ |
+ static_library("policy") { |
+ sources = [ |
+ constants_header_path, |
+ constants_source_path, |
+ protobuf_decoder_path, |
+ ] |
+ |
+ defines = [ "POLICY_COMPONENT_IMPLEMENTATION" ] |
+ |
+ deps = [ |
+ ":cloud_policy_code_generate", |
+ ":cloud_policy_proto_generated_compile", |
+ "//base", |
+ "//third_party/protobuf:protobuf_lite", |
+ ] |
+ } |
+ |
+ group("test_support") { |
+ deps = [ |
+ ":chrome_settings_proto_generated_compile", |
+ ":policy", |
+ ] |
+ } |
+ |
+ static_library("policy_component_test_support") { |
+ sources = [ |
+ "core/browser/configuration_policy_pref_store_test.cc", |
+ "core/browser/configuration_policy_pref_store_test.h", |
+ "core/common/cloud/mock_cloud_external_data_manager.cc", |
+ "core/common/cloud/mock_cloud_external_data_manager.h", |
+ "core/common/cloud/mock_cloud_policy_client.cc", |
+ "core/common/cloud/mock_cloud_policy_client.h", |
+ "core/common/cloud/mock_cloud_policy_store.cc", |
+ "core/common/cloud/mock_cloud_policy_store.h", |
+ "core/common/cloud/mock_device_management_service.cc", |
+ "core/common/cloud/mock_device_management_service.h", |
+ "core/common/cloud/mock_user_cloud_policy_store.cc", |
+ "core/common/cloud/mock_user_cloud_policy_store.h", |
+ "core/common/cloud/policy_builder.cc", |
+ "core/common/cloud/policy_builder.h", |
+ "core/common/configuration_policy_provider_test.cc", |
+ "core/common/configuration_policy_provider_test.h", |
+ "core/common/mock_configuration_policy_provider.cc", |
+ "core/common/mock_configuration_policy_provider.h", |
+ "core/common/mock_policy_service.cc", |
+ "core/common/mock_policy_service.h", |
+ "core/common/policy_test_utils.cc", |
+ "core/common/policy_test_utils.h", |
+ "core/common/preferences_mock_mac.cc", |
+ "core/common/preferences_mock_mac.h", |
+ ] |
+ |
+ if (is_chromeos) { |
+ sources -= [ |
+ "core/common/cloud/mock_user_cloud_policy_store.cc", |
+ "core/common/cloud/mock_user_cloud_policy_store.h", |
+ ] |
+ } |
+ |
+ deps = [ |
+ ":policy_component", |
+ ":test_support", |
+ "//components/policy/proto", |
+ "//testing/gmock", |
+ "//testing/gtest", |
+ ] |
+ } |
+} |
+ |
+#TODO(GYP) policy templates, chrome_manifest_bundle |