1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch# Copyright 2014 The Chromium Authors. All rights reserved. 2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch# Use of this source code is governed by a BSD-style license that can be 3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch# found in the LICENSE file. 4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 5116680a4aac90f2aa7413d9095a592090648e557Ben Murdochimport("//build/config/features.gni") 6116680a4aac90f2aa7413d9095a592090648e557Ben Murdochimport("//third_party/protobuf/proto_library.gni") 7116680a4aac90f2aa7413d9095a592090648e557Ben Murdochimport("//tools/grit/grit_rule.gni") 8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 9116680a4aac90f2aa7413d9095a592090648e557Ben Murdochif (is_component_build) { 10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch component("policy_component") { 11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch deps = [ 12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "//components/policy/core/browser", 13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "//components/policy/core/common", 14116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ] 15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch group("policy_component_browser") { 17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch deps = [ ":policy_component" ] 18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch group("policy_component_common") { 20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch deps = [ ":policy_component" ] 21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} else { # Compile to separate libraries. 23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch group("policy_component") { 24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch deps = [ 25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ":policy_component_browser", 26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ":policy_component_common", 27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ] 28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch component("policy_component_browser") { 30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch deps = [ "//components/policy/core/browser" ] 31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch component("policy_component_common") { 33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch deps = [ "//components/policy/core/common" ] 34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 37116680a4aac90f2aa7413d9095a592090648e557Ben Murdochif (enable_configuration_policy) { 38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch # TODO(brettw) this component should use target_gen_dir instead but the GYP 39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch # build puts everything into the following directory. We do the same for now. 40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch policy_gen_dir = "$root_gen_dir/policy" 41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch # This protobuf is equivalent to chrome_settings.proto but shares messages 43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch # for policies of the same type, so that less classes have to be generated 44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch # and compiled. 45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch cloud_policy_proto_path = "$policy_gen_dir/cloud_policy.proto" 46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch # This is the "full" protobuf, which defines one protobuf message per 48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch # policy. It is also the format currently used by the server. 49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch chrome_settings_proto_path = "$policy_gen_dir/chrome_settings.proto" 50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch constants_header_path = "$policy_gen_dir/policy_constants.h" 52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch constants_source_path = "$policy_gen_dir/policy_constants.cc" 53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch protobuf_decoder_path = "$policy_gen_dir/cloud_policy_generated.cc" 54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch action("cloud_policy_code_generate") { 56116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch script = "tools/generate_policy_source.py" 57116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 58116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch if (is_chromeos) { 59116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch chromeos_flag = "1" 60116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } else { 61116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch chromeos_flag = "0" 62116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 63116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 64116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch inputs = [ 65116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "resources/policy_templates.json", 66116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ] 67116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch outputs = [ 68116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch constants_header_path, 69116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch constants_source_path, 70116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch protobuf_decoder_path, 71116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch chrome_settings_proto_path, 72116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch cloud_policy_proto_path, 73116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ] 74116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 75116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch args = [ 76116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "--policy-constants-header=" + 77116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch rebase_path(constants_header_path, root_build_dir), 78116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "--policy-constants-source=" + 79116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch rebase_path(constants_source_path, root_build_dir), 80116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "--chrome-settings-protobuf=" + 81116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch rebase_path(chrome_settings_proto_path, root_build_dir), 82116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "--cloud-policy-protobuf=" + 83116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch rebase_path(cloud_policy_proto_path, root_build_dir), 84116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "--cloud-policy-decoder=" + 85116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch rebase_path(protobuf_decoder_path, root_build_dir), 86116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch os, 87116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch chromeos_flag, 88116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch rebase_path("resources/policy_templates.json", root_build_dir), 89116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ] 90116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 91116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 92116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch proto_library("cloud_policy_proto_generated_compile") { 93116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sources = [ cloud_policy_proto_path ] 94116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 95116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch proto_out_dir = "policy/proto" 96116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch cc_generator_options = "dllexport_decl=POLICY_PROTO_EXPORT:" 97116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch cc_include = "components/policy/policy_proto_export.h" 98116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch defines = [ "POLICY_PROTO_COMPILATION" ] 99116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 100116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch deps = [ 101116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ":cloud_policy_code_generate", 102116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ] 103116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 104116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 105116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch # This target builds the "full" protobuf, used for tests only. 106116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch proto_library("chrome_settings_proto_generated_compile") { 107116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sources = [ chrome_settings_proto_path ] 108116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch proto_out_dir = "policy/proto" 109116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 110116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch deps = [ 111116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ":cloud_policy_code_generate", 112116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ":cloud_policy_proto_generated_compile", 113116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ] 114116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 115116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 116116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch static_library("policy") { 117116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sources = [ 118116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch constants_header_path, 119116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch constants_source_path, 120116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch protobuf_decoder_path, 121116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ] 122116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 123116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch defines = [ "POLICY_COMPONENT_IMPLEMENTATION" ] 124116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 125116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch deps = [ 126116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ":cloud_policy_code_generate", 127116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ":cloud_policy_proto_generated_compile", 128116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "//base", 129116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "//third_party/protobuf:protobuf_lite", 130116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ] 131116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 132116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 133116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch group("test_support") { 134116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch deps = [ 135116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ":chrome_settings_proto_generated_compile", 136116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ":policy", 137116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ] 138116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 139116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 140116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch static_library("policy_component_test_support") { 1411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci testonly = true 142116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sources = [ 143116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "core/browser/configuration_policy_pref_store_test.cc", 144116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "core/browser/configuration_policy_pref_store_test.h", 145116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "core/common/cloud/mock_cloud_external_data_manager.cc", 146116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "core/common/cloud/mock_cloud_external_data_manager.h", 147116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "core/common/cloud/mock_cloud_policy_client.cc", 148116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "core/common/cloud/mock_cloud_policy_client.h", 149116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "core/common/cloud/mock_cloud_policy_store.cc", 150116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "core/common/cloud/mock_cloud_policy_store.h", 151116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "core/common/cloud/mock_device_management_service.cc", 152116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "core/common/cloud/mock_device_management_service.h", 153116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "core/common/cloud/mock_user_cloud_policy_store.cc", 154116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "core/common/cloud/mock_user_cloud_policy_store.h", 155116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "core/common/cloud/policy_builder.cc", 156116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "core/common/cloud/policy_builder.h", 157116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "core/common/configuration_policy_provider_test.cc", 158116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "core/common/configuration_policy_provider_test.h", 159116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "core/common/mock_configuration_policy_provider.cc", 160116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "core/common/mock_configuration_policy_provider.h", 161116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "core/common/mock_policy_service.cc", 162116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "core/common/mock_policy_service.h", 163116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "core/common/policy_test_utils.cc", 164116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "core/common/policy_test_utils.h", 165116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "core/common/preferences_mock_mac.cc", 166116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "core/common/preferences_mock_mac.h", 167116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ] 168116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 169116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch if (is_chromeos) { 170116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sources -= [ 171116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "core/common/cloud/mock_user_cloud_policy_store.cc", 172116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "core/common/cloud/mock_user_cloud_policy_store.h", 173116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ] 174116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 175116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 176116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch deps = [ 177116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ":policy_component", 178116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ":test_support", 179116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "//components/policy/proto", 180116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "//testing/gmock", 181116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "//testing/gtest", 182116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ] 183116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 184116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 185116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 186116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#TODO(GYP) policy templates, chrome_manifest_bundle 187