Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(615)

Unified Diff: third_party/WebKit/Source/core/html/HTMLInputElementTest.cpp

Issue 2174303002: Move filtering logic in GetDataListSuggestions() to Blink. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Move implementation to HTMLInputElement Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);

Powered by Google App Engine
This is Rietveld 408576698