<html>
    <head>
        <script>
            if (window.testRunner) {
                testRunner.dumpAsText();
                testRunner.waitUntilDone();
            }
            document.addEventListener("beforeload", function(event) {
                var console = document.getElementById("console");

                if (event.url == "scheme://url-with-leading-and-trailing-space/")
                    console.innerHTML = "PASS";
                else
                    console.innerHTML = "FAIL";

                event.preventDefault();
 
                if (window.testRunner)
                    testRunner.notifyDone();
            }, true);
        </script>
    </head>
    <body>
        <object width="0" height="0" type="application/x-webkit-test-netscape">
            <param name="movie" value="  scheme://url-with-leading-and-trailing-space/     ">
        </object>
        <p>This test verifies that a URL specified in a &lt;param&gt; of an &lt;object&gt; is parsed the same as if it was specified as the data attribute of the &lt;object&gt;. Specifically, this verifies that leading/trailing whitespace are stripped.</p>
        <div id="console"></div>
    </body>
</html>
