| Index: third_party/WebKit/LayoutTests/external/wpt/innerText/setter.html
|
| diff --git a/third_party/WebKit/LayoutTests/external/wpt/innerText/setter.html b/third_party/WebKit/LayoutTests/external/wpt/innerText/setter.html
|
| index b8ff0c9599fbcc07f469527aa870f427a279e895..2c47ff6274e8406a9e4adb07a6d12775ee169d0d 100644
|
| --- a/third_party/WebKit/LayoutTests/external/wpt/innerText/setter.html
|
| +++ b/third_party/WebKit/LayoutTests/external/wpt/innerText/setter.html
|
| @@ -4,6 +4,10 @@
|
| <script src="/resources/testharnessreport.js"></script>
|
| <div id="container"></div>
|
| <script>
|
| +// As of March 2017, WebKit and Blink have inconsistent results depending on
|
| +// rendered or not. setupTest() tests a rendered case, and setupTestDetached()
|
| +// tests a not-rendered case.
|
| +
|
| function setupTest(context, plain) {
|
| // context is either a string or an element node
|
| if (typeof context === "string") {
|
| @@ -16,34 +20,68 @@ function setupTest(context, plain) {
|
| while (e && e.nodeType != Node.ELEMENT_NODE) {
|
| e = e.nextSibling;
|
| }
|
| + e.offsetWidth;
|
| var oldChild = e.firstChild;
|
| e.innerText = plain;
|
| return [e, oldChild];
|
| }
|
| +
|
| +function setupTestDetached(context, plain) {
|
| + var detachedContainer = document.createElement("div");
|
| + // context is either a string or an element node
|
| + if (typeof context === "string") {
|
| + detachedContainer.innerHTML = context;
|
| + } else {
|
| + detachedContainer.innerHTML = "";
|
| + detachedContainer.appendChild(context);
|
| + }
|
| + var e = detachedContainer.firstChild;
|
| + while (e && e.nodeType != Node.ELEMENT_NODE) {
|
| + e = e.nextSibling;
|
| + }
|
| + var oldChild = e.firstChild;
|
| + e.innerText = plain;
|
| + return [e, oldChild];
|
| +}
|
| +
|
| +function assertNewSingleTextNode(newChild, expectedText, oldChild) {
|
| + assert_not_equals(newChild, null, "Should have a child");
|
| + assert_equals(newChild.nodeType, Node.TEXT_NODE, "Child should be a text node");
|
| + assert_equals(newChild.nextSibling, null, "Should have only one child");
|
| + assert_equals(newChild.data, expectedText);
|
| + assert_not_equals(newChild, oldChild, "Child should be a *new* text node");
|
| +}
|
| +
|
| +function assertNoEmptyTextChild(parent) {
|
| + for (var child = parent.firstChild; child; child = child.nextSibling) {
|
| + if (child.nodeType === Node.TEXT_NODE) {
|
| + assert_not_equals(child.data, "", "Should not have empty text nodes");
|
| + }
|
| + }
|
| +}
|
| +
|
| function testText(context, plain, expectedText, msg) {
|
| test(function(){
|
| var arr = setupTest(context, plain);
|
| - var e = arr[0];
|
| - var oldChild = arr[1];
|
| - assert_not_equals(e.firstChild, null, "Should have a child");
|
| - assert_equals(e.firstChild.nodeType, Node.TEXT_NODE, "Child should be a text node");
|
| - assert_equals(e.firstChild.nextSibling, null, "Should have only one child");
|
| - assert_equals(e.firstChild.data, expectedText);
|
| - assert_not_equals(e.firstChild, oldChild, "Child should be a *new* text node");
|
| + assertNewSingleTextNode(arr[0].firstChild, expectedText, arr[1]);
|
| }, msg);
|
| + test(function() {
|
| + var arr = setupTestDetached(context, plain);
|
| + assertNewSingleTextNode(arr[0].firstChild, expectedText, arr[1]);
|
| + }, msg + ", detached");
|
| }
|
| +
|
| function testHTML(context, plain, expectedHTML, msg) {
|
| test(function(){
|
| var e = setupTest(context, plain)[0];
|
| assert_equals(e.innerHTML, expectedHTML);
|
| - var child = e.firstChild;
|
| - while (child) {
|
| - if (child.nodeType === Node.TEXT_NODE) {
|
| - assert_not_equals(child.data, "", "Should not have empty text nodes");
|
| - }
|
| - child = child.nextSibling;
|
| - }
|
| + assertNoEmptyTextChild(e);
|
| }, msg);
|
| + test(function() {
|
| + var e = setupTestDetached(context, plain)[0];
|
| + assert_equals(e.innerHTML, expectedHTML);
|
| + assertNoEmptyTextChild(e);
|
| + }, msg + ", detached");
|
| }
|
| </script>
|
| <script src="setter-tests.js"></script>
|
|
|