Update On Wed Apr 9 20:49:03 CEST 2025

This commit is contained in:
github-action[bot] 2025-04-09 20:49:04 +02:00
parent 35b863fd86
commit 745952e3b8
223 changed files with 4293 additions and 1943 deletions

View file

@ -117,7 +117,7 @@
/>
<description
id="browsing-history-downloads-description"
data-l10n-id="item-history-and-downloads-description"
data-l10n-id="item-history-and-downloads-description2"
class="sanitizeCheckboxDescription text-deemphasized"
/>
</vbox>
@ -198,7 +198,7 @@
/>
<description
id="browsing-history-downloads-description"
data-l10n-id="item-history-and-downloads-description"
data-l10n-id="item-history-and-downloads-description2"
class="sanitizeCheckboxDescription text-deemphasized"
/>
</vbox>
@ -279,7 +279,7 @@
/>
<description
class="sanitizeCheckboxDescription text-deemphasized"
data-l10n-id="item-history-and-downloads-description"
data-l10n-id="item-history-and-downloads-description2"
id="history-and-downloads-description"
/>
</vbox>

View file

@ -1216,20 +1216,24 @@ var SidebarController = {
if (expandOnToggle) {
// just expand/collapse the launcher
this._state.updateVisibility(true, !initialExpandedValue);
} else {
const shouldShowLauncher = !this._state.launcherVisible;
// show/hide the launcher
this._state.updateVisibility(shouldShowLauncher);
// if we're showing and there was panel open, open it again
if (shouldShowLauncher && this._state.command) {
this._show(this._state.command);
} else if (!shouldShowLauncher) {
// hide the open panel. It will re-open next time as we don't change the command value
this.hide({ dismissPanel: false });
}
this.updateToolbarButton();
return;
}
this.updateToolbarButton();
const shouldShowLauncher = !this._state.launcherVisible;
// show/hide the launcher
this._state.updateVisibility(shouldShowLauncher);
// if we're showing and there was panel open, open it again
if (shouldShowLauncher && this._state.command) {
await this.show(this._state.command);
} else if (!shouldShowLauncher) {
// hide will only update the toolbar button state if the panel was open
if (!this.isOpen) {
this.updateToolbarButton();
}
// hide the open panel. It will re-open next time as we don't change the command value
this.hide({ dismissPanel: false });
}
},
/**

View file

@ -3,6 +3,10 @@
"use strict";
const { ExtensionCommon } = ChromeUtils.importESModule(
"resource://gre/modules/ExtensionCommon.sys.mjs"
);
add_setup(() =>
SpecialPowers.pushPrefEnv({
set: [["layout.css.devPixelsPerPx", 1]],
@ -315,3 +319,93 @@ add_task(async function test_extension_sidebar_hidpi_icon() {
await extension.unload();
await BrowserTestUtils.closeWindow(win);
});
add_task(async function test_extension_panel_load() {
const launcher = document.querySelector("sidebar-main");
const extension = ExtensionTestUtils.loadExtension({ ...extData });
let textContent;
async function waitForPanelReady() {
return Promise.all([
extension.awaitMessage("sidebar"),
BrowserTestUtils.waitForEvent(window, "SidebarFocused"),
]);
}
async function getSidebarPanelContents(win = window) {
let sidebarBrowser = win.SidebarController.browser;
is(
sidebarBrowser.currentURI.spec,
"chrome://browser/content/webext-panels.xhtml",
"Sidebar wrapper loaded in sidebar browser"
);
let extSidebarBrowser = sidebarBrowser.contentDocument.getElementById(
"webext-panels-browser"
);
ok(extSidebarBrowser, "got extSidebarBrowser");
const contentResult = await SpecialPowers.spawn(
extSidebarBrowser,
[],
async () => {
const doc = content.document;
if (doc.readyState != "complete") {
await new Promise(resolve =>
doc.addEventListener("DOMContentLoaded", resolve, { once: true })
);
}
return doc.documentElement.textContent.trim();
}
);
return contentResult;
}
const extensionPanelInitialReady = waitForPanelReady();
await extension.startup();
const commandID = `${ExtensionCommon.makeWidgetId(extension.id)}-sidebar-action`;
await extensionPanelInitialReady;
is(launcher.extensionButtons.length, 1, "Extension is shown in the sidebar.");
ok(SidebarController.isOpen, "The sidebar panel opened on install");
is(
SidebarController.currentID,
commandID,
"The currentID is the extension's sidebarAction"
);
textContent = await getSidebarPanelContents();
is(
textContent,
"A Test Sidebar",
"Extension's sidebarAction loaded its document into the sidebar panel"
);
// check we can toggle it closed and open again
let panelHiddenPromise = BrowserTestUtils.waitForMutationCondition(
SidebarController._box,
{ attributes: true, attributeFilter: ["hidden"] },
() =>
SidebarController._box.hidden &&
SidebarController.browser.getAttribute("src") == "about:blank"
);
document.getElementById("sidebar-button").click();
await panelHiddenPromise;
const extensionPanelReopenReady = waitForPanelReady();
document.getElementById("sidebar-button").click();
info("Waiting for the panel to be shown & focused");
await extensionPanelReopenReady;
textContent = await getSidebarPanelContents();
is(
textContent,
"A Test Sidebar",
"Extension's sidebarAction re-loaded its document into the sidebar panel"
);
SidebarController.hide();
await extension.unload();
await launcher.updateComplete;
});

View file

@ -204,6 +204,9 @@ add_task(async function test_states_for_hide_sidebar() {
});
await waitForTabstripOrientation("horizontal");
const { SidebarController } = window;
const { sidebarContainer, sidebarMain, toolbarButton } = SidebarController;
Assert.equal(
Services.prefs.getStringPref(SIDEBAR_VISIBILITY_PREF),
"hide-sidebar",
@ -211,19 +214,14 @@ add_task(async function test_states_for_hide_sidebar() {
);
// The sidebar launcher should be initially visible when visibility is "hide-sidebar"
Assert.ok(
!window.SidebarController.sidebarContainer.hidden,
!SidebarController.sidebarContainer.hidden,
"The launcher is initially visible"
);
Assert.ok(
window.SidebarController.toolbarButton.checked,
SidebarController.toolbarButton.checked,
"The toolbar button is initially checked"
);
const win = await BrowserTestUtils.openNewBrowserWindow();
const { SidebarController } = win;
const { sidebarContainer, sidebarMain, toolbarButton } = SidebarController;
await waitForTabstripOrientation("horizontal", win);
const checkStates = async (
{ hidden },
container = sidebarContainer,
@ -247,7 +245,9 @@ add_task(async function test_states_for_hide_sidebar() {
() => !component.expanded
);
ok(true, "Sidebar should not be expanded");
info("Waiting for button to be highlighted");
info(
`Waiting for button to be ${hidden ? "not highlighted" : "highlighted"}`
);
await BrowserTestUtils.waitForMutationCondition(
button,
{ attributes: true, attributeFilter: ["checked", "expanded"] },
@ -276,7 +276,8 @@ add_task(async function test_states_for_hide_sidebar() {
await checkStates({ hidden: false });
info("Hide sidebar using the toolbar button.");
EventUtils.synthesizeMouseAtCenter(toolbarButton, {}, win);
await SimpleTest.promiseFocus(window);
EventUtils.synthesizeMouseAtCenter(toolbarButton, {}, window);
await checkStates({ hidden: true });
Assert.ok(
!toolbarButton.checked,
@ -297,7 +298,6 @@ add_task(async function test_states_for_hide_sidebar() {
"The toolbar button in the new window is unchecked when the launcher is hidden"
);
await BrowserTestUtils.closeWindow(win);
await BrowserTestUtils.closeWindow(newWin);
await SpecialPowers.popPrefEnv();
await waitForTabstripOrientation("vertical");

View file

@ -106,6 +106,8 @@ skip-if = [
["browser_iframe_update_fields.js"]
["browser_label_matching.js"]
["browser_manageAddressesDialog.js"]
["browser_ml_model.js"]

View file

@ -0,0 +1,33 @@
/* Any copyright is dedicated to the Public Domain.
https://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
add_heuristic_tests([
{
description:
"Multiple inputs with the same id — <label> should only match the first occurrence",
fixtureData: `<form>
<input id='email' autocomplete="email">
<input id='name' autocomplete="name">
<label for="inputA">Street</label>
<input id="inputA">
<label for="inputA">Organization</label>
<input id="inputA">
<label for="inputA">Country</label>
<input id="inputA">
</form>`,
expectedResult: [
{
default: {
reason: "autocomplete",
},
fields: [
{ fieldName: "email" },
{ fieldName: "name" },
{ fieldName: "street-address", reason: "regex-heuristic" },
],
},
],
},
]);

View file

@ -18,7 +18,7 @@ add_heuristic_tests(
{ fieldName: "address-line1" },
{ fieldName: "email" },
{ fieldName: "tel" },
{ fieldName: "tel" }, // Extension
{ fieldName: "tel-extension", reason: "update-heuristic" }, // Extension
{ fieldName: "organization" },
]
},
@ -37,7 +37,7 @@ add_heuristic_tests(
{ fieldName: "address-line1" },
{ fieldName: "email" },
{ fieldName: "tel" },
{ fieldName: "tel" }, // Extension
{ fieldName: "tel-extension", reason: "update-heuristic" }, // Extension
{ fieldName: "organization" },
],
},

View file

@ -51,7 +51,7 @@ const TESTCASES = [
<label id="labelE4" for=" typeE ">label type E4</label>
<input id=" typeE " type="text">`,
inputId: " typeE ",
expectedLabelIds: [[]],
expectedLabelIds: [["labelE4"]],
},
{
description: "Input contains in a label element.",

View file

@ -75,7 +75,7 @@ item-history-and-downloads =
.label = Browsing & download history
.accesskey = B
item-history-and-downloads-description = Clears search, site and download history
item-history-and-downloads-description2 = Clears site and download history
item-cookies =
.label = Cookies

View file

@ -17,7 +17,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"af": {
"pin": false,
@ -37,7 +37,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"an": {
"pin": false,
@ -57,7 +57,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"ar": {
"pin": false,
@ -77,7 +77,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"ast": {
"pin": false,
@ -97,7 +97,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"az": {
"pin": false,
@ -117,7 +117,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"be": {
"pin": false,
@ -137,7 +137,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"bg": {
"pin": false,
@ -157,7 +157,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"bn": {
"pin": false,
@ -177,7 +177,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"bo": {
"pin": false,
@ -197,7 +197,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"br": {
"pin": false,
@ -217,7 +217,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"brx": {
"pin": false,
@ -237,7 +237,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"bs": {
"pin": false,
@ -257,7 +257,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"ca": {
"pin": false,
@ -277,7 +277,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"ca-valencia": {
"pin": false,
@ -297,7 +297,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"cak": {
"pin": false,
@ -317,7 +317,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"ckb": {
"pin": false,
@ -337,7 +337,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"cs": {
"pin": false,
@ -357,7 +357,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"cy": {
"pin": false,
@ -377,7 +377,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"da": {
"pin": false,
@ -397,7 +397,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"de": {
"pin": false,
@ -417,7 +417,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"dsb": {
"pin": false,
@ -437,7 +437,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"el": {
"pin": false,
@ -457,7 +457,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"en-CA": {
"pin": false,
@ -477,7 +477,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"en-GB": {
"pin": false,
@ -497,7 +497,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"eo": {
"pin": false,
@ -517,7 +517,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"es-AR": {
"pin": false,
@ -537,7 +537,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"es-CL": {
"pin": false,
@ -557,7 +557,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"es-ES": {
"pin": false,
@ -577,7 +577,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"es-MX": {
"pin": false,
@ -597,7 +597,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"et": {
"pin": false,
@ -617,7 +617,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"eu": {
"pin": false,
@ -637,7 +637,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"fa": {
"pin": false,
@ -657,7 +657,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"ff": {
"pin": false,
@ -677,7 +677,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"fi": {
"pin": false,
@ -697,7 +697,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"fr": {
"pin": false,
@ -717,7 +717,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"fur": {
"pin": false,
@ -737,7 +737,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"fy-NL": {
"pin": false,
@ -757,7 +757,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"ga-IE": {
"pin": false,
@ -777,7 +777,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"gd": {
"pin": false,
@ -797,7 +797,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"gl": {
"pin": false,
@ -817,7 +817,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"gn": {
"pin": false,
@ -837,7 +837,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"gu-IN": {
"pin": false,
@ -857,7 +857,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"he": {
"pin": false,
@ -877,7 +877,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"hi-IN": {
"pin": false,
@ -897,7 +897,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"hr": {
"pin": false,
@ -917,7 +917,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"hsb": {
"pin": false,
@ -937,7 +937,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"hu": {
"pin": false,
@ -957,7 +957,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"hy-AM": {
"pin": false,
@ -977,7 +977,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"hye": {
"pin": false,
@ -997,7 +997,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"ia": {
"pin": false,
@ -1017,7 +1017,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"id": {
"pin": false,
@ -1037,7 +1037,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"is": {
"pin": false,
@ -1057,7 +1057,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"it": {
"pin": false,
@ -1077,7 +1077,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"ja": {
"pin": false,
@ -1095,7 +1095,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"ja-JP-mac": {
"pin": false,
@ -1103,7 +1103,7 @@
"macosx64",
"macosx64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"ka": {
"pin": false,
@ -1123,7 +1123,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"kab": {
"pin": false,
@ -1143,7 +1143,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"kk": {
"pin": false,
@ -1163,7 +1163,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"km": {
"pin": false,
@ -1183,7 +1183,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"kn": {
"pin": false,
@ -1203,7 +1203,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"ko": {
"pin": false,
@ -1223,7 +1223,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"lij": {
"pin": false,
@ -1243,7 +1243,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"lo": {
"pin": false,
@ -1263,7 +1263,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"lt": {
"pin": false,
@ -1283,7 +1283,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"ltg": {
"pin": false,
@ -1303,7 +1303,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"lv": {
"pin": false,
@ -1323,7 +1323,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"meh": {
"pin": false,
@ -1343,7 +1343,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"mk": {
"pin": false,
@ -1363,7 +1363,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"ml": {
"pin": false,
@ -1383,7 +1383,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"mr": {
"pin": false,
@ -1403,7 +1403,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"ms": {
"pin": false,
@ -1423,7 +1423,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"my": {
"pin": false,
@ -1443,7 +1443,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"nb-NO": {
"pin": false,
@ -1463,7 +1463,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"ne-NP": {
"pin": false,
@ -1483,7 +1483,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"nl": {
"pin": false,
@ -1503,7 +1503,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"nn-NO": {
"pin": false,
@ -1523,7 +1523,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"oc": {
"pin": false,
@ -1543,7 +1543,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"pa-IN": {
"pin": false,
@ -1563,7 +1563,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"pl": {
"pin": false,
@ -1583,7 +1583,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"pt-BR": {
"pin": false,
@ -1603,7 +1603,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"pt-PT": {
"pin": false,
@ -1623,7 +1623,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"rm": {
"pin": false,
@ -1643,7 +1643,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"ro": {
"pin": false,
@ -1663,7 +1663,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"ru": {
"pin": false,
@ -1683,7 +1683,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"sat": {
"pin": false,
@ -1703,7 +1703,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"sc": {
"pin": false,
@ -1723,7 +1723,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"scn": {
"pin": false,
@ -1743,7 +1743,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"sco": {
"pin": false,
@ -1763,7 +1763,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"si": {
"pin": false,
@ -1783,7 +1783,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"sk": {
"pin": false,
@ -1803,7 +1803,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"skr": {
"pin": false,
@ -1823,7 +1823,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"sl": {
"pin": false,
@ -1843,7 +1843,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"son": {
"pin": false,
@ -1863,7 +1863,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"sq": {
"pin": false,
@ -1883,7 +1883,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"sr": {
"pin": false,
@ -1903,7 +1903,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"sv-SE": {
"pin": false,
@ -1923,7 +1923,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"szl": {
"pin": false,
@ -1943,7 +1943,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"ta": {
"pin": false,
@ -1963,7 +1963,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"te": {
"pin": false,
@ -1983,7 +1983,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"tg": {
"pin": false,
@ -2003,7 +2003,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"th": {
"pin": false,
@ -2023,7 +2023,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"tl": {
"pin": false,
@ -2043,7 +2043,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"tr": {
"pin": false,
@ -2063,7 +2063,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"trs": {
"pin": false,
@ -2083,7 +2083,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"uk": {
"pin": false,
@ -2103,7 +2103,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"ur": {
"pin": false,
@ -2123,7 +2123,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"uz": {
"pin": false,
@ -2143,7 +2143,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"vi": {
"pin": false,
@ -2163,7 +2163,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"wo": {
"pin": false,
@ -2183,7 +2183,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"xh": {
"pin": false,
@ -2203,7 +2203,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"zh-CN": {
"pin": false,
@ -2223,7 +2223,7 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"zh-TW": {
"pin": false,
@ -2243,6 +2243,6 @@
"win64-aarch64-devedition",
"win64-devedition"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -405,3 +405,6 @@ https://123.123.123.123:443 privileged,nocert
# Domain with HSTS preloaded
http://includesubdomains.preloaded.test:80 privileged
https://includesubdomains.preloaded.test:443 privileged
# Profiler URL to test profile uploads
https://api.profiler.firefox.com:443

View file

@ -29,7 +29,7 @@
}
}
/* Tooltip is used when previewing primitives */
/* Tooltip is used when previewing primitives and exceptions */
.tooltip .preview-popup {
max-width: inherit;
min-height: inherit;
@ -49,6 +49,12 @@
padding: 0 5px;
}
}
&.exception-popup {
padding: 5px;
color: var(--theme-error-color);
background-color: var(--theme-error-background);
}
}
.preview-tracer-header {

View file

@ -165,7 +165,7 @@ class GridInspector {
this.inspector.sidebar.off("select", this.onSidebarSelect);
this.inspector.off("new-root", this.onNavigate);
this.inspector.off("reflow-in-selected-target", this.onReflow);
this.inspector.off("reflow", this.onReflow);
this._highlighters = null;
this.document = null;
@ -629,11 +629,13 @@ class GridInspector {
*/
onSidebarSelect() {
if (!this.isPanelVisible()) {
this.inspector.off("reflow-in-selected-target", this.onReflow);
this.inspector.off("reflow", this.onReflow);
return;
}
this.inspector.on("reflow-in-selected-target", this.onReflow);
// The panel shows grids from all debugged document, so we need to listen for the
// `reflow` event (and not `reflow-in-selected-target`).
this.inspector.on("reflow", this.onReflow);
this.updateGridPanel();
}

View file

@ -47,7 +47,7 @@ add_task(async function () {
is(elements.length, 2, "Grid outline is shown.");
info("Changing the grid in the page");
const onReflow = inspector.once("reflow-in-selected-target");
const onReflow = inspector.once("reflow");
const onGridOutlineChanged = waitForDOM(doc, ".grid-outline-cell", 4);
await SpecialPowers.spawn(gBrowser.selectedBrowser, [], () => {

View file

@ -179,7 +179,6 @@ function Inspector(toolbox, commands) {
this.onSidebarSelect = this.onSidebarSelect.bind(this);
this.onSidebarShown = this.onSidebarShown.bind(this);
this.onSidebarToggle = this.onSidebarToggle.bind(this);
this.onReflowInSelection = this.onReflowInSelection.bind(this);
this.listenForSearchEvents = this.listenForSearchEvents.bind(this);
this.prefObserver = new PrefObserver("devtools.");
@ -241,6 +240,7 @@ Inspector.prototype = {
// To observe CSS change before opening changes view.
TYPES.CSS_CHANGE,
TYPES.DOCUMENT_EVENT,
TYPES.REFLOW,
];
// The root node is retrieved from onTargetSelected which is now called
// on startup as well as on any navigation (= new top level target).
@ -367,6 +367,16 @@ Inspector.prototype = {
) {
this._onWillNavigate();
}
if (resource.resourceType === this.toolbox.resourceCommand.TYPES.REFLOW) {
this.emit("reflow");
if (resource.targetFront === this.selection?.nodeFront?.targetFront) {
// This event will be fired whenever a reflow is detected in the target front of the
// selected node front (so when a reflow is detected inside any of the windows that
// belong to the BrowsingContext where the currently selected node lives).
this.emit("reflow-in-selected-target");
}
}
}
return Promise.all(rootNodeAvailablePromises);
@ -1588,7 +1598,6 @@ Inspector.prototype = {
this.updateAddElementButton();
this.updateSelectionCssSelectors();
this.trackReflowsInSelection();
const selfUpdate = this.updating("inspector-panel");
executeSoon(() => {
@ -1601,56 +1610,6 @@ Inspector.prototype = {
});
},
/**
* Starts listening for reflows in the targetFront of the currently selected nodeFront.
*/
async trackReflowsInSelection() {
this.untrackReflowsInSelection();
if (!this.selection.nodeFront) {
return;
}
if (this._destroyed) {
return;
}
try {
await this.commands.resourceCommand.watchResources(
[this.commands.resourceCommand.TYPES.REFLOW],
{
onAvailable: this.onReflowInSelection,
}
);
} catch (e) {
// it can happen that watchResources fails as the client closes while we're processing
// some asynchronous call.
// In order to still get valid exceptions, we re-throw the exception if the inspector
// isn't destroyed.
if (!this._destroyed) {
throw e;
}
}
},
/**
* Stops listening for reflows.
*/
untrackReflowsInSelection() {
this.commands.resourceCommand.unwatchResources(
[this.commands.resourceCommand.TYPES.REFLOW],
{
onAvailable: this.onReflowInSelection,
}
);
},
onReflowInSelection() {
// This event will be fired whenever a reflow is detected in the target front of the
// selected node front (so when a reflow is detected inside any of the windows that
// belong to the BrowsingContext when the currently selected node lives).
this.emit("reflow-in-selected-target");
},
/**
* Delay the "inspector-updated" notification while a tool
* is updating itself. Returns a function that must be
@ -1788,7 +1747,6 @@ Inspector.prototype = {
resourceCommand.unwatchResources(this._watchedResources, {
onAvailable: this.onResourceAvailable,
});
this.untrackReflowsInSelection();
this._InspectorTabPanel = null;
this._TabBar = null;

View file

@ -87,9 +87,9 @@ const lazy = createLazyLoaders({
});
/**
* This function is called when the profile is captured with the shortcut
* keys, with the profiler toolbarbutton, or with the button inside the
* popup.
* This function is called when the profile is captured with the shortcut keys,
* with the profiler toolbarbutton, with the button inside the popup, or with
* the about:logging page.
* @param {PageContext} pageContext
* @return {Promise<void>}
*/

View file

@ -272,6 +272,14 @@
);
--theme-warning-color: light-dark(var(--yellow-80), hsl(43, 94%, 81%));
/* Error colors */
--theme-error-background: light-dark(hsl(344, 73%, 97%), hsl(345, 23%, 24%));
--theme-error-border: light-dark(
rgb(from var(--red-60) r g b / 0.12),
hsl(345, 30%, 35%)
);
--theme-error-color: light-dark(var(--red-70), var(--red-20));
/* Flashing colors used to highlight updates */
--theme-contrast-background: light-dark(
/* = Yellow 50-a40 on white */

View file

@ -29,12 +29,9 @@
var(--theme-splitter-color)
);
--console-message-color: var(--theme-text-color-strong);
--console-error-background: light-dark(hsl(344, 73%, 97%), hsl(345, 23%, 24%));
--console-error-border: light-dark(
rgb(from var(--red-60) r g b / 0.12),
hsl(345, 30%, 35%)
);
--console-error-color: light-dark(var(--red-70), var(--red-20));
--console-error-background: var(--theme-error-background);
--console-error-border: var(--theme-error-border);
--console-error-color: var(--theme-error-color);
--console-navigation-color: var(--theme-highlight-blue);
--console-navigation-border: light-dark(var(--blue-30), var(--blue-60));
--console-indent-border-color: var(--theme-highlight-blue);

View file

@ -128,7 +128,7 @@ static const RedirEntry kRedirMap[] = {
{"license", "chrome://global/content/license.html",
nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT |
nsIAboutModule::IS_SECURE_CHROME_UI},
{"logging", "chrome://global/content/aboutLogging.html",
{"logging", "chrome://global/content/aboutLogging/aboutLogging.html",
nsIAboutModule::ALLOW_SCRIPT},
{"logo", "chrome://branding/content/about.png",
nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT |

View file

@ -17,8 +17,7 @@ extern LazyLogModule sPEMLog;
("AndroidEncoderModule(%p)::%s: " arg, this, __func__, ##__VA_ARGS__))
bool AndroidEncoderModule::SupportsCodec(CodecType aCodec) const {
return (aCodec == CodecType::H264 &&
java::HardwareCodecCapabilityUtils::HasHWH264(true /* encoder */)) ||
return aCodec == CodecType::H264 ||
(aCodec == CodecType::VP8 &&
java::HardwareCodecCapabilityUtils::HasHWVP8(true /* encoder */)) ||
(aCodec == CodecType::VP9 &&

View file

@ -652,7 +652,15 @@ class ConfigureCodec {
mUseTransportCC(false),
mUseAudioFec(false),
mRedUlpfecEnabled(false) {
#ifdef MOZ_WIDGET_ANDROID
// Although Play Store policy doesn't allow GMP plugin, Android has H.264 SW
// codec.
MOZ_ASSERT(!PeerConnectionCtx::GetInstance()->gmpHasH264(),
"GMP plugin not allowed on Android");
mSoftwareH264Enabled = true;
#else
mSoftwareH264Enabled = PeerConnectionCtx::GetInstance()->gmpHasH264();
#endif
if (WebrtcVideoConduit::HasH264Hardware()) {
glean::webrtc::has_h264_hardware
@ -743,9 +751,9 @@ class ConfigureCodec {
// Might disable it, but we set up other params anyway
videoCodec.mEnabled = mH264Enabled;
if (videoCodec.mPacketizationMode == 0 && !mSoftwareH264Enabled) {
// We're assuming packetization mode 0 is unsupported by
// hardware.
if (videoCodec.mPacketizationMode == 0 &&
!PeerConnectionCtx::GetInstance()->gmpHasH264()) {
// Packetization mode 0 is unsupported by MediaDataEncoder.
videoCodec.mEnabled = false;
}
} else if (videoCodec.mName == "red") {

View file

@ -57,6 +57,16 @@
}
}
function getNumExpectedH264SendCodecs() {
if (!navigator.userAgent.includes("Android")) {
// Constrained Baseline and Baseline multiplied with packetization-mode 0 and 1.
return 4;
}
// packetization-mode=0 is not supported with MediaDataEncoder, which is
// the only encoder on Android.
return 2;
}
// SDP with unusual values in fmtp, but in the same formatting that Firefox
// typically uses. This lets us check that we're putting the right param values
// in sdpFmtpLine, if not what appears in the SDP verbatim.
@ -85,17 +95,21 @@ a=setup:passive
let videoSdp;
if (navigator.userAgent.includes("Android")) {
// Alternate form with no h264
// Alternate form with no packetization-mode=0 h264
videoSdp = `v=0
o=- 1878890426675213188 2 IN IP4 127.0.0.1
s=-
t=0 0
a=fingerprint:sha-256 EB:74:E9:5F:EB:FB:79:D4:36:3A:06:89:DD:49:D0:C7:A5:EA:2A:B2:38:74:C8:AF:E4:A0:5A:EF:A9:58:B5:1A
m=video 9 UDP/TLS/RTP/SAVPF 121 125 120 124 123 122 119
m=video 9 UDP/TLS/RTP/SAVPF 121 125 120 124 126 127 105 106 123 122 119
c=IN IP4 0.0.0.0
a=sendonly
a=fmtp:126 profile-level-id=42e00b;level-asymmetry-allowed=1;packetization-mode=1
a=fmtp:105 profile-level-id=420015;level-asymmetry-allowed=1;packetization-mode=1
a=fmtp:121 max-fs=12277;max-fr=50
a=fmtp:125 apt=121
a=fmtp:127 apt=126
a=fmtp:106 apt=105
a=fmtp:120 max-fs=12266;max-fr=40
a=fmtp:124 apt=120
a=fmtp:119 apt=122
@ -109,6 +123,10 @@ a=rtpmap:121 VP9/90000
a=rtpmap:125 rtx/90000
a=rtpmap:120 VP8/90000
a=rtpmap:124 rtx/90000
a=rtpmap:126 H264/90000
a=rtpmap:127 rtx/90000
a=rtpmap:105 H264/90000
a=rtpmap:106 rtx/90000
a=rtpmap:123 ulpfec/90000
a=rtpmap:122 red/90000
a=rtpmap:119 rtx/90000
@ -120,17 +138,21 @@ o=- 1878890426675213188 2 IN IP4 127.0.0.1
s=-
t=0 0
a=fingerprint:sha-256 EB:74:E9:5F:EB:FB:79:D4:36:3A:06:89:DD:49:D0:C7:A5:EA:2A:B2:38:74:C8:AF:E4:A0:5A:EF:A9:58:B5:1A
m=video 9 UDP/TLS/RTP/SAVPF 121 125 120 124 126 127 97 98 123 122 119
m=video 9 UDP/TLS/RTP/SAVPF 121 125 120 124 126 127 97 98 105 106 103 104 123 122 119
c=IN IP4 0.0.0.0
a=sendonly
a=fmtp:126 profile-level-id=42e00b;level-asymmetry-allowed=1;packetization-mode=1
a=fmtp:97 profile-level-id=42e00b;level-asymmetry-allowed=1
a=fmtp:105 profile-level-id=420015;level-asymmetry-allowed=1;packetization-mode=1
a=fmtp:103 profile-level-id=420015;level-asymmetry-allowed=1
a=fmtp:121 max-fs=12277;max-fr=50
a=fmtp:125 apt=121
a=fmtp:120 max-fs=12266;max-fr=40
a=fmtp:124 apt=120
a=fmtp:127 apt=126
a=fmtp:98 apt=97
a=fmtp:106 apt=105
a=fmtp:104 apt=103
a=fmtp:100 apt=99
a=fmtp:119 apt=122
a=ice-pwd:60840251a559417c253d68478b0020fb
@ -147,6 +169,10 @@ a=rtpmap:126 H264/90000
a=rtpmap:127 rtx/90000
a=rtpmap:97 H264/90000
a=rtpmap:98 rtx/90000
a=rtpmap:105 H264/90000
a=rtpmap:106 rtx/90000
a=rtpmap:103 H264/90000
a=rtpmap:104 rtx/90000
a=rtpmap:123 ulpfec/90000
a=rtpmap:122 red/90000
a=rtpmap:119 rtx/90000
@ -236,121 +262,120 @@ a=setup:passive
const {codecs} = pc.getSenders()[0].getParameters();
// Control
is(codecs.some(c => c.mimeType.toLowerCase() == 'video/vp8'), true);
// No rtx
// No VP9
is(codecs.some(c => c.mimeType.toLowerCase() == 'video/vp9'), false);
}
);
},
async function checkH264Sender() {
const numExpectedH264Codecs = getNumExpectedH264SendCodecs();
const pc1 = new RTCPeerConnection();
const pc2 = new RTCPeerConnection();
const {sender} = pc1.addTransceiver('video');
await pc1.setLocalDescription();
await pc2.setRemoteDescription(pc1.localDescription);
await pc2.setLocalDescription();
await pc1.setRemoteDescription(pc2.localDescription);
{
const {codecs} = pc1.getSenders()[0].getParameters();
info("pc1 codecs: " + JSON.stringify(codecs, null, 2));
is(codecs.filter(c => c.mimeType.toLowerCase() == 'video/h264').length, numExpectedH264Codecs);
const sections = SDPUtils.splitSections(pc1.remoteDescription.sdp);
info("pc1 msection: " + sections[1].replace(/\r\n/g, "\n"));
checkCodecsAgainstSDP(codecs, sections[1]);
}
{
const {codecs} = pc2.getSenders()[0].getParameters();
info("pc2 codecs: " + JSON.stringify(codecs, null, 2));
is(codecs.filter(c => c.mimeType.toLowerCase() == 'video/h264').length, numExpectedH264Codecs);
const sections = SDPUtils.splitSections(pc2.remoteDescription.sdp);
info("pc2 msection: " + sections[1].replace(/\r\n/g, "\n"));
checkCodecsAgainstSDP(codecs, sections[1]);
}
},
async function checkH264Receiver() {
const numExpectedH264Codecs = getNumExpectedH264SendCodecs();
const pc1 = new RTCPeerConnection();
const pc2 = new RTCPeerConnection();
pc1.addTransceiver('video');
await pc1.setLocalDescription();
await pc2.setRemoteDescription(pc1.localDescription);
await pc2.setLocalDescription();
await pc1.setRemoteDescription(pc2.localDescription);
{
const {codecs} = pc1.getReceivers()[0].getParameters();
is(codecs.filter(c => c.mimeType.toLowerCase() == 'video/h264').length, numExpectedH264Codecs);
const sections = SDPUtils.splitSections(pc1.localDescription.sdp);
checkCodecsAgainstSDP(codecs, sections[1]);
}
{
const {codecs} = pc2.getReceivers()[0].getParameters();
is(codecs.filter(c => c.mimeType.toLowerCase() == 'video/h264').length, numExpectedH264Codecs);
const sections = SDPUtils.splitSections(pc2.localDescription.sdp);
checkCodecsAgainstSDP(codecs, sections[1]);
}
},
async function checkH264NoLevelAsymmetryInOffer() {
const numExpectedH264Codecs = getNumExpectedH264SendCodecs();
const pc1 = new RTCPeerConnection();
const pc2 = new RTCPeerConnection();
pc1.addTransceiver('video');
await pc1.setLocalDescription();
const mungedOffer = {
sdp: pc1.localDescription.sdp.replace(/level-asymmetry-allowed=1/g, 'level-asymmetry-allowed=0'),
type: 'offer'
};
await pc2.setRemoteDescription(mungedOffer);
await pc2.setLocalDescription();
{
const {codecs} = pc2.getSenders()[0].getParameters();
is(codecs.filter(c => c.mimeType.toLowerCase() == 'video/h264').length, numExpectedH264Codecs);
const sections = SDPUtils.splitSections(pc2.remoteDescription.sdp);
checkCodecsAgainstSDP(codecs, sections[1]);
}
{
const {codecs} = pc2.getReceivers()[0].getParameters();
is(codecs.filter(c => c.mimeType.toLowerCase() == 'video/h264').length, numExpectedH264Codecs);
const sections = SDPUtils.splitSections(pc2.localDescription.sdp);
checkCodecsAgainstSDP(codecs, sections[1]);
}
},
async function checkH264NoLevelAsymmetryInAnswer() {
const numExpectedH264Codecs = getNumExpectedH264SendCodecs();
const pc1 = new RTCPeerConnection();
const pc2 = new RTCPeerConnection();
pc1.addTransceiver('video');
await pc1.setLocalDescription();
await pc2.setRemoteDescription(pc1.localDescription);
await pc2.setLocalDescription();
const mungedAnswer = {
sdp: pc2.localDescription.sdp.replace(/level-asymmetry-allowed=1/g, 'level-asymmetry-allowed=0'),
type: 'answer'
};
await pc1.setRemoteDescription(mungedAnswer);
{
const {codecs} = pc1.getSenders()[0].getParameters();
is(codecs.filter(c => c.mimeType.toLowerCase() == 'video/h264').length, numExpectedH264Codecs);
const sections = SDPUtils.splitSections(pc1.remoteDescription.sdp);
checkCodecsAgainstSDP(codecs, sections[1]);
}
{
const {codecs} = pc1.getReceivers()[0].getParameters();
is(codecs.filter(c => c.mimeType.toLowerCase() == 'video/h264').length, numExpectedH264Codecs);
const sections = SDPUtils.splitSections(pc1.localDescription.sdp);
checkCodecsAgainstSDP(codecs, sections[1]);
}
},
];
if (!navigator.userAgent.includes("Android")) {
tests = tests.concat([
// h264 is currently not supported in wpt because the plugin is never
// installed, so we have some h264 tests here.
// TODO(https://bugzilla.mozilla.org/show_bug.cgi?id=1534688)
async function checkH264Sender() {
const pc1 = new RTCPeerConnection();
const pc2 = new RTCPeerConnection();
const {sender} = pc1.addTransceiver('video');
await pc1.setLocalDescription();
await pc2.setRemoteDescription(pc1.localDescription);
await pc2.setLocalDescription();
await pc1.setRemoteDescription(pc2.localDescription);
{
const {codecs} = pc1.getSenders()[0].getParameters();
info("pc1 codecs: " + JSON.stringify(codecs, null, 2));
is(codecs.filter(c => c.mimeType.toLowerCase() == 'video/h264').length, 4);
const sections = SDPUtils.splitSections(pc1.remoteDescription.sdp);
checkCodecsAgainstSDP(codecs, sections[1]);
}
{
const {codecs} = pc2.getSenders()[0].getParameters();
info("pc2 codecs: " + JSON.stringify(codecs, null, 2));
is(codecs.filter(c => c.mimeType.toLowerCase() == 'video/h264').length, 4);
const sections = SDPUtils.splitSections(pc2.remoteDescription.sdp);
checkCodecsAgainstSDP(codecs, sections[1]);
}
},
async function checkH264Receiver() {
const pc1 = new RTCPeerConnection();
const pc2 = new RTCPeerConnection();
pc1.addTransceiver('video');
await pc1.setLocalDescription();
await pc2.setRemoteDescription(pc1.localDescription);
await pc2.setLocalDescription();
await pc1.setRemoteDescription(pc2.localDescription);
{
const {codecs} = pc1.getReceivers()[0].getParameters();
is(codecs.filter(c => c.mimeType.toLowerCase() == 'video/h264').length, 4);
const sections = SDPUtils.splitSections(pc1.localDescription.sdp);
checkCodecsAgainstSDP(codecs, sections[1]);
}
{
const {codecs} = pc2.getReceivers()[0].getParameters();
is(codecs.filter(c => c.mimeType.toLowerCase() == 'video/h264').length, 4);
const sections = SDPUtils.splitSections(pc2.localDescription.sdp);
checkCodecsAgainstSDP(codecs, sections[1]);
}
},
async function checkH264NoLevelAsymmetryInOffer() {
const pc1 = new RTCPeerConnection();
const pc2 = new RTCPeerConnection();
pc1.addTransceiver('video');
await pc1.setLocalDescription();
const mungedOffer = {
sdp: pc1.localDescription.sdp.replace(/level-asymmetry-allowed=1/g, 'level-asymmetry-allowed=0'),
type: 'offer'
};
await pc2.setRemoteDescription(mungedOffer);
await pc2.setLocalDescription();
{
const {codecs} = pc2.getSenders()[0].getParameters();
is(codecs.filter(c => c.mimeType.toLowerCase() == 'video/h264').length, 4);
const sections = SDPUtils.splitSections(pc2.remoteDescription.sdp);
checkCodecsAgainstSDP(codecs, sections[1]);
}
{
const {codecs} = pc2.getReceivers()[0].getParameters();
is(codecs.filter(c => c.mimeType.toLowerCase() == 'video/h264').length, 4);
const sections = SDPUtils.splitSections(pc2.localDescription.sdp);
checkCodecsAgainstSDP(codecs, sections[1]);
}
},
async function checkH264NoLevelAsymmetryInAnswer() {
const pc1 = new RTCPeerConnection();
const pc2 = new RTCPeerConnection();
pc1.addTransceiver('video');
await pc1.setLocalDescription();
await pc2.setRemoteDescription(pc1.localDescription);
await pc2.setLocalDescription();
const mungedAnswer = {
sdp: pc2.localDescription.sdp.replace(/level-asymmetry-allowed=1/g, 'level-asymmetry-allowed=0'),
type: 'answer'
};
await pc1.setRemoteDescription(mungedAnswer);
{
const {codecs} = pc1.getSenders()[0].getParameters();
is(codecs.filter(c => c.mimeType.toLowerCase() == 'video/h264').length, 4);
const sections = SDPUtils.splitSections(pc1.remoteDescription.sdp);
checkCodecsAgainstSDP(codecs, sections[1]);
}
{
const {codecs} = pc1.getReceivers()[0].getParameters();
is(codecs.filter(c => c.mimeType.toLowerCase() == 'video/h264').length, 4);
const sections = SDPUtils.splitSections(pc1.localDescription.sdp);
checkCodecsAgainstSDP(codecs, sections[1]);
}
},
]);
}
runNetworkTest(async () => {
await SpecialPowers.pushPrefEnv({ set: [["media.navigator.video.disable_h264_baseline", false]] });
for (const test of tests) {

View file

@ -32,12 +32,6 @@
return d;
};
const checkForH264Support = async () => {
const pc = new RTCPeerConnection();
const offer = await pc.createOffer({offerToReceiveVideo: true});
return offer.sdp.match(/a=rtpmap:[1-9][0-9]* H264/);
};
let resolutionAlignment = 1;
function testScale(codec) {
@ -51,7 +45,7 @@
pc1.onicecandidate = e => add(pc2, e.candidate, generateErrorCallback());
pc2.onicecandidate = e => add(pc1, e.candidate, generateErrorCallback());
info("testing max-fs with" + codec);
info("testing max-fs with " + codec);
pc1.onnegotiationneeded = e =>
pc1.createOffer()
@ -94,19 +88,26 @@
}
runNetworkTest(async () => {
await pushPrefs(['media.peerconnection.video.lock_scaling', true]);
if (await checkForH264Support()) {
if (navigator.userAgent.includes("Android")) {
// Android only has a hw encoder for h264
resolutionAlignment = 16;
}
await matchPlatformH264CodecPrefs();
await testScale("H264");
}
await pushPrefs(
['media.peerconnection.video.lock_scaling', true],
// Disable h264 hardware support, to ensure it is not prioritized over VP8
["media.webrtc.hw.h264.enabled", false],
);
// Disable h264 hardware support, to ensure it is not prioritized over VP8
await pushPrefs(["media.webrtc.hw.h264.enabled", false]);
await pushPrefs(
// Use libwebrtc VP8 encoder to avoid unexpected resolution alignment on
// some devices.
["media.webrtc.encoder_creation_strategy", 0],
);
await testScale("VP8");
await SpecialPowers.popPrefEnv();
await matchPlatformH264CodecPrefs();
if (navigator.userAgent.includes("Android")) {
// Android only has a hw encoder for h264
resolutionAlignment = 16;
}
await testScale("H264");
});
</script>
</pre>

View file

@ -12,12 +12,6 @@
visible: true
});
async function checkForH264Support() {
const pc = new RTCPeerConnection();
const offer = await pc.createOffer({offerToReceiveVideo: true});
return offer.sdp.match(/a=rtpmap:[1-9][0-9]* H264/);
}
let resolutionAlignment = 1;
var mustRejectWith = (msg, reason, f) =>
@ -66,7 +60,7 @@
is(parameters.encodings[0].maxBitrate, 60000, "Should be able to set maxBitrate");
let offer = await pc1.createOffer();
if (codec == "VP8") {
if (codec == "H264") {
offer.sdp = sdputils.removeAllButPayloadType(offer.sdp, 126);
}
await pc1.setLocalDescription(offer);
@ -101,17 +95,26 @@
}
runNetworkTest(async () => {
await pushPrefs(
['media.peerconnection.video.lock_scaling', true],
// Disable h264 hardware support, to ensure it is not prioritized over VP8
["media.webrtc.hw.h264.enabled", false],
);
await pushPrefs(
// Use libwebrtc VP8 encoder to avoid unexpected resolution alignment on
// some devices.
["media.webrtc.encoder_creation_strategy", 0],
);
await testScale("VP8");
await SpecialPowers.popPrefEnv();
await matchPlatformH264CodecPrefs();
const hasH264 = await checkForH264Support();
if (hasH264 && navigator.userAgent.includes("Android")) {
// Android only has a hw encoder for h264
if (navigator.userAgent.includes("Android")) {
// MediaDataEncoder always uses 16-alignment.
resolutionAlignment = 16;
}
await pushPrefs(['media.peerconnection.video.lock_scaling', true]);
await testScale("VP8");
if (hasH264) {
await testScale("H264");
}
await testScale("H264");
});
</script>
</pre>

View file

@ -12,12 +12,6 @@
visible: true
});
async function checkForH264Support() {
const pc = new RTCPeerConnection();
const offer = await pc.createOffer({offerToReceiveVideo: true});
return offer.sdp.match(/a=rtpmap:[1-9][0-9]* H264/);
}
let resolutionAlignment = 1;
var mustRejectWith = (msg, reason, f) =>
@ -69,7 +63,7 @@
scaleResolutionDownBy: 2 }] });
let offer = await pc1.createOffer();
if (codec == "VP8") {
if (codec == "H264") {
offer.sdp = sdputils.removeAllButPayloadType(offer.sdp, 126);
}
await pc1.setLocalDescription(offer);
@ -104,17 +98,26 @@
}
runNetworkTest(async () => {
await pushPrefs(
['media.peerconnection.video.lock_scaling', true],
// Disable h264 hardware support, to ensure it is not prioritized over VP8
["media.webrtc.hw.h264.enabled", false],
);
await pushPrefs(
// Use libwebrtc VP8 encoder to avoid unexpected resolution alignment on
// some devices.
["media.webrtc.encoder_creation_strategy", 0],
);
await testScale("VP8");
await SpecialPowers.popPrefEnv();
await matchPlatformH264CodecPrefs();
const hasH264 = await checkForH264Support();
if (hasH264 && navigator.userAgent.includes("Android")) {
// Android only has a hw encoder for h264
if (navigator.userAgent.includes("Android")) {
// MediaDataEncoder always uses 16-alignment.
resolutionAlignment = 16;
}
await pushPrefs(['media.peerconnection.video.lock_scaling', true]);
await testScale("VP8");
if (hasH264) {
await testScale("H264");
}
await testScale("H264");
});
</script>
</pre>

View file

@ -11,12 +11,6 @@ createHTML({
title: "Live-updating scaleResolutionDownBy"
});
async function checkForH264Support() {
const pc = new RTCPeerConnection();
const offer = await pc.createOffer({offerToReceiveVideo: true});
return offer.sdp.match(/a=rtpmap:[1-9][0-9]* H264/);
}
let sender, localElem, remoteElem;
let originalWidth, originalHeight;
let resolutionAlignment = 1;
@ -42,14 +36,15 @@ async function checkScaleDownBy(scale) {
runNetworkTest(async function (options) {
await pushPrefs(['media.peerconnection.video.lock_scaling', true]);
// [TODO] re-enable HW decoder after bug 1526207 is fixed.
if (navigator.userAgent.includes("Android")) {
if (await checkForH264Support()) {
// Android only has h264 in hw, so now we know it will use vp8 in hw too.
resolutionAlignment = 16;
}
await pushPrefs(["media.navigator.mediadatadecoder_vpx_enabled", false],
["media.webrtc.hw.h264.enabled", false]);
await pushPrefs(
// [TODO] re-enable HW decoder after bug 1526207 is fixed.
["media.navigator.mediadatadecoder_vpx_enabled", false],
// Use libwebrtc VP8 encoder to avoid unexpected resolution alignment on
// some devices.
["media.webrtc.encoder_creation_strategy", 0],
["media.webrtc.hw.h264.enabled", false],
);
}
let test = new PeerConnectionTest(options);

View file

@ -11,12 +11,6 @@ createHTML({
title: "Live-updating scaleResolutionDownBy"
});
async function checkForH264Support() {
const pc = new RTCPeerConnection();
const offer = await pc.createOffer({offerToReceiveVideo: true});
return offer.sdp.match(/a=rtpmap:[1-9][0-9]* H264/);
}
let sender, localElem, remoteElem;
let originalWidth, originalHeight;
let resolutionAlignment = 1;
@ -40,14 +34,15 @@ async function checkScaleDownBy(scale) {
runNetworkTest(async function (options) {
await pushPrefs(['media.peerconnection.video.lock_scaling', true]);
// [TODO] re-enable HW decoder after bug 1526207 is fixed.
if (navigator.userAgent.includes("Android")) {
if (await checkForH264Support()) {
// Android only has h264 in hw, so now we know it will use vp8 in hw too.
resolutionAlignment = 16;
}
await pushPrefs(["media.navigator.mediadatadecoder_vpx_enabled", false],
["media.webrtc.hw.h264.enabled", false]);
await pushPrefs(
// [TODO] re-enable HW decoder after bug 1526207 is fixed.
["media.navigator.mediadatadecoder_vpx_enabled", false],
// Use libwebrtc VP8 encoder to avoid unexpected resolution alignment on
// some devices.
["media.webrtc.encoder_creation_strategy", 0],
["media.webrtc.hw.h264.enabled", false],
);
}
let test = new PeerConnectionTest(options);

View file

@ -17,12 +17,7 @@
visible: true
});
async function hasH264() {
const pc = new RTCPeerConnection();
const offer = await pc.createOffer({offerToReceiveVideo: true});
return offer.sdp.match(/a=rtpmap:[1-9][0-9]* H264/);
}
const isAndroid = navigator.userAgent.includes("Android");
async function doTest(codec) {
const recvCodecs = RTCRtpReceiver.getCapabilities("video")?.codecs;
isnot(recvCodecs, null, "Expected recv capabilities");
@ -81,7 +76,7 @@
// average color of all pixels and decodes a frame at the correct
// resolution filled with that color. Thus, for H264, fill the entire
// frame with the given color.
fillEntireFrame: codec.mimeType.match(/H264/i)
fillEntireFrame: !isAndroid && codec.mimeType.match(/H264/i)
}
);
const videoStream = emitter.stream();
@ -127,11 +122,13 @@
const statsReady =
Promise.all([waitForSyncedRtcp(offerer), waitForSyncedRtcp(answerer)]);
const helper = new VideoStreamHelper();
info('Waiting for first video element to start playing');
await helper.checkVideoPlaying(videoElems[0]);
info('Waiting for second video element to start playing');
await helper.checkVideoPlaying(videoElems[1]);
if (!codec.mimeType.includes("H264") || !isAndroid) {
const helper = new VideoStreamHelper();
info('Waiting for first video element to start playing');
await helper.checkVideoPlaying(videoElems[0]);
info('Waiting for second video element to start playing');
await helper.checkVideoPlaying(videoElems[1]);
}
is(videoElems[0].videoWidth, 64,
"sink is same width as source, modulo our cropping algorithm");
@ -166,26 +163,27 @@
["media.navigator.video.disable_h264_baseline", false],
);
// [TODO] re-enable HW decoder after bug 1526207 is fixed.
const isAndroid = navigator.userAgent.includes("Android");
if (isAndroid) {
await pushPrefs(["media.navigator.mediadatadecoder_vpx_enabled", false],
["media.webrtc.hw.h264.enabled", false]);
await pushPrefs(
// [TODO] re-enable HW decoder after bug 1526207 is fixed.
["media.navigator.mediadatadecoder_vpx_enabled", false],
["media.webrtc.hw.h264.enabled", false],
);
}
const codecs = [
{mimeType: "video/VP8"},
{mimeType: "video/VP9"},
{mimeType: "video/AV1"},
{mimeType: "video/H264", sdpFmtpLineRegex: /profile-level-id=42e01f.*packetization-mode=1/},
{mimeType: "video/H264", sdpFmtpLineRegex: /profile-level-id=42001f.*packetization-mode=1/},
];
if (!isAndroid || await hasH264()) {
// Can't check for emulator explicitly, but that's where we expect no
// h264 support currently.
if (!isAndroid) {
// Android uses only MediaDataEncoder for H264, and it does not support
// packetization-mode=0.
codecs.push(
{mimeType: "video/H264", sdpFmtpLineRegex: /profile-level-id=42e01f.*packetization-mode=1/},
{mimeType: "video/H264", sdpFmtpLineRegex: /profile-level-id=42e01f.*asymmetry-allowed=1$/},
{mimeType: "video/H264", sdpFmtpLineRegex: /profile-level-id=42001f.*packetization-mode=1/},
{mimeType: "video/H264", sdpFmtpLineRegex: /profile-level-id=42001f.*asymmetry-allowed=1$/},
);
}

View file

@ -1420,6 +1420,9 @@ static nsLiteralCString sConnectSrcAddonsAllowList[] = {
"about:addons"_ns,
// STOP! Do not add anything to this list.
};
// connect-src https://example.org
// Any https host source.
static nsLiteralCString sConnectSrcHttpsHostAllowList[] = {"about:logging"_ns};
class DisallowingVisitor : public nsCSPSrcVisitor {
public:
@ -1663,6 +1666,11 @@ class ConnectSrcVisitor : public AllowBuiltinSrcVisitor {
return AllowBuiltinSrcVisitor::visitSchemeSrc(src);
}
bool visitHostSrc(const nsCSPHostSrc& src) override {
return VisitHostSrcWithWildcardAndHttpsHostAllowLists(
src, nullptr, sConnectSrcHttpsHostAllowList);
}
};
class AddonSrcVisitor : public AllowBuiltinSrcVisitor {
@ -1955,7 +1963,6 @@ void nsContentSecurityUtils::AssertChromePageHasCSP(Document* aDocument) {
"chrome://geckoview/content/geckoview.xhtml"_ns,
"chrome://global/content/alerts/alert.xhtml"_ns,
"chrome://global/content/appPicker.xhtml"_ns,
"chrome://global/content/backgroundPageThumbs.xhtml"_ns,
"chrome://global/content/megalist/megalist.html"_ns,
// Test files
"chrome://mochikit/"_ns,

View file

@ -93,7 +93,7 @@ UniquePtr<ExternalTextureD3D11> ExternalTextureD3D11::Create(
RefPtr<gfx::FileHandleWrapper> handle =
new gfx::FileHandleWrapper(UniqueFileHandle(sharedHandle));
auto fencesHolderId = layers::GpuProcessFencesHolderId::GetNext();
auto fencesHolderId = layers::CompositeProcessFencesHolderId::GetNext();
fencesHolderMap->Register(fencesHolderId);
return MakeUnique<ExternalTextureD3D11>(aWidth, aHeight, aFormat, aUsage,
@ -106,7 +106,7 @@ ExternalTextureD3D11::ExternalTextureD3D11(
const struct ffi::WGPUTextureFormat aFormat,
const ffi::WGPUTextureUsages aUsage, const RefPtr<ID3D11Texture2D> aTexture,
RefPtr<gfx::FileHandleWrapper>&& aSharedHandle,
const layers::GpuProcessFencesHolderId aFencesHolderId,
const layers::CompositeProcessFencesHolderId aFencesHolderId,
RefPtr<layers::FenceD3D11>&& aWriteFence)
: ExternalTexture(aWidth, aHeight, aFormat, aUsage),
mTexture(aTexture),

View file

@ -27,13 +27,14 @@ class ExternalTextureD3D11 final : public ExternalTexture {
const struct ffi::WGPUTextureFormat aFormat,
const ffi::WGPUTextureUsages aUsage);
ExternalTextureD3D11(const uint32_t aWidth, const uint32_t aHeight,
const struct ffi::WGPUTextureFormat aFormat,
const ffi::WGPUTextureUsages aUsage,
const RefPtr<ID3D11Texture2D> aTexture,
RefPtr<gfx::FileHandleWrapper>&& aSharedHandle,
const layers::GpuProcessFencesHolderId aFencesHolderId,
RefPtr<layers::FenceD3D11>&& aWriteFence);
ExternalTextureD3D11(
const uint32_t aWidth, const uint32_t aHeight,
const struct ffi::WGPUTextureFormat aFormat,
const ffi::WGPUTextureUsages aUsage,
const RefPtr<ID3D11Texture2D> aTexture,
RefPtr<gfx::FileHandleWrapper>&& aSharedHandle,
const layers::CompositeProcessFencesHolderId aFencesHolderId,
RefPtr<layers::FenceD3D11>&& aWriteFence);
virtual ~ExternalTextureD3D11();
void* GetExternalTextureHandle();
@ -48,7 +49,7 @@ class ExternalTextureD3D11 final : public ExternalTexture {
protected:
const RefPtr<ID3D11Texture2D> mTexture;
const RefPtr<gfx::FileHandleWrapper> mSharedHandle;
const layers::GpuProcessFencesHolderId mFencesHolderId;
const layers::CompositeProcessFencesHolderId mFencesHolderId;
const RefPtr<layers::FenceD3D11> mWriteFence;
};

View file

@ -87,14 +87,14 @@ GpuProcessTextureId GpuProcessTextureId::GetNext() {
}
/* static */
GpuProcessFencesHolderId GpuProcessFencesHolderId::GetNext() {
CompositeProcessFencesHolderId CompositeProcessFencesHolderId::GetNext() {
if (!XRE_IsGPUProcess()) {
MOZ_ASSERT_UNREACHABLE("unexpected to be called");
return GpuProcessFencesHolderId{};
return CompositeProcessFencesHolderId{};
}
static std::atomic<uint64_t> sCounter = 0;
return GpuProcessFencesHolderId{++sCounter};
return CompositeProcessFencesHolderId{++sCounter};
}
std::ostream& operator<<(std::ostream& os, ScrollDirection aDirection) {

View file

@ -463,21 +463,21 @@ struct GpuProcessTextureId {
};
// FencesHolderId allocated in GPU process
struct GpuProcessFencesHolderId {
struct CompositeProcessFencesHolderId {
uint64_t mId = 0;
static GpuProcessFencesHolderId GetNext();
static CompositeProcessFencesHolderId GetNext();
bool IsValid() const { return mId != 0; }
// Allow explicit cast to a uint64_t for now
explicit operator uint64_t() const { return mId; }
bool operator==(const GpuProcessFencesHolderId& aOther) const {
bool operator==(const CompositeProcessFencesHolderId& aOther) const {
return mId == aOther.mId;
}
bool operator!=(const GpuProcessFencesHolderId& aOther) const {
bool operator!=(const CompositeProcessFencesHolderId& aOther) const {
return !(*this == aOther);
}
@ -486,7 +486,7 @@ struct GpuProcessFencesHolderId {
// std::unordered_map<GpuProcessQueryId, ValueType,
// GpuProcessQueryId::HashFn> myMap;
struct HashFn {
std::size_t operator()(const GpuProcessFencesHolderId aKey) const {
std::size_t operator()(const CompositeProcessFencesHolderId aKey) const {
return std::hash<uint64_t>{}(aKey.mId);
}
};

View file

@ -33,13 +33,13 @@ CompositeProcessD3D11FencesHolderMap::CompositeProcessD3D11FencesHolderMap()
CompositeProcessD3D11FencesHolderMap::~CompositeProcessD3D11FencesHolderMap() {}
void CompositeProcessD3D11FencesHolderMap::Register(
GpuProcessFencesHolderId aHolderId) {
CompositeProcessFencesHolderId aHolderId) {
MonitorAutoLock lock(mMonitor);
mFencesHolderById[aHolderId] = MakeUnique<FencesHolder>();
}
void CompositeProcessD3D11FencesHolderMap::Unregister(
GpuProcessFencesHolderId aHolderId) {
CompositeProcessFencesHolderId aHolderId) {
MonitorAutoLock lock(mMonitor);
auto it = mFencesHolderById.find(aHolderId);
@ -50,7 +50,7 @@ void CompositeProcessD3D11FencesHolderMap::Unregister(
}
void CompositeProcessD3D11FencesHolderMap::SetWriteFence(
GpuProcessFencesHolderId aHolderId, RefPtr<FenceD3D11> aWriteFence) {
CompositeProcessFencesHolderId aHolderId, RefPtr<FenceD3D11> aWriteFence) {
MOZ_ASSERT(aWriteFence);
if (!aWriteFence) {
@ -78,7 +78,7 @@ void CompositeProcessD3D11FencesHolderMap::SetWriteFence(
}
void CompositeProcessD3D11FencesHolderMap::SetReadFence(
GpuProcessFencesHolderId aHolderId, RefPtr<FenceD3D11> aReadFence) {
CompositeProcessFencesHolderId aHolderId, RefPtr<FenceD3D11> aReadFence) {
MOZ_ASSERT(aReadFence);
if (!aReadFence) {
@ -103,7 +103,7 @@ void CompositeProcessD3D11FencesHolderMap::SetReadFence(
}
bool CompositeProcessD3D11FencesHolderMap::WaitWriteFence(
GpuProcessFencesHolderId aHolderId, ID3D11Device* aDevice) {
CompositeProcessFencesHolderId aHolderId, ID3D11Device* aDevice) {
MOZ_ASSERT(aDevice);
if (!aDevice) {
@ -130,7 +130,7 @@ bool CompositeProcessD3D11FencesHolderMap::WaitWriteFence(
}
bool CompositeProcessD3D11FencesHolderMap::WaitAllFencesAndForget(
GpuProcessFencesHolderId aHolderId, ID3D11Device* aDevice) {
CompositeProcessFencesHolderId aHolderId, ID3D11Device* aDevice) {
MOZ_ASSERT(aDevice);
if (!aDevice) {

View file

@ -32,17 +32,17 @@ class CompositeProcessD3D11FencesHolderMap {
CompositeProcessD3D11FencesHolderMap();
~CompositeProcessD3D11FencesHolderMap();
void Register(GpuProcessFencesHolderId aHolderId);
void Unregister(GpuProcessFencesHolderId aHolderId);
void Register(CompositeProcessFencesHolderId aHolderId);
void Unregister(CompositeProcessFencesHolderId aHolderId);
void SetWriteFence(GpuProcessFencesHolderId aHolderId,
void SetWriteFence(CompositeProcessFencesHolderId aHolderId,
RefPtr<FenceD3D11> aWriteFence);
void SetReadFence(GpuProcessFencesHolderId aHolderId,
void SetReadFence(CompositeProcessFencesHolderId aHolderId,
RefPtr<FenceD3D11> aReadFence);
bool WaitWriteFence(GpuProcessFencesHolderId aHolderId,
bool WaitWriteFence(CompositeProcessFencesHolderId aHolderId,
ID3D11Device* aDevice);
bool WaitAllFencesAndForget(GpuProcessFencesHolderId aHolderId,
bool WaitAllFencesAndForget(CompositeProcessFencesHolderId aHolderId,
ID3D11Device* aDevice);
private:
@ -55,8 +55,8 @@ class CompositeProcessD3D11FencesHolderMap {
mutable Monitor mMonitor MOZ_UNANNOTATED;
std::unordered_map<GpuProcessFencesHolderId, UniquePtr<FencesHolder>,
GpuProcessFencesHolderId::HashFn>
std::unordered_map<CompositeProcessFencesHolderId, UniquePtr<FencesHolder>,
CompositeProcessFencesHolderId::HashFn>
mFencesHolderById;
static StaticAutoPtr<CompositeProcessD3D11FencesHolderMap> sInstance;

View file

@ -733,7 +733,7 @@ DXGIYCbCrTextureData* DXGIYCbCrTextureData::Create(
return nullptr;
}
auto fencesHolderId = GpuProcessFencesHolderId::GetNext();
auto fencesHolderId = CompositeProcessFencesHolderId::GetNext();
fenceHolderMap->Register(fencesHolderId);
RefPtr<ID3D11Texture2D> textures[3] = {aTextureY, aTextureCb, aTextureCr};
@ -752,7 +752,7 @@ DXGIYCbCrTextureData::DXGIYCbCrTextureData(
const gfx::IntSize& aSizeY, const gfx::IntSize& aSizeCbCr,
const gfx::ColorDepth aColorDepth, const gfx::YUVColorSpace aYUVColorSpace,
const gfx::ColorRange aColorRange,
const GpuProcessFencesHolderId aFencesHolderId,
const CompositeProcessFencesHolderId aFencesHolderId,
const RefPtr<FenceD3D11> aWriteFence)
: mSize(aSize),
mSizeY(aSizeY),

View file

@ -207,7 +207,7 @@ class DXGIYCbCrTextureData : public TextureData {
const gfx::ColorDepth mColorDepth;
const gfx::YUVColorSpace mYUVColorSpace;
const gfx::ColorRange mColorRange;
const GpuProcessFencesHolderId mFencesHolderId;
const CompositeProcessFencesHolderId mFencesHolderId;
const RefPtr<FenceD3D11> mWriteFence;
protected:
@ -218,7 +218,7 @@ class DXGIYCbCrTextureData : public TextureData {
const gfx::ColorDepth aColorDepth,
const gfx::YUVColorSpace aYUVColorSpace,
const gfx::ColorRange aColorRange,
const GpuProcessFencesHolderId aFencesHolderId,
const CompositeProcessFencesHolderId aFencesHolderId,
const RefPtr<FenceD3D11> aWriteFence);
virtual ~DXGIYCbCrTextureData();
@ -397,7 +397,7 @@ class DXGITextureHostD3D11 : public TextureHost {
const gfx::IntSize mSize;
const gfx::SurfaceFormat mFormat;
const bool mHasKeyedMutex;
const Maybe<layers::GpuProcessFencesHolderId> mFencesHolderId;
const Maybe<layers::CompositeProcessFencesHolderId> mFencesHolderId;
const gfx::ColorSpace2 mColorSpace;
const gfx::ColorRange mColorRange;
};
@ -458,7 +458,7 @@ class DXGIYCbCrTextureHostD3D11 : public TextureHost {
const gfx::ColorDepth mColorDepth;
const gfx::YUVColorSpace mYUVColorSpace;
const gfx::ColorRange mColorRange;
const GpuProcessFencesHolderId mFencesHolderId;
const CompositeProcessFencesHolderId mFencesHolderId;
protected:
// Handles will be closed automatically when `UniqueFileHandle` gets

View file

@ -264,8 +264,8 @@ struct ParamTraits<mozilla::layers::GpuProcessTextureId> {
};
template <>
struct ParamTraits<mozilla::layers::GpuProcessFencesHolderId> {
typedef mozilla::layers::GpuProcessFencesHolderId paramType;
struct ParamTraits<mozilla::layers::CompositeProcessFencesHolderId> {
typedef mozilla::layers::CompositeProcessFencesHolderId paramType;
static void Write(MessageWriter* writer, const paramType& param) {
WriteParam(writer, param.mId);

View file

@ -29,7 +29,7 @@ using mozilla::layers::RemoteTextureId from "mozilla/layers/LayersTypes.h";
using mozilla::layers::RemoteTextureOwnerId from "mozilla/layers/LayersTypes.h";
[RefCounted] using mozilla::layers::GpuFence from "mozilla/layers/GpuFence.h";
using mozilla::layers::GpuProcessTextureId from "mozilla/layers/LayersTypes.h";
using mozilla::layers::GpuProcessFencesHolderId from "mozilla/layers/LayersTypes.h";
using mozilla::layers::CompositeProcessFencesHolderId from "mozilla/layers/LayersTypes.h";
using mozilla::wr::ExternalImageSource from "mozilla/webrender/WebRenderTypes.h";
using mozilla::wr::ExternalImageId from "mozilla/webrender/WebRenderTypes.h";
using mozilla::layers::SurfaceDescriptorRemoteDecoderId from "mozilla/layers/LayersTypes.h";
@ -47,7 +47,7 @@ namespace layers {
ColorSpace2 colorSpace;
ColorRange colorRange;
bool hasKeyedMutex;
GpuProcessFencesHolderId? fencesHolderId;
CompositeProcessFencesHolderId? fencesHolderId;
};
[Comparable] struct SurfaceDescriptorDXGIYCbCr {
@ -60,7 +60,7 @@ namespace layers {
ColorDepth colorDepth;
YUVColorSpace yUVColorSpace;
ColorRange colorRange;
GpuProcessFencesHolderId fencesHolderId;
CompositeProcessFencesHolderId fencesHolderId;
};
[Comparable] struct SurfaceDescriptorMacIOSurface {

View file

@ -323,7 +323,7 @@ void gfxPlatformGtk::InitWebRenderConfig() {
// HDR requires compositor to work
#if defined(MOZ_WAYLAND)
if (StaticPrefs::gfx_wayland_hdr_AtStartup()) {
feature.EnableByDefault();
feature.UserForceEnable("Requested for HDR");
}
if (feature.IsEnabled()) {
if (!StaticPrefs::gfx_wayland_hdr_AtStartup()) {

View file

@ -30,7 +30,7 @@ RenderDXGITextureHost::RenderDXGITextureHost(
const uint32_t aArrayIndex, const gfx::SurfaceFormat aFormat,
const gfx::ColorSpace2 aColorSpace, const gfx::ColorRange aColorRange,
const gfx::IntSize aSize, bool aHasKeyedMutex,
const Maybe<layers::GpuProcessFencesHolderId>& aFencesHolderId)
const Maybe<layers::CompositeProcessFencesHolderId>& aFencesHolderId)
: mHandle(aHandle),
mGpuProcessTextureId(aGpuProcessTextureId),
mArrayIndex(aArrayIndex),
@ -477,7 +477,7 @@ RenderDXGIYCbCrTextureHost::RenderDXGIYCbCrTextureHost(
const gfx::YUVColorSpace aYUVColorSpace, const gfx::ColorDepth aColorDepth,
const gfx::ColorRange aColorRange, const gfx::IntSize aSizeY,
const gfx::IntSize aSizeCbCr,
const layers::GpuProcessFencesHolderId aFencesHolderId)
const layers::CompositeProcessFencesHolderId aFencesHolderId)
: mHandles{aHandles[0], aHandles[1], aHandles[2]},
mSurfaces{0},
mStreams{0},

View file

@ -32,7 +32,7 @@ class RenderDXGITextureHost final : public RenderTextureHostSWGL {
const uint32_t aArrayIndex, const gfx::SurfaceFormat aFormat,
const gfx::ColorSpace2 aColorSpace, const gfx::ColorRange aColorRange,
const gfx::IntSize aSize, const bool aHasKeyedMutex,
const Maybe<layers::GpuProcessFencesHolderId>& aFencesHolderId);
const Maybe<layers::CompositeProcessFencesHolderId>& aFencesHolderId);
wr::WrExternalImage Lock(uint8_t aChannelIndex, gl::GLContext* aGL) override;
void Unlock() override;
@ -127,7 +127,7 @@ class RenderDXGITextureHost final : public RenderTextureHostSWGL {
const gfx::ColorRange mColorRange;
const gfx::IntSize mSize;
const bool mHasKeyedMutex;
const Maybe<layers::GpuProcessFencesHolderId> mFencesHolderId;
const Maybe<layers::CompositeProcessFencesHolderId> mFencesHolderId;
private:
bool mLocked;
@ -140,7 +140,7 @@ class RenderDXGIYCbCrTextureHost final : public RenderTextureHostSWGL {
const gfx::YUVColorSpace aYUVColorSpace,
const gfx::ColorDepth aColorDepth, const gfx::ColorRange aColorRange,
const gfx::IntSize aSizeY, const gfx::IntSize aSizeCbCr,
const layers::GpuProcessFencesHolderId aFencesHolderId);
const layers::CompositeProcessFencesHolderId aFencesHolderId);
RenderDXGIYCbCrTextureHost* AsRenderDXGIYCbCrTextureHost() override {
return this;
@ -217,7 +217,7 @@ class RenderDXGIYCbCrTextureHost final : public RenderTextureHostSWGL {
const gfx::ColorRange mColorRange;
const gfx::IntSize mSizeY;
const gfx::IntSize mSizeCbCr;
const layers::GpuProcessFencesHolderId mFencesHolderId;
const layers::CompositeProcessFencesHolderId mFencesHolderId;
bool mLocked = false;
};

View file

@ -4,7 +4,6 @@ android-gradle-plugin = "8.9.1" # Keep lint version in sync
lint = "31.9.1"
python-envs-plugin = "0.0.31"
mozilla-glean = "64.0.1"
maven-ant-tasks = "2.1.3"
jacoco = "0.8.12"
okhttp = "4.12.0"
@ -63,7 +62,7 @@ osslicenses-plugin = "0.10.6"
play-review = "2.0.2"
play-services-ads-id = "18.1.0"
play-services-base = "18.6.0"
play-services-fido = "21.1.0"
play-services-fido = "21.2.0"
protobuf = "4.30.2" # Keep Protobuf in sync with the version used by AppServices.
# Gradle plugins
@ -77,6 +76,10 @@ kotlin = "2.1.20" # remember to change ksp-plugin
ksp-plugin = "2.1.20-1.0.32"
serialization = "1.8.1"
# Mozilla versions
apilint = "0.5.4"
mozilla-glean = "64.0.1"
# Testing versions
androidx-test = "1.6.1"
androidx-test-espresso = "3.6.1"
@ -94,7 +97,6 @@ robolectric = "4.14.1"
adjust = "5.1.0"
sentry = "8.6.0"
apilint = "0.5.3"
commons-exec = "1.3"
spotless = "6.25.0"
tomlj = "1.1.0"

View file

@ -750,10 +750,11 @@ audio[controls] {
transform: translate(0) !important;
}
video > .caption-box {
video > .caption-box:-moz-native-anonymous {
width: 100%;
height: 100%;
position: relative;
pointer-events: none;
}
/**

View file

@ -1851,28 +1851,6 @@
file="src/main/res/drawable-xxhdpi"/>
</issue>
<issue
id="SmallSp"
message="Avoid using sizes smaller than `11sp`: `10sp`"
errorLine1=" android:textSize=&quot;10sp&quot;"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/res/layout/account_share_list_item.xml"
line="39"
column="9"/>
</issue>
<issue
id="SmallSp"
message="Avoid using sizes smaller than `11sp`: `10sp`"
errorLine1=" android:textSize=&quot;10sp&quot;"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/res/layout/app_share_list_item.xml"
line="37"
column="9"/>
</issue>
<issue
id="ClickableViewAccessibility"
message="Custom view ``SearchDialogFragmentConstraintLayout`` has `setOnTouchListener` called on it but does not override `performClick`"

View file

@ -7,6 +7,7 @@
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:ignore="SmallSp"
android:layout_width="76dp"
android:layout_height="80dp"
android:background="?selectableItemBackgroundBorderless">

View file

@ -7,6 +7,7 @@
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:ignore="SmallSp"
android:layout_width="76dp"
android:layout_height="80dp"
android:background="?selectableItemBackgroundBorderless">

View file

@ -41,6 +41,9 @@ def test(mod, path, entity=None):
if re.match(r"toolkit/about/[^/]*Webrtc.ftl", path):
# error on toolkit/about/*Webrtc.ftl
return "error"
if re.match(r"toolkit/about/[^/]*Logging.ftl", path):
# error on toolkit/about/*Logging.ftl
return "error"
return "ignore"
if mod == "dom":

View file

@ -48,6 +48,8 @@ relativesrcdir toolkit/locales:
toolkit/about (%toolkit/about/*Compat.ftl)
#about:webrtc
toolkit/about (%toolkit/about/*Webrtc.ftl)
#about:logging
toolkit/about (%toolkit/about/*Logging.ftl)
#endif
# Do not add files below the endif. Reviewers, expand more context above
# for comments.

View file

@ -173,6 +173,10 @@ exclude-multi-locale = [
reference = "toolkit/locales/en-US/toolkit/about/*Webrtc.ftl"
l10n = "{l}toolkit/toolkit/about/*Webrtc.ftl"
[[paths]]
reference = "toolkit/locales/en-US/toolkit/about/*Logging.ftl"
l10n = "{l}toolkit/toolkit/about/*Logging.ftl"
[[filters]]
path = [
"{l}mobile/android/mobile-l10n.js",

View file

@ -41,6 +41,9 @@ def test(mod, path, entity=None):
if re.match(r"toolkit/about/[^/]*Webrtc.ftl", path):
# error on toolkit/about/*Webrtc.ftl
return "error"
if re.match(r"toolkit/about/[^/]*Logging.ftl", path):
# error on toolkit/about/*Logging.ftl
return "error"
return "ignore"
if mod == "dom":

View file

@ -6,7 +6,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"an": {
"pin": false,
@ -15,7 +15,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"ar": {
"pin": false,
@ -24,7 +24,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"ast": {
"pin": false,
@ -33,7 +33,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"az": {
"pin": false,
@ -42,7 +42,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"be": {
"pin": false,
@ -51,7 +51,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"bg": {
"pin": false,
@ -60,7 +60,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"bn": {
"pin": false,
@ -69,7 +69,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"br": {
"pin": false,
@ -78,7 +78,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"bs": {
"pin": false,
@ -87,7 +87,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"ca": {
"pin": false,
@ -96,7 +96,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"cak": {
"pin": false,
@ -105,7 +105,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"cs": {
"pin": false,
@ -114,7 +114,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"cy": {
"pin": false,
@ -123,7 +123,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"da": {
"pin": false,
@ -132,7 +132,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"de": {
"pin": false,
@ -141,7 +141,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"dsb": {
"pin": false,
@ -150,7 +150,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"el": {
"pin": false,
@ -159,7 +159,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"en-CA": {
"pin": false,
@ -168,7 +168,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"en-GB": {
"pin": false,
@ -177,7 +177,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"eo": {
"pin": false,
@ -186,7 +186,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"es-AR": {
"pin": false,
@ -195,7 +195,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"es-CL": {
"pin": false,
@ -204,7 +204,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"es-ES": {
"pin": false,
@ -213,7 +213,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"es-MX": {
"pin": false,
@ -222,7 +222,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"et": {
"pin": false,
@ -231,7 +231,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"eu": {
"pin": false,
@ -240,7 +240,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"fa": {
"pin": false,
@ -249,7 +249,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"ff": {
"pin": false,
@ -258,7 +258,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"fi": {
"pin": false,
@ -267,7 +267,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"fr": {
"pin": false,
@ -276,7 +276,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"fy-NL": {
"pin": false,
@ -285,7 +285,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"ga-IE": {
"pin": false,
@ -294,7 +294,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"gd": {
"pin": false,
@ -303,7 +303,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"gl": {
"pin": false,
@ -312,7 +312,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"gn": {
"pin": false,
@ -321,7 +321,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"gu-IN": {
"pin": false,
@ -330,7 +330,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"he": {
"pin": false,
@ -339,7 +339,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"hi-IN": {
"pin": false,
@ -348,7 +348,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"hr": {
"pin": false,
@ -357,7 +357,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"hsb": {
"pin": false,
@ -366,7 +366,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"hu": {
"pin": false,
@ -375,7 +375,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"hy-AM": {
"pin": false,
@ -384,7 +384,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"ia": {
"pin": false,
@ -393,7 +393,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"id": {
"pin": false,
@ -402,7 +402,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"is": {
"pin": false,
@ -411,7 +411,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"it": {
"pin": false,
@ -420,7 +420,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"ja": {
"pin": false,
@ -429,7 +429,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"ka": {
"pin": false,
@ -438,7 +438,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"kab": {
"pin": false,
@ -447,7 +447,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"kk": {
"pin": false,
@ -456,7 +456,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"km": {
"pin": false,
@ -465,7 +465,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"kn": {
"pin": false,
@ -474,7 +474,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"ko": {
"pin": false,
@ -483,7 +483,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"lij": {
"pin": false,
@ -492,7 +492,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"lo": {
"pin": false,
@ -501,7 +501,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"lt": {
"pin": false,
@ -510,7 +510,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"ltg": {
"pin": false,
@ -519,7 +519,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"lv": {
"pin": false,
@ -528,7 +528,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"meh": {
"pin": false,
@ -537,7 +537,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"mix": {
"pin": false,
@ -546,7 +546,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"ml": {
"pin": false,
@ -555,7 +555,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"mr": {
"pin": false,
@ -564,7 +564,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"ms": {
"pin": false,
@ -573,7 +573,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"my": {
"pin": false,
@ -582,7 +582,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"nb-NO": {
"pin": false,
@ -591,7 +591,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"ne-NP": {
"pin": false,
@ -600,7 +600,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"nl": {
"pin": false,
@ -609,7 +609,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"nn-NO": {
"pin": false,
@ -618,7 +618,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"oc": {
"pin": false,
@ -627,7 +627,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"pa-IN": {
"pin": false,
@ -636,7 +636,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"pl": {
"pin": false,
@ -645,7 +645,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"pt-BR": {
"pin": false,
@ -654,7 +654,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"pt-PT": {
"pin": false,
@ -663,7 +663,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"rm": {
"pin": false,
@ -672,7 +672,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"ro": {
"pin": false,
@ -681,7 +681,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"ru": {
"pin": false,
@ -690,7 +690,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"sk": {
"pin": false,
@ -699,7 +699,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"sl": {
"pin": false,
@ -708,7 +708,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"son": {
"pin": false,
@ -717,7 +717,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"sq": {
"pin": false,
@ -726,7 +726,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"sr": {
"pin": false,
@ -735,7 +735,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"sv-SE": {
"pin": false,
@ -744,7 +744,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"ta": {
"pin": false,
@ -753,7 +753,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"te": {
"pin": false,
@ -762,7 +762,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"th": {
"pin": false,
@ -771,7 +771,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"tl": {
"pin": false,
@ -780,7 +780,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"tr": {
"pin": false,
@ -789,7 +789,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"trs": {
"pin": false,
@ -798,7 +798,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"uk": {
"pin": false,
@ -807,7 +807,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"ur": {
"pin": false,
@ -816,7 +816,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"uz": {
"pin": false,
@ -825,7 +825,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"vi": {
"pin": false,
@ -834,7 +834,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"wo": {
"pin": false,
@ -843,7 +843,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"xh": {
"pin": false,
@ -852,7 +852,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"zam": {
"pin": false,
@ -861,7 +861,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"zh-CN": {
"pin": false,
@ -870,7 +870,7 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
},
"zh-TW": {
"pin": false,
@ -879,6 +879,6 @@
"android-arm",
"android-multilocale"
],
"revision": "0172b7fc7afb60368e3c46e08bedcd07d04e84df"
"revision": "ba37989b472ed930cfdfa87d4b7c00cc89bd4933"
}
}

View file

@ -3718,6 +3718,23 @@ pref("toolkit.aboutProcesses.showProfilerIcons", true);
// profile is captured.
pref("toolkit.aboutProcesses.profileDuration", 5);
// This preference controls how about:logging handles profiles when stopping:
// either it opens the profile in a new tab on profiler.firefox.com, or it
// uploads it directly to the cloud storage, providing the URL.
// On Android, it's not currently possible to capture a profile this way,
// therefore the profile is uploaded by default.
#if !defined(MOZ_WIDGET_ANDROID)
pref("toolkit.aboutLogging.uploadProfileToCloud", false);
#else
pref("toolkit.aboutLogging.uploadProfileToCloud", true);
#endif
// The pref "toolkit.aboutlogging.uploadProfileUrl" can also be set to change
// the upload endpoint. The comment below shows the default value. It's not
// defined usually because we don't expect our users, even advanced, to change
// it, and therefore this will likely only be used in our tests.
// pref("toolkit.aboutlogging.uploadProfileUrl", "https://api.profiler.firefox.com/compressed-store");
// When a crash happens, whether to include heap regions of the crash context
// in the minidump. Enabled by default on nightly and aurora.
#ifdef RELEASE_OR_BETA

View file

@ -534,6 +534,45 @@ networking:
In TRR channel, overall load time.
expires: never
trr_response_size: &trr_response_size
type: labeled_memory_distribution
memory_unit: byte
description: >
In TRR channel, the size of the HTTP response.
bugs:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1957859
data_reviews:
- https://bugzilla.mozilla.org/show_bug.cgi?id=1957859
notification_emails:
- necko@mozilla.com
- kershaw@mozilla.com
labels:
- mozilla.cloudflare-dns.com
- firefox.dns.nextdns.io
- private.canadianshield.cira.ca
- doh.xfinity.com
- dns.shaw.ca
- dooh.cloudflare-dns.com
- mozilla.cloudflare-dns.com_2
- firefox.dns.nextdns.io_2
- private.canadianshield.cira.ca_2
- doh.xfinity.com_2
- dns.shaw.ca_2
- dooh.cloudflare-dns.com_2
- mozilla.cloudflare-dns.com_3
- firefox.dns.nextdns.io_3
- private.canadianshield.cira.ca_3
- doh.xfinity.com_3
- dns.shaw.ca_3
- dooh.cloudflare-dns.com_3
expires: never
trr_request_size:
<<: *trr_response_size
description: >
In TRR channel, the size of the HTTP request.
expires: never
dns_renewal_time:
type: timing_distribution
time_unit: millisecond

View file

@ -1125,7 +1125,8 @@ TRRServiceChannel::OnDataAvailable(nsIRequest* request, nsIInputStream* input,
return NS_ERROR_ABORT;
}
static void TelemetryReport(nsITimedChannel* aTimedChannel) {
static void TelemetryReport(nsITimedChannel* aTimedChannel,
uint64_t aRequestSize, uint64_t aTransferSize) {
TimeStamp asyncOpen;
nsresult rv = aTimedChannel->GetAsyncOpen(&asyncOpen);
if (NS_FAILED(rv)) {
@ -1211,6 +1212,8 @@ static void TelemetryReport(nsITimedChannel* aTimedChannel) {
.AccumulateRawDuration(responseStart - asyncOpen);
}
}
glean::networking::trr_request_size.Get(key).Accumulate(aRequestSize);
glean::networking::trr_response_size.Get(key).Accumulate(aTransferSize);
}
NS_IMETHODIMP
@ -1222,6 +1225,8 @@ TRRServiceChannel::OnStopRequest(nsIRequest* request, nsresult status) {
if (mCanceled || NS_FAILED(mStatus)) status = mStatus;
mTransactionTimings = mTransaction->Timings();
mRequestSize = mTransaction->GetRequestSize();
mTransferSize = mTransaction->GetTransferSize();
mTransaction = nullptr;
mTransactionPump = nullptr;
@ -1243,7 +1248,7 @@ TRRServiceChannel::OnStopRequest(nsIRequest* request, nsresult status) {
}
ReleaseListeners();
TelemetryReport(this);
TelemetryReport(this, mRequestSize, mTransferSize);
return NS_OK;
}

View file

@ -909,6 +909,15 @@ add_task(
await Glean.networking.trrRequestCount.private.testGetValue(),
2
);
// We've made 4 TRR requests.
Assert.equal(
await Glean.networking.trrRequestSize.other.testGetValue().count,
4
);
Assert.equal(
await Glean.networking.trrResponseSize.other.testGetValue().count,
4
);
}
);

View file

@ -7,6 +7,7 @@
#define mozilla_Sandbox_h
#include <string>
#include <vector>
#include "mozilla/ipc/UtilityProcessSandboxing.h"
enum MacSandboxType {

View file

@ -437,6 +437,19 @@ def run_remaining_transforms(config, tasks):
yield from xforms(config, [task])
@transforms.add
def define_tags(config, tasks):
for task in tasks:
tags = task.setdefault("tags", {})
tags.setdefault("test-suite", task["suite"])
tags.setdefault("test-platform", task["test-platform"])
variant = task.get("attributes", {}).get("unittest_variant")
if variant:
tags.setdefault("test-variant", variant)
yield task
@transforms.add
def make_job_description(config, tasks):
"""Convert *test* descriptions to *job* descriptions (input to

View file

@ -3634,7 +3634,7 @@ toolbar#nav-bar {
prefs = list(self.prefs_by_manifest[m])[0]
self.extraPrefs = origPrefs.copy()
if prefs:
prefs = prefs.strip().split()
prefs = [p.strip() for p in prefs.strip().split("\n")]
self.log.info(
"The following extra prefs will be set:\n {}".format(
"\n ".join(prefs)

View file

@ -259,7 +259,7 @@ def test_prefs_validation_with_ancestor_manifest(get_active_tests, create_manife
assert len(prefs) == 1
assert (
prefs.pop()
== "\nbrowser.dom.foo=fleem\nflower=rose \nfoo=bar\nbrowser.dom.foo=baz"
== "\nbrowser.dom.foo=fleem\nflower=rose\n\nfoo=bar\nbrowser.dom.foo=baz"
)

View file

@ -194,7 +194,7 @@ def combine_fields(global_vars, local_vars):
return global_vars.copy()
field_patterns = {
"args": "%s %s",
"prefs": "%s %s",
"prefs": "%s\n%s",
"skip-if": "%s\n%s", # consider implicit logical OR: "%s ||\n%s"
"support-files": "%s %s",
"tags": "%s %s",

View file

@ -10,3 +10,7 @@
[clear in double partitioned with intermediate cross origin context doesn't clear unpartitioned data]
expected:
if tsan: [PASS, TIMEOUT]
[clear in cross origin iframe doesn't affect embedder]
expected:
if (processor == "x86") and (os == "linux"): [PASS, FAIL]

View file

@ -18,11 +18,13 @@
expected: ERROR
[decompression-bad-chunks.tentative.https.any.shadowrealm-in-serviceworker.html]
expected: [ERROR, TIMEOUT]
expected:
if (os == "win") and not debug and (processor == "x86_64"): [CRASH, ERROR, TIMEOUT]
[ERROR, TIMEOUT]
[decompression-bad-chunks.tentative.https.any.shadowrealm-in-audioworklet.html]
expected:
if os == "linux": [TIMEOUT, ERROR]
if os == "linux": [ERROR, TIMEOUT]
ERROR
[decompression-bad-chunks.tentative.any.shadowrealm-in-window.html]

View file

@ -1,6 +1,5 @@
[change_eventhandler_for_http_cookie_and_set_cookie_headers.https.window.html]
[CookieStore agreed with HTTP headers agree on encoding non-ASCII cookies]
expected:
if (os == "mac") and (version == "OS X 14.7.1"): FAIL
if (os == "mac") and (version == "OS X 14.7"): PASS
if os == "mac": PASS
[PASS, FAIL]

View file

@ -1,6 +1,7 @@
[partitioned-cookies-a-b-a-embed.tentative.https.html]
expected:
if (os == "win") and debug and (processor == "x86_64"): [OK, ERROR]
if (os == "win") and not debug and (processor == "x86"): [OK, ERROR]
if (os == "mac") and not debug: [OK, ERROR]
if (os == "linux") and (processor == "x86"): [OK, ERROR]
if (os == "win") and debug and (processor == "x86"): OK
if (os == "mac") and debug: OK
if (os == "linux") and (processor == "x86_64"): OK
if os == "android": OK
[OK, ERROR]

View file

@ -0,0 +1,2 @@
[column-height-010.html]
expected: FAIL

View file

@ -0,0 +1,2 @@
[column-height-012.html]
expected: FAIL

View file

@ -0,0 +1,3 @@
[root-scroll-button-activation.html]
[CSS Overflow: ::scroll-button on root element activation]
expected: FAIL

View file

@ -0,0 +1,2 @@
[root-scroll-button.html]
expected: FAIL

View file

@ -0,0 +1,4 @@
[root-scroll-marker-activation-in-iframe.html]
expected: TIMEOUT
[CSS Overflow: ::scroll-marker with ::scroll-marker-group on root element doesn't propagate scrolling]
expected: TIMEOUT

View file

@ -0,0 +1,2 @@
[scroll-marker-contain-005.tentative.html]
expected: FAIL

View file

@ -0,0 +1,2 @@
[scroll-marker-contain-006.tentative.html]
expected: FAIL

View file

@ -0,0 +1,2 @@
[scroll-marker-contain-007.tentative.html]
expected: FAIL

View file

@ -0,0 +1,3 @@
[interactivity-inert-all.tentative.html]
[The 'all' shorthand should not set 'interactivity']
expected: FAIL

View file

@ -1,4 +1,4 @@
[scroller-child.html]
expected:
if (os == "android") and not swgl and debug: TIMEOUT
if (os == "android") and not swgl and not debug: [PASS, TIMEOUT]
if (os == "linux") and asan and fission: TIMEOUT
if (os == "android") and not debug: [PASS, TIMEOUT]

View file

@ -26,12 +26,12 @@
[Scroll positions when performing smooth scrolling from (1000, 500) to (500, 250) using scroll() ]
expected:
if not fission and (os == "linux") and debug: [PASS, FAIL]
if (os == "linux") and debug and not fission: [PASS, FAIL]
[Scroll positions when performing smooth scrolling from (1000, 0) to (500, 250) using scrollTo() ]
expected:
if not fission and (os == "linux") and debug: [PASS, FAIL]
if (os == "linux") and debug and not fission: [PASS, FAIL]
[Scroll positions when performing smooth scrolling from (0, 0) to (500, 250) using scrollTo() ]
expected:
if not fission and (os == "linux") and debug: [PASS, FAIL]
if (os == "linux") and debug and not fission: [PASS, FAIL]

View file

@ -1,4 +1,6 @@
[textencoder-utf16-surrogates.any.html]
expected:
if (processor == "x86") and (os == "linux"): [OK, ERROR]
[textencoder-utf16-surrogates.any.worker.html]

View file

@ -1,3 +0,0 @@
[clearkey-mp4-playback-destroy-persistent-license.https.html]
disabled: https://bugzilla.mozilla.org/show_bug.cgi?id=1313284

View file

@ -1,3 +0,0 @@
[clearkey-mp4-playback-persistent-license-events.https.html]
disabled: https://bugzilla.mozilla.org/show_bug.cgi?id=1313284

View file

@ -1,3 +0,0 @@
[clearkey-mp4-playback-persistent-license.https.html]
disabled: https://bugzilla.mozilla.org/show_bug.cgi?id=1313284

View file

@ -1,3 +0,0 @@
[clearkey-mp4-playback-retrieve-destroy-persistent-license.https.html]
disabled: https://bugzilla.mozilla.org/show_bug.cgi?id=1313284

View file

@ -1,3 +0,0 @@
[clearkey-mp4-playback-retrieve-persistent-license.https.html]
disabled: https://bugzilla.mozilla.org/show_bug.cgi?id=1313284

View file

@ -14,16 +14,17 @@
[FedCM disabled in 2 level deep nested iframe where middle iframe does not have permission policy]
expected:
if os == "win": [PASS, TIMEOUT]
if (os == "mac") and (version == "OS X 14.7"): PASS
[PASS, TIMEOUT]
[FedCM disabled in 2 level deep nested iframe where innermost iframe does not have permission policy]
expected:
if (os == "mac") and (version == "OS X 14.7.1"): [TIMEOUT, PASS, NOTRUN]
if (os == "mac") and (version == "OS X 14.7.1"): [PASS, NOTRUN, TIMEOUT]
if (os == "mac") and (version == "OS X 14.7"): [PASS, TIMEOUT, NOTRUN]
[PASS, NOTRUN]
[FedCM should work in non-HTTPS URLs on localhost]
expected:
if (os == "mac") and (version == "OS X 14.7.1"): [NOTRUN, FAIL, TIMEOUT]
if (os == "mac") and (version == "OS X 14.7.1"): [TIMEOUT, NOTRUN, FAIL]
if (os == "mac") and (version == "OS X 14.7"): [FAIL, TIMEOUT, NOTRUN]
[FAIL, TIMEOUT]

View file

@ -1,16 +1,30 @@
[lfedcm-identity.create-store-collect.tentative.sub.https.html]
expected:
if (os == "mac") and (version == "OS X 14.7.1") and debug: [OK, TIMEOUT]
if (os == "mac") and (version == "OS X 14.7.1") and not debug: [TIMEOUT, OK]
if (os == "mac") and (version == "OS X 14.7.1"): [TIMEOUT, OK]
[Credentials can be collected silently, but preventSilentAccess is respected]
expected:
if (os == "mac") and (version == "OS X 14.7.1") and debug: [PASS, TIMEOUT]
if (os == "mac") and (version == "OS X 14.7.1") and not debug: [NOTRUN, PASS, TIMEOUT]
if (os == "mac") and (version == "OS X 14.7.1"): [NOTRUN, PASS, TIMEOUT]
[Cross-origin identity credential collection is correctly returned when the type matches]
expected:
if (os == "mac") and (version == "OS X 14.7.1") and not debug: TIMEOUT
if (os == "mac") and (version == "OS X 14.7.1"): NOTRUN
[Cross-origin identity credential collection is correctly filtered when the type does not match]
expected:
if (os == "mac") and (version == "OS X 14.7.1") and not debug: NOTRUN
if (os == "mac") and (version == "OS X 14.7.1"): NOTRUN
[Cross-origin identity credential collection is correctly returned when the effective origin is the relying party]
expected:
if (os == "mac") and (version == "OS X 14.7.1"): [NOTRUN, TIMEOUT]
[Cross-origin identity credential collection is correctly filtered when the endpoint doesn't have CORS]
expected:
if (os == "mac") and (version == "OS X 14.7.1"): NOTRUN
[Cross-origin identity credential collection is correctly filtered when the effective origin is not the relying party]
expected:
if (os == "mac") and (version == "OS X 14.7.1"): [TIMEOUT, PASS]
[Cross-origin identity credential collection is correctly returned when the endpoint returns success]
expected:
if (os == "mac") and (version == "OS X 14.7.1"): NOTRUN

View file

@ -7,19 +7,21 @@
expected:
if os == "android": [OK, CRASH]
[HTTP cache updates stored headers from a Last-Modified 304]
expected: [PASS, FAIL]
expected:
if debug and (os == "linux") and fission: [FAIL, PASS]
if debug and (os == "android") and sessionHistoryInParent: [FAIL, PASS]
[PASS, FAIL]
[304-update.any.serviceworker.html]
expected:
if (processor == "x86_64") and (os == "mac") and not debug: [OK, ERROR]
if (processor == "x86_64") and (os == "android") and not debug: [OK, ERROR]
if (processor == "x86") and debug: [OK, ERROR, TIMEOUT]
if (processor == "x86") and not debug: [OK, TIMEOUT]
if (os == "win") and (processor == "x86") and debug: [OK, ERROR, TIMEOUT]
if (os == "win") and (processor == "x86") and not debug: [OK, TIMEOUT]
if (os == "mac") and not debug: [OK, ERROR]
if (os == "linux") and (processor == "x86"): [OK, TIMEOUT]
if (os == "android") and not debug: [OK, ERROR]
[HTTP cache updates stored headers from a Last-Modified 304]
expected:
if (os == "linux") and not debug and fission and (processor == "x86_64") and not asan and not tsan: [FAIL, PASS]
[PASS, FAIL]
expected: [PASS, FAIL]
[Content-* header]
expected:
@ -28,6 +30,4 @@
[304-update.any.sharedworker.html]
[HTTP cache updates stored headers from a Last-Modified 304]
expected:
if (os == "win") and not debug and (processor == "x86_64"): PASS
[PASS, FAIL]
expected: [PASS, FAIL]

View file

@ -2,7 +2,7 @@
[select can be nested inside a popover]
expected:
if os == "android": FAIL
if (os == "win") and debug and (processor == "x86_64"): PASS
if (os == "win") and debug and (processor == "x86_64"): [PASS, FAIL]
if os == "linux": PASS
[PASS, FAIL]

View file

@ -5,22 +5,10 @@
[Popover focus navigation with imperative invocation]
expected: FAIL
[Cases where the next focus candidate isn't in the direct parent scope with imperative invocation]
expected:
if os == "android": PASS
FAIL
[Popover focus navigation with command/commandfor invocation]
expected: FAIL
[Circular reference tab navigation with command/commandfor invocation]
expected: FAIL
[Popover focus returns when popover is hidden by invoker with commandfor invocation]
expected: FAIL
[Popover focus only returns to invoker when focus is within the popover with command/commandfor invocation]
expected: FAIL
[Cases where the next focus candidate isn't in the direct parent scope with command/commandfor invocation]
expected: FAIL
[Popover focus navigation with popovertarget invocation]
expected:
if os == "android": PASS
FAIL

View file

@ -0,0 +1,9 @@
[popover-focus-3.html]
[Circular reference tab navigation with command/commandfor invocation]
expected: FAIL
[Popover focus returns when popover is hidden by invoker with commandfor invocation]
expected: FAIL
[Popover focus only returns to invoker when focus is within the popover with command/commandfor invocation]
expected: FAIL

View file

@ -0,0 +1,3 @@
[popover-focus-4.html]
[Cases where the next focus candidate isn't in the direct parent scope with command/commandfor invocation]
expected: FAIL

View file

@ -1,15 +1,15 @@
[on-video-behavior.tentative.html]
expected:
if (os == "linux") and not tsan and asan and fission: [OK, ERROR]
if (os == "win") and not debug and (processor == "x86"): [OK, ERROR]
if (os == "android") and sessionHistoryInParent and not debug: [OK, ERROR]
if (os == "linux") and tsan: [OK, ERROR]
if not debug and (os == "linux") and not tsan and asan and fission: [OK, ERROR]
if not debug and (os == "win") and (processor == "x86"): [OK, ERROR]
if not debug and (os == "linux") and tsan: [OK, ERROR]
if not debug and (os == "android"): [OK, ERROR]
[invoking video with play-pause action makes video play]
expected:
if (os == "win") and not debug: [PASS, FAIL]
if (os == "mac") and not debug: [PASS, FAIL]
if (os == "linux") and asan: [PASS, FAIL]
if (os == "linux") and not asan and (processor == "x86_64"): PASS
if (os == "win") and debug: PASS
if os == "android": FAIL
[PASS, FAIL]
[invoking playing video with play-pause action pauses it]
expected: FAIL

View file

@ -1,36 +1,72 @@
[interesttarget-keyboard-behavior.tentative.html]
[Basic keyboard behavior, <button>]
expected: FAIL
[Showing interest in a second element loses interest in the first, <button>]
expected: FAIL
[Cancelling loseinterest caused by keyboard-gained interest cancels interest, <button>]
expected: FAIL
[Basic keyboard behavior, <a>]
expected: FAIL
[Showing interest in a second element loses interest in the first, <a>]
expected: FAIL
[Cancelling loseinterest caused by keyboard-gained interest cancels interest, <a>]
expected: FAIL
[Basic keyboard behavior, <area>]
expected: FAIL
[Showing interest in a second element loses interest in the first, <area>]
expected: FAIL
[Cancelling loseinterest caused by keyboard-gained interest cancels interest, <area>]
expected: FAIL
[Basic keyboard behavior, SVG <a>]
expected: FAIL
[Showing interest in a second element loses interest in the first, SVG <a>]
expected: FAIL
[Cancelling loseinterest caused by keyboard-gained interest cancels interest, SVG <a>]
expected: FAIL
[Basic keyboard focus behavior, <button>]
expected: FAIL
[Lose interest hot key behavior, <button>]
expected: FAIL
[Lose interest hot key behavior with element not focused, <button>]
expected: FAIL
[canceling the interest event stops behavior, <button>]
expected: FAIL
[Basic keyboard focus behavior, <a>]
expected: FAIL
[Lose interest hot key behavior, <a>]
expected: FAIL
[Lose interest hot key behavior with element not focused, <a>]
expected: FAIL
[canceling the interest event stops behavior, <a>]
expected: FAIL
[Basic keyboard focus behavior, <area>]
expected: FAIL
[Lose interest hot key behavior, <area>]
expected: FAIL
[Lose interest hot key behavior with element not focused, <area>]
expected: FAIL
[canceling the interest event stops behavior, <area>]
expected: FAIL
[Basic keyboard focus behavior, SVG <a>]
expected: FAIL
[Lose interest hot key behavior, SVG <a>]
expected: FAIL
[Lose interest hot key behavior with element not focused, SVG <a>]
expected: FAIL
[canceling the interest event stops behavior, SVG <a>]
expected: FAIL

View file

@ -1,3 +0,0 @@
[http-url-like-specifiers.sub.html]
expected:
if (os == "android") and fission: [OK, TIMEOUT]

View file

@ -1,21 +1,21 @@
[isIntersecting-threshold.html]
[Scrolled to half way through target element]
expected:
if (os == "win") and (processor == "x86_64") and not debug: PASS
if (os == "win") and debug and (processor == "x86"): [FAIL, PASS]
if (os == "android") and debug: PASS
if os == "mac": PASS
[PASS, FAIL]
[Scrolled to target element completely off screen]
expected:
if (os == "win") and (processor == "x86_64") and not debug: PASS
if (os == "win") and debug and (processor == "x86"): [FAIL, PASS]
if (os == "android") and debug: PASS
if os == "mac": PASS
[PASS, FAIL]
[At initial scroll position]
expected:
if (os == "win") and (processor == "x86_64") and not debug: PASS
if (os == "win") and debug and (processor == "x86"): [FAIL, PASS]
if (os == "android") and debug: PASS
if os == "mac": PASS
[PASS, FAIL]

View file

@ -1 +1 @@
upstream: ba7a4354e3ee84426cf202039d4a841363beb5da
upstream: c7e484eee1f383a212c03b44c028c0b8052ce797

View file

@ -1,6 +1,6 @@
[iframe-tag.http.html]
expected:
if (os == "android") and fission: [OK, TIMEOUT, ERROR, CRASH]
if (os == "win") and not debug and (processor == "x86_64"): [OK, ERROR]
[Referrer Policy: Expects origin for iframe-tag to same-https origin and swap-origin redirection from http context.]
expected: FAIL

View file

@ -4,13 +4,15 @@
[cross-origin meta refresh with referrer policy "no-referrer-when-downgrade" refreshes with full url as referrer]
# This is wontfix behavior.
bug: "https://bugzilla.mozilla.org/show_bug.cgi?id=1800070#c2"
expected: FAIL
expected:
if (os == "mac") and (version == "OS X 14.7.1"): [FAIL, TIMEOUT]
FAIL
[cross-origin header refresh with referrer policy "no-referrer-when-downgrade" refreshes with full url as referrer]
# This is wontfix behavior.
bug: "https://bugzilla.mozilla.org/show_bug.cgi?id=1800070#c2"
expected:
if (os == "mac") and (version == "OS X 14.7.1"): TIMEOUT
if (os == "mac") and (version == "OS X 14.7.1"): [TIMEOUT, FAIL, NOTRUN]
FAIL
[cross-origin meta refresh with referrer policy "unsafe-url" refreshes with full url as referrer]
@ -49,7 +51,7 @@
[cross-origin meta refresh with referrer policy "origin" refreshes with origin as referrer]
expected:
if (os == "mac") and (version == "OS X 14.7.1"): NOTRUN
if (os == "mac") and (version == "OS X 14.7.1"): [NOTRUN, PASS]
[cross-origin meta refresh with referrer policy "strict-origin" refreshes with origin as referrer]
expected:
@ -73,4 +75,4 @@
[cross-origin header refresh with referrer policy "origin" refreshes with origin as referrer]
expected:
if (os == "mac") and (version == "OS X 14.7.1"): NOTRUN
if (os == "mac") and (version == "OS X 14.7.1"): [NOTRUN, TIMEOUT]

View file

@ -14,11 +14,6 @@
if (os == "mac") and not debug: [PASS, FAIL]
if (os == "android") and not debug: [PASS, FAIL]
[Testcase #75, "<template><div>Hello</div></template>", config: "{ "elements": ["template"\], "replaceWithChildrenElements": ["div"\]}".]
expected:
if (os == "mac") and not debug: [PASS, FAIL]
if (os == "android") and not debug: [PASS, FAIL]
[Testcase #66, "<div>balabala<i>test</i></div><test>t</test><custom-element>custom-element</custom-element>", config: "{ "replaceWithChildrenElements": [123, "test", "i", "custom-element"\],\n "elements": ["div"\]}".]
expected:
if (os == "mac") and not debug: [PASS, FAIL]
@ -33,3 +28,6 @@
expected:
if (os == "mac") and not debug: [PASS, FAIL]
if (os == "android") and not debug: [PASS, FAIL]
[Testcase #71, "<table><div><td>", config: "{ "replaceWithChildrenElements": ["table"\] }".]
expected: FAIL

Some files were not shown because too many files have changed in this diff Show more