mirror of
https://github.com/servo/servo.git
synced 2025-08-03 20:50:07 +01:00
Update web-platform-tests to revision b'5b72ee9b50ae6898c94fe3ab50f4c68d4572977c'
This commit is contained in:
parent
aa885dda93
commit
6d6ac7bedf
67 changed files with 913 additions and 194 deletions
|
@ -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",
|
||||
[
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
[hit-test-floats-001.html]
|
||||
[hit-test-floats-001]
|
||||
expected: FAIL
|
|
@ -1,3 +1,6 @@
|
|||
[block-in-inline-hittest-002.html]
|
||||
[elementsFromPoint]
|
||||
expected: FAIL
|
||||
|
||||
[elementFromPoint]
|
||||
expected: FAIL
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
[block-in-inline-hittest-float-002.html]
|
||||
[block-in-inline-hittest-float-002]
|
||||
expected: FAIL
|
|
@ -1,3 +1,3 @@
|
|||
[first-letter-punctuation-087.xht]
|
||||
type: reftest
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
|
|
@ -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
|
|
@ -0,0 +1,2 @@
|
|||
[image-set-zero-resolution-rendering-2.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[image-set-zero-resolution-rendering.html]
|
||||
expected: FAIL
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
[CaretPosition-001.html]
|
||||
[Element at (400, 100)]
|
||||
expected: FAIL
|
|
@ -0,0 +1,3 @@
|
|||
[elementFromPoint-float-in-table.html]
|
||||
[float-in-div]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[elementFromPoint-visibility-hidden-resizer.html]
|
||||
[elementFromPoint on resizer area of an element with visibility:hidden]
|
||||
expected: FAIL
|
|
@ -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
|
|
@ -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
|
||||
|
|
|
@ -11,9 +11,6 @@
|
|||
[public to private: failure.]
|
||||
expected: FAIL
|
||||
|
||||
[public to public: success.]
|
||||
expected: FAIL
|
||||
|
||||
[treat-as-public to local: failure.]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
[navigation-unload-cross-origin.sub.window.html]
|
||||
[Cross-origin navigation started from unload handler must be ignored]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[a-click.html]
|
||||
[aElement.click() before the load event must NOT replace]
|
||||
expected: FAIL
|
|
@ -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
|
|
@ -1,4 +0,0 @@
|
|||
[traverse-during-unload.html]
|
||||
expected: TIMEOUT
|
||||
[Traversing the history during unload]
|
||||
expected: TIMEOUT
|
|
@ -1,3 +0,0 @@
|
|||
[traverse_the_history_1.html]
|
||||
[Multiple history traversals from the same task]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[traverse_the_history_5.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,9 +1,3 @@
|
|||
[non-active-document.html]
|
||||
[DOMParser]
|
||||
expected: FAIL
|
||||
|
||||
[createHTMLDocument]
|
||||
expected: FAIL
|
||||
|
||||
[<template>]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
[historical.html]
|
||||
[<input name=isindex> should not be supported]
|
||||
expected: FAIL
|
|
@ -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
|
|
@ -1,4 +0,0 @@
|
|||
[async-script.html?reload]
|
||||
expected: ERROR
|
||||
|
||||
[async-script.html]
|
|
@ -0,0 +1,3 @@
|
|||
[DOMContentLoaded-defer.html]
|
||||
[The end: DOMContentLoaded and defer scripts]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[module-delayed.html]
|
||||
[async document.write in a module]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[module-tla-delayed.html]
|
||||
[document.write in an imported module]
|
||||
expected: FAIL
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
4
tests/wpt/metadata/webmessaging/with-ports/017.html.ini
Normal file
4
tests/wpt/metadata/webmessaging/with-ports/017.html.ini
Normal file
|
@ -0,0 +1,4 @@
|
|||
[017.html]
|
||||
expected: TIMEOUT
|
||||
[origin of the script that invoked the method, about:blank]
|
||||
expected: TIMEOUT
|
|
@ -1,4 +0,0 @@
|
|||
[018.html]
|
||||
expected: TIMEOUT
|
||||
[origin of the script that invoked the method, javascript:]
|
||||
expected: TIMEOUT
|
|
@ -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
|
3
tests/wpt/mozilla/meta/mozilla/scrollBy.html.ini
Normal file
3
tests/wpt/mozilla/meta/mozilla/scrollBy.html.ini
Normal file
|
@ -0,0 +1,3 @@
|
|||
[scrollBy.html]
|
||||
[Ensure that the window.scrollBy function affects scroll position as expected]
|
||||
expected: FAIL
|
|
@ -0,0 +1,6 @@
|
|||
[task_queue_throttling.any.html]
|
||||
[Throttling the performance timeline task queue.]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[task_queue_throttling.any.worker.html]
|
|
@ -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.');
|
||||
|
|
|
@ -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');
|
|
@ -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');
|
||||
|
|
|
@ -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');
|
|
@ -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>
|
|
@ -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>
|
|
@ -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;
|
|
@ -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;
|
||||
}
|
|
@ -5,8 +5,8 @@
|
|||
<style>
|
||||
.test {
|
||||
background-color: green;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
display: grid;
|
||||
}
|
||||
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
<style>
|
||||
.test {
|
||||
background-color: red;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
display: grid;
|
||||
}
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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 => {
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
|
@ -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';
|
||||
}
|
||||
|
|
|
@ -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": ""
|
||||
}
|
||||
]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue