| Index: third_party/WebKit/Source/core/html/HTMLInputElementTest.cpp
|
| diff --git a/third_party/WebKit/Source/core/html/HTMLInputElementTest.cpp b/third_party/WebKit/Source/core/html/HTMLInputElementTest.cpp
|
| index 9dabccd19e5d16e0c23f2838cbe3ca697ad1377d..e17481e06b7f5f7a53804a9cddbc19c7229477b0 100644
|
| --- a/third_party/WebKit/Source/core/html/HTMLInputElementTest.cpp
|
| +++ b/third_party/WebKit/Source/core/html/HTMLInputElementTest.cpp
|
| @@ -11,6 +11,7 @@
|
| #include "core/html/HTMLBodyElement.h"
|
| #include "core/html/HTMLFormElement.h"
|
| #include "core/html/HTMLHtmlElement.h"
|
| +#include "core/html/HTMLOptionElement.h"
|
| #include "core/html/forms/DateTimeChooser.h"
|
| #include "core/testing/DummyPageHolder.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| @@ -18,19 +19,73 @@
|
|
|
| namespace blink {
|
|
|
| -TEST(HTMLInputElementTest, create)
|
| +class HTMLInputElementTest : public testing::Test {
|
| +protected:
|
| + Document& document() { return m_pageHolder->document(); }
|
| + HTMLInputElement& testElement()
|
| + {
|
| + Element* element = document().getElementById("test");
|
| + DCHECK(element);
|
| + return toHTMLInputElement(*element);
|
| + }
|
| +
|
| +private:
|
| + void SetUp() override
|
| + {
|
| + m_pageHolder = DummyPageHolder::create(IntSize(800, 600));
|
| + }
|
| +
|
| + std::unique_ptr<DummyPageHolder> m_pageHolder;
|
| +};
|
| +
|
| +TEST_F(HTMLInputElementTest, FilteredDataListOptionsNoList)
|
| {
|
| - Document* document = Document::create();
|
| - HTMLInputElement* input = HTMLInputElement::create(*document, nullptr, /* createdByParser */ false);
|
| + document().documentElement()->setInnerHTML("<input id=test>", ASSERT_NO_EXCEPTION);
|
| + EXPECT_TRUE(testElement().filteredDataListOptions().isEmpty());
|
| +
|
| + document().documentElement()->setInnerHTML("<input id=test list=dl1><datalist id=dl1></datalist>", ASSERT_NO_EXCEPTION);
|
| + EXPECT_TRUE(testElement().filteredDataListOptions().isEmpty());
|
| +}
|
| +
|
| +TEST_F(HTMLInputElementTest, FilteredDataListOptionsPrefixed)
|
| +{
|
| + document().documentElement()->setInnerHTML(
|
| + "<input id=test value=ABC list=dl2>"
|
| + "<datalist id=dl2>"
|
| + "<option>AbC DEF</option>"
|
| + "<option>VAX</option>"
|
| + "<option value=ghi>abc</option>"
|
| + "</datalist>", ASSERT_NO_EXCEPTION);
|
| + auto options = testElement().filteredDataListOptions();
|
| + EXPECT_EQ(1u, options.size());
|
| + EXPECT_EQ("AbC DEF", options[0]->value().utf8());
|
| +}
|
| +
|
| +TEST_F(HTMLInputElementTest, FilteredDataListOptionsForMultipleEmail)
|
| +{
|
| + document().documentElement()->setInnerHTML(
|
| + "<input id=test value='foo@example.com, tkent' list=dl3 type=email multiple>"
|
| + "<datalist id=dl3>"
|
| + "<option>keishi@chromium.org</option>"
|
| + "<option>tkent@chromium.org</option>"
|
| + "</datalist>", ASSERT_NO_EXCEPTION);
|
| + auto options = testElement().filteredDataListOptions();
|
| + EXPECT_EQ(1u, options.size());
|
| + EXPECT_EQ("tkent@chromium.org", options[0]->value().utf8());
|
| +}
|
| +
|
| +TEST_F(HTMLInputElementTest, create)
|
| +{
|
| + HTMLInputElement* input = HTMLInputElement::create(document(), nullptr, /* createdByParser */ false);
|
| EXPECT_NE(nullptr, input->userAgentShadowRoot());
|
|
|
| - input = HTMLInputElement::create(*document, nullptr, /* createdByParser */ true);
|
| + input = HTMLInputElement::create(document(), nullptr, /* createdByParser */ true);
|
| EXPECT_EQ(nullptr, input->userAgentShadowRoot());
|
| input->parserSetAttributes(Vector<Attribute>());
|
| EXPECT_NE(nullptr, input->userAgentShadowRoot());
|
| }
|
|
|
| -TEST(HTMLInputElementTest, NoAssertWhenMovedInNewDocument)
|
| +TEST_F(HTMLInputElementTest, NoAssertWhenMovedInNewDocument)
|
| {
|
| Document* documentWithoutFrame = Document::create();
|
| EXPECT_EQ(nullptr, documentWithoutFrame->frameHost());
|
| @@ -53,20 +108,16 @@ TEST(HTMLInputElementTest, NoAssertWhenMovedInNewDocument)
|
| document.body()->removeChild(document.body()->firstChild());
|
| }
|
|
|
| -TEST(HTMLInputElementTest, DefaultToolTip)
|
| +TEST_F(HTMLInputElementTest, DefaultToolTip)
|
| {
|
| - Document* document = Document::create();
|
| - HTMLHtmlElement* html = HTMLHtmlElement::create(*document);
|
| - html->appendChild(HTMLBodyElement::create(*document));
|
| - HTMLInputElement* inputWithoutForm = HTMLInputElement::create(*document, nullptr, false);
|
| + HTMLInputElement* inputWithoutForm = HTMLInputElement::create(document(), nullptr, false);
|
| inputWithoutForm->setBooleanAttribute(HTMLNames::requiredAttr, true);
|
| - toHTMLBodyElement(html->firstChild())->appendChild(inputWithoutForm);
|
| - document->appendChild(html);
|
| + document().body()->appendChild(inputWithoutForm);
|
| EXPECT_EQ("<<ValidationValueMissing>>", inputWithoutForm->defaultToolTip());
|
|
|
| - HTMLFormElement* form = HTMLFormElement::create(*document);
|
| - document->body()->appendChild(form);
|
| - HTMLInputElement* inputWithForm = HTMLInputElement::create(*document, nullptr, false);
|
| + HTMLFormElement* form = HTMLFormElement::create(document());
|
| + document().body()->appendChild(form);
|
| + HTMLInputElement* inputWithForm = HTMLInputElement::create(document(), nullptr, false);
|
| inputWithForm->setBooleanAttribute(HTMLNames::requiredAttr, true);
|
| form->appendChild(inputWithForm);
|
| EXPECT_EQ("<<ValidationValueMissing>>", inputWithForm->defaultToolTip());
|
| @@ -76,10 +127,9 @@ TEST(HTMLInputElementTest, DefaultToolTip)
|
| }
|
|
|
| // crbug.com/589838
|
| -TEST(HTMLInputElementTest, ImageTypeCrash)
|
| +TEST_F(HTMLInputElementTest, ImageTypeCrash)
|
| {
|
| - Document* document = Document::create();
|
| - HTMLInputElement* input = HTMLInputElement::create(*document, nullptr, false);
|
| + HTMLInputElement* input = HTMLInputElement::create(document(), nullptr, false);
|
| input->setAttribute(HTMLNames::typeAttr, "image");
|
| input->ensureFallbackContent();
|
| // Make sure ensurePrimaryContent() recreates UA shadow tree, and updating
|
| @@ -88,14 +138,12 @@ TEST(HTMLInputElementTest, ImageTypeCrash)
|
| input->setAttribute(HTMLNames::valueAttr, "aaa");
|
| }
|
|
|
| -TEST(HTMLInputElementTest, DateTimeChooserSizeParamRespectsScale)
|
| +TEST_F(HTMLInputElementTest, DateTimeChooserSizeParamRespectsScale)
|
| {
|
| - std::unique_ptr<DummyPageHolder> pageHolder = DummyPageHolder::create();
|
| - Document* document = &(pageHolder->document());
|
| - document->view()->frame().host()->visualViewport().setScale(2.f);
|
| - document->body()->setInnerHTML("<input type='date' style='width:200px;height:50px' />", ASSERT_NO_EXCEPTION);
|
| - document->view()->updateAllLifecyclePhases();
|
| - HTMLInputElement* input = toHTMLInputElement(document->body()->firstChild());
|
| + document().view()->frame().host()->visualViewport().setScale(2.f);
|
| + document().body()->setInnerHTML("<input type='date' style='width:200px;height:50px' />", ASSERT_NO_EXCEPTION);
|
| + document().view()->updateAllLifecyclePhases();
|
| + HTMLInputElement* input = toHTMLInputElement(document().body()->firstChild());
|
|
|
| DateTimeChooserParameters params;
|
| bool success = input->setupDateTimeChooserParameters(params);
|
|
|