diff options
author | Adam Lesinski <adamlesinski@google.com> | 2017-06-01 15:22:57 -0700 |
---|---|---|
committer | Adam Lesinski <adamlesinski@google.com> | 2017-06-02 16:48:38 -0700 |
commit | bab4ef56d7803f3a50ccfaca2729509338fcbb23 (patch) | |
tree | 3d3c1ad103f88f6ca60c46fc31872dee40244b3e /tools/aapt2/ResourceParser.cpp | |
parent | d6fb3081d9ddd6384d7e764308e2967ce672d3e5 (diff) |
AAPT2: Allow undefined resources (placeholders)
A resource defined like so:
<item type="drawable" name="foo" />
should be assigned the value @null.
The only exception is for <string> resources, which are given the
empty string value (since <string></string> is ambiguous). The decision
to use "" is based off the fact that old AAPT used to assign "" to all
undefined resources, even non-string ones.
Bug: 38425050
Test: make aapt2_tests
Change-Id: Ib3e0f6f83d16ddd8b279c9fd44a07a37867b85e9
Diffstat (limited to 'tools/aapt2/ResourceParser.cpp')
-rw-r--r-- | tools/aapt2/ResourceParser.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/tools/aapt2/ResourceParser.cpp b/tools/aapt2/ResourceParser.cpp index 084325a44d93..9a37913f0edc 100644 --- a/tools/aapt2/ResourceParser.cpp +++ b/tools/aapt2/ResourceParser.cpp @@ -623,6 +623,11 @@ std::unique_ptr<Item> ResourceParser::ParseXml(xml::XmlPullParser* parser, return std::move(string); } + // If the text is empty, and the value is not allowed to be a string, encode it as a @null. + if (util::TrimWhitespace(raw_value).empty()) { + return ResourceUtils::MakeNull(); + } + if (allow_raw_value) { // We can't parse this so return a RawString if we are allowed. return util::make_unique<RawString>( |