<!DOCTYPE html>
<meta charset="utf-8">
<title>HTML: window.open `features`: tokenization -- position features `top` and `left`</title>
<meta name=timeout content=long>
<link rel="help" href="https://html.spec.whatwg.org/multipage/#apis-for-creating-and-navigating-browsing-contexts-by-name">

<!-- user agents are not required to support open features other than `noopener`
     and on some platforms position and size features don't make sense -->
<meta name="flags" content="may" />

<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/PrefixedPostMessage.js"></script>
<script>
var windowURL = 'resources/message-opener.html';
var width = 'width=401,';
var height = 'height=402,';

[ 'left=141',
  ' left = 141',
  'left==141',
  '\nleft= 141',
  ',left=141,,',
  'LEFT=141'
].forEach((features, idx, arr) => {
  async_test(t => {
    var prefixedMessage = new PrefixedMessageTest();
    prefixedMessage.onMessage(t.step_func_done((data, e) => {
      e.source.close();
      assert_equals(data.left, 141);
    }));
    var win = window.open(prefixedMessage.url(windowURL) + '&expected_screenX=141', '', width + height + features);
  }, `"${features}" should set left position of opened window`);
});

[ 'top=142',
  ' top = 142',
  'top==142',
  '\ttop= 142',
  ',top=142,,',
  'TOP=142'
].forEach((features, idx, arr) => {
  async_test(t => {
    var prefixedMessage = new PrefixedMessageTest();
    prefixedMessage.onMessage(t.step_func_done((data, e) => {
      e.source.close();
      assert_equals(data.top, 142);
    }));
    var win = window.open(prefixedMessage.url(windowURL) + '&expected_screenY=142', '', width + height + features);
  }, `${format_value(features)} should set top position of opened window`);
});

[ 'top=152,left=152',
  'top=152,,left=152,',
  'top=152==left=152',
  ',,top= 152, left=152'
].forEach((features, idx, arr) => {
  async_test(t => {
    var prefixedMessage = new PrefixedMessageTest();
    prefixedMessage.onMessage(t.step_func_done((data, e) => {
      e.source.close();
      assert_equals(data.top, 152);
      assert_equals(data.left, 152);
    }));
    var win = window.open(prefixedMessage.url(windowURL) + '&expected_screenX=152&expected_screenY=152', '', width + height + features);
  }, `${format_value(features)} should set top and left position of opened window`);
});

</script>
