| Index: Source/web/WebNodeTest.cpp
|
| diff --git a/Source/web/WebNodeTest.cpp b/Source/web/WebNodeTest.cpp
|
| index 7b4d85ff2b1007b89170ec7237918eff5d459fcb..27830ec1fdf175f7b086a80c0bcb6b257a325828 100644
|
| --- a/Source/web/WebNodeTest.cpp
|
| +++ b/Source/web/WebNodeTest.cpp
|
| @@ -16,7 +16,20 @@ namespace blink {
|
|
|
| class WebNodeTest : public testing::Test {
|
| protected:
|
| - Document& document() { return m_pageHolder->document(); }
|
| + Document& document()
|
| + {
|
| + return m_pageHolder->document();
|
| + }
|
| +
|
| + void setInnerHTML(const String& html)
|
| + {
|
| + document().documentElement()->setInnerHTML(html, ASSERT_NO_EXCEPTION);
|
| + }
|
| +
|
| + WebNode root()
|
| + {
|
| + return WebNode(document().documentElement());
|
| + }
|
|
|
| private:
|
| void SetUp() override;
|
| @@ -29,16 +42,75 @@ void WebNodeTest::SetUp()
|
| m_pageHolder = DummyPageHolder::create(IntSize(800, 600));
|
| }
|
|
|
| +TEST_F(WebNodeTest, QuerySelectorMatches)
|
| +{
|
| + setInnerHTML("<div id=x><span class=a></span></div>");
|
| + WebExceptionCode ec;
|
| + WebElement element = root().querySelector(".a", ec);
|
| + EXPECT_EQ(0, ec);
|
| + EXPECT_FALSE(element.isNull());
|
| + EXPECT_TRUE(element.hasHTMLTagName("span"));
|
| +}
|
| +
|
| +TEST_F(WebNodeTest, QuerySelectorDoesNotMatch)
|
| +{
|
| + setInnerHTML("<div id=x><span class=a></span></div>");
|
| + WebExceptionCode ec;
|
| + WebElement element = root().querySelector("section", ec);
|
| + EXPECT_EQ(0, ec);
|
| + EXPECT_TRUE(element.isNull());
|
| +}
|
| +
|
| +TEST_F(WebNodeTest, QuerySelectorError)
|
| +{
|
| + setInnerHTML("<div></div>");
|
| + WebExceptionCode ec;
|
| + WebElement element = root().querySelector("@invalid-selector", ec);
|
| + EXPECT_NE(0, ec);
|
| + EXPECT_TRUE(element.isNull());
|
| +}
|
| +
|
| +TEST_F(WebNodeTest, QuerySelectorAllMatches)
|
| +{
|
| + setInnerHTML("<div id=x><span class=a></span></div>");
|
| + WebExceptionCode ec;
|
| + WebVector<WebElement> results;
|
| + root().querySelectorAll(".a, #x", ec, results);
|
| + EXPECT_EQ(0, ec);
|
| + EXPECT_EQ(2u, results.size());
|
| + EXPECT_TRUE(results[0].hasHTMLTagName("div"));
|
| + EXPECT_TRUE(results[1].hasHTMLTagName("span"));
|
| +}
|
| +
|
| +TEST_F(WebNodeTest, QuerySelectorAllDoesNotMatch)
|
| +{
|
| + setInnerHTML("<div id=x><span class=a></span></div>");
|
| + WebExceptionCode ec;
|
| + WebVector<WebElement> results;
|
| + root().querySelectorAll(".bar, #foo", ec, results);
|
| + EXPECT_EQ(0, ec);
|
| + EXPECT_TRUE(results.isEmpty());
|
| +}
|
| +
|
| +TEST_F(WebNodeTest, QuerySelectorAllError)
|
| +{
|
| + setInnerHTML("<div></div>");
|
| + WebExceptionCode ec;
|
| + WebVector<WebElement> results;
|
| + root().querySelectorAll("@invalid-selector", ec, results);
|
| + EXPECT_NE(0, ec);
|
| + EXPECT_TRUE(results.isEmpty());
|
| +}
|
| +
|
| TEST_F(WebNodeTest, GetElementsByHTMLTagName)
|
| {
|
| - document().documentElement()->setInnerHTML("<body><LABEL></LABEL><svg xmlns='http://www.w3.org/2000/svg'><label></label></svg></body>", ASSERT_NO_EXCEPTION);
|
| - WebNode node(document().documentElement());
|
| + setInnerHTML("<body><LABEL></LABEL><svg xmlns='http://www.w3.org/2000/svg'><label></label></svg></body>");
|
| // WebNode::getElementsByHTMLTagName returns only HTML elements.
|
| - WebElementCollection collection = node.getElementsByHTMLTagName("label");
|
| + WebElementCollection collection = root().getElementsByHTMLTagName("label");
|
| EXPECT_EQ(1u, collection.length());
|
| EXPECT_TRUE(collection.firstItem().hasHTMLTagName("label"));
|
| // The argument should be lower-case.
|
| - collection = node.getElementsByHTMLTagName("LABEL");
|
| + collection = root().getElementsByHTMLTagName("LABEL");
|
| EXPECT_EQ(0u, collection.length());
|
| }
|
|
|
|
|