| # Copyright 2018 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/chrome_build.gni") |
| import("//build/toolchain/win/midl.gni") |
| import("//chrome/process_version_rc_template.gni") |
| import("//testing/test.gni") |
| |
| midl("elevation_service_idl") { |
| sources = [ |
| "elevation_service_idl.idl", |
| ] |
| |
| writes_tlb = true |
| } |
| |
| # Must be in a config because of how GN orders flags (otherwise /W4 will appear |
| # after this, and turn it back on). |
| config("no-missing-braces") { |
| # Macros invoked by WRL CoCreatableClass omit optional braces. |
| cflags = [ "-Wno-missing-braces" ] |
| } |
| |
| # This service needs to work with Windows 7, so explicitly setting the defines |
| # to reflect this. Otherwise, WRL uses APIs that are only available in later |
| # Windows versions. |
| config("winver") { |
| defines = [ |
| "NTDDI_VERSION=NTDDI_WIN7", |
| "_WIN32_WINNT=_WIN32_WINNT_WIN7", |
| "WINVER=_WIN32_WINNT_WIN7", |
| ] |
| } |
| |
| executable("elevation_service") { |
| sources = [ |
| "elevation_service.cc", |
| "elevation_service.rc", |
| ] |
| |
| configs -= [ "//build/config/win:console" ] |
| configs += [ "//build/config/win:windowed" ] |
| configs += [ ":no-missing-braces" ] |
| configs -= [ "//build/config/win:winver" ] |
| configs += [ ":winver" ] |
| |
| deps = [ |
| ":lib", |
| ":version_resources", |
| "//base", |
| "//build/win:default_exe_manifest", |
| "//chrome/install_static:primary_module", |
| "//components/crx_file", |
| "//third_party/zlib/google:zip", |
| ] |
| } |
| |
| source_set("lib") { |
| visibility = [ ":*" ] |
| |
| public = [ |
| "elevated_recovery_impl.h", |
| "elevator.h", |
| "service_main.h", |
| ] |
| |
| sources = [ |
| "elevated_recovery_impl.cc", |
| "elevator.cc", |
| "service_main.cc", |
| ] |
| |
| configs += [ ":no-missing-braces" ] |
| configs -= [ "//build/config/win:winver" ] |
| configs += [ ":winver" ] |
| |
| public_deps = [ |
| ":elevation_service_idl", |
| "//base", |
| ] |
| |
| deps = [ |
| "//chrome/install_static:install_static_util", |
| ] |
| } |
| |
| process_version_rc_template("version_resources") { |
| sources = [ |
| "elevation_service_exe.ver", |
| ] |
| output = "$target_gen_dir/elevation_service_exe.rc" |
| } |
| |
| copy("elevation_service_unittests_files") { |
| sources = [ |
| "//components/test/data/crx_file/valid_no_publisher.crx3", |
| "//components/test/data/crx_file/valid_publisher.crx3", |
| "//components/test/data/update_client/ChromeRecovery.crx3", |
| ] |
| outputs = [ |
| "$root_out_dir/elevated_recovery_unittest/{{source_file_part}}", |
| ] |
| } |
| |
| test("elevation_service_unittests") { |
| sources = [ |
| "elevated_recovery_unittest.cc", |
| "run_all_unittests.cc", |
| "service_main_unittest.cc", |
| ] |
| |
| configs -= [ "//build/config/win:winver" ] |
| configs += [ ":winver" ] |
| |
| deps = [ |
| ":lib", |
| "//base", |
| "//base/test:test_support", |
| "//chrome/install_static:install_static_util", |
| "//chrome/install_static/test:test_support", |
| "//components/crx_file", |
| "//testing/gtest", |
| "//third_party/zlib/google:zip", |
| ] |
| |
| data_deps = [ |
| ":elevation_service", |
| ":elevation_service_unittests_files", |
| ] |
| } |