Loading tools/aapt2/ResourceParser.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -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 {}; } Loading tools/aapt2/ResourceParser_test.cpp +18 −0 Original line number Diff line number Diff line Loading @@ -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"/>)")); Loading Loading
tools/aapt2/ResourceParser.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -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 {}; } Loading
tools/aapt2/ResourceParser_test.cpp +18 −0 Original line number Diff line number Diff line Loading @@ -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"/>)")); Loading