| <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> |
| <html> |
| <head> |
| <script src="../../resources/js-test-pre.js"></script> |
| </head> |
| <body> |
| <script> |
| description("Test reflecting URL attributes with empty string values."); |
| |
| function testURLReflection(attributeName, tag, scriptAttributeName) |
| { |
| if (!scriptAttributeName) |
| scriptAttributeName = attributeName.toLowerCase(); |
| |
| var element; |
| if (tag === "html") |
| element = document.documentElement; |
| else { |
| element = document.createElement(tag); |
| document.body.appendChild(element); |
| } |
| element.setAttribute(scriptAttributeName, "x"); |
| var xValue = element[attributeName]; |
| element.setAttribute(scriptAttributeName, ""); |
| var emptyValue = element[attributeName]; |
| if (tag !== "html") |
| document.body.removeChild(element); |
| |
| if (xValue === undefined) |
| return "none"; |
| if (xValue === "x") |
| return "non-URL"; |
| if (xValue !== document.baseURI.replace(/[^\/]+$/, "x")) |
| return "error (x): " + xValue; |
| if (emptyValue === "") |
| return "non-empty URL"; |
| if (emptyValue === document.baseURI) |
| return "URL"; |
| return "error (empty): " + emptyValue; |
| } |
| |
| shouldBe("testURLReflection('attribute', 'element')", "'none'"); |
| shouldBe("testURLReflection('id', 'element')", "'non-URL'"); |
| |
| // The following list comes from the HTML5 document’s attributes index. |
| // These are the URL attributes from that list. |
| |
| shouldBe("testURLReflection('action', 'form')", "'URL'"); |
| shouldBe("testURLReflection('cite', 'blockquote')", "'URL'"); |
| shouldBe("testURLReflection('cite', 'del')", "'URL'"); |
| shouldBe("testURLReflection('cite', 'ins')", "'URL'"); |
| shouldBe("testURLReflection('cite', 'q')", "'URL'"); |
| shouldBe("testURLReflection('data', 'object')", "'URL'"); |
| shouldBe("testURLReflection('formaction', 'button')", "'URL'"); |
| shouldBe("testURLReflection('formaction', 'input')", "'URL'"); |
| shouldBe("testURLReflection('href', 'a')", "'URL'"); |
| shouldBe("testURLReflection('href', 'area')", "'URL'"); |
| shouldBe("testURLReflection('href', 'link')", "'URL'"); |
| shouldBe("testURLReflection('href', 'base')", "'URL'"); |
| shouldBe("testURLReflection('icon', 'command')", "'URL'"); |
| shouldBe("testURLReflection('manifest', 'html')", "'URL'"); |
| shouldBe("testURLReflection('poster', 'video')", "'URL'"); |
| shouldBe("testURLReflection('src', 'audio')", "'URL'"); |
| shouldBe("testURLReflection('src', 'embed')", "'URL'"); |
| shouldBe("testURLReflection('src', 'iframe')", "'URL'"); |
| shouldBe("testURLReflection('src', 'img')", "'URL'"); |
| shouldBe("testURLReflection('src', 'input')", "'URL'"); |
| shouldBe("testURLReflection('src', 'script')", "'URL'"); |
| shouldBe("testURLReflection('src', 'source')", "'URL'"); |
| shouldBe("testURLReflection('src', 'video')", "'URL'"); |
| |
| // Other reflected URL attributes. |
| |
| shouldBe("testURLReflection('longDesc', 'img')", "'URL'"); |
| shouldBe("testURLReflection('lowsrc', 'img')", "'URL'"); |
| </script> |
| <script src="../../resources/js-test-post.js"></script> |
| </body> |
| </html> |