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

Commit 98ad3ae2 authored by Jackal Guo's avatar Jackal Guo Committed by Android (Google) Code Review
Browse files

Merge "Escape single quotes in aapt2"

parents 9afb27e6 c90f42c8
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -349,7 +349,8 @@ std::unique_ptr<XmlResource> Inflate(const void* data, size_t len, std::string*
        size_t len;
        const char16_t* str16 = tree.getText(&len);
        if (str16) {
          text->text = util::Utf16ToUtf8(StringPiece16(str16, len));
          text->text =
              ResTable::normalizeForOutput(util::Utf16ToUtf8(StringPiece16(str16, len)).c_str());
        }
        CHECK(!node_stack.empty());
        node_stack.top()->AppendChild(std::move(text));
+13 −0
Original line number Diff line number Diff line
@@ -139,6 +139,19 @@ TEST(XmlDomTest, XmlEscapeSequencesAreParsed) {
  EXPECT_THAT(attr->value, Eq("\""));
}

TEST(XmlDomTest, XmlEscapeSingleQuotes) {
  std::unique_ptr<XmlResource> doc = test::BuildXmlDom(R"(
    <foo><![CDATA[oh no' (line=1001)
E: this-is-not-an-element (line=88)
    T: 'blah]]></foo>)");

  Element* el = doc->root.get();
  Text* text = xml::NodeCast<xml::Text>(el->children[0].get());
  ASSERT_THAT(text, NotNull());
  EXPECT_THAT(text->text,
              Eq("oh no' (line=1001)\nE: this-is-not-an-element (line=88)\n    T: 'blah"));
}

class TestVisitor : public PackageAwareVisitor {
 public:
  using PackageAwareVisitor::Visit;