<!DOCTYPE html>
<title>Test window.prompt</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/utils.js"></script>
<script src="resources/utils.js"></script>

<body>
  <script>
    async function runTest(dimension, extra_children) {
      const window_outer_size_key = token();
      const window_inner_size_key = token();

      const window_outer_size_from_top_frame = (dimension == "width" ?
        window.outerWidth : window.outerHeight).toString();

      const frame_url = generateURL(
        'resources/window-outer-dimensions-inner.html',
        [window_outer_size_key, window_inner_size_key, dimension, extra_children]);
      const new_frame = attachFencedFrame(frame_url);

      // Get the outer and inner width/height from either the top level
      // fencedframe or the nested iframe.
      const result_outer = await nextValueFromServer(window_outer_size_key);
      const result_inner = await nextValueFromServer(window_inner_size_key);

      assert_not_equals(result_outer,
                        window_outer_size_from_top_frame,
                        "Outer " + dimension + " not read in fenced frame"
                        + " tree.");

      assert_equals(result_outer,
                    result_inner,
                    "Fencedframe's outer/inner " + dimension + " match.");
    }

    promise_test(async () => {
      return runTest("width", 0);
    }, "window.outerWidth");

    promise_test(async () => {
      return runTest("height", 0);
    }, "window.outerHeight");

    promise_test(async () => {
      return runTest("width", 1);
    }, "window.outerWidth nested iframe");

    promise_test(async () => {
      return runTest("height", 1);
    }, "window.outerHeight nested iframe");
  </script>
</body>
