<!DOCTYPE html>
<script>
  'use strict'

  // Sends two messages to its creator:
  // (1) The result of showDirectoryPicker().
  // (2) The result of navigator.storage.getDirectory().

  function post_message(data) {
    if (window.parent !== null) {
      window.parent.postMessage(data, { targetOrigin: '*' });
    }
    if (window.opener !== null) {
      window.opener.postMessage(data, { targetOrigin: '*' });
    }
  }

  try {
    window.showDirectoryPicker()
      .then(() => {
        post_message('showDirectoryPicker(): FULFILLED');
      }).catch(error => {
        post_message(`showDirectoryPicker(): REJECTED: ${error.name}`);
      });
  } catch (error) {
    post_message(`showDirectoryPicker(): EXCEPTION: ${error.name}`);
  }

  try {
    navigator.storage.getDirectory()
      .then(() => {
        post_message('navigator.storage.getDirectory(): FULFILLED');
      }).catch(error => {
        post_message(`navigator.storage.getDirectory(): REJECTED: ${error.name}`);
      });
  } catch (error) {
    post_message(`navigator.storage.getDirectory(): EXCEPTION: ${error.name}`);
  }
</script>