AAPT2: Allow to inline XML into custom attribute
Previously, doing something like
<parent xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:aapt="http://schemas.android.com/aapt">
<aapt:attr name="app:foo">
<child />
</aapt:attr>
</parent>
would result in something like:
<parent xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:aapt="http://schemas.android.com/aapt"
foo="@generated_name" />
while it should result in:
<parent xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:aapt="http://schemas.android.com/aapt"
app:foo="@generated_name" />
Bug: 36809755
Test: make aapt2_tests
Change-Id: I72ea4b402e196ca05b53b788e4768a265190a0dc
diff --git a/tools/aapt2/xml/XmlDom_test.cpp b/tools/aapt2/xml/XmlDom_test.cpp
index 486b53a..ca46d53 100644
--- a/tools/aapt2/xml/XmlDom_test.cpp
+++ b/tools/aapt2/xml/XmlDom_test.cpp
@@ -154,6 +154,12 @@
EXPECT_THAT(TransformPackageAlias("two"), Eq(make_value(ExtractedPackage{"com.two", false})));
EXPECT_THAT(TransformPackageAlias("three"),
Eq(make_value(ExtractedPackage{"com.three", false})));
+ } else if (el->name == "View4") {
+ EXPECT_THAT(TransformPackageAlias("one"), Eq(make_value(ExtractedPackage{"com.one", false})));
+ EXPECT_THAT(TransformPackageAlias("two"), Eq(make_value(ExtractedPackage{"com.two", false})));
+ EXPECT_THAT(TransformPackageAlias("three"),
+ Eq(make_value(ExtractedPackage{"com.three", false})));
+ EXPECT_THAT(TransformPackageAlias("four"), Eq(make_value(ExtractedPackage{"", true})));
}
}
};
@@ -162,7 +168,9 @@
std::unique_ptr<XmlResource> doc = test::BuildXmlDom(R"(
<View1 xmlns:one="http://schemas.android.com/apk/res/com.one">
<View2 xmlns:two="http://schemas.android.com/apk/res/com.two">
- <View3 xmlns:three="http://schemas.android.com/apk/res/com.three" />
+ <View3 xmlns:three="http://schemas.android.com/apk/res/com.three">
+ <View4 xmlns:four="http://schemas.android.com/apk/res-auto" />
+ </View3>
</View2>
</View1>)");