<!DOCTYPE html>
<html>
<head>
<title> Corss-origin: event.source returns the WindowProxy of the source window </title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<div id=log></div>

<div style="display:none">
    <iframe width="70%" onload="PostMessageTest()" src="{{location[scheme]}}://{{domains[www1]}}:{{location[port]}}/webmessaging/support/ChildWindowPostMessage.htm"></iframe>
</div>

<script>

    var description = "Test Description: Cross-origin: event.source returns the WindowProxy of the source window.";

    var t = async_test(description);

    var PORT = location.port !== "" ? ":" + location.port : "";
    var DATA = "foo";
    var TARGET = document.querySelector("iframe");
    var XORIGIN = "{{location[scheme]}}://{{domains[www1]}}" + PORT;
    var ExpectedResult = [XORIGIN, "AccessCookieDenied"];
    var ActualResult = [];

    function PostMessageTest()
    {
        TARGET.contentWindow.postMessage(DATA, XORIGIN);
    }

    window.onmessage = t.step_func(function(e)
    {
        try
        {
            var sdomainCookie = e.source.document.cookie;
            ActualResult.push(e.origin, "AccessCookieAllowed");
        }
        catch(ex)
        {
            ActualResult.push(e.origin, "AccessCookieDenied");
        }

        assert_true(e.source.parent === window);
        assert_array_equals(ActualResult, ExpectedResult, "ActualResult");
        t.done();
    });
</script>
</body>
</html>
