<!doctype html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/get-host-info.sub.js"></script>
<div id=log>
<script>
'use strict';

const host = get_host_info();
const remoteBaseURL =
    host.HTTPS_REMOTE_ORIGIN +
    window.location.pathname.replace(/\/[^\/]*$/, '/');
const localBaseURL =
    host.HTTPS_ORIGIN +
    window.location.pathname.replace(/\/[^\/]*$/, '/');

promise_test(async t => {
  const messageWatcher = new EventWatcher(t, window, "message");
  var iframe = document.createElement("iframe");
  iframe.src = localBaseURL + "support/otpcredential-iframe.html";

  document.body.appendChild(iframe);

  const message = await messageWatcher.wait_for("message");
  assert_equals(message.data.result, "Pass");
  assert_equals(message.data.code, "ABC123");

}, "Test OTPCredential enabled in same origin iframes");

promise_test(async t => {
  const messageWatcher = new EventWatcher(t, window, "message");
  var iframe = document.createElement("iframe");
  iframe.src = remoteBaseURL + "support/otpcredential-iframe.html"
  document.body.appendChild(iframe);

  const message = await messageWatcher.wait_for("message");
  assert_equals(message.data.result, "Fail");
  assert_equals(message.data.errorType, "NotAllowedError");

}, "Test OTPCredential disabled in cross origin iframes");
</script>
