Merge autoland to mozilla-central. a=merge

This commit is contained in:
criss 2022-07-15 00:43:42 +03:00
Родитель e3f576bb06 0a5dffd194
Коммит 5ea9694f10
254 изменённых файлов: 12604 добавлений и 6819 удалений

69
Cargo.lock сгенерированный
Просмотреть файл

@ -58,14 +58,14 @@ checksum = "85965b6739a430150bdd138e2374a98af0c3ee0d030b3bb7fc3bddff58d0102e"
[[package]]
name = "android_logger"
version = "0.10.1"
version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9ed09b18365ed295d722d0b5ed59c01b79a826ff2d2a8f73d5ecca8e6fb2f66"
checksum = "b74b7ddf197de32e415d197aa21c1c0cb36e01e4794fd801302280ac7847ee02"
dependencies = [
"android_log-sys",
"env_logger 0.8.999",
"lazy_static",
"env_logger 0.9.0",
"log",
"once_cell",
]
[[package]]
@ -644,13 +644,6 @@ dependencies = [
"serde",
]
[[package]]
name = "cargo_metadata"
version = "0.13.999"
dependencies = [
"cargo_metadata 0.14.2",
]
[[package]]
name = "cargo_metadata"
version = "0.14.2"
@ -1293,6 +1286,10 @@ dependencies = [
"winapi",
]
[[package]]
name = "dap_ffi"
version = "0.1.0"
[[package]]
name = "darling"
version = "0.13.4"
@ -2189,6 +2186,7 @@ dependencies = [
"cubeb-coreaudio",
"cubeb-pulse",
"cubeb-sys",
"dap_ffi",
"detect_win32k_conflicts",
"dom",
"encoding_glue",
@ -2277,9 +2275,9 @@ dependencies = [
[[package]]
name = "glean"
version = "50.1.0"
version = "50.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0857be0c251ae1fc3b5672237c99f5115a6546cd8b171cb240173098ab5e9629"
checksum = "813fa9059f1a7d9da4fcf6cff6c77e6226fc26f58797d1659d16a8279c4655f2"
dependencies = [
"chrono",
"crossbeam-channel",
@ -2297,15 +2295,15 @@ dependencies = [
[[package]]
name = "glean-core"
version = "50.1.0"
version = "50.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f1bdfa0e2e6476190b4762c4cdc87c1a7a0347f601864b091cf9ad674a909c68"
checksum = "e5edb2b6cf2938242adda6ece26ac29b2238c693c423331c8a68ce980c348b28"
dependencies = [
"android_logger",
"bincode",
"chrono",
"crossbeam-channel",
"env_logger 0.8.999",
"env_logger 0.9.0",
"ffi-support",
"flate2",
"log",
@ -3744,13 +3742,6 @@ dependencies = [
"void",
]
[[package]]
name = "nom"
version = "5.999.999"
dependencies = [
"nom 6.1.2",
]
[[package]]
name = "nom"
version = "6.1.2"
@ -5690,13 +5681,14 @@ checksum = "957e51f3646910546462e67d5f7599b9e4fb8acdd304b087a6494730f9eebf04"
[[package]]
name = "uniffi"
version = "0.18.0"
version = "0.19.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d0fe14882ae6ea89f31ac922ad8e6f76b3f346f07965791a60ade60cc3bcdd60"
checksum = "bc1de33ad46ce00bc9a31cea44e80ef69175d3a23007335216fe3996880a310d"
dependencies = [
"anyhow",
"bytes 1.1.0",
"cargo_metadata 0.13.999",
"camino",
"cargo_metadata",
"lazy_static",
"log",
"paste",
@ -5705,15 +5697,18 @@ dependencies = [
[[package]]
name = "uniffi_bindgen"
version = "0.18.0"
version = "0.19.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "49a9810482e988792ed22fc6747d872bd32600f7e3bfc11fe93019d155d7e89c"
checksum = "b18e05c55840ddd690ba211f72bb1f2f6ca8c50bfeb7d7211ea5ee60b0f9be07"
dependencies = [
"anyhow",
"askama",
"cargo_metadata 0.13.999",
"camino",
"cargo_metadata",
"clap",
"fs-err",
"heck",
"lazy_static",
"paste",
"serde",
"toml 0.5.9",
@ -5722,20 +5717,22 @@ dependencies = [
[[package]]
name = "uniffi_build"
version = "0.18.0"
version = "0.19.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bcb7401cfd8da93541c23a0683c1dab3c782d2a118254536106b0aa4d9b30607"
checksum = "8fff0860625e4e621f0317e5f6ac9e79966262bd86a6cfb2049e8425df23afbd"
dependencies = [
"anyhow",
"camino",
"uniffi_bindgen",
]
[[package]]
name = "uniffi_macros"
version = "0.18.0"
version = "0.19.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4e7b60ccb030ef51b0c85eb9ca55f28ff68b82c1a29d2bc0c7053777010af0d3"
checksum = "7956a6c1fb12bff15e537028ea2174f000f90dd4f87912233b276ea782d420f2"
dependencies = [
"camino",
"glob",
"proc-macro2",
"quote",
@ -6093,12 +6090,12 @@ dependencies = [
[[package]]
name = "weedle2"
version = "2.0.1"
version = "3.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a69b360c3d0df7dc1a18124677ee8476576c806418f30a360a6cf6cf4e072a6"
checksum = "5d730d941cf471131c40a64cf2e8a595822009f51e64c05c5afdbc85af155857"
dependencies = [
"fs-err",
"nom 5.999.999",
"nom 6.1.2",
]
[[package]]

Просмотреть файл

@ -115,13 +115,6 @@ env_logger = { path = "build/rust/env_logger" }
# Patch toml 0.4 to 0.5
toml = { path = "build/rust/toml" }
# Patch cargo_metadata 0.13 to 0.14.2
# FIXME(bug 1772132): To be removed with the next Glean update
cargo_metadata = { path = "build/rust/cargo_metadata" }
# Patch nom 5 to nom 6
nom = { path = "build/rust/nom" }
# Patch parking_lot 0.12 down to 0.11, which is compatible for most crates that use it, to avoid
# dependencies on windows-sys.
parking_lot = { path = "build/rust/parking_lot" }

Просмотреть файл

@ -31,6 +31,7 @@ DIRS += [
"aboutlogins",
"attribution",
"contextualidentity",
"colorways",
"customizableui",
"doh",
"downloads",
@ -64,7 +65,6 @@ DIRS += ["build"]
if CONFIG["NIGHTLY_BUILD"]:
DIRS += [
"colorways",
"firefoxview",
]

Просмотреть файл

@ -7,6 +7,8 @@ const { ExperimentFakes } = ChromeUtils.import(
"resource://testing-common/NimbusTestUtils.jsm"
);
const ENABLED_PREF = "browser.startup.homepage.abouthome_cache.enabled";
registerCleanupFunction(async () => {
// When the test completes, make sure we cleanup with a populated cache,
// since this is the default starting state for these tests.
@ -21,9 +23,10 @@ registerCleanupFunction(async () => {
*/
add_task(async function test_experiments_api_control() {
// User prefs take precedence over experiments and rollouts.
Services.prefs.clearUserPref(
"browser.startup.homepage.abouthome_cache.enabled"
);
Services.prefs.clearUserPref(ENABLED_PREF);
registerCleanupFunction(() => {
Services.prefs.setBoolPref(ENABLED_PREF, true);
});
// First, the disabled case.
await BrowserTestUtils.withNewTab("about:home", async browser => {

Просмотреть файл

@ -4,9 +4,7 @@
"use strict";
const { XPCOMUtils } = ChromeUtils.importESModule(
"resource://gre/modules/XPCOMUtils.sys.mjs"
);
import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs";
const lazy = {};

Просмотреть файл

@ -4,9 +4,7 @@
"use strict";
const { XPCOMUtils } = ChromeUtils.importESModule(
"resource://gre/modules/XPCOMUtils.sys.mjs"
);
import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs";
const lazy = {};

Просмотреть файл

@ -4,9 +4,7 @@
"use strict";
const { XPCOMUtils } = ChromeUtils.importESModule(
"resource://gre/modules/XPCOMUtils.sys.mjs"
);
import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs";
const lazy = {};

Просмотреть файл

@ -4,9 +4,8 @@
"use strict";
const { XPCOMUtils } = ChromeUtils.importESModule(
"resource://gre/modules/XPCOMUtils.sys.mjs"
);
import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs";
const { EventEmitter } = ChromeUtils.import(
"resource://gre/modules/EventEmitter.jsm"
);

Просмотреть файл

@ -170,7 +170,7 @@ class ProviderQuickActions extends UrlbarProvider {
viewUpdate[`image-${i}`] = {
attributes: { src: data.icon || DEFAULT_ICON },
};
viewUpdate[`label-${i}`] = { attributes: { "data-l10n-id": data.label } };
viewUpdate[`label-${i}`] = { l10n: { id: data.label, cacheable: true } };
});
return viewUpdate;
}

Просмотреть файл

@ -1727,6 +1727,9 @@ class UrlbarView {
node.style[styleName] = value;
}
if (update.l10n) {
if (update.l10n.cacheable) {
await this._l10nCache.ensureAll([update.l10n]);
}
this._setElementL10n(node, {
id: update.l10n.id,
args: update.l10n.args || undefined,

Просмотреть файл

@ -151,6 +151,12 @@ let AVAILABLE_PIP_OVERRIDES;
"https://*.udemy.com/*": { policy: TOGGLE_POLICIES.ONE_QUARTER },
},
voot: {
"https://*.voot.com/*": {
videoWrapperScriptPath: "video-wrappers/voot.js",
},
},
youtube: {
/**
* The threshold of 0.7 is so that users can click on the "Skip Ads"

Просмотреть файл

@ -43,6 +43,7 @@ FINAL_TARGET_FILES.features["pictureinpicture@mozilla.org"]["video-wrappers"] +=
"video-wrappers/primeVideo.js",
"video-wrappers/sonyliv.js",
"video-wrappers/tubi.js",
"video-wrappers/voot.js",
"video-wrappers/washingtonpost.js",
"video-wrappers/youtube.js",
]

Просмотреть файл

@ -0,0 +1,37 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
class PictureInPictureVideoWrapper {
setCaptionContainerObserver(video, updateCaptionsFunction) {
let container = document.querySelector(".playkit-container");
if (container) {
updateCaptionsFunction("");
const callback = function(mutationsList, observer) {
let text = container.querySelector(".playkit-subtitles").innerText;
if (!text) {
updateCaptionsFunction("");
return;
}
updateCaptionsFunction(text);
};
// immediately invoke the callback function to add subtitles to the PiP window
callback([1], null);
let captionsObserver = new MutationObserver(callback);
captionsObserver.observe(container, {
attributes: false,
childList: true,
subtree: true,
});
}
}
}
this.PictureInPictureVideoWrapper = PictureInPictureVideoWrapper;

Просмотреть файл

@ -662,6 +662,7 @@ const AVAILABLE_SHIMS = [
requestStorageAccessForRedirect: [
["*://web.powerva.microsoft.com/*", "*://login.microsoftonline.com/*"],
["*://teams.microsoft.com/*", "*://login.microsoftonline.com/*"],
["*://*.teams.microsoft.us/*", "*://login.microsoftonline.us/*"],
],
contentScripts: [
{
@ -669,6 +670,7 @@ const AVAILABLE_SHIMS = [
matches: [
"*://web.powerva.microsoft.com/*",
"*://teams.microsoft.com/*",
"*://*.teams.microsoft.us/*",
],
runAt: "document_start",
},

Просмотреть файл

@ -2,7 +2,7 @@
"manifest_version": 2,
"name": "Web Compatibility Interventions",
"description": "Urgent post-release fixes for web compatibility.",
"version": "103.8.0",
"version": "103.9.0",
"applications": {
"gecko": {
"id": "webcompat@mozilla.org",

Просмотреть файл

@ -16,9 +16,9 @@
preview/originControls.ftl (../components/extensions/originControls.ftl)
#ifdef NIGHTLY_BUILD
preview/firefoxView.ftl (../components/firefoxview/firefoxView.ftl)
#endif
preview/colorwaycloset.ftl (../components/colorways/colorwaycloset.ftl)
preview/colorways.ftl (../components/colorways/colorways.ftl)
#endif
browser (%browser/**/*.ftl)
@AB_CD@.jar:

Просмотреть файл

@ -6,10 +6,6 @@
const EXPORTED_SYMBOLS = ["_applyColorwayConfig", "BuiltInThemeConfig"];
const { AppConstants } = ChromeUtils.import(
"resource://gre/modules/AppConstants.jsm"
);
/**
* A Map of themes built in to the browser, alongwith a Map of collections those themes belong to. Params for the objects contained
* within the map:
@ -514,10 +510,7 @@ const ColorwayCollections = [
},
{
id: "independent-voices",
expiry:
colorwayClosetEnabled && AppConstants.NIGHTLY_BUILD
? "2023-01-24"
: "1970-01-01",
expiry: colorwayClosetEnabled ? "2023-01-24" : "1970-01-01",
l10nId: {
title: "colorway-collection-independent-voices",
description: "colorway-collection-independent-voices-description",

Просмотреть файл

@ -36,7 +36,7 @@ allprojects {
topsrcdir = gradle.mozconfig.topsrcdir
topobjdir = gradle.mozconfig.topobjdir
gleanVersion = "50.1.0"
gleanVersion = "50.1.2"
if (gleanVersion != getRustVersionFor("glean")) {
throw new StopExecutionException("Mismatched Glean version, expected: ${gleanVersion}," +
" found ${getRustVersionFor("glean")}")

Просмотреть файл

@ -1,15 +0,0 @@
[package]
name = "cargo_metadata"
version = "0.13.999"
edition = "2018"
license = "MPL-2.0"
[lib]
path = "lib.rs"
[dependencies]
cargo_metadata = "0.14.2"
[features]
default = []
builder = ["cargo_metadata/derive_builder"]

Просмотреть файл

@ -1,20 +0,0 @@
[package]
name = "nom"
version = "5.999.999"
edition = "2018"
license = "MPL-2.0"
[lib]
path = "lib.rs"
[dependencies.nom]
version = "6.0"
default-features = false
[features]
alloc = ["nom/alloc"]
default = ["nom/default"]
lexical = ["nom/lexical-core"]
regexp = ["nom/regex"]
regexp_macros = ["nom/regexp_macros"]
std = ["nom/std"]

Просмотреть файл

@ -1,10 +0,0 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
pub use nom::*;
pub use nom::separated_list0 as separated_list;
pub use nom::separated_list1 as separated_nonempty_list;
pub type IResult<I, O, E=(I, error::ErrorKind)> = nom::IResult<I, O, E>;

Просмотреть файл

@ -16,6 +16,8 @@ var {
callFunctionWithAsyncStack,
} = require("devtools/shared/platform/stack");
loader.lazyRequireGetter(this, "OS", "resource://gre/modules/osfile.jsm", true);
loader.lazyRequireGetter(
this,
"FileUtils",
@ -665,12 +667,14 @@ function mainThreadFetch(
ex.name === "NS_BASE_STREAM_CLOSED" &&
uri instanceof Ci.nsIFileURL
) {
// Empty files cause NS_BASE_STREAM_CLOSED exception. Use IOUtils to
// Empty files cause NS_BASE_STREAM_CLOSED exception. Use OS.File to
// differentiate between empty files and other errors (bug 1170864).
// This can be removed when bug 982654 is fixed.
uri.QueryInterface(Ci.nsIFileURL);
const result = IOUtils.read(uri.file.path).then(bytes => {
// Bug 1779574: IOUtils is not available in non-parent processes.
// eslint-disable-next-line mozilla/reject-osfile
const result = OS.File.read(uri.file.path).then(bytes => {
// Convert the bytearray to a String.
const decoder = new TextDecoder();
const content = decoder.decode(bytes);

Просмотреть файл

@ -11,6 +11,7 @@ categories:
user_guide:
- devtools-user
source_doc:
- mots
- browser
- dom
- editor

3661
docs/mots/index.rst Normal file

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -51,7 +51,7 @@ HRESULT MFMediaSource::RuntimeClassInitialize(const Maybe<AudioInfo>& aAudio,
MFMediaEngineVideoStream::Create(streamId++, *aVideo, this);
if (!mVideoStream) {
NS_WARNING("Failed to create video stream");
return E_FAIL;
return E_FAIL;
}
mVideoStreamEndedListener = mVideoStream->EndedEvent().Connect(
mTaskQueue, this, &MFMediaSource::HandleStreamEnded);

Просмотреть файл

@ -268,8 +268,6 @@ static void RejectShuttingDown(Promise* aPromise) {
IOUtils::IOError(NS_ERROR_ABORT).WithMessage(SHUTDOWN_ERROR));
}
#ifdef MOZ_DIAGNOSTIC_ASSERT_ENABLED
static bool AssertParentProcessWithCallerLocationImpl(GlobalObject& aGlobal,
nsCString& reason) {
if (MOZ_LIKELY(XRE_IsParentProcess())) {
@ -303,7 +301,6 @@ static void AssertParentProcessWithCallerLocation(GlobalObject& aGlobal) {
MOZ_CRASH_UNSAFE_PRINTF("%s", reason.get());
}
}
#endif
// IOUtils implementation
/* static */
@ -314,9 +311,7 @@ template <typename Fn>
already_AddRefed<Promise> IOUtils::WithPromiseAndState(GlobalObject& aGlobal,
ErrorResult& aError,
Fn aFn) {
#ifdef MOZ_DIAGNOSTIC_ASSERT_ENABLED
AssertParentProcessWithCallerLocation(aGlobal);
#endif
RefPtr<Promise> promise = CreateJSPromise(aGlobal, aError);
if (!promise) {

Просмотреть файл

@ -3192,6 +3192,10 @@ NS_IMETHODIMP HTMLEditor::Rewrap(bool aRespectNewlines) {
InternetCiter::Rewrap(current, wrapWidth, firstLineOffset, aRespectNewlines,
wrapped);
if (wrapped.IsEmpty()) {
return NS_OK;
}
if (isCollapsed) {
DebugOnly<nsresult> rvIgnored = SelectAllInternal();
NS_WARNING_ASSERTION(NS_SUCCEEDED(rvIgnored),

Просмотреть файл

@ -10,7 +10,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=1649005
<link rel="stylesheet" href="/tests/SimpleTest/test.css">
<script src="/tests/SimpleTest/EventUtils.js"></script>
<script>
/** Test for bug 1649005 **/
/** Test for bug 1649005, bug 1779343 **/
window.addEventListener("DOMContentLoaded", (event) => {
SimpleTest.waitForExplicitFinish();
SimpleTest.waitForFocus(function() {
@ -21,11 +21,15 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=1649005
is(document.body.textContent, "", "Initial body check");
editor.rewrap(false);
is(document.body.textContent, "", "Initial body check after rewrap");
document.body.innerHTML = "&gt;abc<br/>&gt;def<br/>&gt;ghi";
editor.rewrap(true);
is(document.body.textContent, "> abc def ghi", "Rewrapped");
document.body.innerHTML = "&gt; ";
editor.rewrap(true);
is(document.body.textContent, "> ", "Rewrapped half-empty string");
SimpleTest.finish();
});
});

Просмотреть файл

@ -31,6 +31,10 @@ add_task(async function test_paste_formatted() {
window.getSelection().selectAllChildren(document.getElementById("source"));
synthesizeKey("c", { accelKey: true });
const isHeadless = await SpecialPowers.spawnChrome([], () => {
return Cc["@mozilla.org/gfx/info;1"].getService(Ci.nsIGfxInfo).isHeadless;
});
function doKey(element, withShiftKey)
{
let inputEventPromise = new Promise(resolve => {
@ -62,13 +66,17 @@ add_task(async function test_paste_formatted() {
selection.selectAllChildren(editable);
selection.collapseToStart();
doKey(editable, false);
is(editable.innerHTML, expectedHTML, "paste into contenteditable");
is(editable.innerHTML,
isHeadless ? expectedText : expectedHTML, "paste into contenteditable");
// Unformatted paste into editable area
selection.selectAllChildren(editable);
selection.collapseToEnd();
doKey(editable, true);
is(editable.innerHTML, expectedHTML + expectedText, "paste unformatted into contenteditable");
is(editable.innerHTML,
isHeadless ? expectedText + expectedText :
expectedHTML + expectedText,
"paste unformatted into contenteditable");
let noneditable = document.getElementById("noneditable");
selection.selectAllChildren(noneditable);
@ -92,7 +100,9 @@ add_task(async function test_paste_formatted() {
let result = await pastePromise;
is(result.text, expectedText, "paste text into non-editable");
is(result.html, htmlPrefix + expectedHTML + htmlPostfix, "paste html into non-editable");
is(result.html,
isHeadless ? "" : htmlPrefix + expectedHTML + htmlPostfix,
"paste html into non-editable");
// Unformatted paste into non-editable area
pastePromise = getPasteResult();

Просмотреть файл

@ -15,7 +15,7 @@
#include "WebGLTypes.h"
#ifdef MOZ_WAYLAND
#include "mozilla/widget/DMABufSurface.h"
# include "mozilla/widget/DMABufSurface.h"
#endif
namespace mozilla {

Просмотреть файл

@ -19,7 +19,7 @@
#include "mozilla/layers/ImageBridgeParent.h" // for ImageBridgeParent
#include "mozilla/layers/LayersSurfaces.h" // for SurfaceDescriptor, etc
#include "mozilla/layers/RemoteTextureMap.h"
#include "mozilla/layers/TextureHostOGL.h" // for TextureHostOGL
#include "mozilla/layers/TextureHostOGL.h" // for TextureHostOGL
#include "mozilla/layers/ImageDataSerializer.h"
#include "mozilla/layers/TextureClient.h"
#include "mozilla/layers/GPUVideoTextureHost.h"

90
gfx/wr/Cargo.lock сгенерированный
Просмотреть файл

@ -31,14 +31,14 @@ checksum = "85965b6739a430150bdd138e2374a98af0c3ee0d030b3bb7fc3bddff58d0102e"
[[package]]
name = "android_logger"
version = "0.10.1"
version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9ed09b18365ed295d722d0b5ed59c01b79a826ff2d2a8f73d5ecca8e6fb2f66"
checksum = "b74b7ddf197de32e415d197aa21c1c0cb36e01e4794fd801302280ac7847ee02"
dependencies = [
"android_log-sys",
"env_logger",
"lazy_static",
"log",
"once_cell",
]
[[package]]
@ -236,14 +236,13 @@ dependencies = [
[[package]]
name = "cargo_metadata"
version = "0.13.1"
version = "0.14.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "081e3f0755c1f380c2d010481b6fa2e02973586d5f2b24eebb7a2a1d98b143d8"
checksum = "4acbb09d9ee8e23699b9634375c72795d095bf268439da88562cf9b501f181fa"
dependencies = [
"camino",
"cargo-platform",
"semver",
"semver-parser",
"serde",
"serde_json",
]
@ -673,9 +672,9 @@ checksum = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3"
[[package]]
name = "env_logger"
version = "0.8.4"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a19187fea3ac7e84da7dacf48de0c45d63c6a76f9490dae389aead16c243fce3"
checksum = "0b2cf0344971ee6c64c31be0d530793fba457d322dfec2810c453d0ef228f9c3"
dependencies = [
"atty",
"humantime",
@ -877,9 +876,9 @@ dependencies = [
[[package]]
name = "glean"
version = "50.1.0"
version = "50.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0857be0c251ae1fc3b5672237c99f5115a6546cd8b171cb240173098ab5e9629"
checksum = "813fa9059f1a7d9da4fcf6cff6c77e6226fc26f58797d1659d16a8279c4655f2"
dependencies = [
"chrono",
"crossbeam-channel",
@ -897,9 +896,9 @@ dependencies = [
[[package]]
name = "glean-core"
version = "50.1.0"
version = "50.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f1bdfa0e2e6476190b4762c4cdc87c1a7a0347f601864b091cf9ad674a909c68"
checksum = "e5edb2b6cf2938242adda6ece26ac29b2238c693c423331c8a68ce980c348b28"
dependencies = [
"android_logger",
"bincode",
@ -1427,16 +1426,6 @@ dependencies = [
"memoffset",
]
[[package]]
name = "nom"
version = "5.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ffb4262d26ed83a1c0a33a38fe2bb15797329c85770da05e6b828ddb782627af"
dependencies = [
"memchr",
"version_check",
]
[[package]]
name = "nom"
version = "6.2.1"
@ -1670,15 +1659,6 @@ version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e"
[[package]]
name = "pest"
version = "2.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "10f4872ae94d7b90ae48754df22fd42ad52ce740b8f370b03da4835417403e53"
dependencies = [
"ucd-trie",
]
[[package]]
name = "pkg-config"
version = "0.3.17"
@ -1934,23 +1914,13 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
[[package]]
name = "semver"
version = "0.11.0"
version = "1.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6"
checksum = "a2333e6df6d6598f2b1974829f853c2b4c5f4a6e503c10af918081aa6f8564e1"
dependencies = [
"semver-parser",
"serde",
]
[[package]]
name = "semver-parser"
version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7"
dependencies = [
"pest",
]
[[package]]
name = "serde"
version = "1.0.137"
@ -2201,12 +2171,6 @@ dependencies = [
"minidl",
]
[[package]]
name = "ucd-trie"
version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c"
[[package]]
name = "unicase"
version = "2.6.0"
@ -2239,12 +2203,13 @@ checksum = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c"
[[package]]
name = "uniffi"
version = "0.18.0"
version = "0.19.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d0fe14882ae6ea89f31ac922ad8e6f76b3f346f07965791a60ade60cc3bcdd60"
checksum = "bc1de33ad46ce00bc9a31cea44e80ef69175d3a23007335216fe3996880a310d"
dependencies = [
"anyhow",
"bytes",
"camino",
"cargo_metadata",
"lazy_static",
"log",
@ -2254,15 +2219,18 @@ dependencies = [
[[package]]
name = "uniffi_bindgen"
version = "0.18.0"
version = "0.19.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "49a9810482e988792ed22fc6747d872bd32600f7e3bfc11fe93019d155d7e89c"
checksum = "b18e05c55840ddd690ba211f72bb1f2f6ca8c50bfeb7d7211ea5ee60b0f9be07"
dependencies = [
"anyhow",
"askama",
"camino",
"cargo_metadata",
"clap",
"fs-err",
"heck",
"lazy_static",
"paste 1.0.7",
"serde",
"toml",
@ -2271,20 +2239,22 @@ dependencies = [
[[package]]
name = "uniffi_build"
version = "0.18.0"
version = "0.19.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bcb7401cfd8da93541c23a0683c1dab3c782d2a118254536106b0aa4d9b30607"
checksum = "8fff0860625e4e621f0317e5f6ac9e79966262bd86a6cfb2049e8425df23afbd"
dependencies = [
"anyhow",
"camino",
"uniffi_bindgen",
]
[[package]]
name = "uniffi_macros"
version = "0.18.0"
version = "0.19.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4e7b60ccb030ef51b0c85eb9ca55f28ff68b82c1a29d2bc0c7053777010af0d3"
checksum = "7956a6c1fb12bff15e537028ea2174f000f90dd4f87912233b276ea782d420f2"
dependencies = [
"camino",
"glob",
"proc-macro2",
"quote",
@ -2578,12 +2548,12 @@ dependencies = [
[[package]]
name = "weedle2"
version = "2.0.1"
version = "3.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a69b360c3d0df7dc1a18124677ee8476576c806418f30a360a6cf6cf4e072a6"
checksum = "5d730d941cf471131c40a64cf2e8a595822009f51e64c05c5afdbc85af155857"
dependencies = [
"fs-err",
"nom 5.1.2",
"nom 6.2.1",
]
[[package]]

Просмотреть файл

@ -55,7 +55,7 @@ debug = ["webrender/capture", "webrender/profiler"]
[dependencies]
app_units = "0.7"
env_logger = "0.8"
env_logger = "0.9"
euclid = "0.22"
gleam = "0.13"
glutin = "0.28"

Просмотреть файл

@ -51,7 +51,7 @@ svg_fmt = "0.4"
tracy-rs = "0.1.2"
derive_more = { version = "0.99", default-features = false, features = ["add_assign"] }
etagere = "0.2.6"
glean = "50.1.0"
glean = "50.1.2"
fog = { version = "0.1.0", optional = true }
swgl = { path = "../swgl", optional = true }
topological-sort = "0.1"

Просмотреть файл

@ -13,7 +13,7 @@ path = "src/main.rs"
[dependencies]
base64 = "0.13"
env_logger = { version = "0.8.4", optional = true }
env_logger = { version = "0.9", optional = true }
gleam = "0.13"
glutin = "0.28"
clap = { version = "3.1", features = ["yaml"] }
@ -29,7 +29,7 @@ osmesa-src = { version = "0.2", git = "https://github.com/servo/osmesa-src", opt
webrender = { path = "../webrender", features = ["capture", "replay", "png", "profiler", "no_static_freetype", "leak_checks"] }
winit = "0.26"
serde = { version = "1.0", features = ["derive"] }
semver = "0.11.0"
semver = "1.0.12"
swgl = { path = "../swgl", optional = true }
tracy-rs = "0.1.2"

Просмотреть файл

@ -1,6 +1,7 @@
<!DOCTYPE html>
<html>
<meta charset=utf-8>
<meta name="color-scheme" content="light dark">
<style>
iframe { border: none; }
</style>

Просмотреть файл

@ -1,6 +1,7 @@
<!DOCTYPE html>
<html>
<meta charset=utf-8>
<meta name="color-scheme" content="light dark">
<style>
@media (prefers-color-scheme: dark) {
rect { fill: green; }

Просмотреть файл

@ -1,6 +1,7 @@
<!DOCTYPE html>
<meta charset=utf-8>
<title>Dynamic changes to prefers-color-scheme affecting SVG images</title>
<meta name="color-scheme" content="light dark">
<link rel=stylesheet type=text/css href=/tests/SimpleTest/test.css>
<script src=/tests/SimpleTest/SimpleTest.js></script>
<script src=/tests/SimpleTest/WindowSnapshot.js></script>

Просмотреть файл

@ -916,8 +916,10 @@ struct CrossOriginEmbedderPolicyValidator {
static bool IsLegalValue(const IntegralType e) {
return AreIntegralValuesEqual(e, nsILoadInfo::EMBEDDER_POLICY_NULL) ||
AreIntegralValuesEqual(e, nsILoadInfo::EMBEDDER_POLICY_REQUIRE_CORP) ||
AreIntegralValuesEqual(e, nsILoadInfo::EMBEDDER_POLICY_CREDENTIALLESS);
AreIntegralValuesEqual(e,
nsILoadInfo::EMBEDDER_POLICY_REQUIRE_CORP) ||
AreIntegralValuesEqual(e,
nsILoadInfo::EMBEDDER_POLICY_CREDENTIALLESS);
}
private:

Просмотреть файл

@ -10,7 +10,6 @@
#include "mozilla/dom/AutoEntryScript.h"
using namespace mozilla;
using mozilla::ipc::PTestShellCommandParent;
using mozilla::ipc::TestShellCommandParent;

Просмотреть файл

@ -579,12 +579,16 @@ class js::OrderedHashTableRef : public gc::BufferableRef {
reinterpret_cast<typename ObjectT::UnbarrieredTable*>(realTable);
NurseryKeysVector* keys = GetNurseryKeys(object);
MOZ_ASSERT(keys);
for (Value& key : *keys) {
Value prior = key;
for (Value key : *keys) {
MOZ_ASSERT(unbarrieredTable->hash(key) ==
realTable->hash(*reinterpret_cast<HashableValue*>(&key)));
TraceManuallyBarrieredEdge(trc, &key, "ordered hash table key");
unbarrieredTable->rekeyOneEntry(prior, key);
// Note: we use a lambda to avoid tenuring keys that have been removed
// from the Map or Set.
unbarrieredTable->rekeyOneEntry(key, [trc](const Value& prior) {
Value key = prior;
TraceManuallyBarrieredEdge(trc, &key, "ordered hash table key");
return key;
});
}
DeleteNurseryKeys(object);
}

Просмотреть файл

@ -558,12 +558,11 @@ class OrderedHashTable {
return;
}
Data* entry = lookup(current, prepareHash(current));
if (!entry) {
return;
}
HashNumber currentHash = prepareHash(current);
Data* entry = lookup(current, currentHash);
MOZ_ASSERT(entry);
HashNumber oldHash = prepareHash(current) >> hashShift;
HashNumber oldHash = currentHash >> hashShift;
HashNumber newHash = prepareHash(newKey) >> hashShift;
entry->element = element;
@ -845,11 +844,13 @@ class OrderedHashMap {
HashNumber hash(const Key& key) const { return impl.prepareHash(key); }
void rekeyOneEntry(const Key& current, const Key& newKey) {
template <typename GetNewKey>
void rekeyOneEntry(const Key& current, const GetNewKey& getNewKey) {
const Entry* e = get(current);
if (!e) {
return;
}
Key newKey = getNewKey(current);
return impl.rekeyOneEntry(current, newKey, Entry(newKey, e->value));
}
@ -916,7 +917,12 @@ class OrderedHashSet {
HashNumber hash(const T& value) const { return impl.prepareHash(value); }
void rekeyOneEntry(const T& current, const T& newKey) {
template <typename GetNewKey>
void rekeyOneEntry(const T& current, const GetNewKey& getNewKey) {
if (!has(current)) {
return;
}
T newKey = getNewKey(current);
return impl.rekeyOneEntry(current, newKey, newKey);
}

Просмотреть файл

@ -0,0 +1,13 @@
let module1 = registerModule('module1', parseModule(
`import {} from "module2";
import {} from "module3";`));
let module2 = registerModule('module2', parseModule(
`await 1;`));
let module3 = registerModule('module3', parseModule(
`throw 1;`));
moduleLink(module1);
moduleEvaluate(module1).catch(() => 0);
drainJobQueue();

Просмотреть файл

@ -1579,7 +1579,10 @@ static bool GatherAvailableModuleAncestors(
// Step 1.a. If execList does not contain m and
// m.[[CycleRoot]].[[EvaluationError]] is empty, then:
if (!m->getCycleRoot()->hadEvaluationError() &&
//
// Note: we also check whether m.[[EvaluationError]] is empty since an error
// in synchronous execution can prevent the CycleRoot field from being set.
if (!m->hadEvaluationError() && !m->getCycleRoot()->hadEvaluationError() &&
!ContainsElement(execList, m)) {
// Step 1.a.i. Assert: m.[[Status]] is evaluating-async.
MOZ_ASSERT(m->status() == ModuleStatus::EvaluatingAsync);

Просмотреть файл

@ -111,10 +111,24 @@ nsresult ComponentModuleLoader::StartFetch(ModuleLoadRequest* aRequest) {
// Check for failure to load script source and abort.
bool threwException = jsapi.HasException();
if (NS_FAILED(rv) && !threwException) {
nsAutoCString uri;
nsresult rv2 = aRequest->mURI->GetSpec(uri);
NS_ENSURE_SUCCESS(rv2, rv2);
JS_ReportErrorUTF8(cx, "Failed to load %s", PromiseFlatCString(uri).get());
// Remember the error for MaybeReportLoadError.
if (!mLoadException.initialized()) {
mLoadException.init(cx);
}
if (!jsapi.StealException(&mLoadException)) {
return NS_ERROR_OUT_OF_MEMORY;
}
return rv;
}
// Otherwise remember the results so we can report them later.
// Otherwise remember the results in this context so we can report them later.
ComponentLoadContext* context = aRequest->GetComponentLoadContext();
context->mRv = rv;
if (threwException) {
@ -154,6 +168,20 @@ nsresult ComponentModuleLoader::CompileFetchedModule(
return rv;
}
void ComponentModuleLoader::MaybeReportLoadError(JSContext* aCx) {
if (JS_IsExceptionPending(aCx)) {
// Do not override.
return;
}
if (mLoadException.isUndefined()) {
return;
}
JS_SetPendingException(aCx, mLoadException);
mLoadException = JS::UndefinedValue();
}
void ComponentModuleLoader::OnModuleLoadComplete(ModuleLoadRequest* aRequest) {}
nsresult ComponentModuleLoader::ProcessRequests() {

Просмотреть файл

@ -48,6 +48,8 @@ class ComponentModuleLoader : public JS::loader::ModuleLoaderBase {
[[nodiscard]] nsresult ProcessRequests();
void MaybeReportLoadError(JSContext* aCx);
private:
// An event target that dispatches runnables by executing them
// immediately. This is used to drive mozPromise dispatch for
@ -83,6 +85,10 @@ class ComponentModuleLoader : public JS::loader::ModuleLoaderBase {
void OnModuleLoadComplete(ModuleLoadRequest* aRequest) override;
JS::loader::ScriptLoadRequestList mLoadRequests;
// If any of module scripts failed to load, exception is set here until it's
// reported by MaybeReportLoadError.
JS::PersistentRootedValue mLoadException;
};
// Data specific to ComponentModuleLoader that is associated with each load
@ -93,10 +99,14 @@ class ComponentLoadContext : public JS::loader::LoadContextBase {
: LoadContextBase(JS::loader::ContextKind::Component) {}
public:
// The result of loading a module script. These fields are used temporarily
// The result of compiling a module script. These fields are used temporarily
// before being passed to the module loader.
nsresult mRv;
// The exception thrown during compiling a module script. These fields are
// used temporarily before being passed to the module loader.
JS::PersistentRootedValue mExceptionValue;
JS::PersistentRootedScript mScript;
};

Просмотреть файл

@ -1526,6 +1526,12 @@ nsresult mozJSModuleLoader::TryFallbackToImportESModule(
JS::RootedObject moduleNamespace(aCx);
nsresult rv = ImportESModule(aCx, mjsLocation, &moduleNamespace);
if (rv == NS_ERROR_FILE_NOT_FOUND) {
// The error for ESModule shouldn't be exposed if the file does not exist.
if (JS_IsExceptionPending(aCx)) {
JS_ClearPendingException(aCx);
}
}
NS_ENSURE_SUCCESS(rv, rv);
JS::RootedObject globalProxy(aCx);
@ -1647,16 +1653,25 @@ nsresult mozJSModuleLoader::ImportESModule(
/* aIsDynamicImport = */ false, mModuleLoader, visitedSet, nullptr);
rv = request->StartModuleLoad();
NS_ENSURE_SUCCESS(rv, rv);
if (NS_FAILED(rv)) {
mModuleLoader->MaybeReportLoadError(aCx);
return rv;
}
rv = mModuleLoader->ProcessRequests();
NS_ENSURE_SUCCESS(rv, rv);
if (NS_FAILED(rv)) {
mModuleLoader->MaybeReportLoadError(aCx);
return rv;
}
MOZ_ASSERT(request->IsReadyToRun());
if (!request->mModuleScript) {
mModuleLoader->MaybeReportLoadError(aCx);
return NS_ERROR_FAILURE;
}
// All modules are loaded. MaybeReportLoadError isn't necessary from here.
if (!request->InstantiateModuleGraph()) {
return NS_ERROR_FAILURE;
}

Просмотреть файл

@ -0,0 +1,4 @@
import { x as x1 } from "resource://test/es6module_absolute2.js";
import { x as x2 } from "./es6module_absolute2.js";
export const absoluteX = x1;
export const relativeX = x2;

Просмотреть файл

@ -0,0 +1 @@
export const x = { value: 10 };

Просмотреть файл

@ -0,0 +1,7 @@
let resolve;
export const result = new Promise(r => { resolve = r; });
import("./es6module_dynamic_import2.js").then(ns => {}, e => {
resolve(e);
});

Просмотреть файл

@ -0,0 +1 @@
export const x = 10;

Просмотреть файл

@ -0,0 +1 @@
import { y } from "./es6module_import_error2.js";

Просмотреть файл

@ -0,0 +1 @@
export const x = 10;

Просмотреть файл

@ -1 +1,4 @@
throw "Failing with error foobar";
function throwFunction() {
throw new Error("Failing with error foobar");
}
throwFunction();

Просмотреть файл

@ -1,7 +1,7 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
function run_test() {
add_task(async function() {
// Test basic import.
let ns = ChromeUtils.importESModule("resource://test/es6module.js");
Assert.equal(ns.loadCount, 1);
@ -12,23 +12,77 @@ function run_test() {
Assert.equal(ns.loadCount, 1);
Assert.equal(ns, ns2);
// Test imports with absolute and relative URIs return the same thing.
let ns3 = ChromeUtils.importESModule("resource://test/es6module_absolute.js");
let ns4 = ChromeUtils.importESModule("resource://test/es6module_absolute2.js");
Assert.ok(ns3.absoluteX === ns3.relativeX);
Assert.ok(ns3.absoluteX === ns4.x);
// Test load failure.
testFailure("resource://test/es6module_not_found.js");
testFailure("resource://test/es6module_not_found.js", {
type: "Error",
message: "Failed to load resource://test/es6module_not_found.js",
fileName: "test_import_es6_modules.js",
stack: "testFailure",
lineNumber: "*",
columnNumber: "*",
});
// Test load failure in import.
testFailure("resource://test/es6module_missing_import.js");
testFailure("resource://test/es6module_missing_import.js", {
type: "Error",
message: "Failed to load resource://test/es6module_not_found2.js",
fileName: "test_import_es6_modules.js",
stack: "testFailure",
lineNumber: "*",
columnNumber: "*",
});
// Test parse error.
testFailure("resource://test/es6module_parse_error.js", "SyntaxError");
testFailure("resource://test/es6module_parse_error.js", {
type: "SyntaxError",
fileName: "resource://test/es6module_parse_error.js",
stack: "testFailure",
lineNumber: 1,
columnNumber: 5,
});
// Test parse error in import.
testFailure("resource://test/es6module_parse_error_in_import.js", "SyntaxError");
testFailure("resource://test/es6module_parse_error_in_import.js", {
type: "SyntaxError",
fileName: "resource://test/es6module_parse_error.js",
stack: "testFailure",
lineNumber: 1,
columnNumber: 5,
});
// Test import error.
testFailure("resource://test/es6module_import_error.js", {
type: "SyntaxError",
fileName: "resource://test/es6module_import_error.js",
lineNumber: 1,
columnNumber: 9,
});
// Test execution failure.
let exception1 = testFailure("resource://test/es6module_throws.js", "foobar");
let exception1 = testFailure("resource://test/es6module_throws.js", {
type: "Error",
message: "foobar",
stack: "throwFunction",
fileName: "resource://test/es6module_throws.js",
lineNumber: 2,
columnNumber: 9,
});
// Test re-import throws the same exception.
let exception2 = testFailure("resource://test/es6module_throws.js", "foobar");
let exception2 = testFailure("resource://test/es6module_throws.js", {
type: "Error",
message: "foobar",
stack: "throwFunction",
fileName: "resource://test/es6module_throws.js",
lineNumber: 2,
columnNumber: 9,
});
Assert.ok(exception1 === exception2);
// Test loading cyclic module graph.
@ -43,23 +97,79 @@ function run_test() {
Assert.equal(ns.getValueFromA(), "a");
// Test top-level await is not supported.
testFailure("resource://test/es6module_top_level_await.js", "not supported");
}
testFailure("resource://test/es6module_top_level_await.js", {
type: "SyntaxError",
message: "not supported",
stack: "testFailure",
fileName: "resource://test/es6module_top_level_await.js",
lineNumber: 1,
columnNumber: 0,
});
function testFailure(url, exceptionPart) {
// Test dynamic import is not supported.
ns = ChromeUtils.importESModule("resource://test/es6module_dynamic_import.js");
const e = await ns.result;
checkException(e, {
type: "Error",
message: "not supported",
fileName: "resource://test/es6module_dynamic_import.js",
lineNumber: 5,
columnNumber: 1,
});
});
function testFailure(url, expected) {
let threw = false;
let exception;
let importLine, importColumn;
try {
// Get the line/column for ChromeUtils.importESModule.
// lineNumber/columnNumber value with "*" in `expected` points the
// line/column.
let e = new Error();
importLine = e.lineNumber + 3;
importColumn = 17;
ChromeUtils.importESModule(url);
} catch (e) {
threw = true;
exception = e;
}
Assert.ok(threw);
if (exceptionPart) {
Assert.ok(exception.toString().includes(exceptionPart));
}
Assert.ok(threw, "Error should be thrown");
checkException(exception, expected, importLine, importColumn);
return exception;
}
function checkException(exception, expected, importLine, importColumn) {
if ("type" in expected) {
Assert.equal(exception.constructor.name, expected.type, "error type");
}
if ("message" in expected) {
Assert.ok(exception.message.includes(expected.message),
`Message "${exception.message}" should contain "${expected.message}"`);
}
if ("stack" in expected) {
Assert.ok(exception.stack.includes(expected.stack),
`Stack "${exception.stack}" should contain "${expected.stack}"`);
}
if ("fileName" in expected) {
Assert.ok(exception.fileName.includes(expected.fileName),
`fileName "${exception.fileName}" should contain "${expected.fileName}"`);
}
if ("lineNumber" in expected) {
let expectedLine = expected.lineNumber;
if (expectedLine === "*") {
expectedLine = importLine;
}
Assert.equal(exception.lineNumber, expectedLine, "lineNumber");
}
if ("columnNumber" in expected) {
let expectedColumn = expected.columnNumber;
if (expectedColumn === "*") {
expectedColumn = importColumn;
}
Assert.equal(exception.columnNumber, expectedColumn, "columnNumber");
}
}

Просмотреть файл

@ -47,6 +47,12 @@ support-files =
api_script.js
import_stack.jsm
import_stack.sys.mjs
es6module_import_error.js
es6module_import_error2.js
es6module_dynamic_import.js
es6module_dynamic_import2.js
es6module_absolute.js
es6module_absolute2.js
[test_allowWaivers.js]
[test_bogus_files.js]

Просмотреть файл

@ -4333,29 +4333,6 @@ void PresShell::DoFlushPendingNotifications(mozilla::ChangesToFlush aFlush) {
LAYOUT_TELEMETRY_RECORD_BASE(Restyle);
mPresContext->RestyleManager()->ProcessPendingRestyles();
}
// Now those constructors or events might have posted restyle
// events. At the same time, we still need up-to-date style data.
// In particular, reflow depends on style being completely up to
// date. If it's not, then style reparenting, which can
// happen during reflow, might suddenly pick up the new rules and
// we'll end up with frames whose style doesn't match the frame
// type.
if (MOZ_LIKELY(!mIsDestroying)) {
nsAutoScriptBlocker scriptBlocker;
Maybe<uint64_t> innerWindowID;
if (auto* window = mDocument->GetInnerWindow()) {
innerWindowID = Some(window->WindowID());
}
AutoProfilerStyleMarker tracingStyleFlush(std::move(mStyleCause),
innerWindowID);
PerfStats::AutoMetricRecording<PerfStats::Metric::Styling> autoRecording;
LAYOUT_TELEMETRY_RECORD_BASE(Restyle);
mPresContext->RestyleManager()->ProcessPendingRestyles();
// Clear mNeedStyleFlush here agagin to make this flag work properly for
// optimization since the flag might have set in ProcessPendingRestyles().
mNeedStyleFlush = false;
}

Просмотреть файл

@ -6378,11 +6378,14 @@ static ImgDrawResult DrawImageInternal(
if (!aSVGContext) {
// Use the default viewport.
fallbackContext.emplace(Some(params.svgViewportSize));
} else if (!aSVGContext->GetViewportSize()) {
fallbackContext = aSVGContext;
fallbackContext->SetViewportSize(Some(params.svgViewportSize));
}
result = aImage->Draw(&aContext, params.size, params.region,
imgIContainer::FRAME_CURRENT, aSamplingFilter,
aSVGContext ? aSVGContext : fallbackContext,
fallbackContext ? fallbackContext : aSVGContext,
aImageFlags, aOpacity);
}

Просмотреть файл

@ -2176,8 +2176,8 @@ void nsDisplayList::Paint(nsDisplayListBuilder* aBuilder, gfxContext* aCtx,
continue;
}
nsRegion visible(item->GetClippedBounds(aBuilder));
visible.And(visible, item->GetPaintRect(aBuilder, aCtx));
nsRect visible = item->GetClippedBounds(aBuilder);
visible = visible.Intersect(item->GetPaintRect(aBuilder, aCtx));
if (visible.IsEmpty()) {
continue;
}
@ -2185,7 +2185,7 @@ void nsDisplayList::Paint(nsDisplayListBuilder* aBuilder, gfxContext* aCtx,
DisplayItemClip currentClip = item->GetClip();
if (currentClip.HasClip()) {
aCtx->Save();
if (currentClip.IsRectClippedByRoundedCorner(visible.GetBounds())) {
if (currentClip.IsRectClippedByRoundedCorner(visible)) {
currentClip.ApplyTo(aCtx, aAppUnitsPerDevPixel);
} else {
currentClip.ApplyRectTo(aCtx, aAppUnitsPerDevPixel);
@ -8400,8 +8400,7 @@ void nsDisplayFilters::PaintWithContentsPaintCallback(
auto filterChain = mStyle ? mStyle->StyleEffects()->mFilters.AsSpan()
: mFrame->StyleEffects()->mFilters.AsSpan();
SVGIntegrationUtils::PaintFilter(
params,
filterChain,
params, filterChain,
[&](gfxContext& aContext, nsIFrame* aTarget, const gfxMatrix& aTransform,
const nsIntRect* aDirtyRect, imgDrawingParams& aImgParams) {
gfxContextMatrixAutoSaveRestore autoSR(&aContext);

Просмотреть файл

@ -32,7 +32,6 @@
using namespace mozilla;
using namespace mozilla::css;
using mozilla::dom::Animation;
using mozilla::dom::AnimationEffect;
using mozilla::dom::AnimationPlayState;
using mozilla::dom::CSSAnimation;
using mozilla::dom::Element;

Просмотреть файл

@ -59,6 +59,11 @@ bool nsTransitionManager::UpdateTransitions(dom::Element* aElement,
return false;
}
if (aNewStyle.StyleDisplay()->mDisplay == StyleDisplay::None) {
StopAnimationsForElement(aElement, aPseudoType);
return false;
}
CSSTransitionCollection* collection =
CSSTransitionCollection::GetAnimationCollection(aElement, aPseudoType);
return DoUpdateTransitions(*aNewStyle.StyleUIReset(), aElement, aPseudoType,

Просмотреть файл

@ -59,11 +59,7 @@ bool CSSClipPathInstance::HitTestBasicShapeOrPathClip(nsIFrame* aFrame,
const gfxPoint& aPoint) {
const auto& clipPathStyle = aFrame->StyleSVGReset()->mClipPath;
MOZ_ASSERT(!clipPathStyle.IsNone(), "unexpected none value");
// In the future CSSClipPathInstance may handle <clipPath> references as
// well. For the time being return early.
if (clipPathStyle.IsUrl()) {
return false;
}
MOZ_ASSERT(!clipPathStyle.IsUrl(), "unexpected url value");
CSSClipPathInstance instance(aFrame, clipPathStyle);

Просмотреть файл

@ -9,8 +9,8 @@
// Keep others in (case-insensitive) order:
#include "gfxUtils.h"
#include "mozilla/Preferences.h"
#include "mozilla/LookAndFeel.h"
#include "mozilla/StaticPrefs_svg.h"
#include "mozilla/dom/Document.h"
#include "nsIFrame.h"
#include "nsPresContext.h"
@ -36,7 +36,8 @@ void SVGImageContext::MaybeStoreContextPaint(Maybe<SVGImageContext>& aContext,
return;
}
if (aPresContext.Document()->IsDocumentURISchemeChrome()) {
if (StaticPrefs::svg_embedder_prefers_color_scheme_content_enabled() ||
aPresContext.Document()->IsDocumentURISchemeChrome()) {
if (!aContext) {
aContext.emplace();
}

Просмотреть файл

@ -804,17 +804,19 @@ void SVGUtils::PaintFrameWithEffects(nsIFrame* aFrame, gfxContext& aContext,
}
bool SVGUtils::HitTestClip(nsIFrame* aFrame, const gfxPoint& aPoint) {
// If the clip-path property references non-existent or invalid clipPath
// element(s) we ignore it.
SVGClipPathFrame* clipPathFrame;
SVGObserverUtils::GetAndObserveClipPath(aFrame, &clipPathFrame);
if (clipPathFrame) {
return clipPathFrame->PointIsInsideClipPath(aFrame, aPoint);
const nsStyleSVGReset* svgReset = aFrame->StyleSVGReset();
if (!svgReset->HasClipPath()) {
return true;
}
if (aFrame->StyleSVGReset()->HasClipPath()) {
return CSSClipPathInstance::HitTestBasicShapeOrPathClip(aFrame, aPoint);
if (svgReset->mClipPath.IsUrl()) {
// If the clip-path property references non-existent or invalid clipPath
// element(s) we ignore it.
SVGClipPathFrame* clipPathFrame;
SVGObserverUtils::GetAndObserveClipPath(aFrame, &clipPathFrame);
return !clipPathFrame ||
clipPathFrame->PointIsInsideClipPath(aFrame, aPoint);
}
return true;
return CSSClipPathInstance::HitTestBasicShapeOrPathClip(aFrame, aPoint);
}
nsIFrame* SVGUtils::HitTestChildren(SVGDisplayContainerFrame* aFrame,

Просмотреть файл

@ -4,7 +4,6 @@
// Original author: ekr@rtfm.com
#include "logging.h"
#include "nss.h"
#include "ssl.h"

Просмотреть файл

@ -12,7 +12,6 @@
#include "nss.h"
#include "ssl.h"
#include "sdp/RsdparsaSdpParser.h"
#include "sdp/SipccSdpParser.h"
#include "sdp/SdpMediaSection.h"

Просмотреть файл

@ -12754,6 +12754,13 @@
value: false
mirror: always
# This pref controls whether the `prefers-color-scheme` value of SVG images
# reacts to the embedder `color-scheme` in content.
- name: svg.embedder-prefers-color-scheme.content.enabled
type: RelaxedAtomicBool
value: true
mirror: always
# Enables the 'context-fill' and 'context-stroke' keywords for particular
# domains. We expect this list to be Mozilla-controlled properties, since the
# 'context-*' keywords are not part of any spec. We expect to remove this

3604
mots.yaml Normal file

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -10,6 +10,9 @@ with Files("AUTHORS"):
with Files("LICENSE"):
BUG_COMPONENT = ("mozilla.org", "Licensing")
with Files("mots.yaml"):
BUG_COMPONENT = ("Conduit", "mots")
with Files("aclocal.m4"):
BUG_COMPONENT = ("Firefox Build System", "General")
@ -203,4 +206,6 @@ SPHINX_TREES["gtest"] = "docs/gtest"
SPHINX_TREES["nspr"] = "docs/nspr"
SPHINX_TREES["mots"] = "docs/mots"
include("build/templates.mozbuild")

Просмотреть файл

@ -759,6 +759,28 @@ void LoadInfo::ComputeIsThirdPartyContext(dom::WindowGlobalParent* aGlobal) {
NS_IMPL_ISUPPORTS(LoadInfo, nsILoadInfo)
#ifdef EARLY_BETA_OR_EARLIER
void LoadInfo::ReleaseMembers() {
Unused << NS_DispatchToCurrentThread(NS_NewRunnableFunction(
"LoadInfo::ReleasePrincipalAnUrl",
[loadinPrinciple{std::move(mLoadingPrincipal)},
principalToInherit{std::move(mPrincipalToInherit)},
topLevelPrincipal{std::move(mTopLevelPrincipal)},
resultPrincipalURI{std::move(mResultPrincipalURI)},
unstrippedURI{std::move(mUnstrippedURI)}]() {}));
Unused << NS_DispatchToCurrentThread(NS_NewRunnableFunction(
"LoadInfo::ReleaseOther",
[cspEventListener{std::move(mCSPEventListener)},
performanceStorage{std::move(mPerformanceStorage)},
cspToInherit{std::move(mCspToInherit)}]() {}));
Unused << NS_DispatchToCurrentThread(NS_NewRunnableFunction(
"LoadInfo::ReleaseCookieJarSettings",
[cookieJarSettings{std::move(mCookieJarSettings)}]() {}));
}
#else
void LoadInfo::ReleaseMembers() {
mCSPEventListener = nullptr;
mCookieJarSettings = nullptr;
@ -772,6 +794,7 @@ void LoadInfo::ReleaseMembers() {
mUnstrippedURI = nullptr;
mAncestorPrincipals.Clear();
}
#endif
LoadInfo::~LoadInfo() { ReleaseMembers(); }

Просмотреть файл

@ -129,7 +129,7 @@ pth:xpcom/geckoprocesstypes_generator
pth:xpcom/idl-parser
# glean-sdk may not be installable if a wheel isn't available
# and it has to be built from source.
pypi-optional:glean-sdk==50.1.0:telemetry will not be collected
pypi-optional:glean-sdk==50.1.2:telemetry will not be collected
# Mach gracefully handles the case where `psutil` is unavailable.
# We aren't (yet) able to pin packages in automation, so we have to
# support down to the oldest locally-installed version (5.4.2).

Просмотреть файл

@ -1125,4 +1125,4 @@ static const TransportSecurityPreload kPublicKeyPinningPreloadList[] = {
static const int32_t kUnknownId = -1;
static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1666004892530000);
static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1666264241789000);

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -1,5 +1,131 @@
{
"data": [
{
"schema": 1657673315354,
"derHash": "1gTwFIol2TurV304cFy6rixEd95+tR2GoPayZYQBPXo=",
"subject": "CN=Thawte G5 TLS CN ECC P-384 SHA384 2022 CA1,O=DigiCert\\, Inc.,C=US",
"subjectDN": "MFsxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjEzMDEGA1UEAxMqVGhhd3RlIEc1IFRMUyBDTiBFQ0MgUC0zODQgU0hBMzg0IDIwMjIgQ0Ex",
"whitelist": false,
"attachment": {
"hash": "3129242e85cdf0f309e258648b1644d453f871ce619308f47cbf52fb63efabc7",
"size": 1244,
"filename": "OJlQ9mdtsB5vrqQ648dNZZGkd5CgwQhqLYav-0L7PzY=.pem",
"location": "security-state-staging/intermediates/590b4b4e-10b8-46d4-b352-5badc01a1fef.pem",
"mimetype": "application/x-pem-file"
},
"pubKeyHash": "OJlQ9mdtsB5vrqQ648dNZZGkd5CgwQhqLYav+0L7PzY=",
"crlite_enrolled": false,
"id": "27e46e16-a6cd-4328-810e-bbfd6f6cda46",
"last_modified": 1657673823452
},
{
"schema": 1657673317285,
"derHash": "kV7I3MI3+pMssCRamW/zpxFVCkZCFP11EvIlqmCAYcg=",
"subject": "CN=DigiCert G5 TLS CN ECC P-384 SHA384 2022 CA1,O=DigiCert\\, Inc.,C=US",
"subjectDN": "MF0xCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjE1MDMGA1UEAxMsRGlnaUNlcnQgRzUgVExTIENOIEVDQyBQLTM4NCBTSEEzODQgMjAyMiBDQTE=",
"whitelist": false,
"attachment": {
"hash": "1fb03123d91ae87c93b92fe243f54a0a2bef16ebd20fd7929d508c587216e450",
"size": 1248,
"filename": "R3PZqaW3zCxxaQ5bSQKCTasFBA4J5Cnc9fLzxRf0_bs=.pem",
"location": "security-state-staging/intermediates/dc178a9d-41d4-43e0-b432-a4241b65e4dc.pem",
"mimetype": "application/x-pem-file"
},
"pubKeyHash": "R3PZqaW3zCxxaQ5bSQKCTasFBA4J5Cnc9fLzxRf0/bs=",
"crlite_enrolled": false,
"id": "ab257771-7ba0-4d9a-82f4-c57bc9689748",
"last_modified": 1657673823443
},
{
"schema": 1657673313115,
"derHash": "q373BbC42yKRwryNyfaa2DRaPMVD24zcSai0GSgt6iI=",
"subject": "CN=DigiCert G5 TLS CN RSA4096 SHA384 2022 CA1,O=DigiCert\\, Inc.,C=US",
"subjectDN": "MFsxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjEzMDEGA1UEAxMqRGlnaUNlcnQgRzUgVExTIENOIFJTQTQwOTYgU0hBMzg0IDIwMjIgQ0Ex",
"whitelist": false,
"attachment": {
"hash": "75314f6a9a6c8cab0a538f33f85a9899fe32efa8ba2411045fd4e1490b813572",
"size": 2393,
"filename": "wbQtVyDhsJDZ7ZTgMHcNj5L1XL3nQo_qsShPSxHiGlg=.pem",
"location": "security-state-staging/intermediates/7d18b322-587b-4da8-b437-277da1ed32eb.pem",
"mimetype": "application/x-pem-file"
},
"pubKeyHash": "wbQtVyDhsJDZ7ZTgMHcNj5L1XL3nQo/qsShPSxHiGlg=",
"crlite_enrolled": false,
"id": "a00a96bc-01aa-427d-a44a-46bb9ede86eb",
"last_modified": 1657673823434
},
{
"schema": 1657673312034,
"derHash": "5Duq14t4+e6mkD5W9FbewkvZZIwTrgLi3heh+E89CAc=",
"subject": "CN=GeoTrust G5 TLS CN ECC P-384 SHA384 2022 CA1,O=DigiCert\\, Inc.,C=US",
"subjectDN": "MF0xCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjE1MDMGA1UEAxMsR2VvVHJ1c3QgRzUgVExTIENOIEVDQyBQLTM4NCBTSEEzODQgMjAyMiBDQTE=",
"whitelist": false,
"attachment": {
"hash": "d4c1f4983ff6e6192de0acc76728fb52393bf92a90670487d4f3b63f1852ee17",
"size": 1248,
"filename": "5zJ7jFc2gNMH1N9rX_DHOV3JCnG-ukw0EkslpYXr-fM=.pem",
"location": "security-state-staging/intermediates/a77313bc-afed-4e76-b175-842d33665225.pem",
"mimetype": "application/x-pem-file"
},
"pubKeyHash": "5zJ7jFc2gNMH1N9rX/DHOV3JCnG+ukw0EkslpYXr+fM=",
"crlite_enrolled": false,
"id": "0f02ee9b-1f97-4776-a939-78091f93ea63",
"last_modified": 1657673823425
},
{
"schema": 1657673316324,
"derHash": "K20Zn341yMZ+C7qCn5KZHPMUZiZeEfowvRn8W2w2FRw=",
"subject": "CN=GeoTrust G5 TLS CN RSA4096 SHA384 2022 CA1,O=DigiCert\\, Inc.,C=US",
"subjectDN": "MFsxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjEzMDEGA1UEAxMqR2VvVHJ1c3QgRzUgVExTIENOIFJTQTQwOTYgU0hBMzg0IDIwMjIgQ0Ex",
"whitelist": false,
"attachment": {
"hash": "ddb561a05fdd0b1dd429bc3c3c50e0a3805423d5b279916f9ffb3d4ff59bc5b4",
"size": 2393,
"filename": "HHoUjrAj1XP5vnU44w9Pu7YgFS_u0QD7hTHolzugvKQ=.pem",
"location": "security-state-staging/intermediates/cb70ae36-1854-4bda-922f-ee1120bc9050.pem",
"mimetype": "application/x-pem-file"
},
"pubKeyHash": "HHoUjrAj1XP5vnU44w9Pu7YgFS/u0QD7hTHolzugvKQ=",
"crlite_enrolled": false,
"id": "3f839c5b-ebd1-4e42-9cbe-54203b19af29",
"last_modified": 1657673823416
},
{
"schema": 1657673314428,
"derHash": "Honj0nAtPxc13OfamVYWAFNKBkVKlIdNB4DQRDyvQVE=",
"subject": "CN=Thawte G5 TLS CN RSA4096 SHA384 2022 CA1,O=DigiCert\\, Inc.,C=US",
"subjectDN": "MFkxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjExMC8GA1UEAxMoVGhhd3RlIEc1IFRMUyBDTiBSU0E0MDk2IFNIQTM4NCAyMDIyIENBMQ==",
"whitelist": false,
"attachment": {
"hash": "4e176dd6e8181e4dc2b1cbad5e566815a70ec2668675335f58b4f586eacfa6a1",
"size": 2389,
"filename": "8S2WQvlz04IQBZ9zLQRNo9VXRswtrQL75271G7UZlK4=.pem",
"location": "security-state-staging/intermediates/8eec4898-0567-46bf-aa86-2f2e3a4151f4.pem",
"mimetype": "application/x-pem-file"
},
"pubKeyHash": "8S2WQvlz04IQBZ9zLQRNo9VXRswtrQL75271G7UZlK4=",
"crlite_enrolled": false,
"id": "2bcd4ea3-7fd9-4719-9830-8b7a610d018e",
"last_modified": 1657673823406
},
{
"schema": 1657328224342,
"derHash": "MGv4CZY2pE//te7c5uMMDzbH1D9syloso6txZo81MyA=",
"subject": "SERIALNUMBER=G63287510,CN=ANF Secure Server CA,OU=ANF Autoridad intermedia tecnicos,O=ANF Autoridad de Certificacion,C=ES",
"subjectDN": "MIGVMRIwEAYDVQQFEwlHNjMyODc1MTAxCzAJBgNVBAYTAkVTMScwJQYDVQQKEx5BTkYgQXV0b3JpZGFkIGRlIENlcnRpZmljYWNpb24xKjAoBgNVBAsTIUFORiBBdXRvcmlkYWQgaW50ZXJtZWRpYSB0ZWNuaWNvczEdMBsGA1UEAxMUQU5GIFNlY3VyZSBTZXJ2ZXIgQ0E=",
"whitelist": false,
"attachment": {
"hash": "94f2679da6fc663782dece4baeb031bb22bd3de9a11c9b24ed20b914260e0d4c",
"size": 2645,
"filename": "uiEcUi6rH4hr3LVqMdSOFpFfUPBYYzPvgxeYIKOOeGk=.pem",
"location": "security-state-staging/intermediates/39894355-15d9-4bf9-aa00-9b376067ec88.pem",
"mimetype": "application/x-pem-file"
},
"pubKeyHash": "uiEcUi6rH4hr3LVqMdSOFpFfUPBYYzPvgxeYIKOOeGk=",
"crlite_enrolled": false,
"id": "bc4939de-dfcf-4dba-ba83-ac8dada019cc",
"last_modified": 1657544223180
},
{
"schema": 1657327855850,
"derHash": "l6BzlXxYEnJXV2cvIiaQZVoUB9cQEe38iy+txRKJEdo=",
@ -6660,24 +6786,6 @@
"id": "7b545696-9069-4460-9c39-f452b104bfe1",
"last_modified": 1645579198385
},
{
"schema": 1645578808760,
"derHash": "MGv4CZY2pE//te7c5uMMDzbH1D9syloso6txZo81MyA=",
"subject": "SERIALNUMBER=G63287510,CN=ANF Secure Server CA,OU=ANF Autoridad intermedia tecnicos,O=ANF Autoridad de Certificacion,C=ES",
"subjectDN": "MIGVMRIwEAYDVQQFEwlHNjMyODc1MTAxCzAJBgNVBAYTAkVTMScwJQYDVQQKEx5BTkYgQXV0b3JpZGFkIGRlIENlcnRpZmljYWNpb24xKjAoBgNVBAsTIUFORiBBdXRvcmlkYWQgaW50ZXJtZWRpYSB0ZWNuaWNvczEdMBsGA1UEAxMUQU5GIFNlY3VyZSBTZXJ2ZXIgQ0E=",
"whitelist": false,
"attachment": {
"hash": "94f2679da6fc663782dece4baeb031bb22bd3de9a11c9b24ed20b914260e0d4c",
"size": 2645,
"filename": "uiEcUi6rH4hr3LVqMdSOFpFfUPBYYzPvgxeYIKOOeGk=.pem",
"location": "security-state-staging/intermediates/39894355-15d9-4bf9-aa00-9b376067ec88.pem",
"mimetype": "application/x-pem-file"
},
"pubKeyHash": "uiEcUi6rH4hr3LVqMdSOFpFfUPBYYzPvgxeYIKOOeGk=",
"crlite_enrolled": true,
"id": "bc4939de-dfcf-4dba-ba83-ac8dada019cc",
"last_modified": 1645579198372
},
{
"schema": 1645578788075,
"derHash": "05zjn/b0SdTzOR7iAE1wXsIvmc/8pAqI+F2yZFSt29E=",
@ -25255,5 +25363,5 @@
"last_modified": 1559865863642
}
],
"timestamp": 1657328223872
"timestamp": 1657673823452
}

Просмотреть файл

@ -1650,6 +1650,12 @@ impl<'le> TElement for GeckoElement<'le> {
let after_change_ui_style = after_change_style.get_ui();
let existing_transitions = self.css_transitions_info();
if after_change_style.get_box().clone_display().is_none() {
// We need to cancel existing transitions.
return !existing_transitions.is_empty();
}
let mut transitions_to_keep = LonghandIdSet::new();
for transition_property in after_change_style.transition_properties() {
let physical_longhand = transition_property

Просмотреть файл

@ -347,7 +347,7 @@ trait PrivateMatchMethods: TElement {
return false;
}
if new_style.clone_display().is_none() || old_style.clone_display().is_none() {
if old_style.clone_display().is_none() {
return false;
}

Просмотреть файл

@ -1,6 +1,12 @@
# cargo-vet audits file
[[audits.android_logger]]
who = "Jan-Erik Rediger <jrediger@mozilla.com>"
criteria = "safe-to-deploy"
version = "0.11.0"
notes = "Small crate, wrapping Android log functionality, reviewed by janerik"
[[audits.android_system_properties]]
who = "Nicolas Silva <nical@fastmail.com>"
criteria = "safe-to-deploy"
@ -57,12 +63,24 @@ criteria = "safe-to-deploy"
version = "50.1.0"
notes = "Maintained by the Glean team at Mozilla"
[[audits.glean]]
who = "Travis Long <tlong@mozilla.com>"
criteria = "safe-to-deploy"
version = "50.1.2"
notes = "Maintained by the Glean team at Mozilla"
[[audits.glean-core]]
who = "Jan-Erik Rediger <jrediger@mozilla.com>"
criteria = "safe-to-deploy"
version = "50.1.0"
notes = "Maintained by the Glean team at Mozilla"
[[audits.glean-core]]
who = "Travis Long <tlong@mozilla.com>"
criteria = "safe-to-deploy"
version = "50.1.2"
notes = "Maintained by the Glean team at Mozilla"
[[audits.linked-hash-map]]
who = "Aria Beingessner <a.beingessner@gmail.com>"
criteria = "safe-to-deploy"
@ -129,12 +147,42 @@ criteria = "safe-to-deploy"
delta = "0.1.19 -> 0.1.20"
notes = "I am the author of most of these changes upstream, and prepared the release myself, at which point I looked at the other changes since 0.1.19."
[[audits.uniffi]]
who = "Travis Long <tlong@mozilla.com>"
criteria = "safe-to-deploy"
version = "0.19.3"
notes = "Maintained by the Glean and Application Services teams"
[[audits.uniffi_bindgen]]
who = "Travis Long <tlong@mozilla.com>"
criteria = "safe-to-deploy"
version = "0.19.3"
notes = "Maintained by the Glean and Application Services teams."
[[audits.uniffi_build]]
who = "Travis Long <tlong@mozilla.com>"
criteria = "safe-to-deploy"
version = "0.19.3"
notes = "Maintained by the Glean and Application Services teams."
[[audits.uniffi_macros]]
who = "Travis Long <tlong@mozilla.com>"
criteria = "safe-to-deploy"
version = "0.19.3"
notes = "Maintained by the Glean and Application Services teams."
[[audits.void]]
who = "Bobby Holley <bobbyholley@gmail.com>"
criteria = "safe-to-deploy"
version = "1.0.2"
notes = "Very small crate, just hosts the Void type for easier cross-crate interfacing."
[[audits.weedle2]]
who = "Travis Long <tlong@mozilla.com>"
criteria = "safe-to-deploy"
version = "3.0.0"
notes = "Maintained by the Glean and Application Services teams."
[[audits.webdriver]]
who = "Henrik Skupin <mail@hskupin.info>"
criteria = "safe-to-deploy"

Просмотреть файл

@ -177,10 +177,6 @@ criteria = "safe-to-deploy"
version = "0.2.0"
criteria = "safe-to-deploy"
[[exemptions.android_logger]]
version = "0.10.1"
criteria = "safe-to-deploy"
[[exemptions.anyhow]]
version = "1.0.57"
criteria = "safe-to-deploy"
@ -1721,22 +1717,6 @@ criteria = "safe-to-deploy"
version = "0.2.3"
criteria = "safe-to-deploy"
[[exemptions.uniffi]]
version = "0.18.0"
criteria = "safe-to-deploy"
[[exemptions.uniffi_bindgen]]
version = "0.18.0"
criteria = "safe-to-deploy"
[[exemptions.uniffi_build]]
version = "0.18.0"
criteria = "safe-to-deploy"
[[exemptions.uniffi_macros]]
version = "0.18.0"
criteria = "safe-to-deploy"
[[exemptions.unix_path]]
version = "1.0.1"
criteria = "safe-to-run"
@ -1793,10 +1773,6 @@ criteria = "safe-to-deploy"
version = "0.3.9"
criteria = "safe-to-deploy"
[[exemptions.weedle2]]
version = "2.0.1"
criteria = "safe-to-deploy"
[[exemptions.wgpu-core]]
version = "0.12.0"
criteria = "safe-to-deploy"

Просмотреть файл

@ -15,6 +15,7 @@ treeherder:
'A': 'Android Gradle tests'
'Bpgo': 'Profile-guided optimization builds'
'Btime': 'Browsertime performance tests on Firefox'
'Btime-cache': 'Browsertime performance tests on Firefox with populated bytecode cache.'
'Btime-1proc': 'Browsertime performance tests on Firefox without e10s'
'Btime-fis': 'Browsertime performance tests on Firefox with fission enabled'
'Btime-Prof': 'Browsertime performance tests on Firefox with Gecko Profiling'

Просмотреть файл

@ -147,8 +147,43 @@ browsertime-responsiveness:
browsertime-tp6-essential:
<<: *tp6-defaults
<<: &tp6-essential-defaults
raptor:
apps: [firefox, chrome, chromium]
test: tp6
run-visual-metrics: true
subtests:
- amazon
- [bing-search, bing]
- cnn
- fandom
- [google-slides, gslides]
- instagram
- twitter
- wikipedia
- yahoo-mail
run-on-projects:
by-app:
firefox:
by-test-platform:
windows.*-32.*: []
macosx1100.*shippable.*: [mozilla-central, mozilla-beta]
.*64.*shippable-qr/.*: [trunk, mozilla-beta, mozilla-release]
default: []
default: []
tier:
by-test-platform:
linux1804-64-clang-trunk-qr/opt: 2
default:
by-app:
firefox: 1
default: 3
browsertime-tp6-bytecode:
<<: *tp6-defaults
<<: *tp6-essential-defaults
raptor:
apps: [firefox, chrome, chromium]
apps: [firefox]
test: tp6
run-visual-metrics: true
subtests:
@ -161,22 +196,25 @@ browsertime-tp6-essential:
- twitter
- wikipedia
- yahoo-mail
run-on-projects:
by-app:
firefox:
by-test-platform:
windows.*-32.*: []
macosx1100.*shippable.*: [mozilla-central, mozilla-beta]
.*64.*shippable-qr/.*: [trunk, mozilla-beta, mozilla-release]
default: []
default: []
mozharness:
extra-options:
by-test-platform:
windows10-64.*shippable.*-qr.*:
- --chimera
- --browsertime
- --browsertime-no-ffwindowrecorder
- --conditioned-profile=settled
- --test-bytecode-cache
default:
- --chimera
- --browsertime
- --conditioned-profile=settled
- --test-bytecode-cache
tier:
by-test-platform:
linux1804-64-clang-trunk-qr/opt: 2
default:
by-app:
firefox: 1
default: 3
by-app:
firefox: 2
default: 3
treeherder-symbol: Btime-cache(tp6)
browsertime-benchmark:
description: Raptor (browsertime) Benchmark tests

Просмотреть файл

@ -109,32 +109,6 @@ browsertime-tp6m:
default: []
default: []
browsertime-tp6m-g5:
<<: *tp6m-defaults
raptor:
apps: [geckoview, fenix, chrome-m, refbrow]
run-visual-metrics: true
test: tp6m
subtests:
- [google-maps, gmaps]
- [google-search-restaurants, gsearch-r]
- instagram
- imdb
- reddit
- sina
- [stackoverflow, stacko]
- web-de
- wikipedia
- youtube
run-on-projects:
by-app:
geckoview:
by-test-platform:
android-hw-(g5|a51).*shippable-qr.*: [trunk, mozilla-beta, mozilla-release]
android-hw-p2.*aarch64-shippable-qr.*: [trunk, mozilla-beta, mozilla-release]
default: []
default: []
browsertime-tp6m-essential:
<<: *tp6m-defaults
raptor:

Просмотреть файл

@ -348,7 +348,6 @@ android-em-7.0-x86_64-qr/debug-isolated-process:
android-hw-g5-7-0-arm7-qr/opt:
build-platform: android-arm/opt
test-sets:
- android-hw-browsertime-g5
- android-hw-browsertime-power
- android-hw-arm7-raptor-cpu-memory
- android-hw-arm7-raptor-cpu-memory-power
@ -356,7 +355,6 @@ android-hw-g5-7-0-arm7-qr/opt:
android-hw-g5-7-0-arm7-shippable-qr/opt:
build-platform: android-arm-shippable/opt
test-sets:
- android-hw-browsertime-g5
- android-hw-browsertime-power
- android-hw-arm7-raptor-cpu-memory
- android-hw-arm7-raptor-cpu-memory-power
@ -366,8 +364,7 @@ android-hw-g5-7-0-arm7-shippable-qr/opt:
android-hw-a51-11-0-aarch64-qr/opt:
build-platform: android-aarch64/opt
test-sets:
- android-hw-browsertime-a51
# - android-hw-browsertime
- android-hw-browsertime
# - android-hw-browsertime-power
# - android-hw-arm7-raptor-cpu-memory
# - android-hw-arm7-raptor-cpu-memory-power
@ -375,8 +372,7 @@ android-hw-a51-11-0-aarch64-qr/opt:
android-hw-a51-11-0-aarch64-shippable-qr/opt:
build-platform: android-aarch64-shippable/opt
test-sets:
- android-hw-browsertime-a51
# - android-hw-browsertime
- android-hw-browsertime
# - android-hw-browsertime-power
# - android-hw-arm7-raptor-cpu-memory
# - android-hw-arm7-raptor-cpu-memory-power

Просмотреть файл

@ -82,6 +82,7 @@ talos-ref-hw:
browsertime:
- browsertime-tp6
- browsertime-tp6-essential
- browsertime-tp6-bytecode
- browsertime-tp6-live
- browsertime-tp6-live-sheriffed
- browsertime-benchmark
@ -445,18 +446,6 @@ android-hw-aarch64-raptor-cpu-memory-power:
android-hw-browsertime-power:
- browsertime-power
android-hw-browsertime-a51:
- browsertime-tp6m-essential
- browsertime-speedometer-mobile
- browsertime-youtube-playback-mobile
- browsertime-unity-webgl-mobile
- browsertime-tp6m
- browsertime-tp6m-live
android-hw-browsertime-g5:
- browsertime-tp6m-g5 # second half of tests
- browsertime-tp6m-live
android-hw-browsertime:
- browsertime-tp6m
- browsertime-tp6m-essential

Просмотреть файл

@ -1 +1 @@
export UPDATEBOT_REVISION=1a2bb378a4d9842936b9db59d0b88111247da435
export UPDATEBOT_REVISION=2f0f742b7780c86cbf4ab26c7e88d0f0f7e59d15

Просмотреть файл

@ -439,6 +439,21 @@ class Raptor(
"help": "Run tests using live sites instead of recorded sites.",
},
],
[
["--test-bytecode-cache"],
{
"dest": "test_bytecode_cache",
"action": "store_true",
"default": False,
"help": (
"If set, the pageload test will set the preference "
"`dom.script_loader.bytecode_cache.strategy=-1` and wait 20 seconds "
"after the first cold pageload to populate the bytecode cache before "
"running a warm pageload test. Only available if `--chimera` "
"is also provided."
),
},
],
[
["--chimera"],
{
@ -963,6 +978,8 @@ class Raptor(
options.extend(
["--browser-cycles={}".format(self.config.get("browser_cycles"))]
)
if self.config.get("test_bytecode_cache", False):
options.extend(["--test-bytecode-cache"])
if self.config.get("webext", False):
options.extend(["--webext"])

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -341,6 +341,7 @@ module.exports = async function(context, commands) {
let page_cycle_delay = context.options.browsertime.page_cycle_delay;
let post_startup_delay = context.options.browsertime.post_startup_delay;
let chimera_mode = context.options.browsertime.chimera;
let test_bytecode_cache = context.options.browsertime.test_bytecode_cache;
let login_required = context.options.browsertime.loginRequired;
let live_site = context.options.browsertime.liveSite;
let test_name = context.options.browsertime.testName;
@ -399,7 +400,8 @@ module.exports = async function(context, commands) {
await commands.measure.start(test_url);
// Wait 20 seconds to populate bytecode cache
if (chimera_mode && !cached) {
if (test_bytecode_cache == "true" && chimera_mode == "true" && !cached) {
context.log.info("Waiting 20s to populate bytecode cache...");
await commands.wait.byTime(20000);
cached = true;
}

Просмотреть файл

@ -289,6 +289,8 @@ class Browsertime(Perftest):
# running browsertime test in chimera mode
"--browsertime.chimera",
"true" if self.config["chimera"] else "false",
"--browsertime.test_bytecode_cache",
"true" if self.config["test_bytecode_cache"] else "false",
"--firefox.perfStats",
test.get("perfstats", "false"),
]

Просмотреть файл

@ -365,6 +365,16 @@ def create_parser(mach_interface=False):
help="Whether to use webextension to execute pageload tests "
"(WebExtension is being deprecated).",
)
add_arg(
"--test-bytecode-cache",
dest="test_bytecode_cache",
default=False,
action="store_true",
help="If set, the pageload test will set the preference "
"`dom.script_loader.bytecode_cache.strategy=-1` and wait 20 seconds after "
"the first cold pageload to populate the bytecode cache before running "
"a warm pageload test. Only available if `--chimera` is also provided.",
)
# for browsertime jobs, cold page load is determined by a '--cold' cmd line argument
add_arg(
@ -511,7 +521,10 @@ def verify_options(parser, args):
args.page_cycles = 2
# Create bytecode cache at the first cold load, so that the next warm load uses it.
# This is applicable for chimera mode only
args.extra_prefs.append("dom.script_loader.bytecode_cache.strategy=-1")
if args.test_bytecode_cache:
args.extra_prefs.append("dom.script_loader.bytecode_cache.strategy=-1")
elif args.test_bytecode_cache:
parser.error("--test-bytecode-cache can only be used in --chimera mode")
# if running on a desktop browser make sure the binary exists
if args.app in DESKTOP_APPS:

Просмотреть файл

@ -98,6 +98,7 @@ class Perftest(object):
device_name=None,
disable_perf_tuning=False,
conditioned_profile=None,
test_bytecode_cache=False,
chimera=False,
extra_prefs={},
environment={},
@ -143,6 +144,7 @@ class Perftest(object):
"fission": fission,
"disable_perf_tuning": disable_perf_tuning,
"conditioned_profile": conditioned_profile,
"test_bytecode_cache": test_bytecode_cache,
"chimera": chimera,
"extra_prefs": extra_prefs,
"environment": environment,

Просмотреть файл

@ -134,6 +134,7 @@ def main(args=sys.argv[1:]):
device_name=args.device_name,
disable_perf_tuning=args.disable_perf_tuning,
conditioned_profile=args.conditioned_profile,
test_bytecode_cache=args.test_bytecode_cache,
chimera=args.chimera,
project=args.project,
verbose=args.verbose,

Просмотреть файл

@ -32,6 +32,7 @@ def test_verify_options(filedir):
browsertime_visualmetrics=False,
fission=True,
fission_mobile=False,
test_bytecode_cache=False,
webext=False,
extra_prefs=[],
)
@ -59,6 +60,7 @@ def test_verify_options(filedir):
browsertime_visualmetrics=False,
fission=True,
fission_mobile=False,
test_bytecode_cache=False,
webext=False,
extra_prefs=[],
)
@ -80,6 +82,7 @@ def test_verify_options(filedir):
browsertime_visualmetrics=False,
fission=True,
fission_mobile=False,
test_bytecode_cache=False,
webext=False,
extra_prefs=[],
)
@ -101,6 +104,7 @@ def test_verify_options(filedir):
browsertime_visualmetrics=False,
fission=True,
fission_mobile=False,
test_bytecode_cache=False,
webext=False,
extra_prefs=[],
)
@ -122,6 +126,7 @@ def test_verify_options(filedir):
browsertime_visualmetrics=False,
fission=True,
fission_mobile=False,
test_bytecode_cache=False,
webext=False,
extra_prefs=[],
)
@ -143,6 +148,7 @@ def test_verify_options(filedir):
browsertime_visualmetrics=False,
fission=True,
fission_mobile=False,
test_bytecode_cache=False,
webext=False,
extra_prefs=[],
)

Просмотреть файл

@ -0,0 +1,17 @@
<!doctype html>
<meta charset="utf-8">
<title>CSS Test Reference</title>
<style>
.background {
width: 32px;
height: 32px;
}
</style>
<div style="color-scheme: light">
<img src="resources/prefers-color-scheme-light.svg">
<div class="background" style="background-image: url(resources/prefers-color-scheme-light.svg)"></div>
</div>
<div style="color-scheme: dark">
<img src="resources/prefers-color-scheme-dark.svg">
<div class="background" style="background-image: url(resources/prefers-color-scheme-dark.svg)"></div>
</div>

Просмотреть файл

@ -0,0 +1,23 @@
<!doctype html>
<meta charset="utf-8">
<title>CSS prefers-color-scheme affects SVG images</title>
<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez">
<link rel="author" href="https://mozilla.org" title="Mozilla">
<link rel="help" href="https://drafts.csswg.org/mediaqueries-5/#prefers-color-scheme">
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/7213">
<link rel="match" href="prefers-color-scheme-svg-image-ref.html">
<style>
.background {
width: 32px;
height: 32px;
background-image: url(resources/prefers-color-scheme.svg);
}
</style>
<div style="color-scheme: light">
<img src="resources/prefers-color-scheme.svg">
<div class="background"></div>
</div>
<div style="color-scheme: dark">
<img src="resources/prefers-color-scheme.svg">
<div class="background"></div>
</div>

Просмотреть файл

@ -0,0 +1,6 @@
<svg width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
<style>
:root { color: purple }
</style>
<rect fill="currentColor" width="32" height="32"/>
</svg>

После

Ширина:  |  Высота:  |  Размер: 193 B

Просмотреть файл

@ -0,0 +1,6 @@
<svg width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
<style>
:root { color: blue }
</style>
<rect fill="currentColor" width="32" height="32"/>
</svg>

После

Ширина:  |  Высота:  |  Размер: 191 B

Просмотреть файл

@ -0,0 +1,9 @@
<svg width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
<style>
:root { color: blue }
@media (prefers-color-scheme: dark) {
:root { color: purple }
}
</style>
<rect fill="currentColor" width="32" height="32"/>
</svg>

После

Ширина:  |  Высота:  |  Размер: 269 B

Просмотреть файл

@ -0,0 +1,78 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:h="http://www.w3.org/1999/xhtml">
<title>Clipped shapes can be hit when rendered</title>
<h:script src="/resources/testharness.js"/>
<h:script src="/resources/testharnessreport.js"/>
<metadata>
<h:link rel="help" href="https://svgwg.org/svg2-draft/shapes.html#RectElement"/>
<h:link rel="help" href="https://svgwg.org/svg2-draft/shapes.html#CircleElement"/>
<h:link rel="help" href="https://svgwg.org/svg2-draft/shapes.html#EllipseElement"/>
</metadata>
<defs>
<clipPath id="clip1">
<circle cx="100" cy="100" r="25"/>
</clipPath>
<clipPath id="clip2">
<circle cx="150" cy="150" r="25"/>
</clipPath>
<clipPath id="clip3">
<circle cx="250" cy="150" r="25"/>
</clipPath>
<clipPath id="clip4">
<circle cx="350" cy="150" r="25"/>
</clipPath>
</defs>
<g>
<circle id="circle1" cx="100" cy="100" r="25"/>
<circle id="circle2" cx="150" cy="100" r="25" clip-path="url(#unknown)"/>
<circle id="circle3" cx="100" cy="150" r="25" clip-path="url(#clip1)"/>
<circle id="circle4" cx="150" cy="150" r="25" clip-path="url(#clip2)"/>
</g>
<g>
<ellipse id="ellipse1" cx="200" cy="100" rx="25" ry="15"/>
<ellipse id="ellipse2" cx="250" cy="100" rx="25" ry="15" clip-path="url(#unknown)"/>
<ellipse id="ellipse3" cx="200" cy="150" rx="25" ry="15" clip-path="url(#clip1)"/>
<ellipse id="ellipse4" cx="250" cy="150" rx="25" ry="15" clip-path="url(#clip3)"/>
</g>
<g>
<rect id="rect1" x="285" y="85" width="30" height="30"/>
<rect id="rect2" x="335" y="85" width="30" height="30" clip-path="url(#unknown)"/>
<rect id="rect3" x="285" y="135" width="30" height="30" clip-path="url(#clip1)"/>
<rect id="rect4" x="335" y="135" width="30" height="30" clip-path="url(#clip4)"/>
</g>
<script><![CDATA[
class Expectation {
constructor(x, y, id = null) {
this.x = x;
this.y = y;
this.element = id ? document.getElementById(id) : document.documentElement;
}
}
class Shape {
constructor(name, offset) {
this.name = name;
this.offset = offset;
}
}
let shapes = [];
shapes.push(new Shape("circle", 0));
shapes.push(new Shape("ellipse", 100));
shapes.push(new Shape("rect", 200));
shapes.forEach(shape => {
test(function() {
let expectations = [];
expectations.push(new Expectation(100 + shape.offset, 100, shape.name + "1"));
expectations.push(new Expectation(150 + shape.offset, 100, shape.name + "2"));
expectations.push(new Expectation(100 + shape.offset, 150));
expectations.push(new Expectation(150 + shape.offset, 150, shape.name + "4"));
expectations.forEach(expectation => {
let element = document.elementFromPoint(expectation.x, expectation.y);
assert_equals(element, expectation.element, "finds " + shape.name);
});
}, document.title + ": " + shape.name);
});
]]>
</script>
</svg>

После

Ширина:  |  Высота:  |  Размер: 3.0 KiB

Просмотреть файл

@ -1 +1 @@
{"files":{"Cargo.toml":"632df8824223ca0e23352f6b0d103ac994fab57dc51f33c2e6d41c91256e1c4d","LICENSE-APACHE":"99938c5864dd33decb62ab20fd883a9b00181d768ae887a4f19b2d0015c41dc9","LICENSE-MIT":"35043211d1b7be8f7e3f9cad27d981f2189ba9a39d9527b275b3c9740298dfe2","README.md":"7a4f75e61fc014f4dbb907fa947e1983f45993dc2a85104cdb619c0808433f65","src/lib.rs":"bdbd60c12117123c2554b1984949dfbc403d890318a0de637829592f4359de6d","tests/config_log_level.rs":"8aae2c7decbcf12a2a454486c9d4dd4a82a20e01d327c4abf4e9cfded973159d","tests/default_init.rs":"ef18c9ea38687a178623c11acfa3d34d16b9030eaad337ab9ed6a609a2c42ca2","tests/multiple_init.rs":"a6ed4986a758b7b2322c6ad0a18ec99fd06521a6c8767a6622eab2cbf9be601e"},"package":"d9ed09b18365ed295d722d0b5ed59c01b79a826ff2d2a8f73d5ecca8e6fb2f66"}
{"files":{"Cargo.toml":"896268b277c2cd333293139e868abac82c39983de9aa56aead4464c38239b66a","LICENSE-APACHE":"99938c5864dd33decb62ab20fd883a9b00181d768ae887a4f19b2d0015c41dc9","LICENSE-MIT":"35043211d1b7be8f7e3f9cad27d981f2189ba9a39d9527b275b3c9740298dfe2","README.md":"bf2e6227790edeb5959c2be250b71d1a197a3a344dc5fc1638fbb39c73bdfd21","src/lib.rs":"e3a0a6bb68d7bad681a978274b612e77cecc41112b448209a09c96b5b33d029e","tests/config_log_level.rs":"8aae2c7decbcf12a2a454486c9d4dd4a82a20e01d327c4abf4e9cfded973159d","tests/default_init.rs":"ef18c9ea38687a178623c11acfa3d34d16b9030eaad337ab9ed6a609a2c42ca2","tests/multiple_init.rs":"a6ed4986a758b7b2322c6ad0a18ec99fd06521a6c8767a6622eab2cbf9be601e"},"package":"b74b7ddf197de32e415d197aa21c1c0cb36e01e4794fd801302280ac7847ee02"}

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше