| # Copyright 2016 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/mac/tweak_info_plist.gni") |
| import("//build/config/ios/ios_sdk.gni") |
| import("//ios/build/chrome_build.gni") |
| import("//ios/public/provider/chrome/browser/build_config.gni") |
| import("//ios/third_party/earl_grey/ios_eg_test.gni") |
| |
| # Template wrapping ios_eg_test, setting default values for EarlGrey test |
| # based on //ios/chrome/app:chrome. |
| # |
| # Arguments: |
| # |
| # info_plist: |
| # (optional) string, path to the Info.plist file that will be used for |
| # the bundle. |
| # |
| # info_plist_target: |
| # (optional) string, if the info_plist is generated from an action, |
| # rather than a regular source file, specify the target name in lieu |
| # of info_plist. The two arguments are mutually exclusive. |
| # |
| # extra_info_plists: |
| # (optional) string array, extra list of plist files that will be merged |
| # and tweaked; ignored if either info_plist or info_plist_target is set. |
| # |
| # entitlements_path: |
| # (optional) path to the template to use to generate the application |
| # entitlements by performing variable substitutions, defaults to |
| # //build/config/ios/entitlements.plist. |
| # |
| # entitlements_target: |
| # (optional) label of the target generating the application |
| # entitlements (must generate a single file as output); cannot be |
| # defined if entitlements_path is set. |
| # |
| # deps |
| # list of labels to depends on. |
| # |
| # This template defines two targets, one named "${target_name}" is the EarlGrey |
| # test application, and the other named "${target_name}_deps_group" is a group |
| # target that depends on the template "deps" property (used to implement the |
| # test suite running the FLAKY_ tests). |
| # |
| template("chrome_ios_eg_test") { |
| if (!defined(entitlements_path) && !defined(entitlements_target)) { |
| _target_name = target_name |
| _tweak_entitlements = target_name + "_tweak_entitlements" |
| compile_plist(_tweak_entitlements) { |
| format = "xml1" |
| substitutions = [ "IOS_BUNDLE_ID_PREFIX=$ios_app_bundle_id_prefix" ] |
| output_name = "$target_gen_dir/$_target_name.entitlements" |
| plist_templates = |
| [ "//ios/chrome/test/earl_grey/resources/Chrome.entitlements" ] |
| if (ios_egtests_entitlements_additions != []) { |
| plist_templates += ios_egtests_entitlements_additions |
| } |
| } |
| } |
| |
| if (!defined(info_plist) && !defined(info_plist_target)) { |
| _tweak_info_plist = target_name + "_tweak_info_plist" |
| tweak_info_plist(_tweak_info_plist) { |
| info_plists = [ |
| "//ios/chrome/app/resources/Info.plist", |
| "//ios/chrome/app/resources/EarlGreyAddition+Info.plist", |
| ] |
| if (ios_chrome_info_plist_additions != []) { |
| info_plists += ios_chrome_info_plist_additions |
| } |
| if (defined(invoker.extra_info_plists)) { |
| info_plists += invoker.extra_info_plists |
| } |
| args = [ |
| "--breakpad=$breakpad_enabled_as_int", |
| "--branding=$chromium_short_name", |
| "--version-overrides=MINOR=9999", |
| ] |
| } |
| } |
| |
| _deps_group_name = target_name + "_deps_group" |
| group(_deps_group_name) { |
| testonly = true |
| public_deps = invoker.deps |
| if (defined(invoker.public_deps)) { |
| public_deps += invoker.public_deps |
| } |
| } |
| |
| ios_eg_test(target_name) { |
| forward_variables_from(invoker, |
| "*", |
| [ |
| "deps", |
| "entitlements_path", |
| "entitlements_target", |
| "eg_main_application_delegate", |
| "info_plist", |
| "info_plist_target", |
| "public_deps", |
| ]) |
| |
| if (!defined(entitlements_path) && !defined(entitlements_target)) { |
| entitlements_target = ":$_tweak_entitlements" |
| } |
| |
| if (!defined(info_plist) && !defined(info_plist_target)) { |
| info_plist_target = ":$_tweak_info_plist" |
| } |
| |
| _eg_main_application_delegate = "MainApplicationDelegate" |
| if (defined(invoker.eg_main_application_delegate)) { |
| _eg_main_application_delegate = invoker.eg_main_application_delegate |
| } |
| |
| deps = [ |
| ":$_deps_group_name", |
| "//ios/chrome/app:main", |
| "//ios/chrome/test/earl_grey:hooks", |
| "//ios/testing:http_server_bundle_data", |
| ] |
| if (!defined(bundle_deps)) { |
| bundle_deps = [] |
| } |
| bundle_deps += [ "//ios/chrome/app/resources" ] |
| |
| if (!defined(extra_substitutions)) { |
| extra_substitutions = [] |
| } |
| extra_substitutions += [ |
| "CHROMIUM_HANDOFF_ID=$chromium_handoff_id", |
| "CHROMIUM_SHORT_NAME=$target_name", |
| "CHROMIUM_URL_SCHEME_1=$url_unsecure_scheme", |
| "CHROMIUM_URL_SCHEME_2=$url_secure_scheme", |
| "CHROMIUM_URL_SCHEME_3=$url_x_callback_scheme", |
| "CHROMIUM_URL_SCHEME_4=$url_channel_scheme", |
| "EG_MAIN_APPLICATION_DELEGATE=$_eg_main_application_delegate", |
| "SSOAUTH_URL_SCHEME=$url_ssoauth_scheme", |
| ] |
| if (ios_automatically_manage_certs) { |
| # Use the same bundle identifier for EarlGrey tests as for unit tests |
| # when managing certificates as the number of free certs is limited. |
| extra_substitutions += |
| [ "CHROMIUM_BUNDLE_ID=gtest.${ios_generic_test_bundle_id_suffix}" ] |
| } else { |
| extra_substitutions += [ "CHROMIUM_BUNDLE_ID=gtest.$target_name" ] |
| } |
| } |
| } |
| |
| set_defaults("chrome_ios_eg_test") { |
| configs = default_executable_configs |
| } |