Update web-platform-tests to revision b'5b72ee9b50ae6898c94fe3ab50f4c68d4572977c'

This commit is contained in:
WPT Sync Bot 2023-02-28 01:44:37 +00:00
parent aa885dda93
commit 6d6ac7bedf
67 changed files with 913 additions and 194 deletions

View file

@ -143897,6 +143897,19 @@
{}
]
],
"out-of-flow-in-multicolumn-116.html": [
"fac536a65b34163867de1aad2b7f7378046abb47",
[
null,
[
[
"/css/reference/ref-filled-green-100px-square.xht",
"=="
]
],
{}
]
],
"overflow-clip-000.html": [
"72b10f5cdd3092a042f1f90bff04e9428d61608e",
[
@ -144718,6 +144731,19 @@
{}
]
],
"background-001.tentative.html": [
"2084f4ad313ead2f0ae05288f7b83ef864383e37",
[
null,
[
[
"/css/reference/ref-filled-green-100px-square.xht",
"=="
]
],
{}
]
],
"balanced-inner-multicol.html": [
"78340661eda23a2607275e890433c4d99c2c1d3e",
[
@ -189857,32 +189883,6 @@
{}
]
],
"image-set-invalid-resolution-rendering-2.html": [
"c8b560b7fcb3773947ea6c443441fe4397d3bf8e",
[
null,
[
[
"/css/css-images/image-set/reference/image-set-rendering-ref.html",
"=="
]
],
{}
]
],
"image-set-invalid-resolution-rendering.html": [
"91aeaccebdc323a45240ab971989fe1f6464f46b",
[
null,
[
[
"/css/css-images/image-set/reference/image-set-rendering-ref.html",
"=="
]
],
{}
]
],
"image-set-linear-gradient-rendering.html": [
"2fc31b95a81e3c46fde0f42edcaad04c1ed6f1b9",
[
@ -190155,6 +190155,32 @@
],
{}
]
],
"image-set-zero-resolution-rendering-2.html": [
"5c835a3fbcc8b4304d4bf13ff4bd037d8f518dd7",
[
null,
[
[
"/css/css-images/image-set/reference/image-set-rendering-ref.html",
"=="
]
],
{}
]
],
"image-set-zero-resolution-rendering.html": [
"d7e4eb7fdc25af16c17e9e7549f67389afea3285",
[
null,
[
[
"/css/css-images/image-set/reference/image-set-rendering-ref.html",
"=="
]
],
{}
]
]
},
"infinite-radial-gradient-refcrash.html": [
@ -207872,7 +207898,7 @@
]
],
"nesting-basic.html": [
"dde3ebbcfdb8d268d22fa8ce6940655808c0a202",
"19ff48e4a29588e48eb19570149ad7525827cd8c",
[
null,
[
@ -309772,7 +309798,7 @@
]
],
"popover-backdrop-appearance.html": [
"c71e148644b0edb5064b46a01debb37945913818",
"cf57aee69e3d4fe332acc63873fa853b2555c813",
[
null,
[
@ -321617,7 +321643,7 @@
[]
],
"support.js": [
"18ed971ad7cb886caee0142e830f25e13f8354ac",
"5036e50466578be3ec9e4f9596cb4146cf481cf8",
[]
]
},
@ -385323,7 +385349,7 @@
[]
],
"nesting-basic-ref.html": [
"8825ad47d277feb6e64fde381107833e84ccbc56",
"8038f369cde2b496106223551ab9441a79d2621e",
[]
],
"supports-is-consistent-ref.html": [
@ -420695,7 +420721,7 @@
[]
],
"popover-utils.js": [
"0df24ccd4fc936d0a2effb3d9b1e28d5a30955a5",
"404b893bf03cca530200bbfa8c340aa829d522a2",
[]
]
}
@ -449117,7 +449143,7 @@
[]
],
"urltestdata.json": [
"085ea1ec66944c679b63aa0ea2cb868316e46c88",
"19f9ecddbee1873d613a2bb4e3e7b7cde04fe78e",
[]
]
},
@ -480030,6 +480056,25 @@
}
]
],
"compute_pressure_cross_origin_focus_control.tentative.https.window.js": [
"982e4bba0e6cb70d5eef7361a0110ab4b07be20e",
[
"compute-pressure/compute_pressure_cross_origin_focus_control.tentative.https.window.html",
{
"script_metadata": [
[
"timeout",
"long"
],
[
"script",
"/common/get-host-info.sub.js"
]
],
"timeout": "long"
}
]
],
"compute_pressure_detached_iframe.tentative.https.html": [
"3b0a5504e536acf9426476122f59b7c8ed24b150",
[
@ -480130,7 +480175,7 @@
]
],
"compute_pressure_privacy_test.tentative.https.window.js": [
"3a4198f547cc4b5f5fdf075f13efabc8429408a5",
"ceea886323cdfcb37f3deda425d90ef358a28c59",
[
"compute-pressure/compute_pressure_privacy_test.tentative.https.window.html",
{
@ -480168,6 +480213,13 @@
}
]
],
"compute_pressure_same_origin_focus_control.tentative.https.window.js": [
"746f119f249c8c1a7d6451a5672823d011adf22e",
[
"compute-pressure/compute_pressure_same_origin_focus_control.tentative.https.window.html",
{}
]
],
"compute_pressure_supported_sources.tentative.https.window.js": [
"2a69e731e7f9f7c5c0b54ea3b7bc9202bda57f16",
[
@ -515314,7 +515366,7 @@
},
"inline": {
"append.tentative.html": [
"ee9a9e4ddbcf78a7517d8d038d66844880719e63",
"f80875622366939f48a7471513fb6319f75be718",
[
null,
{}
@ -522188,6 +522240,13 @@
null,
{}
]
],
"update-media-feature.html": [
"8064117da73f956625f309263c9401b8adafc3a3",
[
null,
{}
]
]
},
"motion": {
@ -605213,7 +605272,7 @@
]
],
"popover-attribute-basic.html": [
"e9167aaecbfa97b8b803e2b5bce9687919aa760c",
"c80534af9d1907d92aff6100447993b7a62366a4",
[
null,
{
@ -605270,7 +605329,7 @@
]
],
"popover-invoking-attribute.html": [
"7b1dc20adf9beaa13ce2bb304659269cbb3d94ab",
"9b7a714f6dcdc025c53131ed014a74a7c4b4c945",
[
null,
{
@ -605287,7 +605346,7 @@
]
],
"popover-light-dismiss.html": [
"2e9fdb43ec78eaf727ea3180e83b102f59927817",
"2f7e2de96b1b78cc219b9885a53db517ac5cfa8c",
[
null,
{
@ -605358,6 +605417,13 @@
}
]
],
"popover-types-with-hints.tentative.html": [
"39d24a0ad437e723733a222b769890b6ec84d3bb",
[
null,
{}
]
],
"popover-types.html": [
"615c5a818c06c1bd75c5bfc80c2fc38e543048a9",
[

View file

@ -1,3 +0,0 @@
[hit-test-floats-001.html]
[hit-test-floats-001]
expected: FAIL

View file

@ -1,3 +1,6 @@
[block-in-inline-hittest-002.html]
[elementsFromPoint]
expected: FAIL
[elementFromPoint]
expected: FAIL

View file

@ -0,0 +1,3 @@
[block-in-inline-hittest-float-002.html]
[block-in-inline-hittest-float-002]
expected: FAIL

View file

@ -1,3 +1,3 @@
[first-letter-punctuation-087.xht]
type: reftest
expected: TIMEOUT
expected: FAIL

View file

@ -0,0 +1,3 @@
[hittest-before-pseudo.html]
[Hit-testing text within a pseudo-element flex-item should return the flexbox as the hittest result.]
expected: FAIL

View file

@ -0,0 +1,2 @@
[image-set-zero-resolution-rendering-2.html]
expected: FAIL

View file

@ -0,0 +1,2 @@
[image-set-zero-resolution-rendering.html]
expected: FAIL

View file

@ -4,3 +4,84 @@
[background-position length-em(em) / values]
expected: FAIL
[border-top-width length-em(em) / values]
expected: FAIL
[border-right-width length-em(em) / values]
expected: FAIL
[border-bottom-width length-em(em) / values]
expected: FAIL
[border-left-width length-em(em) / values]
expected: FAIL
[padding-bottom length-em(em) / values]
expected: FAIL
[padding-left length-em(em) / values]
expected: FAIL
[padding-right length-em(em) / values]
expected: FAIL
[padding-top length-em(em) / values]
expected: FAIL
[margin-bottom length-em(em) / values]
expected: FAIL
[margin-left length-em(em) / values]
expected: FAIL
[margin-right length-em(em) / values]
expected: FAIL
[margin-top length-em(em) / values]
expected: FAIL
[height length-em(em) / values]
expected: FAIL
[width length-em(em) / values]
expected: FAIL
[min-height length-em(em) / values]
expected: FAIL
[min-width length-em(em) / values]
expected: FAIL
[max-height length-em(em) / values]
expected: FAIL
[max-width length-em(em) / values]
expected: FAIL
[right length-em(em) / values]
expected: FAIL
[left length-em(em) / values]
expected: FAIL
[line-height length-em(em) / values]
expected: FAIL
[letter-spacing length-em(em) / values]
expected: FAIL
[word-spacing length-em(em) / values]
expected: FAIL
[text-indent length-em(em) / values]
expected: FAIL
[outline-offset length-em(em) / values]
expected: FAIL
[outline-width length-em(em) / values]
expected: FAIL
[vertical-align length-em(em) / values]
expected: FAIL

View file

@ -326,3 +326,165 @@
[margin-right length(mm) / values]
expected: [FAIL, PASS]
[top length(px) / values]
expected: FAIL
[right length(px) / values]
expected: FAIL
[bottom length(px) / values]
expected: FAIL
[left length(px) / values]
expected: FAIL
[color color(rgba) / values]
expected: FAIL
[font-size length(pt) / values]
expected: FAIL
[font-size length(pc) / values]
expected: FAIL
[font-size length(px) / values]
expected: FAIL
[font-size length(em) / values]
expected: FAIL
[font-size length(ex) / values]
expected: FAIL
[font-size length(mm) / values]
expected: FAIL
[font-size length(cm) / values]
expected: FAIL
[font-size length(in) / values]
expected: FAIL
[font-size percentage(%) / values]
expected: FAIL
[font-weight font-weight(keyword) / values]
expected: FAIL
[font-weight font-weight(numeric) / values]
expected: FAIL
[line-height number(integer) / values]
expected: FAIL
[line-height number(decimal) / values]
expected: FAIL
[line-height length(pt) / values]
expected: FAIL
[line-height length(pc) / values]
expected: FAIL
[line-height length(px) / values]
expected: FAIL
[line-height length(em) / values]
expected: FAIL
[line-height length(ex) / values]
expected: FAIL
[line-height length(mm) / values]
expected: FAIL
[line-height length(cm) / values]
expected: FAIL
[line-height length(in) / values]
expected: FAIL
[line-height percentage(%) / values]
expected: FAIL
[letter-spacing length(pt) / values]
expected: FAIL
[letter-spacing length(pc) / values]
expected: FAIL
[letter-spacing length(px) / values]
expected: FAIL
[letter-spacing length(em) / values]
expected: FAIL
[letter-spacing length(ex) / values]
expected: FAIL
[letter-spacing length(mm) / values]
expected: FAIL
[letter-spacing length(cm) / values]
expected: FAIL
[letter-spacing length(in) / values]
expected: FAIL
[word-spacing length(pt) / values]
expected: FAIL
[word-spacing length(pc) / values]
expected: FAIL
[word-spacing length(px) / values]
expected: FAIL
[word-spacing length(em) / values]
expected: FAIL
[word-spacing length(ex) / values]
expected: FAIL
[word-spacing length(mm) / values]
expected: FAIL
[word-spacing length(cm) / values]
expected: FAIL
[word-spacing length(in) / values]
expected: FAIL
[word-spacing percentage(%) / values]
expected: FAIL
[text-indent length(pt) / values]
expected: FAIL
[text-indent length(pc) / values]
expected: FAIL
[text-indent length(px) / values]
expected: FAIL
[text-indent length(em) / values]
expected: FAIL
[text-indent length(ex) / values]
expected: FAIL
[text-indent length(mm) / values]
expected: FAIL
[text-indent length(cm) / values]
expected: FAIL
[text-indent length(in) / values]
expected: FAIL
[text-indent percentage(%) / values]
expected: FAIL
[text-shadow shadow(shadow) / values]
expected: FAIL

View file

@ -0,0 +1,3 @@
[CaretPosition-001.html]
[Element at (400, 100)]
expected: FAIL

View file

@ -0,0 +1,3 @@
[elementFromPoint-float-in-table.html]
[float-in-div]
expected: FAIL

View file

@ -1,3 +0,0 @@
[elementFromPoint-visibility-hidden-resizer.html]
[elementFromPoint on resizer area of an element with visibility:hidden]
expected: FAIL

View file

@ -0,0 +1,27 @@
[update-media-feature.html]
[Should be known: '(update)']
expected: FAIL
[Should be known: '(update: none)']
expected: FAIL
[Should be known: '(update: slow)']
expected: FAIL
[Should be known: '(update: fast)']
expected: FAIL
[Should be parseable: '(update: ?)']
expected: FAIL
[Should be parseable: '(update: 10px)']
expected: FAIL
[Should be parseable: '(update: 0)']
expected: FAIL
[Check that update: fast always matches fast displays]
expected: FAIL
[Check that update always matches non printing documents]
expected: FAIL

View file

@ -147,5 +147,5 @@
[list-style-image sec-fetch-site - HTTPS downgrade-upgrade]
expected: FAIL
[background-image sec-fetch-user - Not sent to non-trustworthy same-origin destination]
expected: TIMEOUT
[border-image sec-fetch-mode - Not sent to non-trustworthy cross-site destination]
expected: FAIL

View file

@ -11,9 +11,6 @@
[public to private: failure.]
expected: FAIL
[public to public: success.]
expected: FAIL
[treat-as-public to local: failure.]
expected: FAIL

View file

@ -1,6 +1,6 @@
[scroll-restoration-fragment-scrolling-cross-origin.html]
type: testharness
expected: ERROR
expected: TIMEOUT
[Manual scroll restoration should take precedent over scrolling to fragment in cross origin navigation]
expected: TIMEOUT

View file

@ -7,3 +7,6 @@
[load & pageshow events do not fire on contentWindow of <iframe> element created with src='about:blank#foo']
expected: FAIL
[load & pageshow events do not fire on contentWindow of <iframe> element created with src='about:blank']
expected: FAIL

View file

@ -16,3 +16,6 @@
[DE0D 0041 set in href="" targeting a frame and clicked]
expected: FAIL
[D83D DE0D set in href="" targeting a frame and clicked]
expected: FAIL

View file

@ -1,6 +1,3 @@
[navigate-to-unparseable-url.html]
[location.href setter throws a SyntaxError DOMException for unparseable URLs]
expected: FAIL
[<a> tag navigate fails for unparseable URLs]
expected: FAIL

View file

@ -0,0 +1,3 @@
[navigation-unload-cross-origin.sub.window.html]
[Cross-origin navigation started from unload handler must be ignored]
expected: FAIL

View file

@ -1,3 +0,0 @@
[a-click.html]
[aElement.click() before the load event must NOT replace]
expected: FAIL

View file

@ -0,0 +1,3 @@
[pageload-image-in-popup.html]
[The document for a standalone media file should have one child in the body.]
expected: FAIL

View file

@ -1,4 +0,0 @@
[traverse-during-unload.html]
expected: TIMEOUT
[Traversing the history during unload]
expected: TIMEOUT

View file

@ -1,3 +0,0 @@
[traverse_the_history_1.html]
[Multiple history traversals from the same task]
expected: FAIL

View file

@ -1,3 +0,0 @@
[traverse_the_history_5.html]
[Multiple history traversals, last would be aborted]
expected: FAIL

View file

@ -1,7 +1,6 @@
[update-the-rendering.html]
expected: TIMEOUT
["Flush autofocus candidates" should be happen after the first animation frame callbacks, and before a resize event in the next iteration of window event loop.]
expected: TIMEOUT
["Flush autofocus candidates" should be happen before a scroll event and animation frame callbacks]
expected: TIMEOUT
expected: FAIL

View file

@ -1,5 +1,4 @@
[iframe_sandbox_popups_escaping-1.html]
type: testharness
expected: CRASH
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: FAIL

View file

@ -1,3 +1,4 @@
[iframe_sandbox_popups_escaping-2.html]
expected: CRASH
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: FAIL

View file

@ -1,4 +1,5 @@
[iframe_sandbox_popups_escaping-3.html]
type: testharness
expected: TIMEOUT
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: FAIL
expected: TIMEOUT

View file

@ -1,5 +1,4 @@
[iframe_sandbox_popups_nonescaping-1.html]
type: testharness
expected: TIMEOUT
[Check that popups from a sandboxed iframe do not escape the sandbox]
expected: NOTRUN
expected: FAIL

View file

@ -1,5 +1,4 @@
[iframe_sandbox_popups_nonescaping-2.html]
type: testharness
expected: TIMEOUT
[Check that popups from a sandboxed iframe do not escape the sandbox]
expected: NOTRUN
expected: FAIL

View file

@ -1,4 +1,4 @@
[iframe_sandbox_popups_nonescaping-3.html]
expected: TIMEOUT
expected: CRASH
[Check that popups from a sandboxed iframe do not escape the sandbox]
expected: NOTRUN

View file

@ -1,9 +1,3 @@
[non-active-document.html]
[DOMParser]
expected: FAIL
[createHTMLDocument]
expected: FAIL
[<template>]
expected: FAIL

View file

@ -1,3 +0,0 @@
[historical.html]
[<input name=isindex> should not be supported]
expected: FAIL

View file

@ -0,0 +1,21 @@
[popover-types-with-hints.tentative.html]
[manuals do not close popovers]
expected: FAIL
[autos close hints but not manuals]
expected: FAIL
[hint is not closed by pre-existing auto]
expected: FAIL
[If a popover=hint is shown, it should hide any other open popover=hint pop-ups, including ancestral pop-ups. (You can't nest popover=hint)]
expected: FAIL
[If a popover=auto is shown, it should hide any open popover=hint, including if the popover=hint is an ancestral pop-up of the popover=auto. (You can't nest a popover=auto inside a popover=hint)]
expected: FAIL
[If you: a) show a popover=auto (call it D), then b) show a descendent popover=hint of D (call it T), then c) hide D, then T should be hidden. (A popover=hint can be nested inside a popover=auto)]
expected: FAIL
[If you: a) show a popover=auto (call it D), then b) show a non-descendent popover=hint of D (call it T), then c) hide D, then T should be left showing. (Non-nested popover=hint can stay open when unrelated popover=autos are hidden)]
expected: FAIL

View file

@ -1,4 +0,0 @@
[async-script.html?reload]
expected: ERROR
[async-script.html]

View file

@ -0,0 +1,3 @@
[DOMContentLoaded-defer.html]
[The end: DOMContentLoaded and defer scripts]
expected: FAIL

View file

@ -1,3 +0,0 @@
[module-delayed.html]
[async document.write in a module]
expected: FAIL

View file

@ -1,3 +0,0 @@
[module-tla-delayed.html]
[document.write in an imported module]
expected: FAIL

View file

@ -5,4 +5,4 @@
expected: TIMEOUT
[The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
expected: TIMEOUT
expected: FAIL

View file

@ -1,10 +1,9 @@
[promise-job-entry.html]
expected: TIMEOUT
[Fulfillment handler on fulfilled promise]
expected: FAIL
[Rejection handler on pending-then-rejected promise]
expected: TIMEOUT
expected: FAIL
[Sanity check: this all works as expected with no promises involved]
expected: FAIL
@ -16,4 +15,4 @@
expected: FAIL
[Fulfillment handler on pending-then-fulfilled promise]
expected: TIMEOUT
expected: FAIL

View file

@ -1,6 +1,7 @@
[promise-rejection-events.html]
expected: TIMEOUT
[delayed handling: delaying handling rejected promise created from createImageBitmap will cause both events to fire]
expected: FAIL
expected: TIMEOUT
[unhandledrejection: from createImageBitmap which is UA triggered]
expected: FAIL

View file

@ -0,0 +1,4 @@
[017.html]
expected: TIMEOUT
[origin of the script that invoked the method, about:blank]
expected: TIMEOUT

View file

@ -1,4 +0,0 @@
[018.html]
expected: TIMEOUT
[origin of the script that invoked the method, javascript:]
expected: TIMEOUT

View file

@ -0,0 +1,4 @@
[localstorage-about-blank-3P-iframe-opens-3P-window.partitioned.tentative.html]
expected: TIMEOUT
[StorageKey: test 3P about:blank window opened from a 3P iframe]
expected: TIMEOUT

View file

@ -0,0 +1,3 @@
[scrollBy.html]
[Ensure that the window.scrollBy function affects scroll position as expected]
expected: FAIL

View file

@ -0,0 +1,6 @@
[task_queue_throttling.any.html]
[Throttling the performance timeline task queue.]
expected: FAIL
[task_queue_throttling.any.worker.html]

View file

@ -216,7 +216,10 @@ async function createIndexedDBForTesting(rc, dbName, version) {
await rc.executeScript((dbName, version) => {
let request = indexedDB.open(dbName, version);
request.onupgradeneeded = () => {
request.result.createObjectStore('store');
if (version == 1) {
// Only create the object store once.
request.result.createObjectStore('store');
}
}
request.onversionchange = () => {
fail(t, 'unexpectedly received versionchange event.');

View file

@ -0,0 +1,50 @@
// META: timeout=long
// META: script=/common/get-host-info.sub.js
'use strict';
promise_test(t => {
const iframe = document.createElement('iframe');
iframe.src = get_host_info().HTTPS_REMOTE_ORIGIN +
'/compute-pressure/resources/support-iframe.html';
document.body.appendChild(iframe);
iframe.contentWindow.focus();
const observer = new PressureObserver(() => {
assert_unreached('The observer callback should not be called');
});
t.add_cleanup(() => {
observer.disconnect();
iframe.remove();
});
return new Promise(resolve => t.step_timeout(resolve, 2000));
}, 'Observer in main frame should not receive PressureRecord when focused on cross-origin iframe');
promise_test(async t => {
const iframe = document.createElement('iframe');
iframe.src = get_host_info().HTTPS_REMOTE_ORIGIN +
'/compute-pressure/resources/support-iframe.html';
iframe.allow = 'compute-pressure';
const iframeLoadWatcher = new EventWatcher(t, iframe, 'load');
document.body.appendChild(iframe);
await iframeLoadWatcher.wait_for('load');
// Focus on the main frame to make the iframe lose focus, so that
// PressureObserver in the iframe can't receive PressureRecord by default.
// If the main frame has focus, but the iframe is cross-origin with the main
// frame, PressureObserver in the iframe still can't receive PressureRecord.
window.focus();
return new Promise((resolve, reject) => {
window.addEventListener('message', (e) => {
if (e.data.result === 'timeout') {
resolve();
} else if (e.data.result === 'success') {
reject('Observer should not receive PressureRecord');
} else {
reject('Got unexpected reply');
}
}, {once: true});
iframe.contentWindow.postMessage({command: 'start'}, '*');
});
}, 'Observer in iframe should not receive PressureRecord when focused on cross-origin main frame');

View file

@ -16,12 +16,13 @@ promise_test(async t => {
assert_not_equals(pipWindow.height, 0);
const iframe = document.createElement('iframe');
iframe.src = get_host_info().HTTPS_REMOTE_ORIGIN +
'/compute-pressure/resources/support-iframe.html';
document.body.appendChild(iframe);
// Focus on the iframe to make the main frame lose focus, so that
// PressureObserver in the main frame can't receive PressureRecord
// by default. However, if the main frame is the initiator of active
// Picture-in-Picture session, PressureObserver in the main frame can
// receive PressureRecord.
// Focus on the cross-origin iframe, so that PressureObserver in the main
// frame can't receive PressureRecord by default. However, if the main
// frame is the initiator of active Picture-in-Picture session,
// PressureObserver in the main frame can receive PressureRecord.
iframe.contentWindow.focus();
await new Promise(resolve => {
@ -45,11 +46,13 @@ promise_test(async t => {
assert_true(stream.active);
const iframe = document.createElement('iframe');
iframe.src = get_host_info().HTTPS_REMOTE_ORIGIN +
'/compute-pressure/resources/support-iframe.html';
document.body.appendChild(iframe);
// Focus on the iframe to make the main frame lose focus, so that
// PressureObserver in the main frame can't receive PressureRecord
// by default. However, if the main frame's browsing context is capturing,
// PressureObserver in the main frame can receive PressureRecord.
// Focus on the cross-origin iframe, so that PressureObserver in the main
// frame can't receive PressureRecord by default. However, if the main
// frame's browsing context is capturing, PressureObserver in the main
// frame can receive PressureRecord.
iframe.contentWindow.focus();
await new Promise(resolve => {
@ -62,69 +65,3 @@ promise_test(async t => {
observer.observe('cpu');
});
}, 'Observer should receive PressureRecord if browsing context is capturing');
promise_test(async t => {
const iframe = document.createElement('iframe');
document.body.appendChild(iframe);
// Focus on the iframe to make the main frame lose focus, so that
// PressureObserver in the main frame can't receive PressureRecord
// by default.
iframe.contentWindow.focus();
const observer = new PressureObserver(() => {
assert_unreached('The observer callback should not be called');
});
t.add_cleanup(() => {
observer.disconnect();
iframe.remove();
});
return new Promise(resolve => t.step_timeout(resolve, 2000));
}, 'Observer should not receive PressureRecord when top-level browsing context does not have system focus');
promise_test(async t => {
const iframe = document.createElement('iframe');
document.body.appendChild(iframe);
// Focus on the main frame to make the iframe lose focus, so that
// PressureObserver in the iframe can't receive PressureRecord by default.
// However, if the iframe is same-origin with the main frame and the main
// frame has focus, PressureObserver in iframe can receive PressureRecord.
window.focus();
await new Promise(resolve => {
const observer = new iframe.contentWindow.PressureObserver(resolve);
t.add_cleanup(() => {
observer.disconnect();
iframe.remove();
});
observer.observe('cpu');
});
}, 'Observer in iframe should receive PressureRecord when focused on same-origin main frame');
promise_test(async t => {
const iframe = document.createElement('iframe');
iframe.src = get_host_info().HTTPS_REMOTE_ORIGIN +
'/compute-pressure/resources/support-iframe.html';
iframe.allow = 'compute-pressure';
const iframeLoadWatcher = new EventWatcher(t, iframe, 'load');
document.body.appendChild(iframe);
await iframeLoadWatcher.wait_for('load');
// Focus on the main frame to make the iframe lose focus, so that
// PressureObserver in the iframe can't receive PressureRecord by default.
// If the main frame has focus, but the iframe is cross-origin with the main
// frame, PressureObserver in the iframe still can't receive PressureRecord.
window.focus();
return new Promise((resolve, reject) => {
window.addEventListener('message', (e) => {
if (e.data.result === 'timeout') {
resolve();
} else if (e.data.result === 'success') {
reject('Observer should not receive PressureRecord');
} else {
reject('Got unexpected reply');
}
}, {once: true});
iframe.contentWindow.postMessage({command: 'start'}, '*');
});
}, 'Observer in iframe should not receive PressureRecord when focused on cross-origin main frame');

View file

@ -0,0 +1,35 @@
'use strict';
promise_test(async t => {
const iframe = document.createElement('iframe');
document.body.appendChild(iframe);
iframe.contentWindow.focus();
await new Promise(resolve => {
const observer = new PressureObserver(resolve);
t.add_cleanup(async () => {
observer.disconnect();
iframe.remove();
});
observer.observe('cpu');
});
}, 'Observer in main frame should receive PressureRecord when focused on same-origin iframe');
promise_test(async t => {
const iframe = document.createElement('iframe');
document.body.appendChild(iframe);
// Focus on the main frame to make the iframe lose focus, so that
// PressureObserver in the iframe can't receive PressureRecord by default.
// However, if the iframe is same-origin with the main frame and the main
// frame has focus, PressureObserver in iframe can receive PressureRecord.
window.focus();
await new Promise(resolve => {
const observer = new iframe.contentWindow.PressureObserver(resolve);
t.add_cleanup(() => {
observer.disconnect();
iframe.remove();
});
observer.observe('cpu');
});
}, 'Observer in iframe should receive PressureRecord when focused on same-origin main frame');

View file

@ -0,0 +1,13 @@
<!DOCTYPE html>
<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1412313">
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
<div style="columns:1; column-fill:auto; height:100px; width:100px;">
<div style="contain:size; height:100px; background:green;">
<div style="height:50px;"></div>
<span style="position:relative; height:50px;">
<div style="height:25px; background:red;"></div>
<div style="position:absolute; top:0; width:100px; height:25px; background:green;"></div>
</span>
</div>
</div>

View file

@ -0,0 +1,13 @@
<!DOCTYPE html>
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1418818">
<link rel="match" href="../../../reference/ref-filled-green-100px-square.xht">
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
<div style="columns:2; column-fill:auto; gap:0; width:100px; height:400px;">
<div style="display:table; width:100%;">
<div style="display:table-header-group; break-inside:avoid;">
<div style="height:100px; background:linear-gradient(green 100px, red 100px);"></div>
</div>
<div style="height:400px;"></div>
</div>
</div>

View file

@ -4,13 +4,13 @@
<link rel="author" title="Traian Captan" href="mailto:tcaptan@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-images-4/#image-set-notation">
<link rel="match" href="reference/image-set-rendering-ref.html">
<meta name="assert" content="image-set rendering when resolution is invalid">
<meta name="assert" content="image-set rendering with zero resolution">
<style>
#test {
background-image: url("/images/green.png");
background-image: url("/images/red.png");
background-image: image-set(
url("/images/red.png") 0x,
url("/images/red.png") 2x
url("/images/green.png") 0x,
url("/images/green.png") 2x
);
width: 100px;
height: 100px;

View file

@ -4,11 +4,11 @@
<link rel="author" title="Traian Captan" href="mailto:tcaptan@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-images-4/#image-set-notation">
<link rel="match" href="reference/image-set-rendering-ref.html">
<meta name="assert" content="image-set rendering when resolution is invalid">
<meta name="assert" content="image-set rendering with zero resolution">
<style>
#test {
background-image: url("/images/green.png");
background-image: image-set(url("/images/red.png") 0x);
background-image: url("/images/red.png");
background-image: image-set(url("/images/green.png") 0x);
width: 100px;
height: 100px;
}

View file

@ -5,8 +5,8 @@
<style>
.test {
background-color: green;
width: 100px;
height: 100px;
width: 30px;
height: 30px;
display: grid;
}

View file

@ -6,8 +6,8 @@
<style>
.test {
background-color: red;
width: 100px;
height: 100px;
width: 30px;
height: 30px;
display: grid;
}

View file

@ -56,4 +56,10 @@ test(t => {
assert_style_value_array_equals(result, [CSS.s(5), CSS.s(10), CSS.s(1), CSS.s(2)]);
}, 'StylePropertyMap.append is case-insensitive');
// https://crbug.com/1417176
test(t => {
let styleMap = createInlineStyleMap(t, 'transition-duration: inherit');
assert_throws_js(TypeError, () => styleMap.append('transition-duration', '1s'));
}, 'StylePropertyMap.append rejects appending to CSS-wide keywords');
</script>

View file

@ -0,0 +1,38 @@
<!DOCTYPE html>
<title>CSS Media Query Test: update media feature</title>
<link rel="help" href="https://drafts.csswg.org/mediaqueries-4/#descdef-media-update">
<meta assert="The test is supposed to be run on fast computer displays as it will no match otherwise. The definition of fast can be found in the spec link.">
<script type="text/javascript" src="/resources/testharness.js"></script>
<script type="text/javascript" src="/resources/testharnessreport.js"></script>
<script type="text/javascript" src="resources/matchmedia-utils.js"></script>
<script>
query_should_be_known("(update)");
query_should_be_known("(update: none)");
query_should_be_known("(update: slow)");
query_should_be_known("(update: fast)");
query_should_be_unknown("(update: ?)");
query_should_be_unknown("(update: 10px)");
query_should_be_unknown("(update: 0)");
test(() => {
let match_standard = window.matchMedia("(update: fast)");
assert_true(match_standard.matches);
}, "Check that update: fast always matches fast displays");
test(() => {
let match_standard = window.matchMedia("(update: slow)");
assert_false(match_standard.matches);
}, "Check that update: slow doesn't match fast displays");
test(() => {
let match_standard = window.matchMedia("(update: none)");
assert_false(match_standard.matches);
}, "Check that update: none doesn't match fast displays");
test(() => {
let match_standard = window.matchMedia("(update)");
assert_true(match_standard.matches);
}, "Check that update always matches non printing documents");
</script>

View file

@ -15,6 +15,7 @@
<div popover id=boolean>Pop up</div>
<div popover="">Pop up</div>
<div popover=auto>Pop up</div>
<div popover=hint>Pop up</div>
<div popover=manual>Pop up</div>
<article popover>Different element type</article>
<header popover>Different element type</header>
@ -163,6 +164,10 @@ window.onload = () => {
assert_equals(popover.popover,'manual','Invalid values should reflect as "manual"');
popover.removeAttribute('popover');
assert_equals(popover.popover,null,'No value should reflect as null');
if (popoverHintSupported()) {
popover.popover='hint';
assert_equals(popover.getAttribute('popover'),'hint');
}
popover.popover='auto';
assert_equals(popover.getAttribute('popover'),'auto');
popover.popover='';
@ -223,7 +228,13 @@ window.onload = () => {
const popover = createPopover(t);
popover.showPopover();
assert_true(popover.matches(':open'));
popover.setAttribute('popover','manual'); // Change popover type
if (popoverHintSupported()) {
popover.setAttribute('popover','hint'); // Change popover type
assert_false(popover.matches(':open'));
popover.showPopover();
assert_true(popover.matches(':open'));
popover.setAttribute('popover','manual');
}
assert_false(popover.matches(':open'));
popover.showPopover();
assert_true(popover.matches(':open'));
@ -237,7 +248,7 @@ window.onload = () => {
assert_false(popover.matches(':open'),'From "auto" to "invalid" (which is interpreted as "manual") should close the popover');
},'Changing attribute values should close open popovers');
const validTypes = ["auto","manual"];
const validTypes = popoverHintSupported() ? ["auto","hint","manual"] : ["auto","manual"];
validTypes.forEach(type => {
test((t) => {
const popover = createPopover(t);
@ -376,6 +387,7 @@ window.onload = () => {
popover.hidePopover();
break;
case 'auto':
case 'hint':
assert_false(popover.matches(':open'),'A popover=auto should light-dismiss');
break;
}

View file

@ -36,7 +36,7 @@
<p>Test for [popover]::backdrop presence and stacking order. The test passes
if there are 3 stacked boxes, with the brightest green on top.</p>
<div popover id=bottom>Bottom
<div popover id=middle>Middle
<div popover=hint id=middle>Middle
<div popover=manual id=top>Top</div>
</div>
</div>

View file

@ -10,6 +10,7 @@
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-actions.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<script src="resources/popover-utils.js"></script>
<body>
<script>
@ -60,8 +61,9 @@ const invokers = [
...supportedInputButtonTypes,
...unsupportedTypes,
];
const validTypes = popoverHintSupported() ? ["auto","hint","manual"] : ["auto","manual"];
window.addEventListener('load', () => {
["auto","manual"].forEach(type => {
validTypes.forEach(type => {
invokers.forEach(testcase => {
["toggle","hide","show","ShOw","garbage",null,undefined].forEach(action => {
[false,true].forEach(use_idl_for_target => {

View file

@ -461,6 +461,52 @@ promise_test(async () => {
},'Ensure circular/convoluted ancestral relationships are functional, with a direct showPopover()');
</script>
<div popover id=p10>Popover</div>
<div popover=hint id=p11>Hint</div>
<div popover=manual id=p12>Manual</div>
<style>
#p10 {top:100px;}
#p11 {top:200px;}
#p12 {top:300px;}
</style>
<script>
if (popoverHintSupported()) {
promise_test(async () => {
const auto = document.querySelector('#p10');
const hint = document.querySelector('#p11');
const manual = document.querySelector('#p12');
// All three can be open at once, if shown in this order:
auto.showPopover();
hint.showPopover();
manual.showPopover();
assert_true(auto.matches(':open'));
assert_true(hint.matches(':open'));
assert_true(manual.matches(':open'));
// Clicking the hint will close the auto, but not the manual.
await clickOn(hint);
assert_false(auto.matches(':open'),'auto should be hidden');
assert_true(hint.matches(':open'),'hint should stay open');
assert_true(manual.matches(':open'),'manual does not light dismiss');
// Clicking outside should close the hint, but not the manual:
await clickOn(outside);
assert_false(auto.matches(':open'));
assert_false(hint.matches(':open'),'hint should close');
assert_true(manual.matches(':open'),'manual does not light dismiss');
manual.hidePopover();
assert_false(manual.matches(':open'));
auto.showPopover();
hint.showPopover();
assert_true(auto.matches(':open'));
assert_true(hint.matches(':open'));
// Clicking on the auto should close the hint:
await clickOn(auto);
assert_true(auto.matches(':open'),'auto should stay open');
assert_false(hint.matches(':open'),'hint should light dismiss');
auto.hidePopover();
assert_false(auto.matches(':open'));
},'Light dismiss of mixed popover types including hints');
}
</script>
<div popover id=p13>Popover 1
<div popover id=p14>Popover 2
<div popover id=p15>Popover 3</div>

View file

@ -0,0 +1,184 @@
<!DOCTYPE html>
<meta charset="utf-8">
<link rel="author" href="mailto:masonf@chromium.org">
<link rel=help href="https://open-ui.org/components/popup.research.explainer">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div>
<div popover>Popover</div>
<div popover=hint>Hint</div>
<div popover=manual>Async</div>
<div popover=manual>Async</div>
<script>
{
const auto = document.currentScript.parentElement.querySelector('[popover=""]');
const hint = document.currentScript.parentElement.querySelector('[popover=hint]');
const manual = document.currentScript.parentElement.querySelectorAll('[popover=manual]')[0];
const manual2 = document.currentScript.parentElement.querySelectorAll('[popover=manual]')[1];
function assert_state_1(autoOpen,hintOpen,manualOpen,manual2Open) {
assert_equals(auto.matches(':open'),autoOpen,'auto open state is incorrect');
assert_equals(hint.matches(':open'),hintOpen,'hint open state is incorrect');
assert_equals(manual.matches(':open'),manualOpen,'manual open state is incorrect');
assert_equals(manual2.matches(':open'),manual2Open,'manual2 open state is incorrect');
}
test(() => {
assert_state_1(false,false,false,false);
auto.showPopover();
assert_state_1(true,false,false,false);
hint.showPopover();
assert_state_1(true,true,false,false);
manual.showPopover();
assert_state_1(true,true,true,false);
manual2.showPopover();
assert_state_1(true,true,true,true);
hint.hidePopover();
assert_state_1(true,false,true,true);
auto.hidePopover();
assert_state_1(false,false,true,true);
auto.showPopover();
hint.showPopover();
assert_state_1(true,true,true,true);
auto.hidePopover(); // Non-nested tooltips can stay open when unrelated popovers are hidden.
assert_state_1(false,true,true,true);
hint.hidePopover();
manual.hidePopover();
assert_state_1(false,false,false,true);
manual2.hidePopover();
assert_state_1(false,false,false,false);
},'manuals do not close popovers');
test(() => {
assert_state_1(false,false,false,false);
hint.showPopover();
manual.showPopover();
manual2.showPopover();
assert_state_1(false,true,true,true);
auto.showPopover();
assert_state_1(true,false,true,true);
auto.hidePopover();
assert_state_1(false,false,true,true);
manual.hidePopover();
manual2.hidePopover();
assert_state_1(false,false,false,false);
},'autos close hints but not manuals');
}
</script>
</div>
<div>
<div popover>popover 1
<div popover>popover 2
<p id=anchorid>Anchor</p>
<div popover>popover 3</div>
</div>
</div>
<div popover=hint anchor=anchorid>Hint anchored to pop-up</div>
<script>
{
const popover1 = document.currentScript.parentElement.querySelectorAll('[popover=""]')[0];
const popover2 = document.currentScript.parentElement.querySelectorAll('[popover=""]')[1];
const popover3 = document.currentScript.parentElement.querySelectorAll('[popover=""]')[2];
const hint = document.currentScript.parentElement.querySelector('[popover=hint]');
function assert_state_2(popover1Open,popover2Open,popover3Open,hintOpen) {
assert_equals(popover1.matches(':open'),popover1Open,'popover1 open state is incorrect');
assert_equals(popover2.matches(':open'),popover2Open,'popover2 open state is incorrect');
assert_equals(popover3.matches(':open'),popover3Open,'popover3 open state is incorrect');
assert_equals(hint.matches(':open'),hintOpen,'hint open state is incorrect');
}
test(() => {
assert_state_2(false,false,false,false);
popover1.showPopover();
popover2.showPopover();
popover3.showPopover();
assert_state_2(true,true,true,false);
hint.showPopover(); // Because hint is nested in popover2, popover3 should be hidden
assert_state_2(true,true,false,true);
popover1.hidePopover(); // Should close the hint, which is anchored to popover2
assert_state_2(false,false,false,false);
},'hint is not closed by pre-existing auto');
}
</script>
</div>
<div>
<div popover=hint>Hint
<div popover=hint>Nested hint</div>
</div>
<script>
test(() => {
const hint1 = document.currentScript.parentElement.querySelectorAll('[popover=hint]')[0];
const hint2 = document.currentScript.parentElement.querySelectorAll('[popover=hint]')[1];
hint1.showPopover();
assert_true(hint1.matches(':open'));
assert_false(hint2.matches(':open'));
hint2.showPopover();
assert_false(hint1.matches(':open'));
assert_true(hint2.matches(':open'));
hint2.hidePopover();
},'If a popover=hint is shown, it should hide any other open popover=hint pop-ups, including ancestral pop-ups. (You can\'t nest popover=hint)');
</script>
</div>
<div>
<div popover="hint">Hint
<div popover>Nested auto (note - never visible, since inside display:none subtree)</div>
</div>
<script>
test(() => {
const hint = document.currentScript.parentElement.querySelector('[popover=hint]');
const auto = document.currentScript.parentElement.querySelector('[popover=""]');
hint.showPopover();
assert_true(hint.matches(':open'));
assert_false(auto.matches(':open'));
auto.showPopover();
assert_false(hint.matches(':open'));
assert_true(auto.matches(':open'));
auto.hidePopover();
},'If a popover=auto is shown, it should hide any open popover=hint, including if the popover=hint is an ancestral pop-up of the popover=auto. (You can\'t nest a popover=auto inside a popover=hint)');
</script>
</div>
<div>
<div popover>Auto
<div popover>Nested Auto</div>
<div popover=hint>Nested hint</div>
</div>
<script>
test(() => {
const auto = document.currentScript.parentElement.querySelectorAll('[popover=""]')[0];
const auto2 = document.currentScript.parentElement.querySelectorAll('[popover=""]')[1];
const hint = document.currentScript.parentElement.querySelector('[popover=hint]');
auto.showPopover();
auto2.showPopover();
assert_true(auto.matches(':open'));
assert_true(auto2.matches(':open'));
hint.showPopover(); // This should hide auto2, since it is nested in auto1.
assert_true(auto.matches(':open'));
assert_false(auto2.matches(':open'));
assert_true(hint.matches(':open'));
auto.hidePopover(); // Should hide both auto and hint.
assert_false(auto.matches(':open'));
assert_false(hint.matches(':open'));
},'If you: a) show a popover=auto (call it D), then b) show a descendent popover=hint of D (call it T), then c) hide D, then T should be hidden. (A popover=hint can be nested inside a popover=auto)');
</script>
</div>
<div>
<div popover>Auto</div>
<div popover=hint>Non-Nested hint</div>
<script>
test(() => {
const auto = document.currentScript.parentElement.querySelector('[popover=""]');
const hint = document.currentScript.parentElement.querySelector('[popover=hint]');
auto.showPopover();
hint.showPopover();
assert_true(auto.matches(':open'));
assert_true(hint.matches(':open'));
auto.hidePopover();
assert_false(auto.matches(':open'));
assert_true(hint.matches(':open'));
hint.hidePopover();
},'If you: a) show a popover=auto (call it D), then b) show a non-descendent popover=hint of D (call it T), then c) hide D, then T should be left showing. (Non-nested popover=hint can stay open when unrelated popover=autos are hidden)');
</script>
</div>

View file

@ -107,3 +107,10 @@ function showDefaultopenPopoversOnLoad() {
window.addEventListener('load',show,{once:true});
}
}
function popoverHintSupported() {
// TODO(crbug.com/1416284): This function should be removed, and
// any calls replaced with `true`, once popover=hint ships.
const testElement = document.createElement('div');
testElement.popover = 'hint';
return testElement.popover === 'hint';
}

View file

@ -8877,5 +8877,20 @@
"input": "",
"base": "about:blank",
"failure": true
},
{
"input": "https://example.com/\"quoted\"",
"base": "about:blank",
"hash": "",
"host": "example.com",
"hostname": "example.com",
"href": "https://example.com/%22quoted%22",
"origin": "https://example.com",
"password": "",
"pathname": "/%22quoted%22",
"port": "",
"protocol": "https:",
"search": "",
"username": ""
}
]