Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
1c073bf
Contoured rects: Use center point as hull in some cases
noamr Dec 2, 2025
3a40f29
Digital credentials: move permissions policy files (#56404)
marcoscaceres Dec 2, 2025
f819f3b
[SVG] Handle non-primitives values like `var()` for SVGLength
Dec 2, 2025
dd1ac35
[webdriver-client] Reformat classic client with black.
moz-wptsync-bot Dec 2, 2025
1f10cc4
[webdriver-client] Assert for valid id when creating WebReference ins…
whimboo Dec 2, 2025
5b7ea2a
Fix flake8 errors.
moz-wptsync-bot Dec 2, 2025
14e0d4f
[wdspec] Add tests for WebDriver classic's "Get All Cookies" command.
elkal98 Dec 2, 2025
d8fd4c9
Compile with Android SDK 36.1.
rvandermeulen Dec 2, 2025
b90da17
More cleanup of menu elements code [6/4]
mfreed7 Dec 2, 2025
2890963
Use @assert macro in generated canvas WPT test
graveljp Dec 2, 2025
49710a1
classifies additional set of "wasm" core web features (#56402)
ChrisC Dec 2, 2025
cf20dcb
Map "table" and "table-discouraged" web-feature (#56381)
stalgiag Dec 2, 2025
3f35fcd
Map "system-color" web-feature (#56382)
stalgiag Dec 2, 2025
017f1f5
Map "svg-filters" and "svg-discouraged" web-features (#56384)
stalgiag Dec 2, 2025
1bde2e4
classifies wasm-simd and wasm-simd-relaxed (#56385)
ChrisC Dec 2, 2025
29187f5
Classifies exceptions-related wasm web features (#56386)
ChrisC Dec 2, 2025
bb24558
maps wasm-garbage-collection (#56387)
ChrisC Dec 2, 2025
72e3bc9
classifies wasm-mutable-globals and wasm-string-builtins (#56389)
ChrisC Dec 2, 2025
5f87182
Map "target" web-feature (#56400)
stalgiag Dec 2, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions css/CSS2/ui/WEB_FEATURES.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
features:
- name: system-color
files:
- "system-colors-*"
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<!DOCTYPE html>
<link rel="help" href="https://drafts.csswg.org/css-borders-4/#corner-shape" />
<style>
.target {
display: inline;
clip-path: border-box;
corner-shape: bevel square scoop;
zoom: 10%;
border-radius: 100%;
border: 5px solid purple;
bottom: -1e100px;
position: relative;
background: green;
}
</style>
<div class="target"></div>

This test should not crash.
4 changes: 4 additions & 0 deletions css/css-color/WEB_FEATURES.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,3 +34,7 @@ features:
- rgb-*
- rgba-*
- hex-*
- name: system-color
files:
- "deprecated-sameas-*"
- "system-color-*"
3 changes: 3 additions & 0 deletions css/css-color/parsing/WEB_FEATURES.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,6 @@ features:
files:
- "relative-*"
- "*-relative-*"
- name: system-color
files:
- color-valid-system-color.html
5 changes: 5 additions & 0 deletions css/selectors/old-tests/WEB_FEATURES.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
features:
- name: target
files:
- "css3-modsel-21*"
- "css3-modsel-66*"
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
import { makeCreateOptions } from "/digital-credentials/support/helper.js";
const { HTTPS_REMOTE_ORIGIN } = get_host_info();
const same_origin_src =
"/permissions-policy/resources/digital-credentials-create.html";
"/digital-credentials/permissions-policy/create.html";
const cross_origin_src = new URL(same_origin_src, HTTPS_REMOTE_ORIGIN).href;

promise_test(async (test) => {
Expand Down
4 changes: 2 additions & 2 deletions digital-credentials/default-permissions-policy.https.sub.html
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,11 @@
import { makeGetOptions, makeCreateOptions } from "./support/helper.js";
const { HTTPS_REMOTE_ORIGIN } = get_host_info();
const get_same_origin_src =
"/permissions-policy/resources/digital-credentials-get.html";
"/digital-credentials/permissions-policy/get.html";
const get_cross_origin_src = new URL(get_same_origin_src, HTTPS_REMOTE_ORIGIN).href;

const create_same_origin_src =
"/permissions-policy/resources/digital-credentials-create.html";
"/digital-credentials/permissions-policy/create.html";
const create_cross_origin_src = new URL(create_same_origin_src, HTTPS_REMOTE_ORIGIN).href;

promise_test(async (test) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@
import { makeCreateOptions } from "./support/helper.js";
const { HTTPS_REMOTE_ORIGIN } = get_host_info();
const get_same_origin_src =
"/permissions-policy/resources/digital-credentials-get.html";
"/digital-credentials/permissions-policy/get.html";
const get_cross_origin_src = new URL(get_same_origin_src, HTTPS_REMOTE_ORIGIN).href;

const create_same_origin_src =
"/permissions-policy/resources/digital-credentials-create.html";
"/digital-credentials/permissions-policy/create.html";
const create_cross_origin_src = new URL(create_same_origin_src, HTTPS_REMOTE_ORIGIN).href;

promise_test(async (test) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
import { makeGetOptions } from "/digital-credentials/support/helper.js";
const { HTTPS_REMOTE_ORIGIN } = get_host_info();
const same_origin_src =
"/permissions-policy/resources/digital-credentials-get.html";
"/digital-credentials/permissions-policy/get.html";
const cross_origin_src = new URL(same_origin_src, HTTPS_REMOTE_ORIGIN).href;

promise_test(async (test) => {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
features:
- name: target
files:
- target-pseudo-after-reinsertion.html
4 changes: 2 additions & 2 deletions html/canvas/tools/yaml/the-canvas-state.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -112,15 +112,15 @@
ctx.save();
ctx.{{ variant_names[1] }} = {{ value }};
ctx.restore();
_assertSame(ctx.{{ variant_names[1] }}, old, "ctx.{{ variant_names[1] }}", "old");
@assert ctx.{{ variant_names[1] }} === old;

// Also test that save() doesn't modify the values.
ctx.{{ variant_names[1] }} = {{ value }};
old = ctx.{{ variant_names[1] }};
// We're not interested in failures caused by get(set(x)) != x (e.g.
// from rounding), so compare against `old` instead of against {{ value }}.
ctx.save();
_assertSame(ctx.{{ variant_names[1] }}, old, "ctx.{{ variant_names[1] }}", "old");
@assert ctx.{{ variant_names[1] }} === old;
ctx.restore();
variants_layout: [single_file, multi_files]
variants:
Expand Down
11 changes: 11 additions & 0 deletions html/rendering/non-replaced-elements/tables/WEB_FEATURES.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
features:
- name: table-discouraged
files:
- table-attribute.html
- table-align-float.xhtml
- "table-width*"
- "table-border*"
- "table-bordercolor-*"
- "table-valign-baseline*"
- "table-cell-width*"
- "colgroup_valign*"
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<link rel=help href=https://open-ui.org/components/menu.explainer>

<menubar>
<menuitem id=btn commandfor="list" command="toggle-popover">Open</menuitem>
<menuitem id=btn commandfor="list" command="toggle-menu">Open</menuitem>
</menubar>

<menulist id="list">
Expand Down
19 changes: 10 additions & 9 deletions html/semantics/menu/tentative/menubar-invoke-menulist.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,15 @@
<menubar>
<menuitem id="menubaritem">More commands</menuitem>
<menuitem>Command 2</menuitem>
<menuitem>Command 3</menuitem>
<menuitem id="opencheckable" commandfor="checkable" command="show-menu">Open checkable menu</menuitem>
</menubar>

<menulist id="more">
<menuitem id="menulistitem" disabled>Command 1</menuitem>
<menuitem>Command 2</menuitem>
</menulist>

<menulist>
<menulist id="checkable">
<fieldset checkable>
<menuitem id="checkable-menuitem">Show menu</menuitem>
</fieldset>
Expand Down Expand Up @@ -130,6 +130,7 @@
test(() => {
assert_equals(checkableMenuitem.commandForElement,null,
"To start, checkable item shouldn't be an invoker")
opencheckable.click(); // Open the menu
checkableMenuitem.click();
assert_true(checkableMenuitem.checked,
"checkable menu item becomes checked");
Expand All @@ -143,15 +144,15 @@
assert_false(menulist.matches(":popover-open"),
"menulist no longer matches :popover-open");

// Being checkable causes sub-menu functionality to stop.
// Being a sub-menu invoker makes the item non-checkable.
checkableMenuitem.command = "toggle-menu";
checkableMenuitem.commandForElement = menulist;
checkableMenuitem.click();
assert_true(checkableMenuitem.checked,
"checkable menu item that invokes a menu becomes checked");
assert_false(menulist.matches(":popover-open"), "menulist is not open");
assert_false(checkableMenuitem.checked,
"checkable menu item that invokes a menu is not checkable");
assert_true(menulist.matches(":popover-open"), "menulist is open");
checkableMenuitem.click();
assert_false(checkableMenuitem.checked, "checkable menu item unchecks");
assert_false(menulist.matches(":popover-open"), "menulist still not open");
}, "Checkable menuitems can still invoke menulist popovers");
assert_false(checkableMenuitem.checked, "still not checked");
assert_false(menulist.matches(":popover-open"), "menulist closes");
}, "menuitems that invoke menulists cannot be checkable");
</script>
71 changes: 47 additions & 24 deletions html/semantics/menu/tentative/menuitem-activate.html
Original file line number Diff line number Diff line change
Expand Up @@ -72,11 +72,14 @@
assert_false(popover.matches(":popover-open"), "div popover starts closed");
await test_driver.click(mainmenuitem2);
assert_true(popover.matches(":popover-open"), "div popover opens");
assert_false(mainmenu.matches(":popover-open"), "mainmenu popover closes");

// Close the popover.
await test_driver.click(mainmenuitem2);
await test_driver.click(menubarmenuitem);
assert_false(popover.matches(":popover-open"), "div popover gets closed");
assert_true(mainmenu.matches(":popover-open"), "mainmenu still open");
assert_true(mainmenu.matches(":popover-open"), "mainmenu gets opened");
await test_driver.click(menubarmenuitem);
assert_false(mainmenu.matches(":popover-open"), "mainmenu gets closed");
}, 'User menuitem activation works with show-popover command');

promise_test(async (t) => {
Expand Down Expand Up @@ -121,51 +124,71 @@
}, 'Menulist inside a popover works correctly; does not get accidentally ' +
'dismissed by opening submenus');

async function getCoords(invoker, invokee) {
// test_driver isn't suited to mousedown-drag-mouseup interactions when the
// mousedown triggers visibility of one of the elements.
await clickOn(invoker);
const menulist = invokee.parentElement;
assert_true(menulist.matches(":popover-open"), "menulist popover opens when clicked");
let rect = invokee.getBoundingClientRect();
let coords = {x: Math.round(rect.x + rect.width / 2),
y: Math.round(rect.y + rect.height / 2)};
await test_driver.click(invoker);
assert_false(menulist.matches(":popover-open"), "menulist popover closes when clicked");
return coords;
}

promise_test(async (t) => {
assert_false(mainmenu.matches(":popover-open"), "mainmenu popover starts closed");
let clickCount = 0;
normalmenuitem.addEventListener('click',() => (++clickCount));
const normal_menu_coords = await getCoords(menubarmenuitem, normalmenuitem);
let invokerClicks = 0;
let itemClicks = 0;
menubarmenuitem.addEventListener('click',() => (++invokerClicks));
normalmenuitem.addEventListener('click',() => (++itemClicks));
let openStateAfterPointerdown = "none";
menubarmenuitem.addEventListener('pointermove',() => {
// There will be two move events, one before the pointerdown and one after.
// Just capture the one after.
if (openStateAfterPointerdown === "none") {
openStateAfterPointerdown = "first-move";
} else if (openStateAfterPointerdown === "first-move") {
openStateAfterPointerdown = mainmenu.matches(":popover-open") ? "open" : "closed";
}
},{signal: t.get_signal()});
await new test_driver.Actions()
.addPointer('mouse', 'mouse')
.pointerMove(0, 0, {origin: menubarmenuitem})
.pointerDown()
.send();
await waitForRender();
assert_true(mainmenu.matches(":popover-open"), "mainmenu popover should be open while mouse is down");
assert_equals(clickCount,0, "no clicks yet");
await new test_driver.Actions()
.addPointer('mouse', 'mouse')
.pointerMove(0, 0, {origin: normalmenuitem})
// Extra move to trigger event on menubarmenuitem:
.pointerMove(2, 2, {origin: menubarmenuitem})
// This is the center of normalmenuitem:
.pointerMove(normal_menu_coords.x, normal_menu_coords.y, {})
.pointerUp()
.send();
await waitForRender();
assert_false(mainmenu.matches(":popover-open"), "mainmenu popover should be closed");
// TODO: Menu items should fire an event when they are selected.
// The `click` event is not enough, because one won't be fired here.
// assert_equals(clickCount,1, "the sub-menu item should have been clicked");
assert_equals(openStateAfterPointerdown,"open", "mainmenu popover should open after pointer down");
assert_false(mainmenu.matches(":popover-open"), "mainmenu popover should be closed after interaction");
assert_equals(invokerClicks,0, "the invoking menu didn't get a click");
// TODO: Menu items should fire a click event when they are selected.
// assert_equals(itemClicks,1, "the invoked menu did get a click");
}, 'A mousedown-drag-mouseup gesture on a normal menuitem picks the item');

promise_test(async (t) => {
assert_false(mainmenu.matches(":popover-open"), "mainmenu popover starts closed");
assert_false(submenu.matches(":popover-open"), "submenu popover starts closed");
const main_menu_coords = await getCoords(menubarmenuitem, mainmenuitem);
await new test_driver.Actions()
.addPointer('mouse', 'mouse')
.pointerMove(0, 0, {origin: menubarmenuitem})
.pointerDown()
.send();
await waitForRender();
assert_true(mainmenu.matches(":popover-open"), "mainmenu popover should be open while mouse is down");
assert_false(submenu.matches(":popover-open"), "submenu shouldn't be open yet");
await new test_driver.Actions()
.addPointer('mouse', 'mouse')
.pointerMove(0, 0, {origin: mainmenuitem})
// This is the center of mainmenuitem:
.pointerMove(main_menu_coords.x, main_menu_coords.y, {})
.pointerUp()
.send();
await waitForRender();
assert_true(mainmenu.matches(":popover-open"), "mainmenu popover should remain open, because submenu chosen");
assert_true(submenu.matches(":popover-open"), "submenu popover should be open");
menubarmenuitem.click(); // Cleanup.
await waitForRender();
await clickOn(menubarmenuitem); // Cleanup.
assert_false(mainmenu.matches(":popover-open"), "mainmenu popover should be closed");
assert_false(submenu.matches(":popover-open"), "submenu popover should be closed");
}, 'A mousedown-drag-mouseup gesture on a submenu item leaves both menus open');
Expand Down
3 changes: 3 additions & 0 deletions html/semantics/tabular-data/WEB_FEATURES.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
features:
- name: table
files: "**"
5 changes: 5 additions & 0 deletions svg/extensibility/foreignObject/WEB_FEATURES.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
features:
- name: svg-filters
files:
- filter-repaint.html
- foreign-object-circular-filter-reference-crash.html
4 changes: 4 additions & 0 deletions svg/import/WEB_FEATURES.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
features:
- name: svg-filters
files:
- "filters-*"
4 changes: 4 additions & 0 deletions svg/linking/reftests/WEB_FEATURES.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
features:
- name: svg-filters
files:
- href-filter-element.html
5 changes: 4 additions & 1 deletion svg/render/order/WEB_FEATURES.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
features:
- name: z-index
files:
- z-index.svg
- z-index.svg
- name: svg-filters
files:
- clip-path-filter-order.svg
4 changes: 4 additions & 0 deletions svg/shapes/reftests/WEB_FEATURES.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
features:
- name: svg-filters
files:
- polygon-with-filtered-marker.html
4 changes: 4 additions & 0 deletions svg/struct/reftests/WEB_FEATURES.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
features:
- name: target
files:
- "use-external-resource-target-pseudo-*"
Loading
Loading