From e1ab849b391c6d5c7fbf57310701c99cad88ba21 Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Wed, 11 Sep 2024 13:28:16 -0700 Subject: Support multiple or elements in manifest_*.py Manifests may now have multiple copies of elements if they are disambiguated with android:featureFlag attributes. Remove the restrictions on duplicate elements from manifest_check.py and manifest_fixer.py, and instead iterate over all matching elements. Test: manifest_check_test.py, manifest_fixer_test.py Bug: 365170653 Flag: EXEMPT bugfix Change-Id: Ib577439d03a808a20a5fcc3e15a3117e0970d729 --- scripts/manifest_check.py | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) (limited to 'scripts/manifest_check.py') diff --git a/scripts/manifest_check.py b/scripts/manifest_check.py index c48c9f992..1e32d1d7d 100755 --- a/scripts/manifest_check.py +++ b/scripts/manifest_check.py @@ -25,10 +25,7 @@ import subprocess import sys from xml.dom import minidom -from manifest import android_ns -from manifest import get_children_with_tag -from manifest import parse_manifest -from manifest import write_xml +from manifest import * class ManifestMismatchError(Exception): @@ -205,15 +202,9 @@ def extract_uses_libs_xml(xml): """Extract tags from the manifest.""" manifest = parse_manifest(xml) - elems = get_children_with_tag(manifest, 'application') - if len(elems) > 1: - raise RuntimeError('found multiple tags') - if not elems: - return [], [], [] - - application = elems[0] - - libs = get_children_with_tag(application, 'uses-library') + libs = [child + for application in get_or_create_applications(xml, manifest) + for child in get_children_with_tag(application, 'uses-library')] required = [uses_library_name(x) for x in libs if uses_library_required(x)] optional = [ -- cgit v1.2.3-59-g8ed1b