| Index: third_party/WebKit/LayoutTests/fast/parser/inselect-tokenization.html
|
| diff --git a/third_party/WebKit/LayoutTests/fast/parser/inselect-tokenization.html b/third_party/WebKit/LayoutTests/fast/parser/inselect-tokenization.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..997cfbd5211ba2216bc6e06daa444d2573ff9af7
|
| --- /dev/null
|
| +++ b/third_party/WebKit/LayoutTests/fast/parser/inselect-tokenization.html
|
| @@ -0,0 +1,106 @@
|
| +<!DOCTYPE html>
|
| +<script src="../../resources/testharness.js"></script>
|
| +<script src="../../resources/testharnessreport.js"></script>
|
| +<body>
|
| +<script>
|
| + /************************************************************************
|
| + * Helper functions!
|
| + */
|
| + function createFrame(markup) {
|
| + var i = document.createElement('iframe');
|
| + i.srcdoc = markup;
|
| + return i;
|
| + }
|
| +
|
| + function appendAndWaitForLoad(test, frame) {
|
| + return new Promise((resolve, reject) => {
|
| + frame.onload = test.step_func(_ => {
|
| + frame.onload = null;
|
| + resolve();
|
| + });
|
| + document.body.appendChild(frame);
|
| + });
|
| + }
|
| +
|
| + function assert_select(test, frame, value) {
|
| + var select = frame.contentDocument.querySelector('select');
|
| + assert_equals(select.value, value, 'select');
|
| + }
|
| +
|
| + function assert_element_innerText(test, frame, name, value) {
|
| + var el = frame.contentDocument.querySelector(name);
|
| + if (value === null || value === undefined)
|
| + assert_equals(el, null, name);
|
| + else
|
| + assert_equals(el.innerText, value, name);
|
| + }
|
| +
|
| + /************************************************************************
|
| + * The actual tests!
|
| + */
|
| + var tests = [
|
| + // <input>, <keygen>, and <textarea> close <select>, so <plaintext> works.
|
| + ];
|
| +
|
| + var elementsToIgnore = [
|
| + "iframe",
|
| + "noembed",
|
| + "noframes",
|
| + "noscript",
|
| + "plaintext",
|
| + "style",
|
| + "xmp",
|
| + ];
|
| +
|
| + elementsToIgnore.forEach(el => {
|
| + tests.push(
|
| + {
|
| + markup: `<form><select><option><${el}>1<element></element>`,
|
| + select: "1",
|
| + innerText: null,
|
| + name: el
|
| + }, {
|
| + markup: `<form><select><option>1<${el}>2<element></element>`,
|
| + select: "12",
|
| + innerText: null,
|
| + name: el
|
| + }, {
|
| + markup: `<form><select><option>1<${el}>2<element></element>3`,
|
| + select: "123",
|
| + innerText: null,
|
| + name: el
|
| + });
|
| + if (el != "iframe") {
|
| + tests.push(
|
| + {
|
| + markup: `<form><select><option>1<input><${el}>2<element></element>`,
|
| + select: "1",
|
| + innerText: "2<element></element>",
|
| + name: el
|
| + }, {
|
| + markup: `<form><select><option>1<keygen><${el}>2<element></element>`,
|
| + select: "1",
|
| + innerText: "2<element></element>",
|
| + name: el
|
| + }, {
|
| + markup: `<form><select><option>1<textarea></textarea><${el}>2<element></element>`,
|
| + select: "1",
|
| + innerText: "2<element></element>",
|
| + name: el
|
| + });
|
| + }
|
| + });
|
| +
|
| +
|
| + tests.forEach(test => {
|
| + async_test(t => {
|
| + var i = createFrame(test.markup);
|
| +
|
| + appendAndWaitForLoad(t, i)
|
| + .then(t.step_func_done(_ => {
|
| + assert_select(t, i, test.select);
|
| + assert_element_innerText(t, i, test.name, test.innerText);
|
| + }));
|
| + }, test.markup);
|
| + });
|
| +</script>
|
|
|