Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 633d7966 authored by Ryan Mitchell's avatar Ryan Mitchell
Browse files

AAPT2: Fix raw string parsing

Trim whitespace of raw strings when parsing xml values. This change
trims the whitespace of style items. For example:

<item name="viewInflaterClass">com.helloworld.Inflater
</item>

This will be trimmed to not include a trailing whitespace.

Bug: 109666819
Test: aapt2_tests
Change-Id: I0c1fbb3abdc7e609316c92e59ccaf0573b07e5a7
parent e4286897
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -777,7 +777,8 @@ std::unique_ptr<Item> ResourceParser::ParseXml(xml::XmlPullParser* parser,
  if (allow_raw_value) {
    // We can't parse this so return a RawString if we are allowed.
    return util::make_unique<RawString>(
        table_->string_pool.MakeRef(raw_value, StringPool::Context(config_)));
        table_->string_pool.MakeRef(util::TrimWhitespace(raw_value),
                                    StringPool::Context(config_)));
  }
  return {};
}
+18 −0
Original line number Diff line number Diff line
@@ -497,6 +497,24 @@ TEST_F(ResourceParserTest, ParseStyleWithPackageAliasedItems) {
  EXPECT_THAT(style->entries[0].key.name, Eq(make_value(test::ParseNameOrDie("android:attr/bar"))));
}

TEST_F(ResourceParserTest, ParseStyleWithRawStringItem) {
  std::string input = R"(
      <style name="foo">
        <item name="bar">
          com.helloworld.AppClass
        </item>
      </style>)";
  ASSERT_TRUE(TestParse(input));

  Style* style = test::GetValue<Style>(&table_, "style/foo");
  ASSERT_THAT(style, NotNull());
  EXPECT_THAT(style->entries[0].value, NotNull());
  RawString* value = ValueCast<RawString>(style->entries[0].value.get());
  EXPECT_THAT(value, NotNull());
  EXPECT_THAT(*value->value, StrEq(R"(com.helloworld.AppClass)"));
}


TEST_F(ResourceParserTest, ParseStyleWithInferredParent) {
  ASSERT_TRUE(TestParse(R"(<style name="foo.bar"/>)"));