Re-sync html/browsers/the-window-object web-platform-tests from upstream
[WebKit-https.git] / LayoutTests / imported / w3c / web-platform-tests / html / browsers / the-window-object / apis-for-creating-and-navigating-browsing-contexts-by-name / open-features-negative-top-left.html
1 <!DOCTYPE html>
2 <meta charset="utf-8">
3 <title>HTML: window.open `features`: negative values for `top`, `left`</title>
4 <meta name=timeout content=long>
5 <link rel="help" href="https://html.spec.whatwg.org/multipage/#apis-for-creating-and-navigating-browsing-contexts-by-name">
6
7 <!--  user agents are not required to support open features other than `noopener`
8      and on some platforms position and size features don't make sense  -->
9 <meta name="flags" content="may" />
10
11 <script src="/resources/testharness.js"></script>
12 <script src="/resources/testharnessreport.js"></script>
13 <script src="/common/PrefixedPostMessage.js"></script>
14 <script>
15 var featuresPrefix = `width=401,height=404,`;
16 var windowURL = 'resources/message-opener.html';
17
18 // https://html.spec.whatwg.org/multipage/infrastructure.html#rules-for-parsing-integers
19
20 setup (() => {
21   // Before running tests, open a window using features that mimic
22   // what would happen if the feature tested here were set to 0
23   // for comparison later.
24   var featureString = `${featuresPrefix}top=0,left=0`;
25   var prefixedMessage = new PrefixedMessageTest();
26   prefixedMessage.onMessage((data, e) => {
27     e.source.close();
28     runWindowTests(data);
29   });
30   var win = window.open(prefixedMessage.url(windowURL), '', featureString);
31 });
32
33 function runWindowTests (baselineDimensions) {
34
35   // Negative values for `top`, `left` should be interpreted as 0
36   [ 'top=-204',
37     'top=-204.5',
38     'top=-0'
39   ].forEach(feature => {
40     async_test(t => {
41       var prefixedMessage = new PrefixedMessageTest();
42       var featureString = `${featuresPrefix}left=0,${feature}`;
43       prefixedMessage.onMessage(t.step_func_done((data, e) => {
44         e.source.close();
45         assert_equals(data.top, baselineDimensions.top, `"${feature} is negative and should be set to 0"`);
46       }));
47       var win = window.open(prefixedMessage.url(windowURL), '', featureString);
48     }, `features "${feature}" should NOT set "top=204"`);
49   });
50
51 // Negative values for `top`, `left` should be interpreted as 0
52   [ 'left=-204',
53     'left=-204.5',
54     'left=-0'
55   ].forEach(feature => {
56     async_test(t => {
57       var prefixedMessage = new PrefixedMessageTest();
58       var featureString = `${featuresPrefix}top=0,${feature}`;
59       prefixedMessage.onMessage(t.step_func_done((data, e) => {
60         e.source.close();
61         assert_equals(data.left, baselineDimensions.left, `"${feature} is negative and should be set to 0"`);
62       }));
63       var win = window.open(prefixedMessage.url(windowURL), '', featureString);
64     }, `features "${feature}" should NOT set "left=204"`);
65   });
66 }
67
68 </script>