<!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>
