open-features-negative-top-left.html (2708B)
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) + '&expected_screenY=' + baselineDimensions.top, '', 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) + '&expected_screenX=' + baselineDimensions.left, '', featureString); 64 }, `features "${feature}" should NOT set "left=204"`); 65 }); 66 } 67 68 </script>