<head>
  <meta http-equiv="Content-Security-Policy" content="frame-src 'none'"/>
</head>
<div id="container">
<p>You should run this test in Test Runner</p>
<p>This is a regression test for https://crbug.com/658701</p>
</div>
<div id="log"></div>
<iframe id="iframe"
        srcdoc="
&lt;p&gt;frame-src-vs-shift-click-FRAME.html:
&lt;a id=&quot;test-anchor&quot;
   href=&quot;resources/frame-src-vs-shift-click-target.html&quot;
   &gt;Test anchor&lt;/a&gt;
&lt;/p&gt;
        "></iframe>
<script>
if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.setCanOpenWindows(true);
    testRunner.setCloseRemainingWindowsWhenComplete(true);
    testRunner.waitUntilDone();

    window.onload = function() {
        var iframe = document.getElementById("iframe");
        var anchor = iframe.contentWindow.document.getElementById('test-anchor');
        var x = iframe.offsetLeft + anchor.offsetLeft + 3;
        var y = iframe.offsetTop + anchor.offsetTop + 3;
        eventSender.dragMode = false;
        eventSender.mouseMoveTo(x, y);
        eventSender.mouseDown(0);
        eventSender.mouseUp(0, ['shiftKey']);
    };
}

</script>
