diff options
author | Ryan Mitchell <rtmitchell@google.com> | 2019-04-23 05:44:21 -0700 |
---|---|---|
committer | Ryan Mitchell <rtmitchell@google.com> | 2019-04-23 08:32:30 -0700 |
commit | acde95c3fc7739ef7b7447be7fd4c087d1575039 (patch) | |
tree | 5b46b477a79b9983f3986476188bb5550721f755 /tools/aapt2/ResourceParser.cpp | |
parent | 4848dd5e2dfc4595e1540473fea04c9b077f2af1 (diff) |
No new attributes in declare-styleables when format is not provided
AAPT does not allow for attributes declared in declare-styleables
that do not have a format to create new attribute resources. AAPT2
does and should not.
Bug: 131100106
Test: aapt2_tests
Change-Id: Id00884dc9ed939672df90f670a7915d4b6d232c1
Diffstat (limited to 'tools/aapt2/ResourceParser.cpp')
-rw-r--r-- | tools/aapt2/ResourceParser.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/tools/aapt2/ResourceParser.cpp b/tools/aapt2/ResourceParser.cpp index fe401e22c50e..c291b395d94b 100644 --- a/tools/aapt2/ResourceParser.cpp +++ b/tools/aapt2/ResourceParser.cpp @@ -1712,7 +1712,14 @@ bool ResourceParser::ParseDeclareStyleable(xml::XmlPullParser* parser, child_ref.SetSource(item_source); styleable->entries.push_back(std::move(child_ref)); - out_resource->child_resources.push_back(std::move(child_resource)); + // Do not add referenced attributes that do not define a format to the table. + CHECK(child_resource.value != nullptr); + Attribute* attr = ValueCast<Attribute>(child_resource.value.get()); + + CHECK(attr != nullptr); + if (attr->type_mask != android::ResTable_map::TYPE_ANY) { + out_resource->child_resources.push_back(std::move(child_resource)); + } } else if (!ShouldIgnoreElement(element_namespace, element_name)) { diag_->Error(DiagMessage(item_source) << "unknown tag <" |