<!DOCTYPE html>
<title>Sub Apps: Error cases for remove()</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/subapps-helpers.js"></script>

<body></body>

<script>

promise_test(async t => {
  const iframe = document.createElement('iframe');
  document.body.appendChild(iframe);

  const iframeNavigator = iframe.contentWindow.navigator;
  const iframeDOMException = iframe.contentWindow.DOMException;

  // Detach the frame.
  iframe.remove();

  // At this point the iframe is detached and unloaded, and its execution
  // context is gone.
  await promise_rejects_dom(t, 'NotFoundError', iframeDOMException, iframeNavigator.subApps.remove('sub-app-id'));
}, "The object is no longer associated to a document.");

promise_test(async t => {
  const iframe = document.createElement('iframe');
  document.body.appendChild(iframe);

  const iframeNavigator = iframe.contentWindow.navigator;
  const iframeDOMException = iframe.contentWindow.DOMException;
  t.add_cleanup(() => iframe.remove());

  await promise_rejects_dom(t, 'InvalidStateError', iframeDOMException, iframeNavigator.subApps.remove('sub-app-id'));
}, "API is only supported in top-level browsing contexts.");

promise_test(async t => {
  t.add_cleanup(async () => {
      await mockSubAppsService.reset();
      mockSubAppsService = null;
  });
  await createMockSubAppsService(Status.FAILURE);
  return promise_rejects_dom(t, 'OperationError', navigator.subApps.remove('sub-app-id'));
}, 'Remove call failed.');

</script>