<html class="reftest-wait">
<head>
  <script>
    function test() {
      function checkResolve(value) {
        // Let the test timeout and fail
        throw new Error("This promise should not resolve");
      }

      function checkReject(reason) {
        if (reason.message !== "Browsing context is no longer available") {
          // Let the test timeout and fail
          throw new Error("Unexpected rejected promise reason");          
        }
        // Otherwise, successfully rejected a request not attached to a
        // window without crashing
      }

      var i = document.querySelector("iframe");
      var nav = i.contentWindow.navigator;
      i.remove();

      // First, check with valid args
      nav.requestMediaKeySystemAccess(
        "com.widevine.alpha",
        [{
            initDataTypes: ["webm"],
            videoCapabilities: [{ contentType: 'video/webm; codecs="vp9"' }]
        }]
      ).then(
        checkResolve,
        (reason) => {
          checkReject(reason);

          // Then, check with invalid args
          nav.requestMediaKeySystemAccess("", []).then(
            checkResolve,
            (reason) => {
              checkReject(reason);
              document.documentElement.removeAttribute("class");
            }
          );
        });
    }
  </script>
</head>
<body onload="test()">
  <iframe></iframe>
</body>
</html>
