Add <uri-relative-filter-group> to intent filters.

Introduce new <uri-relative-filter-group> tag to define a new matching
rule where all matchers in the group must match. Each rule group will be
evaluated in the order they are defined in the manifest. These rules
will only be evaluated if no matches found in mDataPaths.

Each URI relative filter group can define matchers for URI fragments and
queries in addtion to paths.

Bug: 307556883
Test: atest CtsContentTestCases:IntentFilterTest
Test: atest PackageParserTest
Change-Id: Ida1c7a1440b99fd5af2913e5c10c6886c511256f
diff --git a/tools/aapt2/link/ManifestFixer.cpp b/tools/aapt2/link/ManifestFixer.cpp
index 0b16e2c..d03f97e 100644
--- a/tools/aapt2/link/ManifestFixer.cpp
+++ b/tools/aapt2/link/ManifestFixer.cpp
@@ -415,6 +415,8 @@
   intent_filter_action["action"].Action(RequiredNameIsNotEmpty);
   intent_filter_action["category"].Action(RequiredNameIsNotEmpty);
   intent_filter_action["data"];
+  intent_filter_action["uri-relative-filter-group"];
+  intent_filter_action["uri-relative-filter-group"]["data"];
 
   // Common <meta-data> actions.
   xml::XmlNodeAction meta_data_action;