summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/html/browsers/the-window-object/open-close/open-features-non-integer-height.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/html/browsers/the-window-object/open-close/open-features-non-integer-height.html')
-rw-r--r--testing/web-platform/tests/html/browsers/the-window-object/open-close/open-features-non-integer-height.html91
1 files changed, 91 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/browsers/the-window-object/open-close/open-features-non-integer-height.html b/testing/web-platform/tests/html/browsers/the-window-object/open-close/open-features-non-integer-height.html
new file mode 100644
index 0000000000..d8ee866c50
--- /dev/null
+++ b/testing/web-platform/tests/html/browsers/the-window-object/open-close/open-features-non-integer-height.html
@@ -0,0 +1,91 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>HTML: window.open `features`: non-integer values for feature `height`</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 featuresPrefix = `top=0,left=0,width=401,`;
+var windowURL = 'resources/message-opener.html';
+
+// https://html.spec.whatwg.org/multipage/infrastructure.html#rules-for-parsing-integers
+
+setup (() => {
+ // Before running tests, open a window using features that mimic
+ // what would happen if the feature tested here were set to 0
+ // for comparison later.
+ var featureString = `${featuresPrefix}height=0`;
+ var prefixedMessage = new PrefixedMessageTest();
+ prefixedMessage.onMessage((data, e) => {
+ e.source.close();
+ runWindowTests(data);
+ });
+ var win = window.open(prefixedMessage.url(windowURL), '', featureString);
+});
+
+function runWindowTests (baselineDimensions) {
+ // The absence of the sizing feature should have the same behavior
+ // as that feature set to 0
+ [ featuresPrefix,
+ 'top=0,left=0',
+ ].forEach(feature => {
+ async_test(t => {
+ var prefixedMessage = new PrefixedMessageTest();
+ prefixedMessage.onMessage(t.step_func_done((data, e) => {
+ e.source.close();
+ assert_equals(data.height, baselineDimensions.height);
+ }));
+ var win = window.open(prefixedMessage.url(windowURL) + '&expected_innerHeight=' + baselineDimensions.height, '', feature);
+ }, `${feature}: absence of feature "height" should be treated same as "height=0"`);
+ });
+
+ // When code point in first position is not an ASCII digit, "+" or "-",
+ // that's an error and the value becomes 0
+ [ 'height=/404',
+ 'height=_404',
+ 'height=L404'
+ ].forEach(feature => {
+ async_test(t => {
+ var prefixedMessage = new PrefixedMessageTest();
+ var featureString = `${featuresPrefix}${feature}`;
+ prefixedMessage.onMessage(t.step_func_done((data, e) => {
+ e.source.close();
+ assert_equals(data.height, baselineDimensions.height, `"${feature} begins with an invalid character and should be ignored"`);
+ }));
+ var win = window.open(prefixedMessage.url(windowURL) + '&expected_innerHeight=' + baselineDimensions.height, '', featureString);
+ }, `features "${feature}" should NOT set "height=404"`);
+ });
+
+ // Codepoints that are valid ASCII digits should be collected
+ // Non-ASCII digits and subsequent code points are ignored
+ [ 'height=405.5',
+ 'height=405.32',
+ 'height=405LLl',
+ 'height=405^4',
+ 'height=405*3',
+ 'height=405/5',
+ 'height=405 ',
+ 'height=405e1',
+ 'height=405e-1'
+ ].forEach(feature => {
+ async_test(t => {
+ var prefixedMessage = new PrefixedMessageTest();
+ var featureString = `${featuresPrefix}${feature}`;
+ prefixedMessage.onMessage(t.step_func_done((data, e) => {
+ e.source.close();
+ assert_equals(data.height, 405, `"${featureString} value after first non-digit will be ignored"`);
+ }));
+ var win = window.open(prefixedMessage.url(windowURL) + "&expected_innerHeight=405", '', featureString);
+ }, `features "${feature}" should set "height=405"`);
+ });
+
+}
+
+</script>