<!DOCTYPE html>
<html>
  <head>
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
  </head>

  <body>
    <script>
      function createAndLoadIframe() {
        return new Promise(resolve => {
          addEventListener("message", function() {
            assert_true(true, "Iframe loaded");
            resolve();
          }, { once: true });

          let ifr = document.createElement('iframe');
          document.body.appendChild(ifr);
          ifr.src = "https://{{domains[www2]}}:{{ports[https][0]}}/clear-site-data/support/iframe_executionContexts.html";
        });
      }

      function loadClearSiteDataResource(what) {
        return new Promise(resolve => {
          addEventListener("message", function() {
            assert_true(true, "Iframe re-loaded");
            resolve();
          }, { once: true });

          let image = new Image();
          image.src = "https://{{domains[www2]}}:{{ports[https][0]}}/clear-site-data/support/echo-clear-site-data.py?" + what;
        });
      }

      promise_test(function(test) {
        return createAndLoadIframe()
          .then(() => loadClearSiteDataResource("executionContexts"))
      }, "executionContexts triggers the reload of contexts");

      promise_test(function(test) {
        return createAndLoadIframe()
          .then(() => loadClearSiteDataResource("*"));
      }, "* triggers the reload of contexts");
    </script>
  </body>
</html>

