From 5a082f9a3310a425115061578ed8955ff342ef56 Mon Sep 17 00:00:00 2001 From: William Loh Date: Tue, 17 May 2022 20:21:50 +0000 Subject: Propagate max_sdk_version to manifest_fixer If max_sdk_version is included in Android.bp that value will now be propagated to manifest_fixer.py. This value will then be used to override any maxSdkVersion attribute set on permission or uses-permission tags in the android manifest if maxSdkVersion="-1". Bug: 223902327 Test: add max_sdk_version to Android.bp for test app Test: create permission in test app manifest with maxSdkVersion="-1" Test: run test to check maxSdkVersion=max_sdk_version Change-Id: Ic533ef2a41b9ecc9ee68c69399026df47ee945b7 --- scripts/manifest_fixer.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'scripts/manifest_fixer.py') diff --git a/scripts/manifest_fixer.py b/scripts/manifest_fixer.py index 2d3103b43..2da29ee91 100755 --- a/scripts/manifest_fixer.py +++ b/scripts/manifest_fixer.py @@ -39,6 +39,8 @@ def parse_args(): parser = argparse.ArgumentParser() parser.add_argument('--minSdkVersion', default='', dest='min_sdk_version', help='specify minSdkVersion used by the build system') + parser.add_argument('--replaceMaxSdkVersionPlaceholder', default='', dest='max_sdk_version', + help='specify maxSdkVersion used by the build system') parser.add_argument('--targetSdkVersion', default='', dest='target_sdk_version', help='specify targetSdkVersion used by the build system') parser.add_argument('--raise-min-sdk-version', dest='raise_min_sdk_version', action='store_true', @@ -342,6 +344,24 @@ def set_test_only_flag_to_true(doc): attr.value = 'true' application.setAttributeNode(attr) +def set_max_sdk_version(doc, max_sdk_version): + """Replace the maxSdkVersion attribute value for permission and + uses-permission tags if the value was originally set to 'current'. + Used for cts test cases where the maxSdkVersion should equal to + Build.SDK_INT. + + Args: + doc: The XML document. May be modified by this function. + max_sdk_version: The requested maxSdkVersion attribute. + """ + manifest = parse_manifest(doc) + for tag in ['permission', 'uses-permission']: + children = get_children_with_tag(manifest, tag) + for child in children: + max_attr = child.getAttributeNodeNS(android_ns, 'maxSdkVersion') + if max_attr and max_attr.value == 'current': + max_attr.value = max_sdk_version + def main(): """Program entry point.""" try: @@ -354,6 +374,9 @@ def main(): if args.raise_min_sdk_version: raise_min_sdk_version(doc, args.min_sdk_version, args.target_sdk_version, args.library) + if args.max_sdk_version: + set_max_sdk_version(doc, args.max_sdk_version) + if args.uses_libraries: add_uses_libraries(doc, args.uses_libraries, True) -- cgit v1.2.3-59-g8ed1b