'use strict';

// This script depends on the following scripts:
//    /fs/resources/messaging-helpers.js
//    /fs/resources/messaging-blob-helpers.js
//    /fs/resources/messaging-serialize-helpers.js
//    /fs/resources/test-helpers.js

directory_test(
    async (t, root_dir) => {
      const iframe = await add_iframe(t, {src: kDocumentMessageTarget});
      await do_message_port_test(
          t, root_dir, /*target=*/ iframe.contentWindow,
          /*target_origin=*/ '*');
    },
    'Send and receive messages using a message port in a same origin ' +
        'iframe.');

directory_test(
    async (t, root_dir) => {
      const iframe = await add_iframe(t, {
        src: kDocumentMessageTarget,
        sandbox: 'allow-scripts allow-same-origin'
      });
      await do_message_port_test(
          t, root_dir, /*target=*/ iframe.contentWindow,
          /*target_origin=*/ '*');
    },
    'Send and receive messages using a message port in a sandboxed same ' +
        'origin iframe.');

directory_test(async (t, root_dir) => {
  const blob_url = await create_message_target_blob_url(t);
  const iframe = await add_iframe(t, {src: blob_url});
  await do_message_port_test(
      t, root_dir, /*target=*/ iframe.contentWindow, /*target_origin=*/ '*');
}, 'Send and receive messages using a message port in a blob iframe.');

directory_test(async (t, root_dir) => {
  const iframe_html = await create_message_target_html_without_subresources(t);
  const iframe = await add_iframe(t, {srcdoc: iframe_html});
  await do_message_port_test(
      t, root_dir, /*target=*/ iframe.contentWindow, /*target_origin=*/ '*');
}, 'Send and receive messages using a message port in an iframe srcdoc.');
