<!DOCTYPE html>
<html>
<head>
<script>
if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
}

function log(msg) {
    var div = document.createElement("div");
    div.appendChild(document.createTextNode(msg));
    document.getElementById("console").appendChild(div);
}

function go() {
    const { set } = Object.getOwnPropertyDescriptor(frames[0].location, "href");
    const setBoundProxy = new Proxy(set.bind(frames[0].frames[0].location), {});
    setBoundProxy("target-for-location.html");
}

window.addEventListener("message", function(e) {
    log(e.data);

    if (window.testRunner)
        testRunner.notifyDone();
}, false);
</script>
</head>
<body>
<div id="console"></div>
<iframe src="resources/middle-frame-for-location.html">
</body>
</html>

