<!DOCTYPE html>
<html>

  <head>
    <meta name="timeout" content="long">
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
  </head>

  <body>
    <script>
      const test_data = [
        {
          url : './link-upgrade/basic-link-no-upgrade.sub.html',
          done_message : 'basic-link-no-upgrade',
        },
        {
          url : './link-upgrade/basic-link-upgrade.sub.html',
          done_message : 'basic-link-upgrade',
        },
        {
          url : './link-upgrade/iframe-link-upgrade.sub.html',
          done_message : 'iframe-link-upgrade',
        },
        {
          url : './link-upgrade/iframe-top-navigation-no-upgrade-1.sub.html',
          done_message : 'iframe-top-navigation-no-upgrade-1',
        },
        {
          url : './link-upgrade/iframe-top-navigation-no-upgrade-2.sub.html',
          done_message : 'iframe-top-navigation-no-upgrade-2',
        },
        {
          url : './link-upgrade/iframe-top-navigation-upgrade-1.sub.html',
          done_message : 'iframe-top-navigation-upgrade-1',
        },
        {
          url : './link-upgrade/iframe-top-navigation-upgrade-2.sub.html',
          done_message : 'iframe-top-navigation-upgrade-2',
        },
        {
          url : './link-upgrade/iframe-top-navigation-upgrade-meta.sub.html',
          done_message : 'iframe-top-navigation-upgrade-meta',
        },
      ];
      for(let i = 0; i<test_data.length; i+=1) {
        let data = test_data[i];
        let test = async_test(data.url);
        test.step(function() {
          let w = window.open(data.url, data.url);
          this.add_cleanup(() => w.close());
          assert_true(w != undefined, "Popup must not be blocked");

          window.addEventListener("message", event => {
            if (event.data == data.done_message)
              test.done();
          });
        });

        test.step_timeout(function(){test.force_timeout()}, 10000);
      }
    </script>
  </body>

</html>
