TEST(AtomicHTMLTokenTest, EmptyAttributeValueFromCompactHTMLToken)
{
    HTMLToken token;
    token.beginStartTag('a');
    token.addNewAttribute();
    token.beginAttributeName(3);
    token.appendToAttributeName('b');
    token.endAttributeName(4);
    token.addNewAttribute();
    token.beginAttributeName(5);
    token.appendToAttributeName('c');
    token.endAttributeName(6);
    token.beginAttributeValue(8);
    token.endAttributeValue(8);

    AtomicHTMLToken atoken(CompactHTMLToken(&token, TextPosition()));

    const blink::Attribute* attributeB = atoken.getAttributeItem(
        QualifiedName(AtomicString(), "b", AtomicString()));
    ASSERT_TRUE(attributeB);
    EXPECT_FALSE(attributeB->value().isNull());
    EXPECT_TRUE(attributeB->value().isEmpty());

    const blink::Attribute* attributeC = atoken.getAttributeItem(
        QualifiedName(AtomicString(), "c", AtomicString()));
    ASSERT_TRUE(attributeC);
    EXPECT_FALSE(attributeC->value().isNull());
    EXPECT_TRUE(attributeC->value().isEmpty());

    const blink::Attribute* attributeD = atoken.getAttributeItem(
        QualifiedName(AtomicString(), "d", AtomicString()));
    EXPECT_FALSE(attributeD);
}