[ios] Build variants for cpe app extension
Extend the extension_bundle_data target to support "variants" and configure //ios/chrome/app:chrome to pick the correct variant of the cpe app extension for the variant of the app. Bug: 355041765 Change-Id: I030ebbd689ac002e46842fd7d01026a3831f6336 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5901842 Reviewed-by: Alexis Hétu <sugoi@chromium.org> Commit-Queue: Sylvain Defresne <sdefresne@chromium.org> Cr-Commit-Position: refs/heads/main@{#1362956}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
fa64d0e258
commit
2875c3fdb0
@ -28,8 +28,40 @@ template("extension_bundle_data") {
|
||||
_extension_dir = invoker.extension_dir
|
||||
}
|
||||
|
||||
forward_variables_from(invoker, [ "testonly" ])
|
||||
bundle_data(target_name) {
|
||||
if (defined(invoker.variants) && invoker.variants != []) {
|
||||
_variants = []
|
||||
foreach(_variant, invoker.variants) {
|
||||
_variants += [
|
||||
{
|
||||
name = _variant.name
|
||||
},
|
||||
]
|
||||
}
|
||||
} else {
|
||||
_variants = []
|
||||
}
|
||||
|
||||
_target_name = target_name
|
||||
if (_variants != []) {
|
||||
foreach(_variant, _variants) {
|
||||
_extension_target =
|
||||
get_label_info(invoker.extension_target, "label_no_toolchain") +
|
||||
"_variants_${_variant.name}" + "(" +
|
||||
get_label_info(invoker.extension_target, "toolchain") + ")"
|
||||
|
||||
bundle_data("${_target_name}_variants_${_variant.name}") {
|
||||
forward_variables_from(invoker, [ "testonly" ])
|
||||
public_deps = [ _extension_target ]
|
||||
outputs =
|
||||
[ "{{bundle_contents_dir}}/$_extension_dir/{{source_file_part}}" ]
|
||||
sources = [ get_label_info(_extension_target, "root_out_dir") +
|
||||
"/variants/${_variant.name}/$_extension_name" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bundle_data(_target_name) {
|
||||
forward_variables_from(invoker, [ "testonly" ])
|
||||
public_deps = [ invoker.extension_target ]
|
||||
outputs = [ "{{bundle_contents_dir}}/$_extension_dir/{{source_file_part}}" ]
|
||||
sources = [ get_label_info(invoker.extension_target, "root_out_dir") +
|
||||
|
@ -753,6 +753,14 @@ chrome_app("chrome") {
|
||||
_variants += [
|
||||
{
|
||||
forward_variables_from(_variant, "*", [ "cpe_bundle_deps" ])
|
||||
if (ios_enable_credential_provider_extension) {
|
||||
if (!defined(bundle_deps)) {
|
||||
bundle_deps = []
|
||||
}
|
||||
bundle_deps += [
|
||||
":credential_provider_extension_bundle_variants_${_variant.name}",
|
||||
]
|
||||
}
|
||||
},
|
||||
]
|
||||
}
|
||||
@ -778,28 +786,30 @@ chrome_app("chrome") {
|
||||
|
||||
if (current_toolchain == default_toolchain) {
|
||||
if (ios_enable_search_widget_extension) {
|
||||
deps += [ ":search_widget_extension_bundle" ]
|
||||
bundle_deps += [ ":search_widget_extension_bundle" ]
|
||||
}
|
||||
if (ios_enable_content_widget_extension) {
|
||||
deps += [ ":content_widget_extension_bundle" ]
|
||||
bundle_deps += [ ":content_widget_extension_bundle" ]
|
||||
}
|
||||
if (ios_enable_share_extension) {
|
||||
deps += [ ":share_extension_bundle" ]
|
||||
bundle_deps += [ ":share_extension_bundle" ]
|
||||
}
|
||||
if (ios_enable_open_extension) {
|
||||
deps += [ ":open_extension_bundle" ]
|
||||
bundle_deps += [ ":open_extension_bundle" ]
|
||||
}
|
||||
if (ios_enable_credential_provider_extension) {
|
||||
deps += [ ":credential_provider_extension_bundle" ]
|
||||
if (!is_chrome_branded || ios_chrome_app_variants == []) {
|
||||
bundle_deps += [ ":credential_provider_extension_bundle" ]
|
||||
}
|
||||
}
|
||||
if (ios_enable_widget_kit_extension) {
|
||||
deps += [ ":widget_kit_extension_bundle" ]
|
||||
bundle_deps += [ ":widget_kit_extension_bundle" ]
|
||||
}
|
||||
if (ios_enable_intents_extension) {
|
||||
deps += [ ":intents_extension_bundle" ]
|
||||
bundle_deps += [ ":intents_extension_bundle" ]
|
||||
}
|
||||
if (ios_enable_push_notification_service_extension) {
|
||||
deps += [ ":push_notification_service_extension_bundle" ]
|
||||
bundle_deps += [ ":push_notification_service_extension_bundle" ]
|
||||
}
|
||||
}
|
||||
|
||||
@ -884,6 +894,9 @@ if (current_toolchain == default_toolchain && !ios_chrome_generate_order_file) {
|
||||
extension_bundle_data("credential_provider_extension_bundle") {
|
||||
extension_name = "credential_provider_extension.appex"
|
||||
extension_target = "//ios/chrome/credential_provider_extension/appex(${_extension_toolchain})"
|
||||
if (is_chrome_branded && ios_chrome_app_variants != []) {
|
||||
variants = ios_chrome_app_variants
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -7,6 +7,7 @@ import("//build/apple/tweak_info_plist.gni")
|
||||
import("//build/config/ios/rules.gni")
|
||||
import("//ios/build/chrome_build.gni")
|
||||
import("//ios/build/config.gni")
|
||||
import("//ios/public/provider/chrome/browser/build_config.gni")
|
||||
|
||||
assert(
|
||||
ios_enable_credential_provider_extension,
|
||||
@ -45,6 +46,21 @@ ios_appex_bundle("appex") {
|
||||
deps += [ ":privacy_manifest" ]
|
||||
}
|
||||
|
||||
if (!is_chrome_branded || ios_chrome_app_variants == []) {
|
||||
bundle_deps = ios_providers_cpe_resources_targets
|
||||
} else {
|
||||
_variants = []
|
||||
foreach(_variant, ios_chrome_app_variants) {
|
||||
_variants += [
|
||||
{
|
||||
name = _variant.name
|
||||
bundle_deps = _variant.cpe_bundle_deps
|
||||
},
|
||||
]
|
||||
}
|
||||
variants = _variants
|
||||
}
|
||||
|
||||
bundle_deps_filter = [ "//third_party/icu:icudata" ]
|
||||
|
||||
assert_no_deps = ios_extension_assert_no_deps
|
||||
|
Reference in New Issue
Block a user