Home | History | Annotate | Download | only in data
      1 <html>
      2 
      3  <head><title>Click noreferrer links</title>
      4  <script>
      5   function simulateClick(target) {
      6     var evt = document.createEvent("MouseEvents");
      7     evt.initMouseEvent("click", true, true, window,
      8                        0, 0, 0, 0, 0, false, false,
      9                        false, false, 0, null);
     10 
     11     return target.dispatchEvent(evt);
     12   }
     13 
     14   function clickNoRefTargetBlankLink() {
     15     return simulateClick(document.getElementById("noref_and_tblank_link"));
     16   }
     17 
     18   function clickSameSiteNoRefTargetedLink() {
     19     return simulateClick(
     20         document.getElementById("samesite_noref_and_targeted_link"));
     21   }
     22 
     23   function clickSameSiteTargetedLink() {
     24     return simulateClick(document.getElementById("samesite_targeted_link"));
     25   }
     26 
     27   function clickSameSiteTargetBlankLink() {
     28     return simulateClick(document.getElementById("samesite_tblank_link"));
     29   }
     30 
     31   function clickTargetBlankLink() {
     32     return simulateClick(document.getElementById("tblank_link"));
     33   }
     34 
     35   function clickNoRefLink() {
     36     return simulateClick(document.getElementById("noref_link"));
     37   }
     38 
     39   function testScriptAccessToWindow() {
     40     // Grab a reference to the existing foo window and access its location.
     41     var w = window.open("", "foo");
     42     var url = w.location.href;
     43     return url != undefined;
     44   }
     45 
     46   function testCloseWindow() {
     47     // Grab a reference to the existing foo window and close it.
     48     var w = window.open("", "foo");
     49     w.close();
     50     return true;
     51   }
     52 
     53   // Listen to incoming messages and reply to them.
     54   var receivedMessages = 0;
     55   window.addEventListener("message", messageReceived, false);
     56   function messageReceived(event) {
     57     receivedMessages++;
     58     event.source.postMessage(event.data, "*");
     59   }
     60 
     61   // Send a message which contains a message port.
     62   var mc;
     63   function postWithPortToFoo() {
     64     mc = new MessageChannel();
     65     mc.port1.onmessage = portMessageReceived;
     66     mc.port1.start();
     67     var w = window.open("", "foo");
     68     w.postMessage({message: "msg-with-port", port: mc.port2}, "*", [mc.port2]);
     69     return true;
     70   }
     71 
     72   var receivedMessagesViaPort = 0;
     73   function portMessageReceived(event) {
     74     receivedMessagesViaPort++;
     75     // Change the title to generate a notification.
     76     document.title = event.data;
     77   }
     78  </script>
     79  </head>
     80 
     81 <a href="https://REPLACE_WITH_HOST_AND_PORT/files/title2.html"
     82    id="noref_and_tblank_link" rel="noreferrer" target="_blank">
     83   rel=noreferrer and target=_blank</a><br>
     84 <a href="title2.html" id="samesite_noref_and_targeted_link"
     85    rel="noreferrer" target="foo">
     86   same-site rel=noreferrer and target=foo</a><br>
     87 <a href="navigate_opener.html" id="samesite_targeted_link" target="foo">
     88   same-site target=foo</a><br>
     89 <a href="title2.html" id="samesite_tblank_link" target="_blank">
     90   same-site target=_blank</a><br>
     91 <a href="https://REPLACE_WITH_HOST_AND_PORT/files/title2.html" id="tblank_link"
     92    target="_blank">target=_blank</a><br>
     93 <a href="https://REPLACE_WITH_HOST_AND_PORT/files/title2.html" id="noref_link"
     94    rel="noreferrer">rel=noreferrer</a><br>
     95 
     96 <iframe id="frame1" src="frame_tree/1-1.html"></iframe>
     97 
     98 </html>
     99