Compare commits

..

No commits in common. "ecne" and "ecne/140.6.0-1gnu1" have entirely different histories.

156 changed files with 4445 additions and 9051 deletions

View file

@ -101,7 +101,7 @@ tasks:
description: 'Created by a [cron task](https://icecat-ci-tc.services.mozilla.com/tasks/${cron.task_id}) (${treeherder_link})'
provisionerId: "${trustDomain}-${repository.level}"
workerType: "decision"
workerType: "decision-gcp"
tags:
$if: 'tasks_for == "hg-push"'

View file

@ -22,4 +22,4 @@
# changes to stick? As of bug 928195, this shouldn't be necessary! Please
# don't change CLOBBER for WebIDL changes any more.
Merge day clobber 2025-12-08
Merge day clobber 2025-11-10

1
icecat/Cargo.lock generated
View file

@ -1166,7 +1166,6 @@ dependencies = [
name = "crash_helper_common"
version = "0.1.0"
dependencies = [
"getrandom 0.3.3",
"minidump-writer",
"nix 0.30.1",
"num-derive",

View file

@ -103,9 +103,10 @@ var PointerlockFsWarning = {
} else {
textElem.removeAttribute("hidden");
// Document's principal's URI has a host. Display a warning including it.
let displayHost = BrowserUtils.formatURIForDisplay(uri, {
onlyBaseDomain: true,
});
let { DownloadUtils } = ChromeUtils.importESModule(
"resource://gre/modules/DownloadUtils.sys.mjs"
);
let displayHost = DownloadUtils.getURIHost(uri.spec)[0];
let l10nString = {
"fullscreen-warning": "fullscreen-warning-domain",
"pointerlock-warning": "pointerlock-warning-domain",

View file

@ -2230,7 +2230,7 @@ var XULBrowserWindow = {
// Ensure we close any remaining open locationspecific panels
if (!isSameDocument) {
closeOpenPanels(":is(panel, menupopup)[locationspecific='true']");
closeOpenPanels("panel[locationspecific='true']");
}
gPermissionPanel.onLocationChange();

View file

@ -12,7 +12,6 @@ import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs";
const lazy = {};
ChromeUtils.defineESModuleGetters(lazy, {
BrowserUtils: "resource://gre/modules/BrowserUtils.sys.mjs",
BrowserWindowTracker: "resource:///modules/BrowserWindowTracker.sys.mjs",
DownloadUtils: "resource://gre/modules/DownloadUtils.sys.mjs",
Downloads: "resource://gre/modules/Downloads.sys.mjs",
@ -601,13 +600,7 @@ DownloadsViewUI.DownloadElementShell.prototype = {
this.showStatus(stateLabel, hoverStatus);
return;
}
let uri = URL.parse(this.download.source.url)?.URI;
let displayHost = uri
? lazy.BrowserUtils.formatURIForDisplay(uri, {
onlyBaseDomain: true,
})
: "";
let [displayHost] = lazy.DownloadUtils.getURIHost(this.download.source.url);
let [displayDate] = lazy.DownloadUtils.getReadableDates(
new Date(this.download.endTime)
);

View file

@ -513,9 +513,7 @@ export class FxviewTabRowBase extends MozLitElement {
formatURIForDisplay(uriString) {
return !window.IS_STORYBOOK
? lazy.BrowserUtils.formatURIStringForDisplay(uriString, {
showFilenameForLocalURIs: true,
})
? lazy.BrowserUtils.formatURIStringForDisplay(uriString)
: uriString;
}

View file

@ -24,9 +24,7 @@ export const LOGGING_PREF = "browser.tabs.icecat-view.logLevel";
export const MAX_TABS_FOR_RECENT_BROWSING = 5;
export function formatURIForDisplay(uriString) {
return lazy.BrowserUtils.formatURIStringForDisplay(uriString, {
showFilenameForLocalURIs: true,
});
return lazy.BrowserUtils.formatURIStringForDisplay(uriString);
}
export function convertTimestamp(

View file

@ -18,7 +18,6 @@ const lazy = {};
ChromeUtils.defineESModuleGetters(lazy, {
HistoryController: "resource:///modules/HistoryController.sys.mjs",
PrivateBrowsingUtils: "resource://gre/modules/PrivateBrowsingUtils.sys.mjs",
ProfileAge: "resource://gre/modules/ProfileAge.sys.mjs",
});
@ -249,7 +248,6 @@ class HistoryInView extends ViewPage {
@click=${this.openInNewPrivateWindow}
data-l10n-id="fxviewtabrow-open-in-private-window"
data-l10n-attrs="accesskey"
?hidden=${!lazy.PrivateBrowsingUtils.enabled}
></panel-item>
<hr />
<panel-item

View file

@ -1 +1 @@
140.7.0
140.6.0

View file

@ -1 +1 @@
140.7.0esr
140.6.0esr

View file

@ -13,5 +13,5 @@ MOZ_BRANDING_DIRECTORY=browser/branding/unofficial
MOZ_OFFICIAL_BRANDING_DIRECTORY=browser/branding/official
# IceCat settings
MOZ_APP_BASENAME=IceCat
MOZ_APP_VERSION=140.7.0
MOZ_APP_VERSION=140.6.0
MOZ_DATA_REPORTING=0

View file

@ -13,7 +13,6 @@ add_setup(async () => {
});
await setStorage(TEST_ADDRESS_1);
await setStorage(TEST_CREDIT_CARD_1);
registerCleanupFunction(async () => {
await removeAllRecords();
@ -102,7 +101,7 @@ add_task(
/* eslint-disable mozilla/no-arbitrary-setTimeout */
await new Promise(resolve => {
setTimeout(resolve, FormAutofill.refillOnSiteClearingFieldsTimeout);
setTimeout(resolve, FormAutofill.refillOnSiteClearingFields);
});
return await SpecialPowers.spawn(
@ -117,56 +116,3 @@ add_task(
Assert.equal(orgaValue, "", "Element was not refilled");
}
);
add_task(async function address_field_not_refilled_after_reformat_by_site() {
const value = await BrowserTestUtils.withNewTab(
CREDITCARD_FORM_URL,
async browser => {
const selectorToTriggerAutocompletion = "#cc-number";
const elementValueToVerifyAutofill = TEST_CREDIT_CARD_1["cc-number"];
info("Triggering autocompletion.");
await openPopupOn(browser, selectorToTriggerAutocompletion);
await BrowserTestUtils.synthesizeKey("VK_DOWN", {}, browser);
await BrowserTestUtils.synthesizeKey("VK_RETURN", {}, browser);
await waitForAutofill(
browser,
selectorToTriggerAutocompletion,
elementValueToVerifyAutofill
);
const formatValue = TEST_CREDIT_CARD_1["cc-number"]
.replace(/(.{4})/g, "$1 ")
.trim();
await SpecialPowers.spawn(
browser,
[selectorToTriggerAutocompletion, formatValue],
async (ccNumberSelector, reformatValue) => {
const ccNumberInput =
content.document.querySelector(ccNumberSelector);
info("Simulating site reformats an input");
ccNumberInput.value = reformatValue;
}
);
/* eslint-disable mozilla/no-arbitrary-setTimeout */
await new Promise(resolve => {
setTimeout(resolve, FormAutofill.refillOnSiteClearingFieldsTimeout);
});
return await SpecialPowers.spawn(
browser,
[selectorToTriggerAutocompletion],
async ccNumberSelector => {
return content.document.querySelector(ccNumberSelector).value;
}
);
}
);
const formatValue = TEST_CREDIT_CARD_1["cc-number"]
.replace(/(.{4})/g, "$1 ")
.trim();
Assert.equal(value, formatValue, "Element was not refilled");
});

View file

@ -10,4 +10,4 @@
# hardcoded milestones in the tree from these two files.
#--------------------------------------------------------
140.7.0
140.6.0

View file

@ -1,9 +1,3 @@
icecat (140.7.0-1gnu1+build1-0.12.0) ecne; urgency=medium
* New upstream stable release (icecat-140.7.0-1gnu1)
-- Capitulo Mexicano de Software Libre <devel@cmxsl.org> Sat, 17 Jan 2026 21:13:41 -0600
icecat (140.6.0-1gnu1+build1-0.12.0) ecne; urgency=medium
* New upstream stable release (icecat-140.6.0-1gnu1)

View file

@ -45,8 +45,8 @@ class ChildProcessChannelListener final {
};
// TODO Backtrack.
nsTHashMap<NoMemMoveKey<nsUint64HashKey>, Callback> mCallbacks;
nsTHashMap<NoMemMoveKey<nsUint64HashKey>, CallbackArgs> mChannelArgs;
nsTHashMap<nsUint64HashKey, Callback> mCallbacks;
nsTHashMap<nsUint64HashKey, CallbackArgs> mChannelArgs;
};
} // namespace mozilla::dom

View file

@ -104,10 +104,6 @@ bool TimeoutManager::IsActive() const {
return true;
}
if (mIsChromeWorker) {
return true;
}
// Check if we're playing audio
if (mGlobalObject.IsPlayingAudio()) {
return true;
@ -326,7 +322,7 @@ TimeDuration TimeoutManager::CalculateDelay(Timeout* aTimeout) const {
TimeDuration result = aTimeout->mInterval;
if (aTimeout->mNestingLevel >=
StaticPrefs::dom_clamp_timeout_nesting_level() && !mIsChromeWorker) {
StaticPrefs::dom_clamp_timeout_nesting_level()) {
uint32_t minTimeoutValue = StaticPrefs::dom_min_timeout_value();
result = TimeDuration::Max(result,
TimeDuration::FromMilliseconds(minTimeoutValue));
@ -408,7 +404,7 @@ uint32_t TimeoutManager::sNestingLevel = 0;
TimeoutManager::TimeoutManager(nsIGlobalObject& aHandle,
uint32_t aMaxIdleDeferMS,
nsISerialEventTarget* aEventTarget, bool aIsChromeWorker)
nsISerialEventTarget* aEventTarget)
: mGlobalObject(aHandle),
mExecutor(new TimeoutExecutor(this, false, 0)),
mIdleExecutor(new TimeoutExecutor(this, true, aMaxIdleDeferMS)),
@ -429,8 +425,7 @@ TimeoutManager::TimeoutManager(nsIGlobalObject& aHandle,
mBudgetThrottleTimeouts(false),
mIsLoading(false),
mEventTarget(aEventTarget),
mIsWindow(aHandle.GetAsInnerWindow()),
mIsChromeWorker(aIsChromeWorker) {
mIsWindow(aHandle.GetAsInnerWindow()) {
MOZ_LOG(gTimeoutLog, LogLevel::Debug,
("TimeoutManager %p created, tracking bucketing %s\n", this,
StaticPrefs::privacy_trackingprotection_annotate_channels()

View file

@ -30,8 +30,7 @@ class TimeoutManager final {
public:
TimeoutManager(nsIGlobalObject& aHandle, uint32_t aMaxIdleDeferMS,
nsISerialEventTarget* aEventTarget,
bool aIsChromeWorker = false);
nsISerialEventTarget* aEventTarget);
~TimeoutManager();
TimeoutManager(const TimeoutManager& rhs) = delete;
void operator=(const TimeoutManager& rhs) = delete;
@ -271,8 +270,6 @@ class TimeoutManager final {
const bool mIsWindow;
const bool mIsChromeWorker;
uint32_t mNestingLevel{0};
static uint32_t sNestingLevel;

View file

@ -10,12 +10,6 @@ support-files = ["simple_navigator_clipboard_keydown.html"]
run-if = ["os != 'win'"] # The popupmenus dismiss when access keys for disabled items are pressed on windows
skip-if = ["os == 'mac' && verify"]
["browser_navigator_clipboard_contextmenu_dismiss.js"]
support-files = [
"file_toplevel.html",
"file_iframe.html",
]
["browser_navigator_clipboard_contextmenu_suppression.js"]
support-files = [
"file_toplevel.html",

View file

@ -1,64 +0,0 @@
/* -*- Mode: JavaScript; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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";
const kBaseUrlForContent = getRootDirectory(gTestPath).replace(
"chrome://mochitests/content",
"https://example.com"
);
const kContentFileUrl = kBaseUrlForContent + "file_toplevel.html";
Services.scriptloader.loadSubScript(
"chrome://mochitests/content/browser/gfx/layers/apz/test/mochitest/apz_test_native_event_utils.js",
this
);
async function readText(aBrowser) {
return SpecialPowers.spawn(aBrowser, [], () => {
content.document.notifyUserGestureActivation();
content.eval(`navigator.clipboard.readText();`);
});
}
add_task(async function test_context_menu_dimiss_tab_navigate() {
await BrowserTestUtils.withNewTab(kContentFileUrl, async aBrowser => {
info(`Randomized text to avoid overlappings with other tests`);
await promiseWritingRandomTextToClipboard();
info(`Wait for paste context menu is shown`);
let pasteButtonIsShown = promisePasteButtonIsShown();
await readText(aBrowser);
await pasteButtonIsShown;
info("Navigate tab");
let pasteButtonIsHidden = promisePasteButtonIsHidden();
aBrowser.loadURI(Services.io.newURI("https://example.com/"), {
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
});
info(`Wait for paste context menu is hidden`);
await pasteButtonIsHidden;
});
});
add_task(async function test_context_menu_dimiss_tab_reload() {
await BrowserTestUtils.withNewTab(kContentFileUrl, async aBrowser => {
info(`Randomized text to avoid overlappings with other tests`);
await promiseWritingRandomTextToClipboard();
info(`Wait for paste context menu is shown`);
let pasteButtonIsShown = promisePasteButtonIsShown();
await readText(aBrowser);
await pasteButtonIsShown;
info("Reload tab");
let pasteButtonIsHidden = promisePasteButtonIsHidden();
await BrowserTestUtils.reloadTab(gBrowser.selectedTab);
info(`Wait for paste context menu is hidden`);
await pasteButtonIsHidden;
});
});

View file

@ -596,10 +596,6 @@ void nsHTMLDocument::NamedGetter(JSContext* aCx, const nsAString& aName,
aRv.NoteJSContextException(aCx);
return;
}
if (v.isNullOrUndefined()) {
return;
}
} else {
// Step 3. Otherwise, if elements has only one element, return that
// element.

View file

@ -657,11 +657,13 @@ void GMPParent::DeleteProcess() {
self->DeleteProcess();
},
[self](const ipc::ResponseRejectReason&) {
// We crashed during shutdown, ActorDestroy will perform cleanup.
GMP_LOG_DEBUG(
"GMPParent[%p|childPid=%d] DeleteProcess: Shutdown handshake "
"error.",
self.get(), self->mChildPid);
self->mState = GMPState::Closed;
self->Close();
self->DeleteProcess();
});
return;
}

View file

@ -780,17 +780,6 @@ void WebrtcVideoConduit::OnControlConfigChange() {
.valueOr(-1);
})());
// Set each layer's max-bitrate explicitly or libwebrtc may ignore all
// stream-specific max-bitrate settings later on, as provided by the
// VideoStreamFactory. Default to our max of 10Mbps, overriden by
// SDP/JS.
int maxBps = KBPS(10000);
maxBps = MinIgnoreZero(maxBps, mPrefMaxBitrate);
maxBps = MinIgnoreZero(maxBps, mNegotiatedMaxBitrate);
maxBps = MinIgnoreZero(maxBps,
static_cast<int>(encodingConstraints.maxBr));
video_stream.max_bitrate_bps = maxBps;
// At this time, other values are not used until after
// CreateEncoderStreams(). We fill these in directly from the codec
// config in VideoStreamFactory.
@ -951,14 +940,6 @@ void WebrtcVideoConduit::OnControlConfigChange() {
mEncoderConfig.number_of_streams,
"Each video substream must have a corresponding ssrc.");
mEncoderConfig.video_stream_factory = CreateVideoStreamFactory();
for (const auto& stream : mEncoderConfig.simulcast_layers) {
CSFLogDebug(
LOGTAG,
"%s Reconfigure with simulcast stream maxFps=%d, "
"bitrate=[%dkbps, %dkbps, %dkbps]",
__FUNCTION__, stream.max_framerate, stream.min_bitrate_bps / 1000,
stream.target_bitrate_bps / 1000, stream.max_bitrate_bps / 1000);
}
mSendStream->ReconfigureVideoEncoder(mEncoderConfig.Copy());
}
if (sendSourceUpdateNeeded && mTrackSource) {

View file

@ -223,20 +223,15 @@ std::vector<webrtc::VideoStream> VideoStreamFactory::CreateEncoderStreams(
__FUNCTION__, encoding.rid.c_str());
}
CSFLogInfo(LOGTAG, "%s Stream with RID %s maxFps=%d (global max fps = %u)",
__FUNCTION__, encoding.rid.c_str(), video_stream.max_framerate,
(unsigned)mMaxFramerateForAllStreams);
SelectBitrates({video_stream.width, video_stream.height}, mMinBitrate,
mStartBitrate,
SaturatingCast<int>(encoding.constraints.maxBr),
mPrefMaxBitrate, mNegotiatedMaxBitrate, video_stream);
CSFLogInfo(LOGTAG,
"%s Stream with RID %s maxFps=%d (global max fps = %u), "
"bitrate=[%dkbps, %dkbps, %dkbps]",
__FUNCTION__, encoding.rid.c_str(), video_stream.max_framerate,
(unsigned)mMaxFramerateForAllStreams,
video_stream.min_bitrate_bps / 1000,
video_stream.target_bitrate_bps / 1000,
video_stream.max_bitrate_bps / 1000);
video_stream.bitrate_priority = aConfig.bitrate_priority;
video_stream.max_qp = kQpMax;

View file

@ -491,8 +491,6 @@ int32_t WebrtcGmpVideoEncoder::SetRates_g(uint32_t aOldBitRateKbps,
return WEBRTC_VIDEO_CODEC_ERROR;
}
GMP_LOG_DEBUG("GMP Encoder %p setting rate %ukbps", this, aNewBitRateKbps);
mNeedKeyframe |= (aOldBitRateKbps == 0 && aNewBitRateKbps != 0);
GMPErr err = mGMP->SetRates(

View file

@ -685,52 +685,44 @@ WebrtcTCPSocket::OnInputStreamReady(nsIAsyncInputStream* in) {
MOZ_ASSERT(mTransport, "webrtc TCP socket not connected");
MOZ_ASSERT(mSocketIn == in, "wrong input stream");
while (true) {
char buffer[9216];
uint32_t remainingCapacity = sizeof(buffer);
uint32_t read = 0;
char buffer[9216];
uint32_t remainingCapacity = sizeof(buffer);
uint32_t read = 0;
while (remainingCapacity > 0) {
uint32_t count = 0;
nsresult rv = mSocketIn->Read(buffer + read, remainingCapacity, &count);
if (rv == NS_BASE_STREAM_WOULD_BLOCK) {
break;
}
if (NS_FAILED(rv)) {
LOG(("WebrtcTCPSocket::OnInputStreamReady %p failed %u\n", this,
static_cast<uint32_t>(rv)));
CloseWithReason(rv);
return rv;
}
// base stream closed
if (count == 0) {
LOG(("WebrtcTCPSocket::OnInputStreamReady %p connection closed\n",
this));
CloseWithReason(NS_ERROR_FAILURE);
return NS_OK;
}
remainingCapacity -= count;
read += count;
}
if (read > 0) {
nsTArray<uint8_t> array(read);
array.AppendElements(buffer, read);
InvokeOnRead(std::move(array));
}
if (remainingCapacity != 0) {
// Loop exited above, but not because we ran out of space. We're actually
// done, break out of the while(true) loop.
while (remainingCapacity > 0) {
uint32_t count = 0;
nsresult rv = mSocketIn->Read(buffer + read, remainingCapacity, &count);
if (rv == NS_BASE_STREAM_WOULD_BLOCK) {
break;
}
if (NS_FAILED(rv)) {
LOG(("WebrtcTCPSocket::OnInputStreamReady %p failed %u\n", this,
static_cast<uint32_t>(rv)));
CloseWithReason(rv);
return rv;
}
// base stream closed
if (count == 0) {
LOG(("WebrtcTCPSocket::OnInputStreamReady %p connection closed\n", this));
CloseWithReason(NS_ERROR_FAILURE);
return NS_OK;
}
remainingCapacity -= count;
read += count;
}
if (read > 0) {
nsTArray<uint8_t> array(read);
array.AppendElements(buffer, read);
InvokeOnRead(std::move(array));
}
mSocketIn->AsyncWait(this, 0, 0, nullptr);
return NS_OK;
}

View file

@ -436,8 +436,9 @@ static gfx::Matrix GetCTMInternal(SVGElement* aElement, CTMType aCTMType,
auto postTranslateFrameOffset = [](nsIFrame* aFrame, nsIFrame* aAncestorFrame,
gfx::Matrix& aMatrix) {
auto point = aFrame->GetOffsetTo(aAncestorFrame);
aMatrix.PostTranslate(nsPresContext::AppUnitsToFloatCSSPixels(point.x),
nsPresContext::AppUnitsToFloatCSSPixels(point.y));
aMatrix =
aMatrix.PostTranslate(nsPresContext::AppUnitsToFloatCSSPixels(point.x),
nsPresContext::AppUnitsToFloatCSSPixels(point.y));
};
gfxMatrix matrix = getLocalTransformHelper(aElement, aHaveRecursed);
@ -498,7 +499,8 @@ static gfx::Matrix GetCTMInternal(SVGElement* aElement, CTMType aCTMType,
if (frame->IsSVGOuterSVGFrame()) {
nsMargin bp = frame->GetUsedBorderAndPadding();
int32_t appUnitsPerCSSPixel = AppUnitsPerCSSPixel();
nscoord xOffset, yOffset;
float xOffset = NSAppUnitsToFloatPixels(bp.left, appUnitsPerCSSPixel);
float yOffset = NSAppUnitsToFloatPixels(bp.top, appUnitsPerCSSPixel);
// See
// https://drafts.csswg.org/css-transforms/#valdef-transform-box-fill-box
// For elements with associated CSS layout box, the used value for fill-box
@ -506,24 +508,17 @@ static gfx::Matrix GetCTMInternal(SVGElement* aElement, CTMType aCTMType,
switch (frame->StyleDisplay()->mTransformBox) {
case StyleTransformBox::FillBox:
case StyleTransformBox::ContentBox:
xOffset = bp.left;
yOffset = bp.top;
// Apply border/padding separate from the rest of the transform.
// i.e. after it's been transformed
tm.PostTranslate(xOffset, yOffset);
break;
case StyleTransformBox::StrokeBox:
case StyleTransformBox::ViewBox:
case StyleTransformBox::BorderBox: {
// Extract the rotation component of the matrix.
float angle = std::atan2(tm._12, tm._11);
float cosAngle = std::cos(angle);
float sinAngle = std::sin(angle);
// Apply that rotation to bp.left and bp.top.
xOffset = bp.left * cosAngle - bp.top * sinAngle;
yOffset = bp.top * cosAngle + bp.left * sinAngle;
case StyleTransformBox::BorderBox:
// Apply border/padding before we transform the surface.
tm.PreTranslate(xOffset, yOffset);
break;
}
}
tm.PostTranslate(NSAppUnitsToFloatPixels(xOffset, appUnitsPerCSSPixel),
NSAppUnitsToFloatPixels(yOffset, appUnitsPerCSSPixel));
}
if (!ancestor || !ancestor->IsElement()) {

View file

@ -823,20 +823,6 @@ MacOSWebAuthnService::MakeCredential(uint64_t aTransactionId,
*userVerificationPreference;
}
if (__builtin_available(macos 13.5, *)) {
// Show the hybrid transport unless we have a non-empty hint list and
// none of the hints are for the hybrid transport.
bool hasHybridHint = false;
nsTArray<nsString> hints;
(void)aArgs->GetHints(hints);
for (nsString& hint : hints) {
if (hint.Equals(u"hybrid"_ns)) {
hasHybridHint = true;
}
}
platformRegistrationRequest.shouldShowHybridTransport =
hints.Length() == 0 || hasHybridHint;
}
if (__builtin_available(macos 14.0, *)) {
bool largeBlobSupportRequired;
nsresult rv =
@ -1187,19 +1173,11 @@ void MacOSWebAuthnService::DoGetAssertion(
*userVerificationPreference;
}
if (__builtin_available(macos 13.5, *)) {
// Show the hybrid transport option if (1) none of the allowlist
// credentials list transports, or (2) at least one allow list entry
// lists the hybrid transport, or (3) the request has the hybrid hint.
// Show the hybrid transport option if (1) we have no transport hints
// or (2) at least one allow list entry lists the hybrid transport.
bool shouldShowHybridTransport =
!transports ||
(transports & MOZ_WEBAUTHN_AUTHENTICATOR_TRANSPORT_ID_HYBRID);
nsTArray<nsString> hints;
(void)aArgs->GetHints(hints);
for (nsString& hint : hints) {
if (hint.Equals(u"hybrid"_ns)) {
shouldShowHybridTransport = true;
}
}
platformAssertionRequest.shouldShowHybridTransport =
shouldShowHybridTransport;
}

View file

@ -143,7 +143,6 @@ struct WebAuthnMakeCredentialInfo {
WebAuthnExtension[] Extensions;
WebAuthnAuthenticatorSelection AuthenticatorSelection;
nsString attestationConveyancePreference;
nsString[] Hints;
};
struct WebAuthnMakeCredentialResult {
@ -169,7 +168,6 @@ struct WebAuthnGetAssertionInfo {
WebAuthnExtension[] Extensions;
nsString userVerificationRequirement;
bool ConditionallyMediated;
nsString[] Hints;
};
struct WebAuthnGetAssertionResult {

View file

@ -659,8 +659,6 @@ void PublicKeyCredential::ParseCreationOptionsFromJSON(
aResult.mAuthenticatorSelection = aOptions.mAuthenticatorSelection.Value();
}
aResult.mHints = aOptions.mHints;
aResult.mAttestation = aOptions.mAttestation;
if (aOptions.mExtensions.WasPassed()) {
@ -754,8 +752,6 @@ void PublicKeyCredential::ParseRequestOptionsFromJSON(
aResult.mUserVerification = aOptions.mUserVerification;
aResult.mHints = aOptions.mHints;
if (aOptions.mExtensions.WasPassed()) {
if (aOptions.mExtensions.Value().mAppid.WasPassed()) {
aResult.mExtensions.mAppid.Construct(

View file

@ -245,12 +245,6 @@ WebAuthnRegisterArgs::GetLargeBlobSupportRequired(
return NS_ERROR_NOT_AVAILABLE;
}
NS_IMETHODIMP
WebAuthnRegisterArgs::GetHints(nsTArray<nsString>& aHints) {
aHints.Assign(mInfo.Hints());
return NS_OK;
}
NS_IMPL_ISUPPORTS(WebAuthnSignArgs, nsIWebAuthnSignArgs)
NS_IMETHODIMP
@ -490,10 +484,4 @@ WebAuthnSignArgs::GetLargeBlobWrite(nsTArray<uint8_t>& aLargeBlobWrite) {
return NS_ERROR_NOT_AVAILABLE;
}
NS_IMETHODIMP
WebAuthnSignArgs::GetHints(nsTArray<nsString>& aHints) {
aHints.Assign(mInfo.Hints());
return NS_OK;
}
} // namespace mozilla::dom

View file

@ -392,7 +392,7 @@ already_AddRefed<Promise> WebAuthnHandler::MakeCredential(
WebAuthnMakeCredentialInfo info(rpId, challenge, adjustedTimeout, excludeList,
rpInfo, userInfo, coseAlgos, extensions,
authSelection, attestation, aOptions.mHints);
authSelection, attestation);
// Set up the transaction state. Fallible operations should not be performed
// below this line, as we must not leave the transaction state partially
@ -666,7 +666,7 @@ already_AddRefed<Promise> WebAuthnHandler::GetAssertion(
WebAuthnGetAssertionInfo info(
rpId, maybeAppId, challenge, adjustedTimeout, allowList, extensions,
aOptions.mUserVerification, aConditionallyMediated, aOptions.mHints);
aOptions.mUserVerification, aConditionallyMediated);
// Set up the transaction state. Fallible operations should not be performed
// below this line, as we must not leave the transaction state partially

View file

@ -30,10 +30,6 @@ StaticRWLock gWinWebAuthnModuleLock;
static bool gWinWebAuthnModuleUnusable = false;
static HMODULE gWinWebAuthnModule = 0;
static const LPCWSTR gWebAuthnHintStrings[3] = {
WEBAUTHN_CREDENTIAL_HINT_SECURITY_KEY,
WEBAUTHN_CREDENTIAL_HINT_CLIENT_DEVICE, WEBAUTHN_CREDENTIAL_HINT_HYBRID};
static decltype(WebAuthNIsUserVerifyingPlatformAuthenticatorAvailable)*
gWinWebauthnIsUVPAA = nullptr;
static decltype(WebAuthNAuthenticatorMakeCredential)*
@ -54,6 +50,7 @@ static decltype(WebAuthNGetPlatformCredentialList)*
gWinWebauthnGetPlatformCredentialList = nullptr;
static decltype(WebAuthNFreePlatformCredentialList)*
gWinWebauthnFreePlatformCredentialList = nullptr;
} // namespace
/***********************************************************************
@ -179,18 +176,6 @@ WinWebAuthnService::~WinWebAuthnService() {
gWinWebAuthnModule = 0;
}
// static
void PrunePublicKeyCredentialHints(const nsTArray<nsString>& aInHints,
/* out */ nsTArray<LPCWSTR>& aOutHints) {
for (const nsString& inputHint : aInHints) {
for (const LPCWSTR knownHint : gWebAuthnHintStrings) {
if (inputHint.Equals(knownHint)) {
aOutHints.AppendElement(knownHint);
}
}
}
}
// static
bool WinWebAuthnService::AreWebAuthNApisAvailable() {
nsresult rv = EnsureWinWebAuthnModuleLoaded();
@ -609,16 +594,10 @@ WinWebAuthnService::MakeCredential(uint64_t aTransactionId,
winPrivateBrowsing = TRUE;
}
nsTArray<nsString> inputHints;
(void)aArgs->GetHints(inputHints);
nsTArray<LPCWSTR> hints;
PrunePublicKeyCredentialHints(inputHints, hints);
// MakeCredentialOptions
WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS
WebAuthNCredentialOptions = {
WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_8,
WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_7,
timeout,
{0, NULL},
{0, NULL},
@ -630,16 +609,13 @@ WinWebAuthnService::MakeCredential(uint64_t aTransactionId,
&cancellationId, // CancellationId
pExcludeCredentialList,
WEBAUTHN_ENTERPRISE_ATTESTATION_NONE,
largeBlobSupport, // LargeBlobSupport
winPreferResidentKey, // PreferResidentKey
winPrivateBrowsing, // BrowserInPrivateMode
winEnablePrf, // EnablePrf
NULL, // LinkedDevice
0, // size of JsonExt
NULL, // JsonExt
NULL, // PRFGlobalEval
(DWORD)hints.Length(), // Size of CredentialHints
hints.Elements(), // CredentialHints
largeBlobSupport, // LargeBlobSupport
winPreferResidentKey, // PreferResidentKey
winPrivateBrowsing, // BrowserInPrivateMode
winEnablePrf, // EnablePrf
NULL, // LinkedDevice
0, // size of JsonExt
NULL, // JsonExt
};
if (rgExtension.Length() != 0) {
@ -992,12 +968,6 @@ void WinWebAuthnService::DoGetAssertion(
pAllowCredentialList = &allowCredentialList;
}
nsTArray<nsString> inputHints;
(void)aArgs->GetHints(inputHints);
nsTArray<LPCWSTR> hints;
PrunePublicKeyCredentialHints(inputHints, hints);
uint32_t timeout_u32;
Unused << aArgs->GetTimeoutMS(&timeout_u32);
DWORD timeout = timeout_u32;
@ -1011,7 +981,7 @@ void WinWebAuthnService::DoGetAssertion(
WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS WebAuthNAssertionOptions =
{
WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_8,
WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_7,
timeout,
{0, NULL},
{0, NULL},
@ -1031,8 +1001,6 @@ void WinWebAuthnService::DoGetAssertion(
FALSE, // AutoFill
0, // Size of JsonExt
NULL, // JsonExt
(DWORD)hints.Length(), // Size of CredentialHints
hints.Elements(), // CredentialHints
};
PWEBAUTHN_ASSERTION pWebAuthNAssertion = nullptr;

View file

@ -65,8 +65,6 @@ interface nsIWebAuthnRegisterArgs : nsISupports {
// consent popup.
[must_use] readonly attribute AString attestationConveyancePreference;
readonly attribute Array<AString> hints;
readonly attribute boolean privateBrowsing;
};
@ -113,8 +111,6 @@ interface nsIWebAuthnSignArgs : nsISupports {
// cancel transactions.
readonly attribute unsigned long timeoutMS;
readonly attribute Array<AString> hints;
readonly attribute boolean conditionallyMediated;
readonly attribute boolean privateBrowsing;

View file

@ -36,18 +36,6 @@
is(arr.length, 0, `${description} (array should be empty)`);
}
function stringArrayEquals(actual, expected, description) {
is(actual.length, expected.length, `${description} (actual and expected should have the same length)`);
for (let i = 0; i < actual.length; i++) {
if (actual[i] instanceof String) {
throw new Error(`actual[${i}] is not a string` + typeof actual[i]);
}
if (actual[i] !== expected[i]) {
throw new Error(`actual and expected differ in position ${i}: ${actual[i]} vs ${expected[i]}`);
}
}
}
function shouldThrow(func, expectedError, description) {
let threw = false;
try {
@ -67,7 +55,7 @@
pubKeyCredParams: [],
};
let creationOptions = PublicKeyCredential.parseCreationOptionsFromJSON(creationOptionsJSON);
is(Object.getOwnPropertyNames(creationOptions).length, 9, "creation options should have 9 properties");
is(Object.getOwnPropertyNames(creationOptions).length, 8, "creation options should have 8 properties");
is(creationOptions.rp.id, undefined, "rp.id should be undefined");
is(creationOptions.rp.name, "Example", "rp.name should be Example");
arrayBufferEqualsArray(creationOptions.user.id, [ 250, 93, 234, 52, 180, 202, 38, 120 ], "user.id should be as expected");
@ -82,7 +70,6 @@
is(creationOptions.authenticatorSelection.requireResidentKey, false, "creationOptions.authenticatorSelection.requireResidentKey should be false");
is(creationOptions.authenticatorSelection.userVerification, "preferred", "creationOptions.authenticatorSelection.userVerification should be preferred");
is(creationOptions.attestation, "none", "attestation should be none");
stringArrayEquals(creationOptions.hints, [], "hints should be an empty array");
is(Object.getOwnPropertyNames(creationOptions.extensions).length, 0, "extensions should be an empty object");
});
@ -118,7 +105,7 @@
},
};
let creationOptions = PublicKeyCredential.parseCreationOptionsFromJSON(creationOptionsJSON);
is(Object.getOwnPropertyNames(creationOptions).length, 10, "creation options should have 10 properties");
is(Object.getOwnPropertyNames(creationOptions).length, 9, "creation options should have 9 properties");
is(creationOptions.rp.name, "Example", "rp.name should be Example");
is(creationOptions.rp.id, "example.com", "rp.id should be example.com");
arrayBufferEqualsArray(creationOptions.user.id, [ 215, 212, 213, 166, 160, 65, 56, 3 ], "user.id should be as expected");
@ -138,7 +125,6 @@
is(creationOptions.authenticatorSelection.residentKey, "required", "creationOptions.authenticatorSelection.residentKey should be required");
is(creationOptions.authenticatorSelection.requireResidentKey, true, "creationOptions.authenticatorSelection.requireResidentKey should be true");
is(creationOptions.authenticatorSelection.userVerification, "discouraged", "creationOptions.authenticatorSelection.userVerification should be discouraged");
stringArrayEquals(creationOptions.hints, creationOptionsJSON.hints, "creationOptions.hints should be as expected");
is(creationOptions.attestation, "indirect", "attestation should be indirect");
is(creationOptions.extensions.appid, "https://www.example.com/appID", "extensions.appid should be https://www.example.com/appID");
is(creationOptions.extensions.credProps, true, "extensions.credProps should be true");
@ -200,13 +186,12 @@
challenge: "3yW2WHD_jbU",
};
let requestOptions = PublicKeyCredential.parseRequestOptionsFromJSON(requestOptionsJSON);
is(Object.getOwnPropertyNames(requestOptions).length, 5, "request options should have 5 properties");
is(Object.getOwnPropertyNames(requestOptions).length, 4, "request options should have 4 properties");
arrayBufferEqualsArray(requestOptions.challenge, [ 223, 37, 182, 88, 112, 255, 141, 181 ], "challenge should be as expected");
is(requestOptions.timeout, undefined, "timeout should be undefined");
is(requestOptions.rpId, undefined, "rpId should be undefined");
isEmptyArray(requestOptions.allowCredentials, "allowCredentials should be an empty array");
is(requestOptions.userVerification, "preferred", "userVerification should be preferred");
stringArrayEquals(requestOptions.hints, [], "hints should be an empty array");
is(Object.getOwnPropertyNames(requestOptions.extensions).length, 0, "extensions should be an empty object");
});
@ -237,7 +222,7 @@
},
};
let requestOptions = PublicKeyCredential.parseRequestOptionsFromJSON(requestOptionsJSON);
is(Object.getOwnPropertyNames(requestOptions).length, 7, "request options should have 7 properties");
is(Object.getOwnPropertyNames(requestOptions).length, 6, "request options should have 6 properties");
arrayBufferEqualsArray(requestOptions.challenge, [ 64, 7, 218, 103, 1, 16, 10, 68 ], "challenge should be as expected");
is(requestOptions.timeout, 25000, "timeout should be 25000");
is(requestOptions.rpId, "example.com", "rpId should be example.com");
@ -247,7 +232,6 @@
is(requestOptions.allowCredentials[0].transports.length, 1, "allowCredentials[0].transports should have one element");
is(requestOptions.allowCredentials[0].transports[0], "smart-card", "allowCredentials[0].transports[0] should be usb");
is(requestOptions.userVerification, "discouraged", "userVerification should be discouraged");
stringArrayEquals(requestOptions.hints, requestOptionsJSON.hints, "requestOptions.hints should be as expected");
is(requestOptions.extensions.appid, "https://www.example.com/anotherAppID", "extensions.appid should be https://www.example.com/anotherAppID");
arrayBufferEqualsArray(requestOptions.extensions.prf.eval.first, [102, 105, 114, 115, 116], "extensions.prf.eval.first should be 'first'");
arrayBufferEqualsArray(requestOptions.extensions.prf.eval.second, [115, 101, 99, 111, 110, 100], "extensions.prf.eval.second should be 'second'");

View file

@ -0,0 +1,330 @@
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
**/Properties/launchSettings.json
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding add-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# JetBrains Rider
.idea/
*.sln.iml
# CodeRush
.cr/
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/

View file

@ -1,20 +1,16 @@
# Description
## WebAuthn Specification APIs
This project includes Win32 headers for communicating to Windows Hello and external secruity keys as part of WebAuthn and CTAP specification.
Win32 APIs for performing operations corresponding to WebAuthn (https://w3c.github.io/webauthn) specification are present in following files.
- webauthn.h
For more details about the standards, please follow these links:
* WebAuthn: https://w3c.github.io/webauthn/
* CTAP: https://fidoalliance.org/specs/fido-v2.0-ps-20190130/fido-client-to-authenticator-protocol-v2.0-ps-20190130.html
## Plugin Passkey Authenticators Implementation APIs/Interfaces
APIs, interfaces and helper functions for passkey plugin authenticator implementators are present in following files
- pluginauthenticator.idl
- pluginauthenticator.h
- webauthnplugin.h
# Having Issues?
If you have any issues in adopting these APIs or need some clarification, please contact fido-dev@microsoft.com.
# Contributing
This project welcomes contributions and suggestions. Most contributions require you to agree to a

View file

@ -1,26 +0,0 @@
schema: 1
bugzilla:
product: Core
component: "DOM: Web Authentication"
origin:
name: Microsoft WebAuthn
description: Win32 APIs for WebAuthn
url: https://github.com/microsoft/webauthn
release: 9108981ca80b3c6788fa598708dcf3cb10220ad7
revision: 9108981ca80b3c6788fa598708dcf3cb10220ad7
license: MIT
vendoring:
url: https://github.com/microsoft/webauthn
source-hosting: github
vendor-directory: dom/webauthn/winwebauthn
exclude:
- "**"
include:
- LICENSE
- README.md
- webauthn.h

View file

@ -95,7 +95,6 @@ extern "C" {
// - WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS : 5
// - WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS : 6
// - WEBAUTHN_ASSERTION : 3
// - WEBAUTHN_GET_CREDENTIALS_OPTIONS : 1
// - WEBAUTHN_CREDENTIAL_DETAILS : 1
// APIs:
// - WebAuthNGetPlatformCredentialList
@ -128,30 +127,7 @@ extern "C" {
// - WEBAUTHN_CREDENTIAL_ATTESTATION : 6
// - WEBAUTHN_ASSERTION : 5
#define WEBAUTHN_API_VERSION_8 8
// WEBAUTHN_API_VERSION_8 : Delta From WEBAUTHN_API_VERSION_7
// Data Structures and their sub versions:
// - WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS : 8
// - WEBAUTHN_CREDENTIAL_DETAILS : 3
// - WEBAUTHN_CREDENTIAL_ATTESTATION : 7
// - WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS : 8
//
#define WEBAUTHN_API_VERSION_9 9
// WEBAUTHN_API_VERSION_9 : Delta From WEBAUTHN_API_VERSION_8
// Data Structures and their sub versions:
// - WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS : 9
// - WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS : 9
// - WEBAUTHN_ASSERTION : 6
// - WEBAUTHN_CREDENTIAL_DETAILS : 4
// - WEBAUTHN_CREDENTIAL_ATTESTATION : 8
// - WEBAUTHN_AUTHENTICATOR_DETAILS : 1
// - WEBAUTHN_AUTHENTICATOR_DETAILS_LIST : Not Applicable
// APIs:
// - WebAuthNGetAuthenticatorList
// - WebAuthNFreeAuthenticatorList
#define WEBAUTHN_API_CURRENT_VERSION WEBAUTHN_API_VERSION_9
#define WEBAUTHN_API_CURRENT_VERSION WEBAUTHN_API_VERSION_7
//+------------------------------------------------------------------------------------------
// Information about an RP Entity
@ -171,7 +147,7 @@ typedef struct _WEBAUTHN_RP_ENTITY_INFORMATION {
// This field is required.
PCWSTR pwszName;
// Optional URL pointing to RP's logo.
// Optional URL pointing to RP's logo.
PCWSTR pwszIcon;
} WEBAUTHN_RP_ENTITY_INFORMATION, *PWEBAUTHN_RP_ENTITY_INFORMATION;
typedef const WEBAUTHN_RP_ENTITY_INFORMATION *PCWEBAUTHN_RP_ENTITY_INFORMATION;
@ -307,15 +283,7 @@ typedef const WEBAUTHN_CREDENTIALS *PCWEBAUTHN_CREDENTIALS;
#define WEBAUTHN_CTAP_TRANSPORT_TEST 0x00000008
#define WEBAUTHN_CTAP_TRANSPORT_INTERNAL 0x00000010
#define WEBAUTHN_CTAP_TRANSPORT_HYBRID 0x00000020
#define WEBAUTHN_CTAP_TRANSPORT_SMART_CARD 0x00000040
#define WEBAUTHN_CTAP_TRANSPORT_FLAGS_MASK 0x0000007F
#define WEBAUTHN_CTAP_TRANSPORT_USB_STRING "usb"
#define WEBAUTHN_CTAP_TRANSPORT_NFC_STRING "nfc"
#define WEBAUTHN_CTAP_TRANSPORT_BLE_STRING "ble"
#define WEBAUTHN_CTAP_TRANSPORT_SMART_CARD_STRING "smart-card"
#define WEBAUTHN_CTAP_TRANSPORT_HYBRID_STRING "hybrid"
#define WEBAUTHN_CTAP_TRANSPORT_INTERNAL_STRING "internal"
#define WEBAUTHN_CTAP_TRANSPORT_FLAGS_MASK 0x0000003F
#define WEBAUTHN_CREDENTIAL_EX_CURRENT_VERSION 1
@ -355,7 +323,6 @@ typedef const WEBAUTHN_CREDENTIAL_LIST *PCWEBAUTHN_CREDENTIAL_LIST;
#define CTAPCBOR_HYBRID_STORAGE_LINKED_DATA_VERSION_1 1
#define CTAPCBOR_HYBRID_STORAGE_LINKED_DATA_CURRENT_VERSION CTAPCBOR_HYBRID_STORAGE_LINKED_DATA_VERSION_1
// Deprecated
typedef struct _CTAPCBOR_HYBRID_STORAGE_LINKED_DATA
{
// Version
@ -389,65 +356,13 @@ typedef struct _CTAPCBOR_HYBRID_STORAGE_LINKED_DATA
} CTAPCBOR_HYBRID_STORAGE_LINKED_DATA, *PCTAPCBOR_HYBRID_STORAGE_LINKED_DATA;
typedef const CTAPCBOR_HYBRID_STORAGE_LINKED_DATA *PCCTAPCBOR_HYBRID_STORAGE_LINKED_DATA;
//+------------------------------------------------------------------------------------------
// Authenticator Information for WebAuthNGetAuthenticatorList API
//-------------------------------------------------------------------------------------------
#define WEBAUTHN_AUTHENTICATOR_DETAILS_OPTIONS_VERSION_1 1
#define WEBAUTHN_AUTHENTICATOR_DETAILS_OPTIONS_CURRENT_VERSION WEBAUTHN_AUTHENTICATOR_DETAILS_OPTIONS_VERSION_1
typedef struct _WEBAUTHN_AUTHENTICATOR_DETAILS_OPTIONS {
// Version of this structure, to allow for modifications in the future.
DWORD dwVersion;
} WEBAUTHN_AUTHENTICATOR_DETAILS_OPTIONS, *PWEBAUTHN_AUTHENTICATOR_DETAILS_OPTIONS;
typedef const WEBAUTHN_AUTHENTICATOR_DETAILS_OPTIONS *PCWEBAUTHN_AUTHENTICATOR_DETAILS_OPTIONS;
#define WEBAUTHN_AUTHENTICATOR_DETAILS_VERSION_1 1
#define WEBAUTHN_AUTHENTICATOR_DETAILS_CURRENT_VERSION WEBAUTHN_AUTHENTICATOR_DETAILS_VERSION_1
typedef struct _WEBAUTHN_AUTHENTICATOR_DETAILS {
// Version of this structure, to allow for modifications in the future.
DWORD dwVersion;
// Authenticator ID
DWORD cbAuthenticatorId;
_Field_size_bytes_(cbAuthenticatorId)
PBYTE pbAuthenticatorId;
// Authenticator Name
PCWSTR pwszAuthenticatorName;
// Authenticator logo (expected to be in SVG format)
DWORD cbAuthenticatorLogo;
_Field_size_bytes_(cbAuthenticatorLogo)
PBYTE pbAuthenticatorLogo;
// Is the authenticator currently locked? When locked, this authenticator's credentials
// might not be present or updated in WebAuthNGetPlatformCredentialList.
BOOL bLocked;
} WEBAUTHN_AUTHENTICATOR_DETAILS, *PWEBAUTHN_AUTHENTICATOR_DETAILS;
typedef const WEBAUTHN_AUTHENTICATOR_DETAILS *PCWEBAUTHN_AUTHENTICATOR_DETAILS;
typedef struct _WEBAUTHN_AUTHENTICATOR_DETAILS_LIST {
// Authenticator Details
DWORD cAuthenticatorDetails;
_Field_size_(cAuthenticatorDetails)
PWEBAUTHN_AUTHENTICATOR_DETAILS *ppAuthenticatorDetails;
} WEBAUTHN_AUTHENTICATOR_DETAILS_LIST, *PWEBAUTHN_AUTHENTICATOR_DETAILS_LIST;
typedef const WEBAUTHN_AUTHENTICATOR_DETAILS_LIST *PCWEBAUTHN_AUTHENTICATOR_DETAILS_LIST;
//+------------------------------------------------------------------------------------------
// Credential Information for WebAuthNGetPlatformCredentialList API
//-------------------------------------------------------------------------------------------
#define WEBAUTHN_CREDENTIAL_DETAILS_VERSION_1 1
#define WEBAUTHN_CREDENTIAL_DETAILS_VERSION_2 2
#define WEBAUTHN_CREDENTIAL_DETAILS_VERSION_3 3
#define WEBAUTHN_CREDENTIAL_DETAILS_VERSION_4 4
#define WEBAUTHN_CREDENTIAL_DETAILS_CURRENT_VERSION WEBAUTHN_CREDENTIAL_DETAILS_VERSION_4
#define WEBAUTHN_CREDENTIAL_DETAILS_CURRENT_VERSION WEBAUTHN_CREDENTIAL_DETAILS_VERSION_2
typedef struct _WEBAUTHN_CREDENTIAL_DETAILS {
// Version of this structure, to allow for modifications in the future.
@ -473,27 +388,6 @@ typedef struct _WEBAUTHN_CREDENTIAL_DETAILS {
// Backed Up or not.
BOOL bBackedUp;
//
// The following fields have been added in WEBAUTHN_CREDENTIAL_DETAILS_VERSION_3
//
PCWSTR pwszAuthenticatorName;
// The logo is expected to be in the svg format
DWORD cbAuthenticatorLogo;
_Field_size_bytes_(cbAuthenticatorLogo)
PBYTE pbAuthenticatorLogo;
// ThirdPartyPayment Credential or not.
BOOL bThirdPartyPayment;
//
// The following fields have been added in WEBAUTHN_CREDENTIAL_DETAILS_VERSION_4
//
// Applicable Transports
DWORD dwTransports;
} WEBAUTHN_CREDENTIAL_DETAILS, *PWEBAUTHN_CREDENTIAL_DETAILS;
typedef const WEBAUTHN_CREDENTIAL_DETAILS *PCWEBAUTHN_CREDENTIAL_DETAILS;
@ -699,10 +593,6 @@ typedef const WEBAUTHN_EXTENSIONS *PCWEBAUTHN_EXTENSIONS;
#define WEBAUTHN_LARGE_BLOB_SUPPORT_REQUIRED 1
#define WEBAUTHN_LARGE_BLOB_SUPPORT_PREFERRED 2
#define WEBAUTHN_CREDENTIAL_HINT_SECURITY_KEY L"security-key"
#define WEBAUTHN_CREDENTIAL_HINT_CLIENT_DEVICE L"client-device"
#define WEBAUTHN_CREDENTIAL_HINT_HYBRID L"hybrid"
#define WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_1 1
#define WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_2 2
#define WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_3 3
@ -710,9 +600,7 @@ typedef const WEBAUTHN_EXTENSIONS *PCWEBAUTHN_EXTENSIONS;
#define WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_5 5
#define WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_6 6
#define WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_7 7
#define WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_8 8
#define WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_9 9
#define WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_CURRENT_VERSION WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_9
#define WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_CURRENT_VERSION WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_7
typedef struct _WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS {
// Version of this structure, to allow for modifications in the future.
@ -792,7 +680,6 @@ typedef struct _WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS {
// The following fields have been added in WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_7
//
// Deprecated
// Optional. Linked Device Connection Info.
PCTAPCBOR_HYBRID_STORAGE_LINKED_DATA pLinkedDevice;
@ -800,41 +687,6 @@ typedef struct _WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS {
DWORD cbJsonExt;
_Field_size_bytes_(cbJsonExt)
PBYTE pbJsonExt;
//
// The following fields have been added in WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_8
//
// PRF extension "eval" values which will be converted into HMAC-SECRET values according to WebAuthn Spec.
// Set WEBAUTHN_AUTHENTICATOR_HMAC_SECRET_VALUES_FLAG in dwFlags above, if caller wants to provide RAW Hmac-Secret SALT values directly.
// In that case, values provided MUST be of WEBAUTHN_CTAP_ONE_HMAC_SECRET_LENGTH size.
PWEBAUTHN_HMAC_SECRET_SALT pPRFGlobalEval;
// PublicKeyCredentialHints (https://w3c.github.io/webauthn/#enum-hints)
DWORD cCredentialHints;
_Field_size_(cCredentialHints)
LPCWSTR *ppwszCredentialHints;
// Enable ThirdPartyPayment
BOOL bThirdPartyPayment;
//
// The following fields have been added in WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_9
//
// Web Origin. For Remote Web App scenario.
PCWSTR pwszRemoteWebOrigin;
// UTF-8 encoded JSON serialization of the PublicKeyCredentialCreationOptions.
DWORD cbPublicKeyCredentialCreationOptionsJSON;
_Field_size_bytes_(cbPublicKeyCredentialCreationOptionsJSON)
PBYTE pbPublicKeyCredentialCreationOptionsJSON;
// Authenticator ID got from WebAuthNGetAuthenticatorList API.
DWORD cbAuthenticatorId;
_Field_size_bytes_(cbAuthenticatorId)
PBYTE pbAuthenticatorId;
} WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS, *PWEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS;
typedef const WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS *PCWEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS;
@ -850,9 +702,7 @@ typedef const WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS *PCWEBAUTHN_AUTHENT
#define WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_5 5
#define WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_6 6
#define WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_7 7
#define WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_8 8
#define WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_9 9
#define WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_CURRENT_VERSION WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_9
#define WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_CURRENT_VERSION WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_7
/*
Information about flags.
@ -933,7 +783,6 @@ typedef struct _WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS {
// The following fields have been added in WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_7
//
// Deprecated
// Optional. Linked Device Connection Info.
PCTAPCBOR_HYBRID_STORAGE_LINKED_DATA pLinkedDevice;
@ -944,33 +793,6 @@ typedef struct _WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS {
DWORD cbJsonExt;
_Field_size_bytes_(cbJsonExt)
PBYTE pbJsonExt;
//
// The following fields have been added in WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_8
//
// PublicKeyCredentialHints (https://w3c.github.io/webauthn/#enum-hints)
DWORD cCredentialHints;
_Field_size_(cCredentialHints)
LPCWSTR *ppwszCredentialHints;
//
// The following fields have been added in WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_9
//
// Web Origin. For Remote Web App scenario.
PCWSTR pwszRemoteWebOrigin;
// UTF-8 encoded JSON serialization of the PublicKeyCredentialRequestOptions.
DWORD cbPublicKeyCredentialRequestOptionsJSON;
_Field_size_bytes_(cbPublicKeyCredentialRequestOptionsJSON)
PBYTE pbPublicKeyCredentialRequestOptionsJSON;
// Authenticator ID got from WebAuthNGetAuthenticatorList API.
DWORD cbAuthenticatorId;
_Field_size_bytes_(cbAuthenticatorId)
PBYTE pbAuthenticatorId;
} WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS, *PWEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS;
typedef const WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS *PCWEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS;
@ -1049,9 +871,7 @@ typedef const WEBAUTHN_COMMON_ATTESTATION *PCWEBAUTHN_COMMON_ATTESTATION;
#define WEBAUTHN_CREDENTIAL_ATTESTATION_VERSION_4 4
#define WEBAUTHN_CREDENTIAL_ATTESTATION_VERSION_5 5
#define WEBAUTHN_CREDENTIAL_ATTESTATION_VERSION_6 6
#define WEBAUTHN_CREDENTIAL_ATTESTATION_VERSION_7 7
#define WEBAUTHN_CREDENTIAL_ATTESTATION_VERSION_8 8
#define WEBAUTHN_CREDENTIAL_ATTESTATION_CURRENT_VERSION WEBAUTHN_CREDENTIAL_ATTESTATION_VERSION_8
#define WEBAUTHN_CREDENTIAL_ATTESTATION_CURRENT_VERSION WEBAUTHN_CREDENTIAL_ATTESTATION_VERSION_6
typedef struct _WEBAUTHN_CREDENTIAL_ATTESTATION {
// Version of this structure, to allow for modifications in the future.
@ -1127,34 +947,6 @@ typedef struct _WEBAUTHN_CREDENTIAL_ATTESTATION {
DWORD cbUnsignedExtensionOutputs;
_Field_size_bytes_(cbUnsignedExtensionOutputs)
PBYTE pbUnsignedExtensionOutputs;
//
// Following fields have been added in WEBAUTHN_CREDENTIAL_ATTESTATION_VERSION_7
//
PWEBAUTHN_HMAC_SECRET_SALT pHmacSecret;
// ThirdPartyPayment Credential or not.
BOOL bThirdPartyPayment;
//
// Following fields have been added in WEBAUTHN_CREDENTIAL_ATTESTATION_VERSION_8
//
// Multiple WEBAUTHN_CTAP_TRANSPORT_* bits will be set corresponding to
// the transports that are supported.
DWORD dwTransports;
// UTF-8 encoded JSON serialization of the client data.
DWORD cbClientDataJSON;
_Field_size_bytes_(cbClientDataJSON)
PBYTE pbClientDataJSON;
// UTF-8 encoded JSON serialization of the RegistrationResponse.
DWORD cbRegistrationResponseJSON;
_Field_size_bytes_(cbRegistrationResponseJSON)
PBYTE pbRegistrationResponseJSON;
} WEBAUTHN_CREDENTIAL_ATTESTATION, *PWEBAUTHN_CREDENTIAL_ATTESTATION;
typedef const WEBAUTHN_CREDENTIAL_ATTESTATION *PCWEBAUTHN_CREDENTIAL_ATTESTATION;
@ -1179,8 +971,7 @@ typedef const WEBAUTHN_CREDENTIAL_ATTESTATION *PCWEBAUTHN_CREDENTIAL_ATTESTATION
#define WEBAUTHN_ASSERTION_VERSION_3 3
#define WEBAUTHN_ASSERTION_VERSION_4 4
#define WEBAUTHN_ASSERTION_VERSION_5 5
#define WEBAUTHN_ASSERTION_VERSION_6 6
#define WEBAUTHN_ASSERTION_CURRENT_VERSION WEBAUTHN_ASSERTION_VERSION_6
#define WEBAUTHN_ASSERTION_CURRENT_VERSION WEBAUTHN_ASSERTION_VERSION_5
typedef struct _WEBAUTHN_ASSERTION {
// Version of this structure, to allow for modifications in the future.
@ -1241,21 +1032,6 @@ typedef struct _WEBAUTHN_ASSERTION {
DWORD cbUnsignedExtensionOutputs;
_Field_size_bytes_(cbUnsignedExtensionOutputs)
PBYTE pbUnsignedExtensionOutputs;
//
// Following fields have been added in WEBAUTHN_ASSERTION_VERSION_6
//
// UTF-8 encoded JSON serialization of the client data.
DWORD cbClientDataJSON;
_Field_size_bytes_(cbClientDataJSON)
PBYTE pbClientDataJSON;
// UTF-8 encoded JSON serialization of the AuthenticationResponse.
DWORD cbAuthenticationResponseJSON;
_Field_size_bytes_(cbAuthenticationResponseJSON)
PBYTE pbAuthenticationResponseJSON;
} WEBAUTHN_ASSERTION, *PWEBAUTHN_ASSERTION;
typedef const WEBAUTHN_ASSERTION *PCWEBAUTHN_ASSERTION;
@ -1333,18 +1109,6 @@ WebAuthNDeletePlatformCredential(
_In_reads_bytes_(cbCredentialId) const BYTE *pbCredentialId
);
// Returns NTE_NOT_FOUND when authenticator details are not found.
HRESULT
WINAPI
WebAuthNGetAuthenticatorList(
_In_opt_ PCWEBAUTHN_AUTHENTICATOR_DETAILS_OPTIONS pWebAuthNGetAuthenticatorListOptions,
_Outptr_result_maybenull_ PWEBAUTHN_AUTHENTICATOR_DETAILS_LIST* ppAuthenticatorDetailsList);
void
WINAPI
WebAuthNFreeAuthenticatorList(
_In_ PWEBAUTHN_AUTHENTICATOR_DETAILS_LIST pAuthenticatorDetailsList);
//
// Returns the following Error Names:
// L"Success" - S_OK

View file

@ -177,7 +177,6 @@ dictionary PublicKeyCredentialCreationOptions {
sequence<PublicKeyCredentialDescriptor> excludeCredentials = [];
// FIXME: bug 1493860: should this "= {}" be here?
AuthenticatorSelectionCriteria authenticatorSelection = {};
sequence<DOMString> hints = [];
DOMString attestation = "none";
// FIXME: bug 1493860: should this "= {}" be here?
AuthenticationExtensionsClientInputs extensions = {};
@ -209,7 +208,6 @@ dictionary PublicKeyCredentialRequestOptions {
USVString rpId;
sequence<PublicKeyCredentialDescriptor> allowCredentials = [];
DOMString userVerification = "preferred";
sequence<DOMString> hints = [];
// FIXME: bug 1493860: should this "= {}" be here?
AuthenticationExtensionsClientInputs extensions = {};
};

View file

@ -103,11 +103,9 @@ class WebTransportParent : public PWebTransportParent,
OnResetOrStopSendingCallback mCallback;
nsCOMPtr<T> mStream;
};
nsTHashMap<NoMemMoveKey<nsUint64HashKey>,
StreamHash<nsIWebTransportBidirectionalStream>>
nsTHashMap<nsUint64HashKey, StreamHash<nsIWebTransportBidirectionalStream>>
mBidiStreamCallbackMap;
nsTHashMap<NoMemMoveKey<nsUint64HashKey>,
StreamHash<nsIWebTransportSendStream>>
nsTHashMap<nsUint64HashKey, StreamHash<nsIWebTransportSendStream>>
mUniStreamCallbackMap;
};

View file

@ -4797,15 +4797,6 @@ bool WorkerPrivate::FreezeInternal() {
return true;
}
bool WorkerPrivate::HasActiveWorkerRefs() {
auto data = mWorkerThreadAccessible.Access();
auto* timeoutManager =
data->mScope ? data->mScope->GetTimeoutManager() : nullptr;
return !data->mChildWorkers.IsEmpty() ||
(timeoutManager && timeoutManager->HasTimeouts()) ||
!data->mWorkerRefs.IsEmpty();
}
bool WorkerPrivate::ThawInternal() {
auto data = mWorkerThreadAccessible.Access();
NS_ASSERTION(data->mFrozen, "Not yet frozen!");

View file

@ -1332,7 +1332,11 @@ class WorkerPrivate final
void NotifyWorkerRefs(WorkerStatus aStatus);
bool HasActiveWorkerRefs();
bool HasActiveWorkerRefs() {
auto data = mWorkerThreadAccessible.Access();
return !(data->mChildWorkers.IsEmpty() && data->mTimeouts.IsEmpty() &&
data->mWorkerRefs.IsEmpty());
}
friend class WorkerEventTarget;

View file

@ -271,8 +271,7 @@ WorkerGlobalScopeBase::WorkerGlobalScopeBase(
mSerialEventTarget(aWorkerPrivate->HybridEventTarget()) {
if (StaticPrefs::dom_workers_timeoutmanager_AtStartup()) {
mTimeoutManager = MakeUnique<dom::TimeoutManager>(
*this, /* not used on workers */ 0, mSerialEventTarget,
mWorkerPrivate->IsChromeWorker());
*this, /* not used on workers */ 0, mSerialEventTarget);
}
LOG(("WorkerGlobalScopeBase::WorkerGlobalScopeBase [%p]", this));
MOZ_ASSERT(mWorkerPrivate);

View file

@ -147,31 +147,6 @@ template Result<EditorRawDOMPoint, nsresult>
HTMLEditUtils::ComputePointToPutCaretInElementIfOutside(
const Element& aElement, const EditorRawDOMPoint& aCurrentPoint);
template Maybe<EditorLineBreak>
HTMLEditUtils::GetLineBreakBeforeBlockBoundaryIfPointIsBetweenThem(
const EditorDOMPoint&, const Element&);
template Maybe<EditorRawLineBreak>
HTMLEditUtils::GetLineBreakBeforeBlockBoundaryIfPointIsBetweenThem(
const EditorDOMPoint&, const Element&);
template Maybe<EditorLineBreak>
HTMLEditUtils::GetLineBreakBeforeBlockBoundaryIfPointIsBetweenThem(
const EditorRawDOMPoint&, const Element&);
template Maybe<EditorRawLineBreak>
HTMLEditUtils::GetLineBreakBeforeBlockBoundaryIfPointIsBetweenThem(
const EditorRawDOMPoint&, const Element&);
template Maybe<EditorLineBreak>
HTMLEditUtils::GetLineBreakBeforeBlockBoundaryIfPointIsBetweenThem(
const EditorDOMPointInText&, const Element&);
template Maybe<EditorRawLineBreak>
HTMLEditUtils::GetLineBreakBeforeBlockBoundaryIfPointIsBetweenThem(
const EditorDOMPointInText&, const Element&);
template Maybe<EditorLineBreak>
HTMLEditUtils::GetLineBreakBeforeBlockBoundaryIfPointIsBetweenThem(
const EditorRawDOMPointInText&, const Element&);
template Maybe<EditorRawLineBreak>
HTMLEditUtils::GetLineBreakBeforeBlockBoundaryIfPointIsBetweenThem(
const EditorRawDOMPointInText&, const Element&);
template bool HTMLEditUtils::IsSameCSSColorValue(const nsAString& aColorA,
const nsAString& aColorB);
template bool HTMLEditUtils::IsSameCSSColorValue(const nsACString& aColorA,
@ -2898,33 +2873,6 @@ HTMLEditUtils::ComputePointToPutCaretInElementIfOutside(
return EditorDOMPointType(firstEditableContent, 0u);
}
// static
template <typename EditorLineBreakType, typename EditorDOMPointType>
Maybe<EditorLineBreakType>
HTMLEditUtils::GetLineBreakBeforeBlockBoundaryIfPointIsBetweenThem(
const EditorDOMPointType& aPoint, const Element& aEditingHost) {
MOZ_ASSERT(aPoint.IsSet());
if (MOZ_UNLIKELY(!aPoint.IsInContentNode())) {
return Nothing{};
}
const WSScanResult previousThing =
WSRunScanner::ScanPreviousVisibleNodeOrBlockBoundary(
WSRunScanner::Scan::All, aPoint,
BlockInlineCheck::UseComputedDisplayStyle, &aEditingHost);
if (!previousThing.ReachedLineBreak()) {
return Nothing{}; // No preceding line break.
}
const WSScanResult nextThing =
WSRunScanner::ScanInclusiveNextVisibleNodeOrBlockBoundary(
WSRunScanner::Scan::All, aPoint,
BlockInlineCheck::UseComputedDisplayStyle, &aEditingHost);
if (!nextThing.ReachedBlockBoundary()) {
return Nothing{}; // The line break is not followed by a block boundary so
// that it's a visible line break.
}
return Some(previousThing.CreateEditorLineBreak<EditorLineBreakType>());
}
// static
bool HTMLEditUtils::IsInlineStyleSetByElement(
const nsIContent& aContent, const EditorInlineStyle& aStyle,

View file

@ -2547,15 +2547,6 @@ class HTMLEditUtils final {
ComputePointToPutCaretInElementIfOutside(
const Element& aElement, const EditorDOMPointTypeInput& aCurrentPoint);
/**
* Return a line break if aPoint is after a line break which is immediately
* before a block boundary.
*/
template <typename EditorLineBreakType, typename EditorDOMPointType>
static Maybe<EditorLineBreakType>
GetLineBreakBeforeBlockBoundaryIfPointIsBetweenThem(
const EditorDOMPointType& aPoint, const Element& aEditingHost);
/**
* Content-based query returns true if
* <mHTMLProperty mAttribute=mAttributeValue> effects aContent. If there is

View file

@ -1214,8 +1214,7 @@ class MOZ_STACK_CLASS HTMLEditor::AutoDeleteRangesHandler final {
*/
[[nodiscard]] Result<CaretPoint, nsresult> GetNewCaretPosition(
const HTMLEditor& aHTMLEditor,
nsIEditor::EDirection aDirectionAndAmount,
const Element& aEditingHost) const;
nsIEditor::EDirection aDirectionAndAmount) const;
RefPtr<Element> mEmptyInclusiveAncestorBlockElement;
}; // HTMLEditor::AutoDeleteRangesHandler::AutoEmptyBlockAncestorDeleter
@ -8376,8 +8375,7 @@ HTMLEditor::AutoDeleteRangesHandler::AutoEmptyBlockAncestorDeleter::
Result<CaretPoint, nsresult> HTMLEditor::AutoDeleteRangesHandler::
AutoEmptyBlockAncestorDeleter::GetNewCaretPosition(
const HTMLEditor& aHTMLEditor,
nsIEditor::EDirection aDirectionAndAmount,
const Element& aEditingHost) const {
nsIEditor::EDirection aDirectionAndAmount) const {
MOZ_ASSERT(mEmptyInclusiveAncestorBlockElement);
MOZ_ASSERT(mEmptyInclusiveAncestorBlockElement->GetParentElement());
MOZ_ASSERT(aHTMLEditor.IsEditActionDataAvailable());
@ -8388,23 +8386,12 @@ Result<CaretPoint, nsresult> HTMLEditor::AutoDeleteRangesHandler::
case nsIEditor::eToEndOfLine: {
// Collapse Selection to next node of after empty block element
// if there is. Otherwise, to just after the empty block.
nsIContent* const nextContentOfEmptyBlock = [&]() -> nsIContent* {
for (EditorRawDOMPoint scanStartPoint =
EditorRawDOMPoint::After(mEmptyInclusiveAncestorBlockElement);
scanStartPoint.IsInContentNode();) {
nsIContent* const nextContent = HTMLEditUtils::GetNextContent(
scanStartPoint, {}, BlockInlineCheck::Unused, &aEditingHost);
// Let's ignore invisible `Text`.
if (nextContent && nextContent->IsText() &&
!HTMLEditUtils::IsVisibleTextNode(*nextContent->AsText())) {
scanStartPoint = EditorRawDOMPoint::After(*nextContent);
continue;
}
return nextContent;
}
return nullptr;
}();
if (nextContentOfEmptyBlock) {
auto afterEmptyBlock(
EditorDOMPoint::After(mEmptyInclusiveAncestorBlockElement));
MOZ_ASSERT(afterEmptyBlock.IsSet());
if (nsIContent* nextContentOfEmptyBlock = HTMLEditUtils::GetNextContent(
afterEmptyBlock, {}, BlockInlineCheck::Unused,
aHTMLEditor.ComputeEditingHost())) {
EditorDOMPoint pt = HTMLEditUtils::GetGoodCaretPointFor<EditorDOMPoint>(
*nextContentOfEmptyBlock, aDirectionAndAmount);
if (!pt.IsSet()) {
@ -8413,8 +8400,6 @@ Result<CaretPoint, nsresult> HTMLEditor::AutoDeleteRangesHandler::
}
return CaretPoint(std::move(pt));
}
EditorDOMPoint afterEmptyBlock =
EditorDOMPoint::After(mEmptyInclusiveAncestorBlockElement);
if (NS_WARN_IF(!afterEmptyBlock.IsSet())) {
return Err(NS_ERROR_FAILURE);
}
@ -8424,43 +8409,20 @@ Result<CaretPoint, nsresult> HTMLEditor::AutoDeleteRangesHandler::
case nsIEditor::ePreviousWord:
case nsIEditor::eToBeginningOfLine: {
// Collapse Selection to previous editable node of the empty block
// if there is.
nsIContent* const previousContentOfEmptyBlock = [&]() -> nsIContent* {
for (EditorRawDOMPoint scanStartPoint =
EditorRawDOMPoint(mEmptyInclusiveAncestorBlockElement);
scanStartPoint.IsInContentNode();) {
nsIContent* const previousContent = HTMLEditUtils::GetPreviousContent(
scanStartPoint, {WalkTreeOption::IgnoreNonEditableNode},
BlockInlineCheck::Unused, &aEditingHost);
// Let's ignore invisible `Text`.
if (previousContent && previousContent->IsText() &&
!HTMLEditUtils::IsVisibleTextNode(*previousContent->AsText())) {
scanStartPoint = EditorRawDOMPoint(previousContent, 0u);
continue;
}
return previousContent;
}
return nullptr;
}();
if (previousContentOfEmptyBlock) {
const EditorRawDOMPoint atEndOfPreviousContent =
HTMLEditUtils::GetGoodCaretPointFor<EditorRawDOMPoint>(
*previousContentOfEmptyBlock, aDirectionAndAmount);
if (!atEndOfPreviousContent.IsSet()) {
// if there is. Otherwise, to after the empty block.
EditorRawDOMPoint atEmptyBlock(mEmptyInclusiveAncestorBlockElement);
if (nsIContent* previousContentOfEmptyBlock =
HTMLEditUtils::GetPreviousContent(
atEmptyBlock, {WalkTreeOption::IgnoreNonEditableNode},
BlockInlineCheck::Unused, aHTMLEditor.ComputeEditingHost())) {
EditorDOMPoint pt = HTMLEditUtils::GetGoodCaretPointFor<EditorDOMPoint>(
*previousContentOfEmptyBlock, aDirectionAndAmount);
if (!pt.IsSet()) {
NS_WARNING("HTMLEditUtils::GetGoodCaretPointFor() failed");
return Err(NS_ERROR_FAILURE);
}
// If the previous content is between a preceding line break and the
// block boundary of current empty block, let's move caret to the line
// break if there is no visible things between them.
const Maybe<EditorRawLineBreak> precedingLineBreak =
HTMLEditUtils::GetLineBreakBeforeBlockBoundaryIfPointIsBetweenThem<
EditorRawLineBreak>(atEndOfPreviousContent, aEditingHost);
return precedingLineBreak.isSome()
? CaretPoint(precedingLineBreak->To<EditorDOMPoint>())
: CaretPoint(atEndOfPreviousContent.To<EditorDOMPoint>());
return CaretPoint(std::move(pt));
}
// Otherwise, let's put caret next to the deleting block.
auto afterEmptyBlock =
EditorDOMPoint::After(*mEmptyInclusiveAncestorBlockElement);
if (NS_WARN_IF(!afterEmptyBlock.IsSet())) {
@ -8530,7 +8492,7 @@ HTMLEditor::AutoDeleteRangesHandler::AutoEmptyBlockAncestorDeleter::Run(
: EditorDOMPoint());
}
Result<CaretPoint, nsresult> caretPointOrError =
GetNewCaretPosition(aHTMLEditor, aDirectionAndAmount, aEditingHost);
GetNewCaretPosition(aHTMLEditor, aDirectionAndAmount);
NS_WARNING_ASSERTION(
caretPointOrError.isOk(),
"AutoEmptyBlockAncestorDeleter::GetNewCaretPosition() failed");
@ -8561,7 +8523,6 @@ HTMLEditor::AutoDeleteRangesHandler::AutoEmptyBlockAncestorDeleter::Run(
NS_WARNING("EditorBase::DeleteNodeWithTransaction() failed");
return Err(rv);
}
trackPointToPutCaret.FlushAndStopTracking();
} else {
Result<CaretPoint, nsresult> caretPointOrError =
WhiteSpaceVisibilityKeeper::DeleteContentNodeAndJoinTextNodesAroundIt(
@ -8573,11 +8534,11 @@ HTMLEditor::AutoDeleteRangesHandler::AutoEmptyBlockAncestorDeleter::Run(
"DeleteContentNodeAndJoinTextNodesAroundIt() failed");
return caretPointOrError.propagateErr();
}
trackPointToPutCaret.FlushAndStopTracking();
caretPointOrError.unwrap().MoveCaretPointTo(
pointToPutCaret, {SuggestCaret::OnlyIfHasSuggestion});
}
trackEmptyBlockPoint.FlushAndStopTracking();
trackPointToPutCaret.FlushAndStopTracking();
if (NS_WARN_IF(!atEmptyInclusiveAncestorBlockElement
.IsInContentNodeAndValidInComposedDoc()) ||
NS_WARN_IF(pointToPutCaret.IsSet() &&

View file

@ -162,22 +162,6 @@ class MOZ_STACK_CLASS WSScanResult final {
return mContent->AsText();
}
template <typename EditorLineBreakType>
MOZ_NEVER_INLINE_DEBUG EditorLineBreakType CreateEditorLineBreak() const {
if (ReachedBRElement()) {
return EditorLineBreakType(*BRElementPtr());
}
if (ReachedPreformattedLineBreak()) {
MOZ_ASSERT_IF(mDirection == ScanDirection::Backward, *mOffset > 0);
return EditorLineBreakType(*TextPtr(),
mDirection == ScanDirection::Forward
? mOffset.valueOr(0)
: std::max(mOffset.valueOr(1), 1u) - 1);
}
MOZ_CRASH("Didn't reach a line break");
return EditorLineBreakType(*BRElementPtr());
}
/**
* Returns true if found or reached content is editable.
*/
@ -293,15 +277,6 @@ class MOZ_STACK_CLASS WSScanResult final {
return mReason == WSType::PreformattedLineBreak;
}
/**
* Return true if reached a <br> element or a preformatted line break.
* Return false when reached a block boundary. Use ReachedLineBoundary() if
* you want it to return true in the case too.
*/
[[nodiscard]] bool ReachedLineBreak() const {
return ReachedBRElement() || ReachedPreformattedLineBreak();
}
/**
* The scanner reached a <hr> element.
*/

View file

@ -3503,10 +3503,8 @@ WhiteSpaceVisibilityKeeper::DeleteContentNodeAndJoinTextNodesAroundIt(
WSRunScanner::ScanInclusiveNextVisibleNodeOrBlockBoundary(
Scan::All, pointToPutCaret,
BlockInlineCheck::UseComputedDisplayOutsideStyle);
Maybe<EditorLineBreak> lineBreak;
if (nextThingOfCaretPoint.ReachedLineBreak()) {
lineBreak.emplace(
nextThingOfCaretPoint.CreateEditorLineBreak<EditorLineBreak>());
if (nextThingOfCaretPoint.ReachedBRElement() ||
nextThingOfCaretPoint.ReachedPreformattedLineBreak()) {
nextThingOfCaretPoint =
WSRunScanner::ScanInclusiveNextVisibleNodeOrBlockBoundary(
Scan::All,
@ -3532,26 +3530,6 @@ WhiteSpaceVisibilityKeeper::DeleteContentNodeAndJoinTextNodesAroundIt(
if (NS_WARN_IF(!aContentToDelete.IsInComposedDoc())) {
return Err(NS_ERROR_EDITOR_UNEXPECTED_DOM_TREE);
}
// If the previous content ends with an invisible line break, let's
// delete it.
if (lineBreak.isSome() && lineBreak->IsInComposedDoc()) {
const WSScanResult prevThing =
WSRunScanner::ScanPreviousVisibleNodeOrBlockBoundary(
WSRunScanner::Scan::All,
lineBreak->To<EditorRawDOMPoint>(),
BlockInlineCheck::UseComputedDisplayStyle, &aEditingHost);
if (!prevThing.ReachedLineBoundary()) {
Result<EditorDOMPoint, nsresult> pointOrError =
aHTMLEditor.DeleteLineBreakWithTransaction(
lineBreak.ref(), nsIEditor::eStrip, aEditingHost);
if (MOZ_UNLIKELY(pointOrError.isErr())) {
NS_WARNING(
"HTMLEditor::DeleteLineBreakWithTransaction() failed");
return pointOrError.propagateErr();
}
trackPointToPutCaret->Flush(StopTracking::No);
}
}
}
}
// Similarly, we may put caret into the following block (this is the

View file

@ -263,6 +263,8 @@ nsAuthGSSAPI::nsAuthGSSAPI(pType package) : mServiceFlags(REQ_DEFAULT) {
LOG(("entering nsAuthGSSAPI::nsAuthGSSAPI()\n"));
mComplete = false;
if (!gssLibrary && NS_FAILED(gssInit())) return;
mCtx = GSS_C_NO_CONTEXT;
@ -308,8 +310,6 @@ void nsAuthGSSAPI::Reset() {
}
mCtx = GSS_C_NO_CONTEXT;
mComplete = false;
mDelegationRequested = false;
mDelegationSupported = false;
}
/* static */
@ -358,7 +358,6 @@ nsAuthGSSAPI::GetNextToken(const void* inToken, uint32_t inTokenLen,
void** outToken, uint32_t* outTokenLen) {
OM_uint32 major_status, minor_status;
OM_uint32 req_flags = 0;
OM_uint32 ret_flags = 0;
gss_buffer_desc input_token = GSS_C_EMPTY_BUFFER;
gss_buffer_desc output_token = GSS_C_EMPTY_BUFFER;
gss_buffer_t in_token_ptr = GSS_C_NO_BUFFER;
@ -373,22 +372,7 @@ nsAuthGSSAPI::GetNextToken(const void* inToken, uint32_t inTokenLen,
// If they've called us again after we're complete, reset to start afresh.
if (mComplete) Reset();
// Two-phase delegation logic
// Phase 1: Try authentication without delegation first
// Phase 2: Only retry with delegation if server supports it (ret_flags)
bool delegationConfigured = (mServiceFlags & REQ_DELEGATE) != 0;
if (delegationConfigured) {
if (!mDelegationRequested) {
// First attempt: don't request delegation yet
LOG(("First auth attempt without delegation"));
mDelegationRequested = true;
} else if (mDelegationSupported) {
// Second attempt: server supports delegation, now request it
LOG(("Retrying auth with delegation - server supports it"));
req_flags |= GSS_C_DELEG_FLAG;
}
}
if (mServiceFlags & REQ_DELEGATE) req_flags |= GSS_C_DELEG_FLAG;
if (mServiceFlags & REQ_MUTUAL_AUTH) req_flags |= GSS_C_MUTUAL_FLAG;
@ -442,7 +426,7 @@ nsAuthGSSAPI::GetNextToken(const void* inToken, uint32_t inTokenLen,
major_status = gss_init_sec_context_ptr(
&minor_status, GSS_C_NO_CREDENTIAL, &mCtx, server, mMechOID, req_flags,
GSS_C_INDEFINITE, GSS_C_NO_CHANNEL_BINDINGS, in_token_ptr, nullptr,
&output_token, &ret_flags, nullptr);
&output_token, nullptr, nullptr);
if (GSS_ERROR(major_status)) {
LogGssError(major_status, minor_status, "gss_init_sec_context() failed");
@ -450,27 +434,6 @@ nsAuthGSSAPI::GetNextToken(const void* inToken, uint32_t inTokenLen,
rv = NS_ERROR_FAILURE;
goto end;
}
// Check if server supports delegation (OK-AS-DELEGATE equivalent)
if (delegationConfigured && !mDelegationSupported &&
(ret_flags & GSS_C_DELEG_FLAG)) {
LOG(("Server supports delegation (GSS_C_DELEG_FLAG in ret_flags)"));
// If we completed without requesting delegation, but server supports it,
// we need to restart with delegation
if (major_status == GSS_S_COMPLETE && !(req_flags & GSS_C_DELEG_FLAG)) {
LOG(("Restarting authentication to request delegation"));
Reset();
// These flags get cleared by Reset().
// Set them again to make sure the next call sets GSS_C_DELEG_FLAG
mDelegationRequested = true;
mDelegationSupported = true;
gss_release_name_ptr(&minor_status, &server);
return GetNextToken(inToken, inTokenLen, outToken, outTokenLen);
}
}
if (major_status == GSS_S_COMPLETE) {
// Mark ourselves as being complete, so that if we're called again
// we know to start afresh.

View file

@ -54,11 +54,9 @@ class nsAuthGSSAPI final : public nsIAuthModule {
gss_ctx_id_t mCtx;
gss_OID mMechOID;
nsCString mServiceName;
uint32_t mServiceFlags = REQ_DEFAULT;
uint32_t mServiceFlags;
nsString mUsername;
bool mComplete = false;
bool mDelegationRequested = false;
bool mDelegationSupported = false;
bool mComplete;
};
#endif /* nsAuthGSSAPI_h__ */

View file

@ -199,7 +199,6 @@ static void ReleaseData(void* aData) {
}
static cairo_surface_t* CopyToImageSurface(unsigned char* aData,
const IntSize& aSize,
const IntRect& aRect,
int32_t aStride,
SurfaceFormat aFormat) {
@ -220,23 +219,15 @@ static cairo_surface_t* CopyToImageSurface(unsigned char* aData,
}
unsigned char* surfData = cairo_image_surface_get_data(surf);
size_t surfStride = cairo_image_surface_get_stride(surf);
size_t pixelWidth = BytesPerPixel(aFormat);
size_t rowDataWidth = size_t(aRectWidth) * pixelWidth;
if (rowDataWidth > surfStride || rowDataWidth > size_t(aStride) ||
!IntRect(IntPoint(), aSize).Contains(aRect)) {
cairo_surface_destroy(surf);
return nullptr;
}
int surfStride = cairo_image_surface_get_stride(surf);
int32_t pixelWidth = BytesPerPixel(aFormat);
const unsigned char* sourceRow = aData + size_t(aRect.Y()) * size_t(aStride) +
size_t(aRect.X()) * pixelWidth;
unsigned char* destRow = surfData;
unsigned char* source = aData + aRect.Y() * aStride + aRect.X() * pixelWidth;
MOZ_ASSERT(aStride >= aRectWidth * pixelWidth);
for (int32_t y = 0; y < aRectHeight; ++y) {
memcpy(destRow, sourceRow, rowDataWidth);
sourceRow += aStride;
destRow += surfStride;
memcpy(surfData + y * surfStride, source + y * aStride,
aRectWidth * pixelWidth);
}
cairo_surface_mark_dirty(surf);
return surf;
@ -260,15 +251,14 @@ static cairo_surface_t* GetAsImageSurface(cairo_surface_t* aSurface) {
}
static cairo_surface_t* CreateSubImageForData(unsigned char* aData,
const IntSize& aSize,
const IntRect& aRect, int aStride,
SurfaceFormat aFormat) {
if (!aData || aStride < 0 || !IntRect(IntPoint(), aSize).Contains(aRect)) {
if (!aData) {
gfxWarning() << "DrawTargetCairo.CreateSubImageForData null aData";
return nullptr;
}
unsigned char* data = aData + size_t(aRect.Y()) * size_t(aStride) +
size_t(aRect.X()) * size_t(BytesPerPixel(aFormat));
unsigned char* data =
aData + aRect.Y() * aStride + aRect.X() * BytesPerPixel(aFormat);
cairo_surface_t* image = cairo_image_surface_create_for_data(
data, GfxFormatToCairoFormat(aFormat), aRect.Width(), aRect.Height(),
@ -292,11 +282,9 @@ static cairo_surface_t* ExtractSubImage(cairo_surface_t* aSurface,
cairo_surface_t* image = GetAsImageSurface(aSurface);
if (image) {
image = CreateSubImageForData(
cairo_image_surface_get_data(image),
IntSize(cairo_image_surface_get_width(image),
cairo_image_surface_get_height(image)),
aSubImage, cairo_image_surface_get_stride(image), aFormat);
image =
CreateSubImageForData(cairo_image_surface_get_data(image), aSubImage,
cairo_image_surface_get_stride(image), aFormat);
return image;
}
@ -371,8 +359,8 @@ static cairo_surface_t* GetCairoSurfaceForSourceSurface(
return nullptr;
}
cairo_surface_t* surf = CreateSubImageForData(
map.mData, data->GetSize(), subimage, map.mStride, data->GetFormat());
cairo_surface_t* surf = CreateSubImageForData(map.mData, subimage,
map.mStride, data->GetFormat());
// In certain scenarios, requesting larger than 8k image fails. Bug 803568
// covers the details of how to run into it, but the full detailed
@ -385,7 +373,7 @@ static cairo_surface_t* GetCairoSurfaceForSourceSurface(
// set user data since we're not dependent on the original
// data.
cairo_surface_t* result = CopyToImageSurface(
map.mData, data->GetSize(), subimage, map.mStride, data->GetFormat());
map.mData, subimage, map.mStride, data->GetFormat());
data->Unmap();
return result;
}
@ -1874,8 +1862,8 @@ already_AddRefed<SourceSurface> DrawTargetCairo::CreateSourceSurfaceFromData(
return nullptr;
}
cairo_surface_t* surf = CopyToImageSurface(
aData, aSize, IntRect(IntPoint(), aSize), aStride, aFormat);
cairo_surface_t* surf =
CopyToImageSurface(aData, IntRect(IntPoint(), aSize), aStride, aFormat);
if (!surf) {
return nullptr;
}

View file

@ -140,15 +140,9 @@ static inline cairo_extend_t GfxExtendToCairoExtend(ExtendMode extend) {
static inline cairo_format_t GfxFormatToCairoFormat(SurfaceFormat format) {
switch (format) {
case SurfaceFormat::B8G8R8A8:
case SurfaceFormat::R8G8B8A8:
case SurfaceFormat::A8R8G8B8:
// case SurfaceFormat::A8R8G8B8_UINT32:
case SurfaceFormat::A8R8G8B8_UINT32:
return CAIRO_FORMAT_ARGB32;
case SurfaceFormat::B8G8R8X8:
case SurfaceFormat::R8G8B8X8:
case SurfaceFormat::X8R8G8B8:
// case SurfaceFormat::X8R8G8B8_UINT32:
case SurfaceFormat::X8R8G8B8_UINT32:
return CAIRO_FORMAT_RGB24;
case SurfaceFormat::A8:
return CAIRO_FORMAT_A8;
@ -156,7 +150,7 @@ static inline cairo_format_t GfxFormatToCairoFormat(SurfaceFormat format) {
return CAIRO_FORMAT_RGB16_565;
default:
gfxCriticalError() << "Unknown image format " << (int)format;
return CAIRO_FORMAT_INVALID;
return CAIRO_FORMAT_ARGB32;
}
}

View file

@ -80,10 +80,6 @@ void SourceSurfaceSharedDataWrapper::Init(SourceSurfaceSharedData* aSurface) {
bool SourceSurfaceSharedDataWrapper::EnsureMapped(size_t aLength) {
MOZ_ASSERT(!GetData());
if (mBufHandle.Size() < aLength) {
return false;
}
auto mapping = mBufHandle.Map();
while (!mapping) {
nsTArray<RefPtr<SourceSurfaceSharedDataWrapper>> expired;

View file

@ -296,5 +296,4 @@ static const char* kBaseFonts[] = {
static const char* kBaseFonts_13_Higher[] = {
"Stix Two Math",
"Stix Two Math Regular",
};

View file

@ -605,8 +605,7 @@ nsresult LoadInfoToLoadInfoArgs(nsILoadInfo* aLoadInfo,
aLoadInfo->GetIsMetaRefresh(), aLoadInfo->GetLoadingEmbedderPolicy(),
aLoadInfo->GetIsOriginTrialCoepCredentiallessEnabledForTopLevel(),
unstrippedURI, interceptionInfoArg, aLoadInfo->GetIsNewWindowTarget(),
aLoadInfo->GetUserNavigationInvolvement(),
aLoadInfo->GetContainerFeaturePolicyInfo());
aLoadInfo->GetUserNavigationInvolvement());
return NS_OK;
}
@ -854,8 +853,7 @@ nsresult LoadInfoArgsToLoadInfo(const LoadInfoArgs& loadInfoArgs,
RefPtr<mozilla::net::LoadInfo> loadInfo = new mozilla::net::LoadInfo(
loadingPrincipal, triggeringPrincipal, principalToInherit,
topLevelPrincipal, resultPrincipalURI, cookieJarSettings, cspToInherit,
loadInfoArgs.containerFeaturePolicyInfo(), triggeringRemoteType,
loadInfoArgs.sandboxedNullPrincipalID(), clientInfo,
triggeringRemoteType, loadInfoArgs.sandboxedNullPrincipalID(), clientInfo,
reservedClientInfo, initialClientInfo, controller,
loadInfoArgs.securityFlags(), loadInfoArgs.sandboxFlags(),
loadInfoArgs.triggeringSandboxFlags(), loadInfoArgs.triggeringWindowId(),

View file

@ -453,10 +453,7 @@ Breakpoint::Breakpoint(Debugger* debugger, HandleObject wrappedDebugger,
}
void Breakpoint::trace(JSTracer* trc) {
MOZ_ASSERT_IF(trc->kind() != JS::TracerKind::Moving,
!IsDeadProxyObject(wrappedDebugger));
TraceEdge(trc, &wrappedDebugger, "breakpoint owner");
TraceEdge(trc, &handler, "breakpoint handler");
}

View file

@ -1210,13 +1210,6 @@ void BufferAllocator::abortMajorSweeping(const AutoLock& lock) {
clearAllocatedDuringCollectionState(lock);
if (minorState == State::Sweeping) {
// If we are minor sweeping then chunks with allocatedDuringCollection set
// may be present in |mixedChunksToSweep|. Set a flag so these are cleared
// when they are merged later.
majorFinishedWhileMinorSweeping = true;
}
for (BufferChunk* chunk : mediumTenuredChunksToSweep.ref()) {
chunk->markBits.ref().clear();
}

View file

@ -1,66 +0,0 @@
// |jit-test| error: TypeError
gczeal(9,16);
function F1() {
if (!new.target) { throw 'must be called with new'; }
this.b = null;
}
new F1();
new F1();
function f5() {}
new BigUint64Array(3474);
function f14() {}
function f25(a26, a27) {
for (let i30 = 0, i31 = true; i31; i31--) {
function f37() {
function F38() {}
for (let i44 = 0, i45 = SharedArrayBuffer; i45;
(() => {
i45--;
Int8Array.principal = BigUint64Array;
function F50() {}
Int8Array.sameZoneAs = /wp(?:a?)+/imu;
const v54 = this.newGlobal(Int8Array);
const t7 = ({ __proto__: v54 }).Debugger;
const v57 = t7(F50);
const v59 = v57.getNewestFrame(i30, i45, i45, f25, v57).older;
v59.script.setBreakpoint(16, v59);
})()) {}
for (let [i134, i135] = (() => {
for (let i84 = 0, i85 = 10; i85;
(() => {
i85--;
for (let [i102, i103] = (() => {
for (let [i95, i96] = (() => {
new Uint8Array();
return [0, 10];
})(); i96; i96--) {
}
return [0, SharedArrayBuffer];
})();
i103; i103--) {}
for (let i113 = -4, i114 = 10; i114; i114--) {}
for (let i122 = 4, i123 = 10; i123--, i123; i123--) {
i123++;
}
})()) {}
return [0, SharedArrayBuffer];
})();
i135; i135--) { }
for (let i143 = 0, i144 = 10; i144; i144--) {}
}
f37.apply();
}
for (let i153 = 0, i154 = 10; i154; i154--) {}
function F160(a162, a163) {
if (!new.target) { throw 'must be called with new'; }
this.c = a27;
this.h = a162;
}
new F160(234, a27);
const v167 = this.nukeAllCCWs();
for (let i170 = 0, i171 = 10; i171; i171--) {}
try {
f25();
} catch(e178) {}
}
f25(f25, f25);

View file

@ -1,6 +0,0 @@
fullcompartmentchecks(1);
var x = newGlobal({ newCompartment: true });
Debugger(x).onEnterFrame = function (y) {
y.script.setBreakpoint(0, {});
};
x.eval("(function(){})()");

View file

@ -1,8 +0,0 @@
var x = newGlobal({ newCompartment: true });
Debugger(x).onDebuggerStatement = function (y) {
y.script.setBreakpoint(y.script.getLineOffsets(1)[0], {
hit: function () {},
});
};
x.eval("function* g() { debugger; return; };g().next()");
relazifyFunctions();

View file

@ -1,9 +0,0 @@
var x = newGlobal({ newCompartment: true });
var y = Debugger(x);
y.x = y;
y.onDebuggerStatement = function(w) {
nukeAllCCWs();
w.environment.getVariable("x");
}
x.eval('function f(z) { with(z) { debugger } }');
x.f(y);

View file

@ -1,8 +0,0 @@
var x = newGlobal({ newCompartment: true });
Debugger(x).onNewScript = function f(z) { m = z };
x.eval("function g(){}");
m.setBreakpoint(0, {});
nukeAllCCWs();
recomputeWrappers();
gc();

View file

@ -1,9 +0,0 @@
var dbgA = new Debugger;
var g1 = newGlobal({newCompartment: true});
g1.eval('function g1f() { print("Weltuntergang"); }');
var DOAg1 = dbgA.addDebuggee(g1);
var DOAg1f = DOAg1.getOwnPropertyDescriptor('g1f').value;
DOAg1f.script.setBreakpoint(0, { hit: () => { logA += '1'; } });
gczeal(2,1)
class Base { }
recomputeWrappers();

View file

@ -5,7 +5,6 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "builtin/FinalizationRegistryObject.h"
#include "debugger/Debugger.h"
#include "gc/GC.h"
#include "gc/PublicIterators.h"
#include "js/friend/WindowProxy.h" // js::IsWindow, js::IsWindowProxy
@ -450,12 +449,6 @@ JS_PUBLIC_API bool js::NukeCrossCompartmentWrappers(
continue;
}
// Don't nuke wrappers for debugger objects. These are used in Breakpoints
// and nuking them breaks debugger invariants.
if (MOZ_UNLIKELY(wrapped->is<DebuggerInstanceObject>())) {
continue;
}
// We only skip nuking window references that point to a target
// compartment, not the ones that belong to it.
if (nukeReferencesToWindow == DontNukeWindowReferences &&
@ -478,12 +471,6 @@ JS_PUBLIC_API bool js::AllowNewWrapper(JS::Compartment* target, JSObject* obj) {
MOZ_ASSERT(obj->compartment() != target);
// Wrappers for debugger objects are not nuked and we must continue to allow
// them to be created or we will break the invariants in Compartment::wrap.
if (MOZ_UNLIKELY(obj->is<DebuggerInstanceObject>())) {
return true;
}
if (target->nukedOutgoingWrappers ||
obj->nonCCWRealm()->nukedIncomingWrappers) {
return false;
@ -514,9 +501,6 @@ void js::RemapWrapper(JSContext* cx, JSObject* wobjArg,
AutoDisableProxyCheck adpc;
// This can't GC (and RemapDeadWrapper suppresses it).
JS::AutoAssertNoGC nogc(cx);
// If we're mapping to a different target (as opposed to just recomputing
// for the same target), we must not have an existing wrapper for the new
// target, otherwise this will break.
@ -558,10 +542,6 @@ void js::RemapDeadWrapper(JSContext* cx, HandleObject wobj,
AutoDisableProxyCheck adpc;
// Suppress GC while we manipulate the wrapper map so that it can't observe
// intervening state.
gc::AutoSuppressGC nogc(cx);
// wobj is not a cross-compartment wrapper, so we can use nonCCWRealm.
Realm* wrealm = wobj->nonCCWRealm();

View file

@ -673,36 +673,6 @@ void ScriptPreloader::PrepareCacheWrite() {
PrepareCacheWriteInternal();
}
// A struct to hold reference to a CachedStencil and the snapshot of the
// CachedStencil::mLoadTime field.
// CachedStencil::mLoadTime field can be modified concurrently, and we need
// to create a snapshot, in order to sort scripts.
struct CachedStencilRefAndTime {
using CachedStencil = ScriptPreloader::CachedStencil;
CachedStencil* mStencil;
TimeStamp mLoadTime;
explicit CachedStencilRefAndTime(CachedStencil* aStencil)
: mStencil(aStencil), mLoadTime(aStencil->mLoadTime) {}
// For use with nsTArray::Sort.
//
// Orders scripts by script load time, so that scripts which are needed
// earlier are stored earlier, and scripts needed at approximately the
// same time are stored approximately contiguously.
struct Comparator {
bool Equals(const CachedStencilRefAndTime& a,
const CachedStencilRefAndTime& b) const {
return a.mLoadTime == b.mLoadTime;
}
bool LessThan(const CachedStencilRefAndTime& a,
const CachedStencilRefAndTime& b) const {
return a.mLoadTime < b.mLoadTime;
}
};
} JS_HAZ_NON_GC_POINTER;
// Writes out a script cache file for the scripts accessed during early
// startup in this session. The cache file is a little-endian binary file with
// the following format:
@ -756,20 +726,19 @@ Result<Ok, nsresult> ScriptPreloader::WriteCache() {
mMonitor.AssertNotCurrentThreadOwns();
MonitorAutoLock mal(mMonitor);
nsTArray<CachedStencilRefAndTime> scriptRefs;
nsTArray<CachedStencil*> scripts;
for (auto& script : IterHash(mScripts, Match<ScriptStatus::Saved>())) {
scriptRefs.AppendElement(CachedStencilRefAndTime(script));
scripts.AppendElement(script);
}
// Sort scripts by load time, with async loaded scripts before sync scripts.
// Since async scripts are always loaded immediately at startup, it helps to
// have them stored contiguously.
scriptRefs.Sort(CachedStencilRefAndTime::Comparator());
scripts.Sort(CachedStencil::Comparator());
OutputBuffer buf;
size_t offset = 0;
for (auto& scriptRef : scriptRefs) {
auto* script = scriptRef.mStencil;
for (auto script : scripts) {
script->mOffset = offset;
MOZ_DIAGNOSTIC_ASSERT(
JS::IsTranscodingBytecodeOffsetAligned(script->mOffset));
@ -799,8 +768,7 @@ Result<Ok, nsresult> ScriptPreloader::WriteCache() {
written += padding;
}
for (auto& scriptRef : scriptRefs) {
auto* script = scriptRef.mStencil;
for (auto script : scripts) {
MOZ_DIAGNOSTIC_ASSERT(JS::IsTranscodingBytecodeOffsetAligned(written));
MOZ_TRY(Write(fd, script->Range().begin().get(), script->mSize));

View file

@ -67,8 +67,6 @@ struct Matcher {
using namespace mozilla::loader;
struct CachedStencilRefAndTime;
class ScriptPreloader : public nsIObserver,
public nsIMemoryReporter,
public nsIRunnable,
@ -218,6 +216,21 @@ class ScriptPreloader : public nsIObserver,
: ScriptStatus::Saved;
}
// For use with nsTArray::Sort.
//
// Orders scripts by script load time, so that scripts which are needed
// earlier are stored earlier, and scripts needed at approximately the
// same time are stored approximately contiguously.
struct Comparator {
bool Equals(const CachedStencil* a, const CachedStencil* b) const {
return a->mLoadTime == b->mLoadTime;
}
bool LessThan(const CachedStencil* a, const CachedStencil* b) const {
return a->mLoadTime < b->mLoadTime;
}
};
struct StatusMatcher final : public Matcher<CachedStencil*> {
explicit StatusMatcher(ScriptStatus status) : mStatus(status) {}
@ -375,8 +388,6 @@ class ScriptPreloader : public nsIObserver,
MaybeOneOf<JS::TranscodeBuffer, nsTArray<uint8_t>> mXDRData;
} JS_HAZ_NON_GC_POINTER;
friend struct CachedStencilRefAndTime;
template <ScriptStatus status>
static Matcher<CachedStencil*>* Match() {
static CachedStencil::StatusMatcher matcher{status};

View file

@ -1532,9 +1532,7 @@ void nsBlockFrame::Reflow(nsPresContext* aPresContext, ReflowOutput& aMetrics,
// will take effect for the current line list. Only to be used when there are
// enough lines that the clamp will apply.
auto getClampPosition = [&](uint32_t aClampCount) -> BalanceTarget {
if (NS_WARN_IF(aClampCount >= mLines.size())) {
return BalanceTarget{};
}
MOZ_ASSERT(aClampCount < mLines.size());
auto iter = mLines.begin();
for (uint32_t i = 0; i < aClampCount; i++) {
++iter;

View file

@ -3216,7 +3216,7 @@ class nsDisplayList {
for (nsDisplayItem* item : TakeItems()) {
items.AppendElement(Item(item));
}
items.template StableSort<SortBoundsCheck::Disable>(aComparator);
items.StableSort(aComparator);
for (Item& item : items) {
AppendToTop(item);

View file

@ -438,9 +438,6 @@ TEST_F(VideoConduitTest, TestConfigureSendMediaCodec) {
ASSERT_EQ(Call()->mVideoSendEncoderConfig->min_transmit_bitrate_bps, 0);
ASSERT_EQ(Call()->mVideoSendEncoderConfig->max_bitrate_bps, KBPS(10000));
ASSERT_EQ(Call()->mVideoSendEncoderConfig->number_of_streams, 1U);
ASSERT_EQ(
Call()->mVideoSendEncoderConfig->simulcast_layers[0].max_bitrate_bps,
KBPS(10000));
// empty codec name
mControl.Update([&](auto& aControl) {
@ -555,13 +552,9 @@ TEST_F(VideoConduitTest, TestConfigureSendMediaCodecTias) {
aControl.mVideoSendRtpRtcpConfig =
Some(RtpRtcpConfig(webrtc::RtcpMode::kCompound, true));
});
ASSERT_EQ(Call()->mVideoSendEncoderConfig->max_bitrate_bps, 2000000);
{
ASSERT_TRUE(Call()->mVideoSendEncoderConfig);
ASSERT_EQ(Call()->mVideoSendEncoderConfig->max_bitrate_bps, 2000000);
ASSERT_EQ(Call()->mVideoSendEncoderConfig->number_of_streams, 1U);
ASSERT_EQ(
Call()->mVideoSendEncoderConfig->simulcast_layers[0].max_bitrate_bps,
2000000);
SendVideoFrame(1280, 720, 1);
const std::vector<webrtc::VideoStream> videoStreams =
Call()->CreateEncoderStreams(1280, 720);
@ -578,13 +571,9 @@ TEST_F(VideoConduitTest, TestConfigureSendMediaCodecTias) {
codecConfigTiasLow.mTias = 1000;
aControl.mVideoSendCodec = Some(codecConfigTiasLow);
});
ASSERT_EQ(Call()->mVideoSendEncoderConfig->max_bitrate_bps, 1000);
{
ASSERT_TRUE(Call()->mVideoSendEncoderConfig);
ASSERT_EQ(Call()->mVideoSendEncoderConfig->max_bitrate_bps, 1000);
ASSERT_EQ(Call()->mVideoSendEncoderConfig->number_of_streams, 1U);
ASSERT_EQ(
Call()->mVideoSendEncoderConfig->simulcast_layers[0].max_bitrate_bps,
1000);
SendVideoFrame(1280, 720, 2);
const std::vector<webrtc::VideoStream> videoStreams =
Call()->CreateEncoderStreams(1280, 720);
@ -606,11 +595,6 @@ TEST_F(VideoConduitTest, TestConfigureSendMediaCodecMaxBr) {
Some(RtpRtcpConfig(webrtc::RtcpMode::kCompound, true));
});
ASSERT_TRUE(Call()->mVideoSendEncoderConfig);
ASSERT_EQ(Call()->mVideoSendEncoderConfig->max_bitrate_bps, 50000);
ASSERT_EQ(Call()->mVideoSendEncoderConfig->number_of_streams, 1U);
ASSERT_EQ(
Call()->mVideoSendEncoderConfig->simulcast_layers[0].max_bitrate_bps,
50000);
SendVideoFrame(1280, 720, 1);
const std::vector<webrtc::VideoStream> videoStreams =
Call()->CreateEncoderStreams(1280, 720);
@ -1277,10 +1261,6 @@ TEST_P(VideoConduitCodecModeTest, TestReconfigureSendMediaCodec) {
});
ASSERT_TRUE(Call()->mVideoSendEncoderConfig);
EXPECT_EQ(Call()->mVideoSendEncoderConfig->max_bitrate_bps, 2000000);
ASSERT_EQ(Call()->mVideoSendEncoderConfig->number_of_streams, 1U);
EXPECT_EQ(
Call()->mVideoSendEncoderConfig->simulcast_layers[0].max_bitrate_bps,
2000000);
SendVideoFrame(1280, 720, 1);
{
@ -1305,11 +1285,6 @@ TEST_P(VideoConduitCodecModeTest, TestReconfigureSendMediaCodec) {
aControl.mVideoSendCodec = Some(codecConfig);
});
ASSERT_TRUE(Call()->mVideoSendEncoderConfig);
EXPECT_EQ(Call()->mVideoSendEncoderConfig->max_bitrate_bps, 50000);
ASSERT_EQ(Call()->mVideoSendEncoderConfig->number_of_streams, 1U);
EXPECT_EQ(
Call()->mVideoSendEncoderConfig->simulcast_layers[0].max_bitrate_bps,
50000);
SendVideoFrame(1280, 720, 2);
{
const std::vector<webrtc::VideoStream> videoStreams =
@ -1407,10 +1382,6 @@ TEST_P(VideoConduitCodecModeTest,
});
ASSERT_TRUE(Call()->mVideoSendEncoderConfig);
ASSERT_EQ(Call()->mVideoSendEncoderConfig->max_bitrate_bps, 2000000);
ASSERT_EQ(Call()->mVideoSendEncoderConfig->number_of_streams, 1U);
EXPECT_EQ(
Call()->mVideoSendEncoderConfig->simulcast_layers[0].max_bitrate_bps,
2000000);
SendVideoFrame(1280, 720, 1);
{
@ -1432,10 +1403,6 @@ TEST_P(VideoConduitCodecModeTest,
aControl.mVideoSendCodec = Some(codecConfig);
});
ASSERT_TRUE(Call()->mVideoSendEncoderConfig);
ASSERT_EQ(Call()->mVideoSendEncoderConfig->number_of_streams, 1U);
EXPECT_EQ(
Call()->mVideoSendEncoderConfig->simulcast_layers[0].max_bitrate_bps,
50000);
SendVideoFrame(1280, 720, 2);
{
const std::vector<webrtc::VideoStream> videoStreams =

View file

@ -1,98 +1,45 @@
/* 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/. */
// 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/.
import java.text.SimpleDateFormat
/**
* Generates a "unique" versionCode for release builds.
*
* The resulting versionCode depends on the local timezone of the machine running this script.
* This is OK because we only use this for release builds on CI, where the timezone is fixed.
*
* Format: byDDDHHmm
* - b = base / epoch digit
* Historically hardcoded to "3". This digit is incremented when the year-derived
* component overflows its single digit (e.g., in 2026).
* - y = 1 digit derived from (two-digit year - 16), modulo 10
* - DDD = day of year (001366), zero-padded to 3 digits
* - HHmm = 24h time (0023)(0059)
*
* Example:
* Sept 6, 2017 @ 09:41
* year = 17 - 16 = 1
* base = 3
* -> 3-1-249-09-41 -> 312490941
*
* Historical note:
* Focus first shipped in 2017. The original scheme unconditionally used (yy - 16) which
* only fit in a single digit from 20172025.
*
* 2026 rollover:
* In 2026, (yy - 16) became 10. Allowing this to grow to two digits breaks the intended
* byDDDHHmm layout and can exceed Play / int limits.
*
* To preserve:
* - a single-digit `y`
* - monotonic versionCodes across year boundaries
*
* we keep `y` as (yearOffset % 10) and carry overflow into the base digit:
* 2025 -> base=3, y=9 -> 39DDDHHmm
* 2026 -> base=4, y=0 -> 40DDDHHmm
*/
ext {
// "Epoch" digit(s). Historically this was "3".
// We bump it by +1 each time (yy - 16) crosses another multiple of 10 (i.e., 2026, 2036, ...).
def epochDigit = 3
// This gradle scripts generates a "unique" version code for our release versions.
//
// The result of the version code depends on the timezone. We assume that this script will only be used
// for release versions and running on our build servers with a fixed timezone.
//
// The version code is composed like: yDDDHHmm
// * y = Double digit year, with 16 substracted: 2017 -> 17 -> 1
// * DDD = Day of the year, pad with zeros if needed: September 6th -> 249
// * HH = Hour in day (00-23)
// * mm = Minute in hour
//
// For September 6th, 2017, 9:41 am this will generate the versionCode: 12490941 (1-249-09-41).
//
// Note that we only use this generated version code for builds we want to distribute. For local
// debug builds we use a fixed versionCode to not mess with the caching mechanism of the build
// system.
ext {
def base = "3"
def today = new Date()
def yy = (new SimpleDateFormat("yy").format(today) as int)
def yearOffset = yy - 16 // 2017 -> 1, 2025 -> 9, 2026 -> 10, etc.
if (yearOffset < 0) {
throw new GradleException(
"versionCode yearOffset underflow: yearOffset=$yearOffset (yy=$yy)."
)
}
// Keep the "y" component as one digit, and carry overflow into the epoch digit.
def carry = (int) (yearOffset / 10)
def yearDigit = (int) (yearOffset % 10)
def epoch = epochDigit + carry
if (epoch >= 10) {
throw new GradleException(
"versionCode epoch overflow: epoch=$epoch (yy=$yy). Update versionCode scheme."
)
}
// We use the current year (double digit) and substract 16. We first released Focus in
// 2017 so this value will start counting at 1 and increment by one every year.
def year = String.valueOf((new SimpleDateFormat("yy").format(today) as int) - 16)
// We use the day in the Year (e.g. 248) as opposed to month + day (0510) because it's one digit shorter.
// If needed we pad with zeros (e.g. 25 -> 025)
def day = String.format("%03d", (new SimpleDateFormat("D").format(today) as int))
// We append the hour in day (24h) and minute in hour (7:26 pm -> 1926). We do not append
// seconds. This assumes that we do not need to build multiple release(!) builds the same
// minute.
def time = new SimpleDateFormat("HHmm").format(today)
// Build the final versionCode using the previously-calculated inputs.
def versionCode = ("${epoch}${yearDigit}${day}${time}" as long)
generatedVersionCode = (base + year + day + time) as int
// The Play Console has historically enforced a 2,100,000,000 cap. Keep a defensive ceiling here.
// Even without this, Android requires versionCode to fit in a signed 32-bit int.
def MAX_VERSION_CODE = 2_100_000_000
if (versionCode > MAX_VERSION_CODE) {
throw new GradleException(
"Generated versionCode exceeds MAX_VERSION_CODE ($MAX_VERSION_CODE): $versionCode (from $versionCodeStr)"
)
}
if (versionCode > Integer.MAX_VALUE) {
throw new GradleException(
"Generated versionCode exceeds Integer.MAX_VALUE: $versionCode (from $versionCodeStr)"
)
}
generatedVersionCode = (versionCode as int)
println("Generated versionCode: $generatedVersionCode")
println()
}

View file

@ -800,7 +800,6 @@ LoadInfo::LoadInfo(
nsIPrincipal* aPrincipalToInherit, nsIPrincipal* aTopLevelPrincipal,
nsIURI* aResultPrincipalURI, nsICookieJarSettings* aCookieJarSettings,
nsIContentSecurityPolicy* aCspToInherit,
const Maybe<dom::FeaturePolicyInfo>& aContainerFeaturePolicyInfo,
const nsACString& aTriggeringRemoteType,
const nsID& aSandboxedNullPrincipalID, const Maybe<ClientInfo>& aClientInfo,
const Maybe<ClientInfo>& aReservedClientInfo,
@ -856,7 +855,6 @@ LoadInfo::LoadInfo(
mResultPrincipalURI(aResultPrincipalURI),
mCookieJarSettings(aCookieJarSettings),
mCspToInherit(aCspToInherit),
mContainerFeaturePolicyInfo(aContainerFeaturePolicyInfo),
mTriggeringRemoteType(aTriggeringRemoteType),
mSandboxedNullPrincipalID(aSandboxedNullPrincipalID),
mClientInfo(aClientInfo),

View file

@ -229,7 +229,6 @@ class LoadInfo final : public nsILoadInfo {
nsIPrincipal* aPrincipalToInherit, nsIPrincipal* aTopLevelPrincipal,
nsIURI* aResultPrincipalURI, nsICookieJarSettings* aCookieJarSettings,
nsIContentSecurityPolicy* aCspToInherit,
const Maybe<dom::FeaturePolicyInfo>& aContainerFeaturePolicyInfo,
const nsACString& aTriggeringRemoteType,
const nsID& aSandboxedNullPrincipalID,
const Maybe<mozilla::dom::ClientInfo>& aClientInfo,

View file

@ -5,8 +5,8 @@
// Please pull this list from, and only from https://publicsuffix.org/list/public_suffix_list.dat,
// rather than any other VCS sites. Pulling from any other URL is not guaranteed to be supported.
// VERSION: 2025-12-28_14-57-43_UTC
// COMMIT: 1ef6d3bc102c85d12e92be54ec0dad8ee990dd5f
// VERSION: 2025-11-27_13-27-58_UTC
// COMMIT: d3567de748c61e2de5a3156cc52ef0e0fdc1dc0c
// Instructions on pulling and using this list can be found at https://publicsuffix.org/list/.
@ -1301,12 +1301,6 @@ gov.gy
net.gy
org.gy
// Hercules : https://hercules.app
// Submitted by Brendan Falk <security@hercules.app>
onhercules.app
hercules-app.com
hercules-dev.com
// hk : https://www.hkirc.hk
// Submitted by registry <hk.tech@hkirc.hk>
hk
@ -5673,9 +5667,7 @@ si
sj
// sk : https://www.iana.org/domains/root/db/sk.html
// https://sk-nic.sk/
sk
org.sk
// sl : http://www.nic.sl
// Submitted by registry <adam@neoip.com>
@ -6824,7 +6816,7 @@ org.zw
// newGTLDs
// List of new gTLDs imported from https://www.icann.org/resources/registries/gtlds/v2/gtlds.json on 2025-12-06T15:17:27Z
// List of new gTLDs imported from https://www.icann.org/resources/registries/gtlds/v2/gtlds.json on 2025-11-08T15:16:38Z
// This list is auto-generated, don't edit it manually.
// aaa : American Automobile Association, Inc.
// https://www.iana.org/domains/root/db/aaa.html
@ -10202,7 +10194,7 @@ solutions
// https://www.iana.org/domains/root/db/song.html
song
// sony : Sony Group Corporation
// sony : Sony Corporation
// https://www.iana.org/domains/root/db/sony.html
sony
@ -12343,10 +12335,6 @@ eero-stage.online
// concludes Amazon
// Antagonist B.V. : https://www.antagonist.nl/
// Submitted by Sander Hoentjen <systeembeheer@antagonist.nl>
antagonist.cloud
// Apigee : https://apigee.com/
// Submitted by Apigee Security Team <security@apigee.com>
apigee.io
@ -12359,24 +12347,6 @@ panel.dev
// Submitted by Alexander Selivanov <alex@apphud.com>
siiites.com
// Apple : https://www.apple.com
// Submitted by Apple DNS <dnscontact@apple.com>
int.apple
*.cloud.int.apple
*.r.cloud.int.apple
*.ap-north-1.r.cloud.int.apple
*.ap-south-1.r.cloud.int.apple
*.ap-south-2.r.cloud.int.apple
*.eu-central-1.r.cloud.int.apple
*.eu-north-1.r.cloud.int.apple
*.us-central-1.r.cloud.int.apple
*.us-central-2.r.cloud.int.apple
*.us-east-1.r.cloud.int.apple
*.us-east-2.r.cloud.int.apple
*.us-west-1.r.cloud.int.apple
*.us-west-2.r.cloud.int.apple
*.us-west-3.r.cloud.int.apple
// Appspace : https://www.appspace.com
// Submitted by Appspace Security Team <security@appspace.com>
appspacehosted.com
@ -12389,7 +12359,6 @@ appudo.net
// Appwrite : https://appwrite.io
// Submitted by Steven Nguyen <security@appwrite.io>
appwrite.global
appwrite.network
*.appwrite.run
// Aptible : https://www.aptible.com/
@ -12947,11 +12916,8 @@ discordsez.com
// Submitted by Calvin Browne <calvin@dns.business>
jozi.biz
// DNSHE : https://www.dnshe.com
// DNSHE : https://de5.net
// Submitted by DNSHE Team <support@dnshe.com>
ccwu.cc
cc.cd
us.ci
de5.net
// DNShome : https://www.dnshome.de/
@ -12963,12 +12929,6 @@ dnshome.de
online.th
shop.th
// dotScot Domains : https://domains.scot/
// Submitted by DNS Team <dns@domains.scot>
co.scot
me.scot
org.scot
// DrayTek Corp. : https://www.draytek.com/
// Submitted by Paul Fang <mis@draytek.com>
drayddns.com
@ -13335,9 +13295,12 @@ elementor.cool
// Emergent : https://emergent.sh
// Submitted by Emergent Security Team <security@emergent.sh>
emergent.cloud
preview.emergentagent.com
emergent.host
// En root‽ : https://en-root.org
// Submitted by Emmanuel Raviart <emmanuel@raviart.com>
en-root.fr
// Enalean SAS : https://www.enalean.com
// Submitted by Enalean Security Team <security@enalean.com>
mytuleap.com
@ -13598,9 +13561,15 @@ on-fleek.app
flutterflow.app
// fly.io : https://fly.io
// Submitted by Kurt Mackey <ops@fly.io>
sprites.app
// Submitted by Kurt Mackey <kurt@fly.io>
fly.dev
shw.io
edgeapp.net
// Forgerock : https://www.forgerock.com
// Submitted by Roderick Parr <roderick.parr@forgerock.com>
forgeblocks.com
id.forgerock.io
// FoundryLabs, Inc : https://e2b.dev/
// Submitted by Jiri Sveceny <security@e2b.dev>
@ -13913,10 +13882,6 @@ grebedoc.dev
günstigbestellen.de
günstigliefern.de
// GV.UY : https://nic.gv.uy
// Submitted by cheng <admin@mailto.al>
gv.uy
// Hackclub Nest : https://hackclub.app
// Submitted by Cyteon <admins@hackclub.app>
hackclub.app
@ -14049,10 +14014,6 @@ iki.fi
ibxos.it
iliadboxos.it
// Imagine : https://imagine.dev
// Submitted by Steven Nguyen <security@imagine.dev>
imagine-proxy.work
// Incsub, LLC : https://incsub.com/
// Submitted by Aaron Edwards <sysadmins@incsub.com>
smushcdn.com
@ -14061,10 +14022,6 @@ wpmucdn.com
tempurl.host
wpmudev.host
// Indevs : https://indevs.in
// Submitted by Sudheer Bhuvana <security@admin.indevs.in>
indevs.in
// Individual Network Berlin e.V. : https://www.in-berlin.de/
// Submitted by Christian Seitz <chris@in-berlin.de>
dyn-berlin.de
@ -14301,10 +14258,6 @@ kapsi.fi
ezproxy.kuleuven.be
kuleuven.cloud
// Kevin Service : https://kevsrv.me
// Submitted by Kevin Service Team <cs@kevsrv.me>
ae.kg
// Keyweb AG : https://www.keyweb.de
// Submitted by Martin Dannehl <postmaster@keymachine.de>
keymachine.de
@ -14502,11 +14455,6 @@ luyani.net
// Submitted by Damien Tournoud <dtournoud@magento.cloud>
*.magentosite.cloud
// Magic Patterns : https://www.magicpatterns.com
// Submitted by Teddy Ni <security@magicpatterns.com>
magicpatterns.app
magicpatternsapp.com
// Mail.Ru Group : https://hb.cldmail.ru
// Submitted by Ilya Zaretskiy <zaretskiy@corp.mail.ru>
hb.cldmail.ru
@ -14872,6 +14820,10 @@ freeddns.us
nsupdate.info
nerdpol.ovh
// NYC.mn : https://dot.nyc.mn/
// Submitted by NYC.mn Subdomain Service <nyc.mn@mailfence.com>
nyc.mn
// O3O.Foundation : https://o3o.foundation/
// Submitted by the prvcy.page Registry Team <info@o3o.foundation>
prvcy.page
@ -15032,6 +14984,10 @@ srv.us
gh.srv.us
gl.srv.us
// PE Ulyanov Kirill Sergeevich : https://airy.host
// Submitted by Kirill Ulyanov <k.ulyanov@airy.host>
lk3.ru
// Peplink | Pepwave : http://peplink.com/
// Submitted by Steve Leung <steveleung@peplink.com>
mypep.link
@ -15040,11 +14996,6 @@ mypep.link
// Submitted by Kenneth Van Alstyne <kvanalstyne@perspecta.com>
perspecta.cloud
// Ping Identity : https://www.pingidentity.com
// Submitted by Ping Identity <security@pingidentity.com>
forgeblocks.com
id.forgerock.io
// Plain : https://www.plain.com/
// Submitted by Jesús Hernández <security@plain.com>
support.site
@ -15063,6 +15014,11 @@ us.platform.sh
*.platformsh.site
*.tst.site
// Platter : https://platter.dev
// Submitted by Patrick Flor <patrick@platter.dev>
platter-app.dev
platterp.us
// Pley AB : https://www.pley.com/
// Submitted by Henning Pohl <infra@pley.com>
pley.games
@ -15110,10 +15066,6 @@ dev.project-study.com
// Submitted by Martin Meier <admin@protonet.io>
protonet.io
// PSL Sandbox : https://github.com/groundcat/PSL-Sandbox
// Submitted by groundcat <psl-sandbox@alumni.upenn.edu>
platter-app.dev
// PT Ekossistim Indo Digital : https://e.id
// Submitted by Eid Team <support@corp.e.id>
e.id
@ -15123,11 +15075,6 @@ e.id
chirurgiens-dentistes-en-france.fr
byen.site
// PublicZone : https://publiczone.org/
// Submitted by PublicZone NOC Team <noc@publiczone.org>
nyc.mn
*.cn.st
// pubtls.org : https://www.pubtls.org
// Submitted by Kor Nielsen <kor@pubtls.org>
pubtls.org
@ -15233,11 +15180,6 @@ rhcloud.com
// Submitted by Andrew Farries <andrew.farries@red-gate.com>
instances.spawn.cc
// Redpanda Data : https://redpanda.com
// Submitted by Infrastructure Team <security@redpanda.com>
*.clusters.rdpa.co
*.srvrless.rdpa.co
// Render : https://render.com
// Submitted by Anurag Goel <dev@render.com>
onrender.com
@ -15411,10 +15353,6 @@ sakura.tv
// Submitted by Asheesh Laroia <asheesh@sandstorm.io>
sandcats.io
// Sav.com, LLC : https://marketing.sav.com/
// Submitted by Mukul Kudegave <mukul@sav.com>
sav.case
// SBE network solutions GmbH : https://www.sbe.de/
// Submitted by Norman Meilick <nm@sbe.de>
logoip.com
@ -15708,6 +15646,10 @@ ipfs.w3s.link
// Submitted by Tony Schirmer <tony@storebase.io>
storebase.store
// Storipress : https://storipress.com
// Submitted by Benno Liu <benno@storipress.com>
storipress.app
// Storj Labs Inc. : https://storj.io/
// Submitted by Philip Hutchins <hostmaster@storj.io>
storj.farm
@ -15819,14 +15761,6 @@ tche.br
site.tb-hosting.com
directwp.eu
// TechEdge Limited: https://www.nic.uk.cc/
// Submitted by TechEdge Developer <support@nic.uk.cc>
ec.cc
eu.cc
gu.cc
uk.cc
us.cc
// Teckids e.V. : https://www.teckids.org
// Submitted by Dominik George <dominik.george@teckids.org>
edugit.io
@ -16220,7 +16154,6 @@ enterprisecloud.nu
// Zone.ID: https://zone.id
// Submitted by Gx1.org <security@gx1.org>
zone.id
nett.to
// ZoneABC : https://zoneabc.net
// Submitted by ZoneABC Team <support@zoneabc.net>

View file

@ -207,7 +207,6 @@ struct LoadInfoArgs
InterceptionInfoArg? interceptionInfo;
bool isNewWindowTarget;
UserNavigationInvolvement userNavigationInvolvement;
FeaturePolicyInfo? containerFeaturePolicyInfo;
};
/**

View file

@ -14,7 +14,7 @@
#include <stddef.h>
static const PRTime kCTExpirationTime = INT64_C(1773669190000000);
static const PRTime kCTExpirationTime = INT64_C(1770634470000000);
namespace mozilla::ct {
@ -208,7 +208,7 @@ const CTLogInfo kCTLogList[] = {
"\x99",
91},
{"DigiCert 'Wyvern2027h1'", CTLogState::Admissible, CTLogFormat::RFC6962,
1766253600000, // 2025-12-20T18:00:00Z
1760119200000, // 2025-10-10T18:00:00Z
2, // operated by DigiCert
"\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48"
"\xce\x3d\x03\x01\x07\x03\x42\x00\x04\x6a\xcb\x71\x62\x3d\x66\x9e\xd1\xae"
@ -218,7 +218,7 @@ const CTLogInfo kCTLogList[] = {
"\xee",
91},
{"DigiCert 'Wyvern2027h2'", CTLogState::Admissible, CTLogFormat::RFC6962,
1766253600000, // 2025-12-20T18:00:00Z
1760119200000, // 2025-10-10T18:00:00Z
2, // operated by DigiCert
"\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48"
"\xce\x3d\x03\x01\x07\x03\x42\x00\x04\xb8\xe8\x3c\x85\xc8\x1a\x61\x3f\xcc"
@ -258,7 +258,7 @@ const CTLogInfo kCTLogList[] = {
"\xcd",
91},
{"DigiCert 'sphinx2027h1'", CTLogState::Admissible, CTLogFormat::RFC6962,
1766253600000, // 2025-12-20T18:00:00Z
1760119200000, // 2025-10-10T18:00:00Z
2, // operated by DigiCert
"\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48"
"\xce\x3d\x03\x01\x07\x03\x42\x00\x04\xbe\x2a\xc8\xab\x55\xcf\xc2\x0c\x06"
@ -268,7 +268,7 @@ const CTLogInfo kCTLogList[] = {
"\x21",
91},
{"DigiCert 'sphinx2027h2'", CTLogState::Admissible, CTLogFormat::RFC6962,
1766253600000, // 2025-12-20T18:00:00Z
1760119200000, // 2025-10-10T18:00:00Z
2, // operated by DigiCert
"\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48"
"\xce\x3d\x03\x01\x07\x03\x42\x00\x04\x50\x27\xb6\xdc\xcf\x3c\xf6\x60\x2c"
@ -438,7 +438,7 @@ const CTLogInfo kCTLogList[] = {
"\xc9",
91},
{"Let's Encrypt 'Oak2025h2'", CTLogState::Admissible, CTLogFormat::RFC6962,
1765578600000, // 2025-12-12T22:30:00Z
1701000000000, // 2023-11-26T12:00:00Z
4, // operated by Let's Encrypt
"\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48"
"\xce\x3d\x03\x01\x07\x03\x42\x00\x04\xb5\x76\x30\x07\xad\xc6\xc8\xd2\xe4"
@ -448,7 +448,7 @@ const CTLogInfo kCTLogList[] = {
"\xa9",
91},
{"Let's Encrypt 'Oak2026h1'", CTLogState::Admissible, CTLogFormat::RFC6962,
1765578600000, // 2025-12-12T22:30:00Z
1730678400000, // 2024-11-04T00:00:00Z
4, // operated by Let's Encrypt
"\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48"
"\xce\x3d\x03\x01\x07\x03\x42\x00\x04\x99\xd4\x61\x70\x22\xfa\x77\x93\x0d"
@ -458,7 +458,7 @@ const CTLogInfo kCTLogList[] = {
"\x49",
91},
{"Let's Encrypt 'Oak2026h2'", CTLogState::Admissible, CTLogFormat::RFC6962,
1765578600000, // 2025-12-12T22:30:00Z
1730678400000, // 2024-11-04T00:00:00Z
4, // operated by Let's Encrypt
"\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48"
"\xce\x3d\x03\x01\x07\x03\x42\x00\x04\x6a\x70\x9d\xb3\x96\xe3\xec\x85\x36"
@ -617,16 +617,6 @@ const CTLogInfo kCTLogList[] = {
"\x01\xbb\x4f\xd8\xd3\x8f\xe3\x08\xc8\xb9\xf0\x24\xe9\xfe\xb8\xb1\x8e\x03"
"\x5a",
91},
{"TrustAsia Luoshu2027", CTLogState::Admissible, CTLogFormat::Tiled,
1764700200000, // 2025-12-02T18:30:00Z
5, // operated by TrustAsia
"\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48"
"\xce\x3d\x03\x01\x07\x03\x42\x00\x04\xba\x64\x98\xcf\x2e\x9d\x51\x09\x70"
"\x4d\xc9\x0f\xcc\xa3\x0a\x02\x93\x11\x8a\x7a\xb1\x1c\x80\x65\x2d\xf9\xab"
"\xbf\x1d\x52\x74\xc1\xf5\x45\x30\x02\x8b\x5c\x1b\xd5\x5d\x7c\xb2\xcf\x18"
"\x8e\x56\x82\xec\xf7\x21\xd8\xe4\x1a\xf0\xe7\xd1\x7a\xfb\x9b\xe1\x8f\x41"
"\x0d",
91},
{"Bogus placeholder log to unbreak misbehaving CT libraries", CTLogState::Retired, CTLogFormat::RFC6962,
1750489200000, // 2025-06-21T07:00:00Z
6, // operated by Geomys
@ -698,7 +688,7 @@ const CTLogInfo kCTLogList[] = {
"\xaa",
91},
{"IPng Networks 'Halloumi2025h2'", CTLogState::Admissible, CTLogFormat::Tiled,
1765996200000, // 2025-12-17T18:30:00Z
1759861800000, // 2025-10-07T18:30:00Z
7, // operated by IPng Networks
"\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48"
"\xce\x3d\x03\x01\x07\x03\x42\x00\x04\xa8\x9c\x52\x9c\x27\x0c\x85\x68\xa4"
@ -708,7 +698,7 @@ const CTLogInfo kCTLogList[] = {
"\x01",
91},
{"IPng Networks 'Halloumi2026h1'", CTLogState::Admissible, CTLogFormat::Tiled,
1765996200000, // 2025-12-17T18:30:00Z
1759861800000, // 2025-10-07T18:30:00Z
7, // operated by IPng Networks
"\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48"
"\xce\x3d\x03\x01\x07\x03\x42\x00\x04\xcd\xd7\x27\x1b\x04\x63\x9b\x66\x68"
@ -728,7 +718,7 @@ const CTLogInfo kCTLogList[] = {
"\xad",
91},
{"IPng Networks 'Halloumi2027h1'", CTLogState::Admissible, CTLogFormat::Tiled,
1765996200000, // 2025-12-17T18:30:00Z
1759861800000, // 2025-10-07T18:30:00Z
7, // operated by IPng Networks
"\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48"
"\xce\x3d\x03\x01\x07\x03\x42\x00\x04\xc3\x94\x94\x97\x6c\x9f\x77\x94\xc5"
@ -738,7 +728,7 @@ const CTLogInfo kCTLogList[] = {
"\x67",
91},
{"IPng Networks 'Halloumi2027h2'", CTLogState::Admissible, CTLogFormat::Tiled,
1765996200000, // 2025-12-17T18:30:00Z
1759861800000, // 2025-10-07T18:30:00Z
7, // operated by IPng Networks
"\x30\x59\x30\x13\x06\x07\x2a\x86\x48\xce\x3d\x02\x01\x06\x08\x2a\x86\x48"
"\xce\x3d\x03\x01\x07\x03\x42\x00\x04\xae\x62\x9b\x16\x43\xc6\xed\x07\xd0"

View file

@ -726,4 +726,4 @@ static const TransportSecurityPreload kPublicKeyPinningPreloadList[] = {
static const int32_t kUnknownId = -1;
static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1776088368026000);
static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1773053640200000);

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
{
"version": "80.16",
"log_list_timestamp": "2026-01-04T12:53:12Z",
"version": "76.4",
"log_list_timestamp": "2025-11-30T12:54:31Z",
"operators": [
{
"name": "Google",
@ -289,8 +289,8 @@
"url": "https://wyvern.ct.digicert.com/2027h1/",
"mmd": 86400,
"state": {
"usable": {
"timestamp": "2025-12-20T18:00:00Z"
"qualified": {
"timestamp": "2025-10-10T18:00:00Z"
}
},
"temporal_interval": {
@ -305,8 +305,8 @@
"url": "https://wyvern.ct.digicert.com/2027h2/",
"mmd": 86400,
"state": {
"usable": {
"timestamp": "2025-12-20T18:00:00Z"
"qualified": {
"timestamp": "2025-10-10T18:00:00Z"
}
},
"temporal_interval": {
@ -369,8 +369,8 @@
"url": "https://sphinx.ct.digicert.com/2027h1/",
"mmd": 86400,
"state": {
"usable": {
"timestamp": "2025-12-20T18:00:00Z"
"qualified": {
"timestamp": "2025-10-10T18:00:00Z"
}
},
"temporal_interval": {
@ -385,8 +385,8 @@
"url": "https://sphinx.ct.digicert.com/2027h2/",
"mmd": 86400,
"state": {
"usable": {
"timestamp": "2025-12-20T18:00:00Z"
"qualified": {
"timestamp": "2025-10-10T18:00:00Z"
}
},
"temporal_interval": {
@ -699,12 +699,8 @@
"url": "https://oak.ct.letsencrypt.org/2025h2/",
"mmd": 86400,
"state": {
"readonly": {
"timestamp": "2025-12-12T22:30:00Z",
"final_tree_head": {
"sha256_root_hash": "fn06m+bnTrDRl01hT1F1TdZPYfxciFZZn7NAayeGOVQ=",
"tree_size": 1958525022
}
"usable": {
"timestamp": "2023-11-26T12:00:00Z"
}
},
"temporal_interval": {
@ -719,12 +715,8 @@
"url": "https://oak.ct.letsencrypt.org/2026h1/",
"mmd": 86400,
"state": {
"readonly": {
"timestamp": "2025-12-12T22:30:00Z",
"final_tree_head": {
"sha256_root_hash": "deSRNfTNPgd9wfzoXIznvi+QUTxuK0R+daC6JGKGK3Q=",
"tree_size": 598614696
}
"usable": {
"timestamp": "2024-11-04T00:00:00Z"
}
},
"temporal_interval": {
@ -739,12 +731,8 @@
"url": "https://oak.ct.letsencrypt.org/2026h2/",
"mmd": 86400,
"state": {
"readonly": {
"timestamp": "2025-12-12T22:30:00Z",
"final_tree_head": {
"sha256_root_hash": "uTgg1k3DUbSFFdXewyyxbsQuCc9RupplMphTwtXqvf4=",
"tree_size": 130815692
}
"usable": {
"timestamp": "2024-11-04T00:00:00Z"
}
},
"temporal_interval": {
@ -1013,25 +1001,7 @@
}
}
],
"tiled_logs": [
{
"description": "TrustAsia Luoshu2027",
"log_id": "VzRIzG4dLA3JS2nyh9Hv5IPHolxQxTILuzrep29usEE=",
"key": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEumSYzy6dUQlwTckPzKMKApMRinqxHIBlLfmrvx1SdMH1RTACi1wb1V18ss8YjlaC7Pch2OQa8OfRevub4Y9BDQ==",
"submission_url": "https://luoshu2027.trustasia.com/luoshu2027/",
"monitoring_url": "https://luoshu2027.trustasia.com/luoshu2027/",
"mmd": 60,
"state": {
"qualified": {
"timestamp": "2025-12-02T18:30:00Z"
}
},
"temporal_interval": {
"start_inclusive": "2026-12-24T00:00:00Z",
"end_exclusive": "2028-01-08T00:00:00Z"
}
}
]
"tiled_logs": []
},
{
"name": "Geomys",
@ -1176,8 +1146,8 @@
"monitoring_url": "https://halloumi2025h2.mon.ct.ipng.ch/",
"mmd": 60,
"state": {
"usable": {
"timestamp": "2025-12-17T18:30:00Z"
"qualified": {
"timestamp": "2025-10-07T18:30:00Z"
}
},
"temporal_interval": {
@ -1193,8 +1163,8 @@
"monitoring_url": "https://halloumi2026h1.mon.ct.ipng.ch/",
"mmd": 60,
"state": {
"usable": {
"timestamp": "2025-12-17T18:30:00Z"
"qualified": {
"timestamp": "2025-10-07T18:30:00Z"
}
},
"temporal_interval": {
@ -1227,8 +1197,8 @@
"monitoring_url": "https://halloumi2027h1.mon.ct.ipng.ch/",
"mmd": 60,
"state": {
"usable": {
"timestamp": "2025-12-17T18:30:00Z"
"qualified": {
"timestamp": "2025-10-07T18:30:00Z"
}
},
"temporal_interval": {
@ -1244,8 +1214,8 @@
"monitoring_url": "https://halloumi2027h2.mon.ct.ipng.ch/",
"mmd": 60,
"state": {
"usable": {
"timestamp": "2025-12-17T18:30:00Z"
"qualified": {
"timestamp": "2025-10-07T18:30:00Z"
}
},
"temporal_interval": {

View file

@ -74,16 +74,6 @@ namespace ApplicationServices {
# ifndef MREMAP_DONTUNMAP
# define MREMAP_DONTUNMAP 4
# endif
//
// This constant is ancient, but the kernel header for it conflicts
// with glibc's fcntl.h:
# ifndef F_LINUX_SPECIFIC_BASE
# define F_LINUX_SPECIFIC_BASE 1024
# endif
// Added in 6.10:
# ifndef F_DUPFD_QUERY
# define F_DUPFD_QUERY (F_LINUX_SPECIFIC_BASE + 3)
# endif
#endif
constexpr bool kIsDebug =
@ -153,23 +143,6 @@ static void RunGenericTests(SandboxTestingChild* child, bool aIsGMP = false) {
MOZ_RELEASE_ASSERT(flags & O_NONBLOCK);
}
}
if (!aIsGMP) {
constexpr auto name = "fcntl_dupfd_query"_ns;
int rv = fcntl(0, F_DUPFD_QUERY, 0);
// Expected:
// * success with rv == 1 (new kernel)
// * failure with EINVAL (old kernel)
// Rejected:
// * failure with ENOSYS or any other error
// * success with rv == 0 (shouldn't be possible)
MOZ_RELEASE_ASSERT(rv != 0);
if (rv > 0) {
child->PosixTest(name, true, 0);
} else { // (rv < 0), errno unchanged since fcntl
child->PosixTest(name, false, errno, Some(EINVAL));
}
}
#endif // XP_LINUX
}

View file

@ -118,13 +118,6 @@ static_assert(MADV_GUARD_INSTALL == 102);
static_assert(MADV_GUARD_REMOVE == 103);
#endif
// Added in 6.10
#ifndef F_DUPFD_QUERY
# define F_DUPFD_QUERY (F_LINUX_SPECIFIC_BASE + 3)
#else
static_assert(F_DUPFD_QUERY == (F_LINUX_SPECIFIC_BASE + 3));
#endif
// To avoid visual confusion between "ifdef ANDROID" and "ifndef ANDROID":
#ifndef ANDROID
# define DESKTOP
@ -1107,9 +1100,6 @@ class SandboxPolicyCommon : public SandboxPolicyBase {
#endif
// Not much different from other forms of dup(), and commonly used.
.Case(F_DUPFD_CLOEXEC, Allow())
// Used by Mesa, generally useful, and harmless: tests if
// two file descriptors refer to the same file description.
.Case(F_DUPFD_QUERY, Allow())
.Default(SandboxPolicyBase::EvaluateSyscall(sysno));
}

View file

@ -1,283 +1,121 @@
{
"data": [
{
"name": "Safari",
"schema": 1766016303794,
"status": "current",
"version": "26.3",
"browserid": "safari",
"id": "f7f0e108-c839-4036-94f6-1d77b172c85a",
"last_modified": 1766045402721
},
{
"name": "WebView on iOS",
"schema": 1766016304219,
"status": "current",
"version": "26.3",
"browserid": "webview_ios",
"id": "8ac8569d-f6dc-41e4-b448-7c54f6923a36",
"last_modified": 1766045402718
},
{
"name": "Safari on iOS",
"schema": 1766016304005,
"status": "current",
"version": "26.3",
"browserid": "safari_ios",
"id": "916681bd-04e0-4dbe-9c02-965181db1356",
"last_modified": 1766045402715
},
{
"name": "Bun",
"schema": 1765411502852,
"schema": 1762992304400,
"status": "current",
"version": "1.3.4",
"version": "1.3.2",
"browserid": "bun",
"id": "bb61843a-d6b5-40f0-bf14-89b02e02cdd1",
"last_modified": 1765440270114
},
{
"name": "IceCat for Android",
"schema": 1765411503604,
"status": "planned",
"version": "149",
"browserid": "icecat_android",
"id": "78dc5472-36f7-465d-92c2-3d2ff5d7c323",
"last_modified": 1765440270110
"id": "5034aa5c-d78a-4a4a-ade2-d9aaef93a941",
"last_modified": 1763038623318
},
{
"name": "IceCat",
"schema": 1765411503258,
"schema": 1762992304751,
"status": "planned",
"version": "149",
"browserid": "icecat",
"id": "2154c26d-3d7d-4ddc-a6ec-de10aeaba65f",
"last_modified": 1765440270107
},
{
"name": "IceCat",
"schema": 1765411503145,
"status": "nightly",
"version": "148",
"browserid": "icecat",
"id": "4ebdb515-56c0-4aae-bf80-631df396b3c5",
"last_modified": 1765440270099
"last_modified": 1763038623314
},
{
"name": "IceCat for Android",
"schema": 1765411503533,
"status": "nightly",
"schema": 1762992305101,
"status": "planned",
"version": "148",
"browserid": "icecat_android",
"id": "5e1afc2d-b301-49b8-9052-0d0ceed8d7a3",
"last_modified": 1765440270095
"last_modified": 1763038623310
},
{
"name": "IceCat for Android",
"schema": 1765411503470,
"status": "beta",
"schema": 1762992305037,
"status": "nightly",
"version": "147",
"browserid": "icecat_android",
"id": "6d4ac1b5-fae6-4cf0-8966-3833c78d2d6d",
"last_modified": 1765440270091
"last_modified": 1763038623304
},
{
"name": "IceCat",
"schema": 1765411503078,
"status": "beta",
"schema": 1762992304683,
"status": "nightly",
"version": "147",
"browserid": "icecat",
"id": "da813114-57b4-435c-831e-4fc28589a55c",
"last_modified": 1765440270088
"last_modified": 1763038623300
},
{
"name": "IceCat for Android",
"schema": 1765411503404,
"status": "current",
"schema": 1762992304970,
"status": "beta",
"version": "146",
"browserid": "icecat_android",
"id": "b8de7d68-78f0-49a8-ae02-2b807c2a40d0",
"last_modified": 1765440270084
"last_modified": 1763038623295
},
{
"name": "IceCat",
"schema": 1765411503010,
"status": "current",
"schema": 1762992304614,
"status": "beta",
"version": "146",
"browserid": "icecat",
"id": "db1e42f6-cbd7-4a17-a388-2190ad554abf",
"last_modified": 1765440270080
"last_modified": 1763038623291
},
{
"name": "WebView Android",
"schema": 1764979505137,
"status": "planned",
"version": "146",
"browserid": "webview_android",
"id": "620f087d-d5c6-4b67-80f4-02358d8298e7",
"last_modified": 1765180094112
},
{
"name": "Opera Android",
"schema": 1764979504685,
"name": "IceCat for Android",
"schema": 1762992304900,
"status": "current",
"version": "93",
"browserid": "opera_android",
"id": "d804ce23-825c-4e96-a0f4-c70981bb9a18",
"last_modified": 1765180094108
"version": "145",
"browserid": "icecat_android",
"id": "546eaac9-d444-4f9f-a403-b97a76646211",
"last_modified": 1763038623283
},
{
"name": "Chrome Android",
"schema": 1764979504231,
"status": "planned",
"version": "146",
"browserid": "chrome_android",
"id": "1b035778-10c7-4ea3-aeb4-3606fd3483e1",
"last_modified": 1765180094104
"name": "IceCat",
"schema": 1762992304541,
"status": "current",
"version": "145",
"browserid": "icecat",
"id": "04fc0708-9123-4914-a491-ca13f20285e6",
"last_modified": 1763038623278
},
{
"name": "Safari on iOS",
"schema": 1762387504104,
"status": "beta",
"version": "26.2",
"browserid": "safari_ios",
"id": "2eb9ac0d-f4bf-4cdf-83a1-49dc43362039",
"last_modified": 1762424892978
},
{
"name": "Safari",
"schema": 1762387503881,
"status": "beta",
"version": "26.2",
"browserid": "safari",
"id": "8982e715-0fe8-485b-a68f-582f3420cf8c",
"last_modified": 1762424892974
},
{
"name": "Edge",
"schema": 1764979504557,
"schema": 1762387503671,
"status": "planned",
"version": "146",
"browserid": "edge",
"id": "71070e67-3067-4271-acef-cf0bd7a4f555",
"last_modified": 1765180094101
},
{
"name": "Chrome",
"schema": 1764979503917,
"status": "planned",
"version": "146",
"browserid": "chrome",
"id": "b9100141-3b96-44f6-89b5-2dd19d6dfba6",
"last_modified": 1765180094097
},
{
"name": "Edge",
"schema": 1764979504497,
"status": "nightly",
"version": "145",
"browserid": "edge",
"id": "40684037-f3dc-4106-b1f7-91bd4fa18a32",
"last_modified": 1765180094092
"last_modified": 1762424892971
},
{
"name": "WebView Android",
"schema": 1764979505076,
"status": "nightly",
"version": "145",
"browserid": "webview_android",
"id": "51da2d32-d596-43de-8dea-bb19b07b2bf0",
"last_modified": 1765180094085
},
{
"name": "Chrome",
"schema": 1764979503854,
"status": "nightly",
"version": "145",
"browserid": "chrome",
"id": "1bcd114b-13e9-428b-9d54-bd2d993aa5bb",
"last_modified": 1765180094082
},
{
"name": "Chrome Android",
"schema": 1764979504166,
"status": "nightly",
"version": "145",
"browserid": "chrome_android",
"id": "4363f23f-12a8-40d5-aedb-9c90514c368c",
"last_modified": 1765180094078
},
{
"name": "WebView Android",
"schema": 1764979505016,
"name": "WebView on iOS",
"schema": 1762387504304,
"status": "beta",
"version": "144",
"browserid": "webview_android",
"id": "336a5fe9-5846-4e9d-9039-be3d1d82f97f",
"last_modified": 1765180094075
},
{
"name": "Chrome",
"schema": 1764979503790,
"status": "beta",
"version": "144",
"browserid": "chrome",
"id": "445d8b56-0300-4c6b-8e1f-0d1ab3f45500",
"last_modified": 1765180094071
},
{
"name": "Chrome Android",
"schema": 1764979504105,
"status": "beta",
"version": "144",
"browserid": "chrome_android",
"id": "196eb3bc-6b04-4a4e-875f-b46ff5d5e6da",
"last_modified": 1765180094068
},
{
"name": "Chrome",
"schema": 1764979503724,
"status": "current",
"version": "143",
"browserid": "chrome",
"id": "d18f46a3-d6bd-4291-8088-27feea84ca76",
"last_modified": 1765180094064
},
{
"name": "Samsung Internet",
"schema": 1764979504820,
"status": "current",
"version": "29.0",
"browserid": "samsunginternet_android",
"id": "c30b100b-baa9-418f-b196-11e2cc06c7ad",
"last_modified": 1765180094055
},
{
"name": "Edge",
"schema": 1764979504435,
"status": "beta",
"version": "144",
"browserid": "edge",
"id": "64945ca2-8c7c-4d04-8a37-dd304f2e93ce",
"last_modified": 1765180094052
},
{
"name": "Edge",
"schema": 1764979504368,
"status": "current",
"version": "143",
"browserid": "edge",
"id": "5fbdfe94-de4c-4bfe-b789-246f64a7f4b6",
"last_modified": 1765180094048
},
{
"name": "WebView Android",
"schema": 1764979504956,
"status": "current",
"version": "143",
"browserid": "webview_android",
"id": "c0345eaf-8f79-42e7-9d5d-a16f48e6761f",
"last_modified": 1765180094045
},
{
"name": "Chrome Android",
"schema": 1764979504045,
"status": "current",
"version": "143",
"browserid": "chrome_android",
"id": "88163a1b-c1ef-4699-a50e-bd33a32ea075",
"last_modified": 1765180094041
},
{
"name": "Node.js",
"schema": 1764115503977,
"status": "current",
"version": "25.2.0",
"browserid": "nodejs",
"id": "72793b48-82fb-4674-9659-b51e661cb10b",
"last_modified": 1764597259381
"version": "26.2",
"browserid": "webview_ios",
"id": "0ec79789-21e6-4251-9728-07edaa787a52",
"last_modified": 1762424892967
},
{
"name": "Opera",
@ -288,6 +126,24 @@
"id": "5bdc65b2-ee44-4f2a-b776-54b9ffe1147f",
"last_modified": 1762424892963
},
{
"name": "Edge",
"schema": 1762387503603,
"status": "nightly",
"version": "144",
"browserid": "edge",
"id": "64945ca2-8c7c-4d04-8a37-dd304f2e93ce",
"last_modified": 1762424892958
},
{
"name": "Edge",
"schema": 1762387503533,
"status": "beta",
"version": "143",
"browserid": "edge",
"id": "5fbdfe94-de4c-4bfe-b789-246f64a7f4b6",
"last_modified": 1762424892954
},
{
"name": "Opera",
"schema": 1761955503193,
@ -306,6 +162,177 @@
"id": "847fc43b-579e-4b26-a1fa-cb978ec0438b",
"last_modified": 1762424892945
},
{
"name": "WebView on iOS",
"schema": 1762387504245,
"status": "current",
"version": "26.1",
"browserid": "webview_ios",
"id": "715b8853-603d-4ca8-a18c-3e24169f8895",
"last_modified": 1762424892941
},
{
"name": "Safari",
"schema": 1762387503809,
"status": "current",
"version": "26.1",
"browserid": "safari",
"id": "4e69de42-b3b9-4a6e-a764-3038552d0ecb",
"last_modified": 1762424892936
},
{
"name": "Safari on iOS",
"schema": 1762387504034,
"status": "current",
"version": "26.1",
"browserid": "safari_ios",
"id": "c67d6870-269b-4aa5-9a1b-03662a4b5771",
"last_modified": 1762424892932
},
{
"name": "Edge",
"schema": 1762387503452,
"status": "current",
"version": "142",
"browserid": "edge",
"id": "7d644a9d-4167-44d0-b58a-165beedf43e5",
"last_modified": 1762424892927
},
{
"name": "Node.js",
"schema": 1761696314245,
"status": "current",
"version": "24.7.0",
"browserid": "nodejs",
"id": "91237d21-1b61-4fa2-8a8e-7d6237471e87",
"last_modified": 1761724372882
},
{
"name": "WebView Android",
"schema": 1761696314562,
"status": "planned",
"version": "145",
"browserid": "webview_android",
"id": "51da2d32-d596-43de-8dea-bb19b07b2bf0",
"last_modified": 1761724372878
},
{
"name": "Chrome",
"schema": 1761696313807,
"status": "planned",
"version": "145",
"browserid": "chrome",
"id": "1bcd114b-13e9-428b-9d54-bd2d993aa5bb",
"last_modified": 1761724372875
},
{
"name": "Chrome Android",
"schema": 1761696314122,
"status": "planned",
"version": "145",
"browserid": "chrome_android",
"id": "4363f23f-12a8-40d5-aedb-9c90514c368c",
"last_modified": 1761724372871
},
{
"name": "WebView Android",
"schema": 1761696314499,
"status": "nightly",
"version": "144",
"browserid": "webview_android",
"id": "336a5fe9-5846-4e9d-9039-be3d1d82f97f",
"last_modified": 1761724372867
},
{
"name": "Chrome",
"schema": 1761696313747,
"status": "nightly",
"version": "144",
"browserid": "chrome",
"id": "445d8b56-0300-4c6b-8e1f-0d1ab3f45500",
"last_modified": 1761724372864
},
{
"name": "Chrome Android",
"schema": 1761696314057,
"status": "nightly",
"version": "144",
"browserid": "chrome_android",
"id": "196eb3bc-6b04-4a4e-875f-b46ff5d5e6da",
"last_modified": 1761724372861
},
{
"name": "Chrome",
"schema": 1761696313690,
"status": "beta",
"version": "143",
"browserid": "chrome",
"id": "d18f46a3-d6bd-4291-8088-27feea84ca76",
"last_modified": 1761724372857
},
{
"name": "WebView Android",
"schema": 1761696314379,
"status": "current",
"version": "142",
"browserid": "webview_android",
"id": "d1917e2a-614b-4b6c-8bb4-683132e1fd64",
"last_modified": 1761724372851
},
{
"name": "Chrome",
"schema": 1761696313619,
"status": "current",
"version": "142",
"browserid": "chrome",
"id": "80f03197-a17b-4032-ba47-0e81e04ffce2",
"last_modified": 1761724372848
},
{
"name": "WebView Android",
"schema": 1761696314437,
"status": "beta",
"version": "143",
"browserid": "webview_android",
"id": "c0345eaf-8f79-42e7-9d5d-a16f48e6761f",
"last_modified": 1761724372841
},
{
"name": "Chrome Android",
"schema": 1761696313996,
"status": "beta",
"version": "143",
"browserid": "chrome_android",
"id": "88163a1b-c1ef-4699-a50e-bd33a32ea075",
"last_modified": 1761724372838
},
{
"name": "Chrome Android",
"schema": 1761696313933,
"status": "current",
"version": "142",
"browserid": "chrome_android",
"id": "0b5cf19b-6816-4a96-aeb8-de25f776b025",
"last_modified": 1761724372834
},
{
"name": "Opera Android",
"schema": 1760141104124,
"status": "current",
"version": "92",
"browserid": "opera_android",
"id": "2d5b3e9f-ae53-4833-adac-d2fdb3267611",
"last_modified": 1760336031485
},
{
"name": "Samsung Internet",
"schema": 1759889746802,
"status": "beta",
"version": "29.0",
"browserid": "samsunginternet_android",
"id": "c30b100b-baa9-418f-b196-11e2cc06c7ad",
"last_modified": 1759989898794
},
{
"name": "Deno",
"schema": 1759363503600,
@ -333,6 +360,15 @@
"id": "9949da65-f6be-41f4-9c9d-73bc27b4d2a0",
"last_modified": 1754642891013
},
{
"name": "Samsung Internet",
"schema": 1749254703179,
"status": "current",
"version": "28.0",
"browserid": "samsunginternet_android",
"id": "d85a7f04-256c-4b3c-a633-29d0b2a19f18",
"last_modified": 1749550693720
},
{
"name": "Node.js",
"schema": 1734480302872,
@ -352,5 +388,5 @@
"last_modified": 1665656484764
}
],
"timestamp": 1766045402721
"timestamp": 1763038623318
}

View file

@ -1,203 +1,5 @@
{
"data": [
{
"Domain": "bkvenergy.com",
"password-rules": "minlength: 8; maxlength: 12; required: upper; required: lower; required: digit; required: [-~!@#$%^&*()_=+,<.> ];",
"id": "79120746-e8f2-4ff2-b18e-730f72e35156",
"last_modified": 1764684322196
},
{
"Domain": "sjwaterhub.com",
"password-rules": "minlength: 8; maxlength: 30; required: digit, lower, upper; allowed: [!#%&*.];",
"id": "ad4dc632-7790-42cf-a798-12a1fabf4585",
"last_modified": 1764684322192
},
{
"Domain": "promozoneapp.nmlottery.com",
"password-rules": "minlength: 6; maxlength: 16; required: lower; required: upper; required: digit; allowed: special;",
"id": "b84b78b1-6f59-4b63-813f-ac1965568c72",
"last_modified": 1764684322188
},
{
"Domain": "mypatientvisit.com",
"password-rules": "minlength: 8; required: lower; required: upper; required: digit; required: [!#$%&*+.;?@^_~];",
"id": "5eb5ee14-8f2c-4397-afa9-bd59fc79f4df",
"last_modified": 1764684322177
},
{
"Domain": "mybam.bcbsnm.com",
"password-rules": "minlength: 8; maxlength: 64; max-consecutive: 2; required: lower; required: upper; required: digit; allowed: [!#$%&()*@[^{}~];",
"id": "21a8ea3d-676d-409a-9dc5-8a3ec72d7d9a",
"last_modified": 1764684322173
},
{
"Domain": "id.westfield.com",
"password-rules": "minlength: 9; maxlength: 20; required: lower; required: upper; required: digit; required: [!\"#&'()*,./:;?@[\\^_`{|}~];",
"id": "37ac075d-294f-4c68-b5ae-63324992786b",
"last_modified": 1764684322169
},
{
"Domain": "id.nfpa.org",
"password-rules": "minlength: 8; maxlength: 16; required: lower; required: upper; required: digit; required: [-\"^#$%&'()*+:=@[_|{}~]];",
"id": "9bf8d9d2-ffa4-4bf6-8b3c-aa3ed98b1114",
"last_modified": 1764684322166
},
{
"Domain": "cardcash.com",
"password-rules": "minlength: 8; required: lower; required: upper; required: digit; required: [!$%&*?@];",
"id": "ed380255-5637-4a0a-9336-54e743632071",
"last_modified": 1764684322162
},
{
"Domain": "auth.zennioptical.com",
"password-rules": "minlength: 8; maxlength: 14; required: lower; required: upper; required: digit; allowed: special;",
"id": "c5e8a7c1-e20c-4d60-b411-6f2cadf75d35",
"last_modified": 1764684322157
},
{
"Domain": "app8menu.com",
"password-rules": "minlength: 8; required: lower; required: upper; required: digit; required: [@$!%*?&];",
"id": "332895b3-7ed5-4353-abfa-2540cd218959",
"last_modified": 1764684322153
},
{
"Domain": "publix.com",
"password-rules": "minlength: 8; maxlength: 28; required: upper; required: lower; allowed: digit,[!#$%*@^];",
"id": "2f716ab9-e74b-4c12-9c49-0cb6a2e819f7",
"last_modified": 1764684322149
},
{
"Domain": "themovingportal.co.uk",
"password-rules": "minlength: 8; maxlength: 16; required: lower; required: upper; required: digit; allowed: [-@#$%^&*_+={}|\\:',?/'~\" ();.[]];",
"id": "b5cdfe1b-6582-42e2-ae6a-70abf3cff53e",
"last_modified": 1764684322146
},
{
"Domain": "ticketweb.com",
"password-rules": "minlength: 12; maxlength: 15;",
"id": "71bd6187-4ebe-4be4-8f82-617a8baebd0a",
"last_modified": 1764684322142
},
{
"Domain": "act.org",
"password-rules": "minlength: 8; maxlength: 64; required: lower; required: upper; required: digit; required: [!#$%&*@^];",
"id": "444e2e0f-e423-4702-8f27-2cea28fd97c4",
"last_modified": 1764684322138
},
{
"Domain": "yeti.com",
"password-rules": "minlength: 8; required: lower; required: upper; required: digit; required: [#$%*];",
"id": "a14cc11d-9f16-4c0c-aa7e-ca4010d38967",
"last_modified": 1764684322135
},
{
"Domain": "vons.com",
"password-rules": "minlength: 8; maxlength: 40; required: upper; required: [!#$%&*@^]; allowed: lower,digit;",
"id": "427bb481-ac5e-463c-b164-e2e2d9a6eb94",
"last_modified": 1764684322131
},
{
"Domain": "tomthumb.com",
"password-rules": "minlength: 8; maxlength: 40; required: upper; required: [!#$%&*@^]; allowed: lower,digit;",
"id": "5790bfe5-d80f-4067-b47d-967b6219e307",
"last_modified": 1764684322128
},
{
"Domain": "starmarket.com",
"password-rules": "minlength: 8; maxlength: 40; required: upper; required: [!#$%&*@^]; allowed: lower,digit;",
"id": "de0a163b-0538-402a-9a4b-08da580bb03a",
"last_modified": 1764684322124
},
{
"Domain": "shaws.com",
"password-rules": "minlength: 8; maxlength: 40; required: upper; required: [!#$%&*@^]; allowed: lower,digit;",
"id": "c98a263c-08ab-4f5b-bdce-4c4d4a6bae1a",
"last_modified": 1764684322120
},
{
"Domain": "savemart.com",
"password-rules": "minlength: 8; maxlength: 12; required: digit; required: upper,lower; required: [!#$%&@]; allowed: ascii-printable;",
"id": "124261a6-9926-4d4c-ab98-b1bf2bde81b1",
"last_modified": 1764684322117
},
{
"Domain": "safeway.com",
"password-rules": "minlength: 8; maxlength: 40; required: upper; required: [!#$%&*@^]; allowed: lower,digit;",
"id": "e32a0925-07e7-47c6-af3c-0791d873cc7e",
"last_modified": 1764684322113
},
{
"Domain": "randalls.com",
"password-rules": "minlength: 8; maxlength: 40; required: upper; required: [!#$%&*@^]; allowed: lower,digit;",
"id": "bf4996a5-4556-4ba3-968d-af8143f4f22c",
"last_modified": 1764684322109
},
{
"Domain": "pavilions.com",
"password-rules": "minlength: 8; maxlength: 40; required: upper; required: [!#$%&*@^]; allowed: lower,digit;",
"id": "2c15e93c-4780-4775-80c8-08c66f9f756f",
"last_modified": 1764684322106
},
{
"Domain": "kingsfoodmarkets.com",
"password-rules": "minlength: 8; maxlength: 40; required: upper; required: [!#$%&*@^]; allowed: lower,digit;",
"id": "68647a6b-179b-4742-86a2-1cbfcd4c564d",
"last_modified": 1764684322102
},
{
"Domain": "jewelosco.com",
"password-rules": "minlength: 8; maxlength: 40; required: upper; required: [!#$%&*@^]; allowed: lower,digit;",
"id": "488c6089-7e00-4081-a207-7baefa5cd259",
"last_modified": 1764684322048
},
{
"Domain": "haggen.com",
"password-rules": "minlength: 8; maxlength: 40; required: upper; required: [!#$%&*@^]; allowed: lower,digit;",
"id": "8de06c6c-e07f-446a-8b25-f8129cf1c717",
"last_modified": 1764684322044
},
{
"Domain": "carrsqc.com",
"password-rules": "minlength: 8; maxlength: 40; required: upper; required: [!#$%&*@^]; allowed: lower,digit;",
"id": "42f897e7-1106-47e9-b294-128fd45488e4",
"last_modified": 1764684322039
},
{
"Domain": "balduccis.com",
"password-rules": "minlength: 8; maxlength: 40; required: upper; required: [!#$%&*@^]; allowed: lower,digit;",
"id": "359e538d-f52d-4662-ba4e-f65c28abb210",
"last_modified": 1764684322035
},
{
"Domain": "andronicos.com",
"password-rules": "minlength: 8; maxlength: 40; required: upper; required: [!#$%&*@^]; allowed: lower,digit;",
"id": "982e3235-9d92-4d01-894c-6b81298e4b53",
"last_modified": 1764684322032
},
{
"Domain": "albertsons.com",
"password-rules": "minlength: 8; maxlength: 40; required: upper; required: [!#$%&*@^]; allowed: lower,digit;",
"id": "42346b95-1942-4a8b-9d3d-e4bc87804718",
"last_modified": 1764684322028
},
{
"Domain": "acmemarkets.com",
"password-rules": "minlength: 8; maxlength: 40; required: upper; required: [!#$%&*@^]; allowed: lower,digit;",
"id": "69b79395-9801-4295-808c-a811ccd76a2f",
"last_modified": 1764684322024
},
{
"Domain": "ea.com",
"password-rules": "minlength: 8; maxlength: 64; required: lower; required: upper; required: digit; allowed: special;",
"id": "925e748f-9880-4af9-b5a1-fb28e5c1c7e7",
"last_modified": 1764684322019
},
{
"Domain": "hetzner.com",
"password-rules": "minlength: 8; required: lower; required: upper; required: digit; required: [-^!$%/()=?+#.,;:~*@{}_&[]];",
"id": "a27316a5-29c1-468f-b046-655637fe7fc6",
"last_modified": 1764684322014
},
{
"Domain": "nekochat.cn",
"password-rules": "minlength: 8; maxlength: 15; required: lower; required: upper; required: digit;",
@ -1584,6 +1386,12 @@
"id": "2a635fd0-1a69-40e7-90dd-ed0ec396b384",
"last_modified": 1624479577265
},
{
"Domain": "ea.com",
"password-rules": "minlength: 8; maxlength: 16; required: lower; required: upper; required: digit; allowed: special;",
"id": "925e748f-9880-4af9-b5a1-fb28e5c1c7e7",
"last_modified": 1624479577260
},
{
"Domain": "easycoop.com",
"password-rules": "minlength: 8; required: upper; required: special; allowed: lower, digit;",
@ -1740,6 +1548,12 @@
"id": "e804c8d8-8d33-463a-b228-c2fbdcad663d",
"last_modified": 1624479577129
},
{
"Domain": "hetzner.com",
"password-rules": "minlength: 8; required: lower; required: upper; required: digit, special;",
"id": "a27316a5-29c1-468f-b046-655637fe7fc6",
"last_modified": 1624479577124
},
{
"Domain": "hilton.com",
"password-rules": "minlength: 8; maxlength: 32; required: lower; required: upper; required: digit;",
@ -2419,5 +2233,5 @@
"last_modified": 1624479576629
}
],
"timestamp": 1764684322196
"timestamp": 1743683182607
}

View file

@ -168,6 +168,23 @@
"id": "6644f26f-28ea-4222-929d-5d43a02dae05",
"last_modified": 1744118264964
},
{
"schema": 1743687938695,
"imageSize": 96,
"attachment": {
"hash": "3426b5100a6bdb45f8039f0c71a6b68193750ba7bae5b36e5ed31b2b7f372cda",
"size": 1357,
"filename": "azerdict_mobile.png",
"location": "main-workspace/search-config-icons/1229ffe4-7a6f-46d7-b664-5596df0aa730.png",
"mimetype": "image/png"
},
"engineIdentifiers": [
"azerdict"
],
"filter_expression": "env.appinfo.OS == \"iOS\" || env.appinfo.OS == \"Android\"",
"id": "95ed201d-4ab8-4cb8-831d-454f53cab0f8",
"last_modified": 1744118264962
},
{
"schema": 1743687936599,
"imageSize": 96,
@ -1122,6 +1139,23 @@
"id": "5ded611d-44b2-dc46-fd67-fb116888d75d",
"last_modified": 1744118264833
},
{
"schema": 1743687843227,
"imageSize": 16,
"attachment": {
"hash": "24daa27a3234d01b5add42e027b0a34000d0ab47c17fe3924c2ca267b7b61c19",
"size": 5430,
"filename": "azerdict-16-icecat.ico",
"location": "main-workspace/search-config-icons/4d6f988d-8905-4aa7-aeea-5b04a6197767.ico",
"mimetype": "image/x-icon"
},
"engineIdentifiers": [
"azerdict"
],
"filter_expression": "env.appinfo.OS != \"iOS\" && env.appinfo.OS != \"Android\"",
"id": "7bbe6c5c-fdb8-2845-a4f4-e1382e708a0e",
"last_modified": 1744118264831
},
{
"schema": 1743687843968,
"imageSize": 16,
@ -1172,5 +1206,5 @@
"last_modified": 1744118264825
}
],
"timestamp": 1765918784979
"timestamp": 1763049497744
}

View file

@ -4287,7 +4287,7 @@
},
"id": "04e99a38-13ee-47d8-8aa4-64482b3dea99",
"identifier": "ddg",
"last_modified": 1770,
"last_modified": 1767,
"recordType": "engine",
"schema": 1718698362015,
"variants": [
@ -4301,7 +4301,7 @@
{
"globalDefault": "ddg",
"id": "f3891684-2348-4e7a-9765-0c5d2d0ab1b9",
"last_modified": 1769,
"last_modified": 1766,
"recordType": "defaultEngines",
"schema": 1702901837584,
"specificDefaults": []

View file

@ -19,23 +19,6 @@
"americanairlines.com",
"americanairlines.jp"
],
[
"acmemarkets.com",
"albertsons.com",
"andronicos.com",
"balduccis.com",
"carrsqc.com",
"haggen.com",
"jewelosco.com",
"kingsfoodmarkets.com",
"pavilions.com",
"randalls.com",
"safeway.com",
"shaws.com",
"starmarket.com",
"tomthumb.com",
"vons.com"
],
[
"aetna.com",
"banneraetna.myplanportal.com"
@ -101,10 +84,17 @@
"airnewzealand.com.au"
],
[
"albertsonsmarket.com",
"amigosunited.com",
"marketstreetunited.com",
"unitedsupermarkets.com"
"albertsons.com",
"acmemarkets.com",
"carrsqc.com",
"jewelosco.com",
"pavilions.com",
"randalls.com",
"safeway.com",
"shaws.com",
"starmarket.com",
"tomthumb.com",
"vons.com"
],
[
"alelo.com.br",
@ -240,10 +230,6 @@
"braze.com",
"braze.eu"
],
[
"candyrect.com",
"nekochat.cn"
],
[
"capitalone.com",
"capitalone360.com"
@ -256,12 +242,6 @@
"centralfcu.org",
"centralfcu.com"
],
[
"check24.at",
"check24.com",
"check24.de",
"check24.es"
],
[
"citi.com",
"citibank.com",
@ -330,10 +310,6 @@
"docusign.com",
"docusign.net"
],
[
"dq.com",
"dairyqueen.com"
],
[
"drivethrucards.com",
"drivethrucomics.com",
@ -380,8 +356,6 @@
],
[
"epicgames.com",
"fortnite.com",
"twinmotion.com",
"unrealengine.com"
],
[
@ -448,17 +422,6 @@
"foursquare.com",
"swarmapp.com"
],
[
"gamefaqs.com",
"gamefaqs.gamespot.com"
],
[
"gamepedia.com",
"wikia.com",
"wikia.org",
"wikicities.com",
"fandom.com"
],
[
"gazduire.com.ro",
"gazduire.net",
@ -473,10 +436,6 @@
"gogoair.com",
"gogoinflight.com"
],
[
"hawaiianairlines.com",
"alaskaair.com"
],
[
"hbo.com",
"hbomax.com",
@ -502,8 +461,7 @@
],
[
"instagram.com",
"threads.net",
"threads.com"
"threads.net"
],
[
"intuit.com",
@ -522,14 +480,6 @@
"kcls.overdrive.com",
"kcls.org"
],
[
"keypointcu.com",
"kpcu.com"
],
[
"koboldpress.com",
"labyrinth.talesofthevaliant.com"
],
[
"letsdeel.com",
"deel.com"
@ -619,10 +569,6 @@
"minecraft.net",
"mojang.com"
],
[
"monarch.com",
"monarchmoney.com"
],
[
"moneybird.nl",
"moneybird.de",
@ -683,11 +629,6 @@
"overstock.com",
"bedbathandbeyond.com"
],
[
"padmapper.com",
"zumper.com",
"zumperrentals.com"
],
[
"parkmobile.us",
"parkmobile.io"
@ -760,11 +701,6 @@
"redis.com",
"redislabs.com"
],
[
"rekordbox.com",
"pioneerdj.com",
"community.pioneerdj.com"
],
[
"rocketaccount.com",
"rocketmortgage.com"
@ -881,7 +817,6 @@
],
[
"turkishairlines.com",
"tkwifi.net",
"thy.com"
],
[
@ -1009,8 +944,8 @@
]
],
"id": "8c3d4151-8e68-4bb3-a3fd-babf4aba2cdc",
"last_modified": 1764684432032
"last_modified": 1738775297137
}
],
"timestamp": 1764684432032
"timestamp": 1738775297137
}

View file

@ -1,39 +1,9 @@
{
"changes": [
{
"last_modified": 1767616590393,
"bucket": "blocklists",
"collection": "addons-bloomfilters"
},
{
"last_modified": 1604940558744,
"bucket": "blocklists",
"collection": "addons"
},
{
"last_modified": 1748485472559,
"bucket": "blocklists",
"collection": "gfx"
},
{
"last_modified": 1673270322227,
"last_modified": 1719927826949,
"bucket": "main",
"collection": "language-dictionaries"
},
{
"last_modified": 1764684322196,
"bucket": "main",
"collection": "password-rules"
},
{
"last_modified": 1733839156202,
"bucket": "main",
"collection": "remote-permissions"
},
{
"last_modified": 1761148716130,
"bucket": "main",
"collection": "translations-models"
"collection": "urlbar-persisted-search-terms"
},
{
"last_modified": 1544035467383,
@ -41,24 +11,14 @@
"collection": "sites-classification"
},
{
"last_modified": 1749069444811,
"last_modified": 0,
"bucket": "main",
"collection": "translations-wasm"
"collection": "search-config-overrides-v2"
},
{
"last_modified": 1605801189258,
"last_modified": 1761148716130,
"bucket": "main",
"collection": "hijack-blocklists"
},
{
"last_modified": 1766045402721,
"bucket": "main",
"collection": "devtools-compatibility-browsers"
},
{
"last_modified": 1764684432032,
"bucket": "main",
"collection": "websites-with-shared-credential-backends"
"collection": "translations-models"
},
{
"last_modified": 1739471652383,
@ -66,64 +26,34 @@
"collection": "url-classifier-skip-urls"
},
{
"last_modified": 1751018358372,
"last_modified": 1744749743529,
"bucket": "main",
"collection": "moz-essential-domain-fallbacks"
"collection": "search-default-override-allowlist"
},
{
"last_modified": 1749069444811,
"bucket": "main",
"collection": "translations-wasm"
},
{
"last_modified": 1725526980846,
"bucket": "main",
"collection": "cookie-banner-rules-list"
},
{
"last_modified": 1745933974542,
"bucket": "main",
"collection": "search-config-v2"
},
{
"last_modified": 1726769128879,
"bucket": "main",
"collection": "url-parser-default-unknown-schemes-interventions"
},
{
"last_modified": 1653469171354,
"bucket": "main",
"collection": "devtools-devices"
},
{
"last_modified": 0,
"bucket": "main",
"collection": "search-config-overrides-v2"
},
{
"last_modified": 1633983928590,
"bucket": "main",
"collection": "top-sites"
},
{
"last_modified": 1564511755134,
"last_modified": 1733839156202,
"bucket": "main",
"collection": "anti-tracking-url-decoration"
},
{
"last_modified": 1763049497744,
"bucket": "main",
"collection": "search-config-icons"
},
{
"last_modified": 1674595048726,
"bucket": "main",
"collection": "password-recipes"
},
{
"last_modified": 1744749743529,
"bucket": "main",
"collection": "search-default-override-allowlist"
},
{
"last_modified": 1719927826949,
"bucket": "main",
"collection": "urlbar-persisted-search-terms"
"collection": "remote-permissions"
},
{
"last_modified": 1757010621729,
@ -131,15 +61,85 @@
"collection": "search-telemetry-v2"
},
{
"last_modified": 1766548622587,
"last_modified": 1763038623318,
"bucket": "main",
"collection": "devtools-compatibility-browsers"
},
{
"last_modified": 1653469171354,
"bucket": "main",
"collection": "devtools-devices"
},
{
"last_modified": 1674595048726,
"bucket": "main",
"collection": "password-recipes"
},
{
"last_modified": 1763049497744,
"bucket": "main",
"collection": "search-config-icons"
},
{
"last_modified": 1605801189258,
"bucket": "main",
"collection": "hijack-blocklists"
},
{
"last_modified": 1738775297137,
"bucket": "main",
"collection": "websites-with-shared-credential-backends"
},
{
"last_modified": 1743683182607,
"bucket": "main",
"collection": "password-rules"
},
{
"last_modified": 1745933974542,
"bucket": "main",
"collection": "search-config-v2"
},
{
"last_modified": 1751018358372,
"bucket": "main",
"collection": "moz-essential-domain-fallbacks"
},
{
"last_modified": 1564511755134,
"bucket": "main",
"collection": "anti-tracking-url-decoration"
},
{
"last_modified": 1673270322227,
"bucket": "main",
"collection": "language-dictionaries"
},
{
"last_modified": 1748485472559,
"bucket": "blocklists",
"collection": "gfx"
},
{
"last_modified": 1604940558744,
"bucket": "blocklists",
"collection": "addons"
},
{
"last_modified": 1764570990070,
"bucket": "blocklists",
"collection": "addons-bloomfilters"
},
{
"last_modified": 1764082622611,
"bucket": "security-state",
"collection": "intermediates"
},
{
"last_modified": 1765387587348,
"last_modified": 1759512219332,
"bucket": "security-state",
"collection": "onecrl"
}
],
"timestamp": 1769
"timestamp": 1766
}

View file

@ -1,291 +1,5 @@
{
"data": [
{
"schema": 1766545151547,
"derHash": "apoq8tf6rOXigX6DmIJ6FAa+5xHdtxjntVlXeqTBK18=",
"attachment": {
"hash": "4d3692ac441d7c3f075664f508fa72eb6b12c6d921e6f20d39970029ba654f46",
"size": 1999,
"filename": "D2CK5YkrtH6dJajHxLR-P6JOnCIlK4TORS4_07BmMA8=.pem",
"location": "security-state-staging/intermediates/bb6e2bb1-edcc-45e5-856e-f125101628b4.pem",
"mimetype": "application/x-pem-file"
},
"id": "1f0679b5-b285-43cb-af3b-c9c91f566f52",
"last_modified": 1766548622587
},
{
"schema": 1766545150870,
"derHash": "QdmJ/zITleggScLpWry9ecbMIHti+fGCdL3ixy+DQdY=",
"attachment": {
"hash": "3061d1494d2670d64c2b8d2a3b20753446cb3cd16a58e3fc20901e6221952cac",
"size": 1999,
"filename": "DaH-BZQc0vDvzDnwIYWQow8VlNFoJSPHT4EqvAUJlno=.pem",
"location": "security-state-staging/intermediates/6a972243-c1ca-4f56-afd5-dd541badc509.pem",
"mimetype": "application/x-pem-file"
},
"id": "fe8783cf-bfbf-4942-9459-d38873cd3849",
"last_modified": 1766548622584
},
{
"schema": 1766545150516,
"derHash": "N0yqtHIYFqTzgBMA7Wzl1k8VVPkXjZQLTnMGvJPSty4=",
"attachment": {
"hash": "1b6f61ae529e45efc2b08a2c5e354ea73a4eabadec9784b615de5a52b19a07d9",
"size": 1999,
"filename": "FZ9pybbuyn9HhpGR1NPthWsnzkVhQmQzQLyshe2YYQI=.pem",
"location": "security-state-staging/intermediates/82cdb7b6-b69c-4f50-8707-fd6ef2e45fe0.pem",
"mimetype": "application/x-pem-file"
},
"id": "2aaafebe-5bd9-4295-94b0-781f94ed876a",
"last_modified": 1766548622581
},
{
"schema": 1766545151205,
"derHash": "06hD1NyS613xJ+ZGwvUO6ANFJ0fYycbU/bn3yyBgxbc=",
"attachment": {
"hash": "fc501019fa6c2cc3194e8494997361d37dfa2930d979f1a004ec5c96912d8699",
"size": 1999,
"filename": "XztAsecQzzxu1jUv1WbLy4I-Rd8k920eS6JthbhBF7w=.pem",
"location": "security-state-staging/intermediates/c6cfe955-4314-42e4-aa56-147d1a1c1a9c.pem",
"mimetype": "application/x-pem-file"
},
"id": "db7338eb-337f-4678-90d0-017f070ea48e",
"last_modified": 1766548622575
},
{
"schema": 1766545150040,
"derHash": "yvAIQqcvlpblPCnyxeehudcaPi8MMdi5QGlNWdzO9kM=",
"attachment": {
"hash": "c9ddd15d4575624c6480bca5f1621f558809f3d159392240ee373ec1a9c58712",
"size": 1199,
"filename": "p4UlhI-4INdk1HPs8-QdeU9xFTzIwh8tuwVaVcuoAdg=.pem",
"location": "security-state-staging/intermediates/8b0827bc-68a0-4177-adc6-dd30594c243f.pem",
"mimetype": "application/x-pem-file"
},
"id": "ef0d45b4-04df-431a-ae55-a2db91a67de2",
"last_modified": 1766548622572
},
{
"schema": 1766545149681,
"derHash": "x3KGXm+eCneLDoZESiH7ZUf3oF4WnM/Fv+oFMX4PX2k=",
"attachment": {
"hash": "cea5d7631fdb975eaab8abcdeafa6dc8b875ef4ddd5d629506adc68836863859",
"size": 1195,
"filename": "W-Umw3HYfIOzV9bxKzoWQcUfT5Ssj5St0SlQgxYWXVI=.pem",
"location": "security-state-staging/intermediates/2ed1e716-f4b6-4b37-a11b-871ac84e2585.pem",
"mimetype": "application/x-pem-file"
},
"id": "9a5e2215-2d9b-4b78-b8c9-5cdbc6a6e04a",
"last_modified": 1766548622569
},
{
"schema": 1766199553968,
"derHash": "uNBo3GxmB5p1Zp5VsOo+Zv7xBHOUcer8PRZ6aBlyNPY=",
"attachment": {
"hash": "2721d976197c0971feb3b2aa3fe7ab4116f5b873f7762c1b903bed71f274889e",
"size": 2194,
"filename": "fNZ8JI9p2D_C-bsB3LH3rWejY9BGBDeW0JhMOiMfa7A=.pem",
"location": "security-state-staging/intermediates/4538ae28-7ee7-4f9f-9b25-494e072ba946.pem",
"mimetype": "application/x-pem-file"
},
"id": "1d3479b6-a941-456d-aa49-38d4829fed8f",
"last_modified": 1766203022761
},
{
"schema": 1766199553271,
"derHash": "RppWJMvxJcKbHHOqTQXUsr9PhAC11WnppMpVSrTE+vU=",
"attachment": {
"hash": "b0eb06ac30b4d1952a31af513c2b2b13be71d0993ac06a3c9d45b32bfdeffd05",
"size": 1540,
"filename": "G_ANXI8TwJTdF-AFBM8IiIUPEv0Gf6H5LA_b9guG4yE=.pem",
"location": "security-state-staging/intermediates/55a07545-3406-49c7-b4c2-75ab41e736be.pem",
"mimetype": "application/x-pem-file"
},
"id": "11abffc6-86d0-4dca-8c39-d6a546d872d0",
"last_modified": 1766203022758
},
{
"schema": 1766199552928,
"derHash": "Mn7JOVXJFFJhsIfG/F6sinEmK/JWjo0298L+29GxB3o=",
"attachment": {
"hash": "fce6d2adb30e15ecebfc251a25aa18fd326eb2f5bd8def6cdf2c4051fc40d421",
"size": 2308,
"filename": "IcENwofaRhqQc2PcjyjgcuebC1DnPogY1Yfis0DLQJM=.pem",
"location": "security-state-staging/intermediates/1b91e146-c5f2-40c0-8110-19742cfc72f7.pem",
"mimetype": "application/x-pem-file"
},
"id": "40ee61ef-0bc5-4ea9-8718-4888ecf4305e",
"last_modified": 1766203022755
},
{
"schema": 1766199553624,
"derHash": "Gx3gaZDNCzBeLhJIBhA7Gtz/xJnyElBNx39I3QrWIgk=",
"attachment": {
"hash": "8790a12a03afdc57bfe66ff20ba236054617d0d5509f56709ce442cdb4e42a18",
"size": 2121,
"filename": "K89VOmb1cJAN3TK6bf4ezAbJGC1mLcG2Dh97dnwr3VQ=.pem",
"location": "security-state-staging/intermediates/8d7d0493-30e8-4926-b826-971a2e8d1ac7.pem",
"mimetype": "application/x-pem-file"
},
"id": "b85f75ad-679d-4d04-9406-289abb01f97e",
"last_modified": 1766203022751
},
{
"schema": 1766127551521,
"derHash": "s+hkZ9F4886+Eec5/CFp5MeFkHjsY/tAMYmB7zpOqyY=",
"attachment": {
"hash": "c09aff236ce4f0c0fdbedb011c055253734d85ee01f4731d866797babaed2236",
"size": 2182,
"filename": "0cRTd-vc1hjNFlHcLgLCHXUeWqn80bNDH_bs9qMTSPo=.pem",
"location": "security-state-staging/intermediates/1c94507f-bac7-453c-806d-0ac393641919.pem",
"mimetype": "application/x-pem-file"
},
"id": "9d7646ec-f495-4a54-9a7d-de78added679",
"last_modified": 1766131022600
},
{
"schema": 1766026758172,
"derHash": "f+tvjJyEekSeC3AjhsIxmqEZHzjfAtA75ks/GuGXH5Q=",
"attachment": {
"hash": "fc4fafa94f5576c91b52ab38126ac5805910dcc29ff3f249ef2d66fe90c05f9e",
"size": 1297,
"filename": "cC948ZGRQqa4jzUFhFrPLMQ23ZJtoLcISSak2FyC1W4=.pem",
"location": "security-state-staging/intermediates/83d1c892-5314-4a26-959e-afc240dad367.pem",
"mimetype": "application/x-pem-file"
},
"id": "199298d3-8252-408f-9699-40b091ffc5e8",
"last_modified": 1766030226231
},
{
"schema": 1765983546338,
"derHash": "mZPRgykq/EFlq80nK0RUMhRZGDrHtBkROVAzcrzMKKk=",
"attachment": {
"hash": "5cf3c0bfdc7b17d1ae7c3fc1d0bdbf35f10b3fb606b2c8ef50bbfd593549bf92",
"size": 1297,
"filename": "IlYqx6aK68NNdqzDPc346Xl199h2mbiAnsDRwDf7z8s=.pem",
"location": "security-state-staging/intermediates/654d91da-ac76-4cc4-8bfa-d4543598ce45.pem",
"mimetype": "application/x-pem-file"
},
"id": "0f01296d-e0bc-4d08-944c-1020c8cbb5d0",
"last_modified": 1765987022922
},
{
"schema": 1765378748973,
"derHash": "opLN9ZkF/DABbCITHW8uSXRJ8VWgWiNMzsDgQhcb9w8=",
"attachment": {
"hash": "f07935f4dd9d0401863201b99d4893058b39b12c95ba433db82609dd649063d0",
"size": 2353,
"filename": "KsO_2ZCPae5nBbHkbrZGSJnspMLVD2HOwMOS6QlrN4g=.pem",
"location": "security-state-staging/intermediates/ea5c0f11-b67b-46e4-9200-4af33ec21a4d.pem",
"mimetype": "application/x-pem-file"
},
"id": "8521464e-e102-4a3b-a482-86bf2c3362e2",
"last_modified": 1765382227673
},
{
"schema": 1765378748122,
"derHash": "ayJ+6IUPsRNHiouDWm4Dpus/tRkb+5qynYguppulCU0=",
"attachment": {
"hash": "d7c8880d2f6429c7a21df0c8f3510fa82b5385199bb840fcad3bf9417328e59d",
"size": 2345,
"filename": "wlNHZlPQ35zQrKv-RbxnwroHj_ZkxaY4wZ8DGQgvT-I=.pem",
"location": "security-state-staging/intermediates/c86a6fc0-65c7-446f-9506-2647e2f12975.pem",
"mimetype": "application/x-pem-file"
},
"id": "13f87e5a-265e-4cac-8b2e-a1ebbd86b510",
"last_modified": 1765382227670
},
{
"schema": 1765378748571,
"derHash": "Rbxq6V5AerXlav3+7jjO2OlqaskDKtTRIsWstGvcMxI=",
"attachment": {
"hash": "bf21ea3106c8f4a2a5b4422ad54953b4fc54c7dca51ff6dd27b4a9d1994c73b1",
"size": 2361,
"filename": "Q-K2ZHTOJDK_ZL8mtXILZ6yfL-_txpYibcmmr4NWCxs=.pem",
"location": "security-state-staging/intermediates/89ea1551-1a9d-48a7-828c-6dc72e19fb6f.pem",
"mimetype": "application/x-pem-file"
},
"id": "7545285f-f72e-4009-96a2-d914b8c774e0",
"last_modified": 1765382227667
},
{
"schema": 1765378749325,
"derHash": "d1f+MpjzmwusToMNb5jIKOend4DkhcAZWIZOfSSz29E=",
"attachment": {
"hash": "ad54f34781fb85b2cd469c50615b2c8e3113ecfd3e455e3b0f2184b5cd5c158b",
"size": 2345,
"filename": "E1-Hcf9n73xmMa2cczt-v4_p_6OrrN37lruLhCWKP_M=.pem",
"location": "security-state-staging/intermediates/c9dca64c-83dd-4afa-8d5c-e90dc9aa09f2.pem",
"mimetype": "application/x-pem-file"
},
"id": "b6a3c2b1-7236-4ec8-b4c2-b4dea64ce8e8",
"last_modified": 1765382227663
},
{
"schema": 1764817156198,
"derHash": "UZX54oPqjcINa5RkglkXZ5bUrTVDgqOBkFh9aPSNfVk=",
"attachment": {
"hash": "8341b7d535e19bb68109cb0754993e2a65157a98766d1dd8200dbe0e7dddd7a4",
"size": 1975,
"filename": "mySUJCQH0F8sT4UxrtcCo1T-VVJTTxIgq1eyf5wqbAs=.pem",
"location": "security-state-staging/intermediates/524f95da-7ef2-4502-ae2d-7459647fbbbd.pem",
"mimetype": "application/x-pem-file"
},
"id": "ceaa59dc-8c7b-4c28-bd1c-672a598df7d6",
"last_modified": 1764820622846
},
{
"schema": 1764817155820,
"derHash": "BVQINDyz1IIwcsHf6Zrgme1PIDxq6T+6J+O2ZjSemEA=",
"attachment": {
"hash": "08ac715e2de25cd98032acfff7dfeb2604a7f81c433b069cf9f21a9cc1db8caf",
"size": 1134,
"filename": "-75kUEGD589mEpNjiQnoCeQPpBYDqWPrDlC3xwJuUtM=.pem",
"location": "security-state-staging/intermediates/899f5a14-a885-4a61-92d7-a8c58bf087ce.pem",
"mimetype": "application/x-pem-file"
},
"id": "deb3bf93-0ada-463c-8f8c-5e88174c72ec",
"last_modified": 1764820622843
},
{
"schema": 1764817155443,
"derHash": "lEVHbTmJdKDGem0QJKCr/y1OBKCNtFW3zk4PpY0Wpak=",
"attachment": {
"hash": "efe5e2b32dd394d042fe6f4f9bd9591e829f415bdce3909bee87cb987aecff42",
"size": 1134,
"filename": "cjGARjmhkHouKDtiSoO33a4uOH7XEfeIO5iVcVsVbb8=.pem",
"location": "security-state-staging/intermediates/c9e4af62-30a3-4642-bf36-30c4435f9f3b.pem",
"mimetype": "application/x-pem-file"
},
"id": "68c4032e-2562-4fc8-b778-5f31bca2d5ce",
"last_modified": 1764820622840
},
{
"schema": 1764817155036,
"derHash": "ocpRNACZtZTaw0vz3+DCchaIWl7CfsvDoJC+/vHLpj0=",
"attachment": {
"hash": "d69af697f9048ffcc18d359faab125a10f91f7aa10a573d0e31b810b12a8cc44",
"size": 1975,
"filename": "KKESdmQ_GK7Py9tAgDGG9Nw7M1gODAg5fAHThb7syWs=.pem",
"location": "security-state-staging/intermediates/d27ef6a3-58fb-447a-8dbe-30c726218faa.pem",
"mimetype": "application/x-pem-file"
},
"id": "870f7e56-f650-479b-bf33-f593e36ba7e4",
"last_modified": 1764820622837
},
{
"schema": 1764601145271,
"derHash": "mZd78coyP6lgR+faX5O9bL8XAQ1tj7zgMJHs55yFfvo=",
"attachment": {
"hash": "2f39906c9b7687906afb73588a223b73d3bb40c543cf27bcdbf0ed00be872ad3",
"size": 1845,
"filename": "joBG7EysAVpQfODS0BVKS0Do5CsxZc-lRlcUNREtF-U=.pem",
"location": "security-state-staging/intermediates/46076939-8285-409a-a567-12a82a184141.pem",
"mimetype": "application/x-pem-file"
},
"id": "b18518de-0065-4318-a36f-348417e3f421",
"last_modified": 1764604622418
},
{
"schema": 1764079149622,
"derHash": "Vx5SHl4igQ0zuxo5mRFD6eZM2NrpfWWTGxlOGa7oHoY=",
@ -3224,6 +2938,19 @@
"id": "b01d6f54-8501-4470-a2c4-9cc297d6c8a5",
"last_modified": 1748789822362
},
{
"schema": 1748613468911,
"derHash": "aIaMMybttIZShO4SOqy6mO5jS9wotEPbsjSISnu326U=",
"attachment": {
"hash": "46aba2c3a09d43f58213046d0d24b8d72909214f6a12ef536b9ac464675df479",
"size": 6606,
"filename": "OePGxvE8liB3UXJpTSD4HtrVWoYTk0zap8N5Om0muGs=.pem",
"location": "security-state-staging/intermediates/c08e74d4-41bc-4c0b-a013-178b2df71ef1.pem",
"mimetype": "application/x-pem-file"
},
"id": "c7ce988b-e290-4807-8114-6aa381e488a9",
"last_modified": 1748617022274
},
{
"schema": 1748613467301,
"derHash": "6RWMavVojPz5iQIGxDBhyB+n/AfQjiiifAaMWAc6aZo=",
@ -3263,6 +2990,32 @@
"id": "065468f3-9699-44a0-a94a-9dbe23482932",
"last_modified": 1748617022260
},
{
"schema": 1748613465743,
"derHash": "MjIq4uMadDC+HWwEvYyr+9JAx00snb6CeA2x8/c2YKY=",
"attachment": {
"hash": "1e96c83a685ed5ee76287c49fd81f3a8b5725ab6459929b3bcfbdfe275bac468",
"size": 6480,
"filename": "OePGxvE8liB3UXJpTSD4HtrVWoYTk0zap8N5Om0muGs=.pem",
"location": "security-state-staging/intermediates/43790604-9e8f-4964-882d-4abfd11191ba.pem",
"mimetype": "application/x-pem-file"
},
"id": "02655d38-e49e-4724-95ee-7106b411ae85",
"last_modified": 1748617022256
},
{
"schema": 1748613464898,
"derHash": "xrPG3kW8irklU2od8L7N6cQivhoGujkUJ1jB7MVYaA4=",
"attachment": {
"hash": "7838c760cb523cdd55efe81c53ee4c5a1ee9702379e1fdc610be0d4c52a1a332",
"size": 1999,
"filename": "LgbK4fwgsgDm-3SFV6RES-yTF9__LkFRZp4PeUTwqeA=.pem",
"location": "security-state-staging/intermediates/b6ca3b07-7c7f-41bf-8627-51e8624a2754.pem",
"mimetype": "application/x-pem-file"
},
"id": "8535d081-5cb2-412d-8452-365fba55e282",
"last_modified": 1748617022249
},
{
"schema": 1748570266149,
"derHash": "QYuXFAxxBYoJ6TOwidDVaD4xM81fclSPbBWhdXm6J9s=",
@ -7730,6 +7483,78 @@
"id": "4bd872f6-57a0-4199-b912-bd91ea605fc6",
"last_modified": 1721872623502
},
{
"schema": 1721314066965,
"derHash": "F3cfaUf6NHJ4bTpEta3iqsupraIDujHr1L2M66/OSUo=",
"subject": "CN=NETLOCK TLS Qualified EV ECC CA,O=NETLOCK Kft.,L=Budapest,C=HU",
"subjectDN": "MHoxCzAJBgNVBAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEVMBMGA1UECgwMTkVUTE9DSyBLZnQuMSgwJgYDVQQDDB9ORVRMT0NLIFRMUyBRdWFsaWZpZWQgRVYgRUNDIENBMRcwFQYDVQRhDA5WQVRIVS0xMjIwMTUyMQ==",
"whitelist": false,
"attachment": {
"hash": "c9ece95860512e413eb8e22277dcad84c1d4ea14021af9ac7e7716b861cb07fc",
"size": 1622,
"filename": "8hGei3i00u2h5PvrbQEWCXLIaozLXkbULtTHvZ-3QZg=.pem",
"location": "security-state-staging/intermediates/61dcf76f-a95b-4f56-b986-2147acdca2ae.pem",
"mimetype": "application/x-pem-file"
},
"pubKeyHash": "8hGei3i00u2h5PvrbQEWCXLIaozLXkbULtTHvZ+3QZg=",
"crlite_enrolled": false,
"id": "cbb6e3e5-aef1-4dbd-9969-ee713e54f56f",
"last_modified": 1721314623022
},
{
"schema": 1721314066604,
"derHash": "ABJ5uUndhnDxrm2kB5E7cm9hrveKL/GcLaOVIrMdwMc=",
"subject": "CN=NETLOCK TLS DV ECC CA,O=NETLOCK Kft.,L=Budapest,C=HU",
"subjectDN": "MHAxCzAJBgNVBAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEVMBMGA1UECgwMTkVUTE9DSyBLZnQuMR4wHAYDVQQDDBVORVRMT0NLIFRMUyBEViBFQ0MgQ0ExFzAVBgNVBGEMDlZBVEhVLTEyMjAxNTIx",
"whitelist": false,
"attachment": {
"hash": "3b6ba905027ab376f8a0d1dc686ac229d8f8c842a00fb4de31f37a87ec39469b",
"size": 1609,
"filename": "li0YuffRNQ1XEOF7VTuJakr96zJ_ALD7q_pshmkp7mU=.pem",
"location": "security-state-staging/intermediates/1cd4921a-91a9-442f-afba-b1891d75cbcf.pem",
"mimetype": "application/x-pem-file"
},
"pubKeyHash": "li0YuffRNQ1XEOF7VTuJakr96zJ/ALD7q/pshmkp7mU=",
"crlite_enrolled": false,
"id": "82b342ce-a491-4a61-966c-d18c2dfb17a9",
"last_modified": 1721314623019
},
{
"schema": 1721249267434,
"derHash": "83562S7OoS8wdQHBJrPi1t4sdBfT4bctJgacE3DniJQ=",
"subject": "CN=NETLOCK TLS EV ECC CA,O=NETLOCK Kft.,L=Budapest,C=HU",
"subjectDN": "MHAxCzAJBgNVBAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEVMBMGA1UECgwMTkVUTE9DSyBLZnQuMR4wHAYDVQQDDBVORVRMT0NLIFRMUyBFViBFQ0MgQ0ExFzAVBgNVBGEMDlZBVEhVLTEyMjAxNTIx",
"whitelist": false,
"attachment": {
"hash": "6cec58bc428099e4938b4ed602a712431dbb35289dc6c5637c2fd4085f1a4506",
"size": 1609,
"filename": "cbddOej5UNOOv4KN9cNSXUsA1PNl6KujuXDCLRgBnFg=.pem",
"location": "security-state-staging/intermediates/46b3b865-76a2-4411-94a8-2ab122ecabcf.pem",
"mimetype": "application/x-pem-file"
},
"pubKeyHash": "cbddOej5UNOOv4KN9cNSXUsA1PNl6KujuXDCLRgBnFg=",
"crlite_enrolled": false,
"id": "5069295a-97e9-45cf-8b62-e71284a97699",
"last_modified": 1721249822940
},
{
"schema": 1721249267110,
"derHash": "0OuQhAHzMkJgJjSv1RmRU2s616qQFYb960lV/lGw5Bk=",
"subject": "CN=NETLOCK TLS OV ECC CA,O=NETLOCK Kft.,L=Budapest,C=HU",
"subjectDN": "MHAxCzAJBgNVBAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEVMBMGA1UECgwMTkVUTE9DSyBLZnQuMR4wHAYDVQQDDBVORVRMT0NLIFRMUyBPViBFQ0MgQ0ExFzAVBgNVBGEMDlZBVEhVLTEyMjAxNTIx",
"whitelist": false,
"attachment": {
"hash": "c88e2b1e7410dd323a5bc34a7c3f85bd4affb345950c976b16e9db704ef4aac9",
"size": 1609,
"filename": "i16I9ip2k2JwWRaZXmFeIeiS2KzOYhrChFGnUDooIl0=.pem",
"location": "security-state-staging/intermediates/4c2b366d-3949-4dd1-b8aa-a6cacea9a11f.pem",
"mimetype": "application/x-pem-file"
},
"pubKeyHash": "i16I9ip2k2JwWRaZXmFeIeiS2KzOYhrChFGnUDooIl0=",
"crlite_enrolled": false,
"id": "ad955f30-a150-4a7e-8606-f8be1f785134",
"last_modified": 1721249822937
},
{
"schema": 1721227673766,
"derHash": "t3bf8AeekKa/aJc4DUDWzwyA/obmWgbg3wLVgah3BeI=",
@ -10880,6 +10705,78 @@
"id": "f3a57b4b-1087-4064-afdc-fd3d8fd73b7b",
"last_modified": 1693407423723
},
{
"schema": 1693342092773,
"derHash": "snT+vm68cYZsM58Bitkz581oBbQ7/ebSGNwhFHFp12s=",
"subject": "CN=e-Szigno Online SSL CA 2017,O=Microsec Ltd.,L=Budapest,C=HU",
"subjectDN": "MHcxCzAJBgNVBAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMgTHRkLjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxJDAiBgNVBAMMG2UtU3ppZ25vIE9ubGluZSBTU0wgQ0EgMjAxNw==",
"whitelist": false,
"attachment": {
"hash": "72bc4f35ba6c3e85f36f856880dc364ba08e1ce42b81244f1ebf53e8514a8d5f",
"size": 1435,
"filename": "G_JwHP_ydSe7pufWcUyNckBrxBbnQ6Kmqw_OFPPiQI0=.pem",
"location": "security-state-staging/intermediates/9cda4ca9-3689-48fd-af2c-640bd25284ff.pem",
"mimetype": "application/x-pem-file"
},
"pubKeyHash": "G/JwHP/ydSe7pufWcUyNckBrxBbnQ6Kmqw/OFPPiQI0=",
"crlite_enrolled": false,
"id": "df7a20cf-df80-4bde-8483-7d48af559d55",
"last_modified": 1693342624041
},
{
"schema": 1693342093437,
"derHash": "F0TXMTT5XOkWrevub3V0LEeTaGi2TSoMFi7xMpAPDuQ=",
"subject": "CN=e-Szigno Class3 SSL CA 2017,O=Microsec Ltd.,L=Budapest,C=HU",
"subjectDN": "MHcxCzAJBgNVBAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMgTHRkLjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxJDAiBgNVBAMMG2UtU3ppZ25vIENsYXNzMyBTU0wgQ0EgMjAxNw==",
"whitelist": false,
"attachment": {
"hash": "f875b715f8027d390ccd47c7e62fa9a8cb805078002c5447fead8ec98441abbd",
"size": 1435,
"filename": "69Duo3nmlQnUEvqzlU27qTDaDY9K1yN0wfdopIs9Y7s=.pem",
"location": "security-state-staging/intermediates/1986ba70-a9d5-4c04-9f62-2c8f532bde42.pem",
"mimetype": "application/x-pem-file"
},
"pubKeyHash": "69Duo3nmlQnUEvqzlU27qTDaDY9K1yN0wfdopIs9Y7s=",
"crlite_enrolled": false,
"id": "0b79b1b7-45eb-4167-b5a4-52c77a4ae693",
"last_modified": 1693342624038
},
{
"schema": 1693342093097,
"derHash": "/Y4MjMzbuuTB8HwkjRH+u7D7PaDNDYlKioDYBKjTmn0=",
"subject": "CN=e-Szigno Class2 SSL CA 2017,O=Microsec Ltd.,L=Budapest,C=HU",
"subjectDN": "MHcxCzAJBgNVBAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMgTHRkLjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxJDAiBgNVBAMMG2UtU3ppZ25vIENsYXNzMiBTU0wgQ0EgMjAxNw==",
"whitelist": false,
"attachment": {
"hash": "eb233f6d83b210e52823cdff3145fe53c2632e2cf95904c5ac6d29368eb61943",
"size": 1435,
"filename": "HGXB7TIfcoLqLINF3LJD2A9t3V4VdHjcBv6LboViQMo=.pem",
"location": "security-state-staging/intermediates/36fd2d27-8c24-4aee-9ba5-feccce9483d5.pem",
"mimetype": "application/x-pem-file"
},
"pubKeyHash": "HGXB7TIfcoLqLINF3LJD2A9t3V4VdHjcBv6LboViQMo=",
"crlite_enrolled": false,
"id": "c2701cd6-d220-4744-a18b-3a3b323259ee",
"last_modified": 1693342624035
},
{
"schema": 1693342092400,
"derHash": "akjnNKxvBnFAySitu8xEkkadQW3i08mnoZfWI3DqwOI=",
"subject": "CN=e-Szigno Qualified TLS CA 2018,O=Microsec Ltd.,L=Budapest,C=HU",
"subjectDN": "MHoxCzAJBgNVBAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMgTHRkLjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxJzAlBgNVBAMMHmUtU3ppZ25vIFF1YWxpZmllZCBUTFMgQ0EgMjAxOA==",
"whitelist": false,
"attachment": {
"hash": "acb85909161220196625771f857155f74f662f21acb6efeab36c92266013233a",
"size": 1439,
"filename": "qd9EIyfp7CEtbkxafeyYAuC_8wQBWqGZflkLznwnuyc=.pem",
"location": "security-state-staging/intermediates/86baa78d-dbf7-44c9-b002-1a204379bad6.pem",
"mimetype": "application/x-pem-file"
},
"pubKeyHash": "qd9EIyfp7CEtbkxafeyYAuC/8wQBWqGZflkLznwnuyc=",
"crlite_enrolled": false,
"id": "9cf88ec1-23c0-487b-9991-3fc43bbf71c0",
"last_modified": 1693342624031
},
{
"schema": 1693104479614,
"derHash": "8BBP8XJ0YI8aGKHh6r+OaKUfUAqH4u+iLstiJ2P+9M8=",
@ -12140,6 +12037,60 @@
"id": "ddc97932-2e16-48d1-84b0-3815961ddf1f",
"last_modified": 1691204223383
},
{
"schema": 1690296478698,
"derHash": "oRXsDXPC6KuxiDE0+i3w2YXnQYgWBKQIKQfXBeJAfHI=",
"subject": "CN=e-Szigno Qualified TLS CA 2023,O=Microsec Ltd.,L=Budapest,C=HU",
"subjectDN": "MHoxCzAJBgNVBAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMgTHRkLjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxJzAlBgNVBAMMHmUtU3ppZ25vIFF1YWxpZmllZCBUTFMgQ0EgMjAyMw==",
"whitelist": false,
"attachment": {
"hash": "e5582687d546ac85a09c343f23ce9764cbc06e78844654f61940dde5034b145f",
"size": 1439,
"filename": "FfstIBJRQL_OSddFhkXVXxYXvlwpeV4N5QyzQSOMer4=.pem",
"location": "security-state-staging/intermediates/c3eaa351-c45f-4c58-b312-1a214832f8b5.pem",
"mimetype": "application/x-pem-file"
},
"pubKeyHash": "FfstIBJRQL/OSddFhkXVXxYXvlwpeV4N5QyzQSOMer4=",
"crlite_enrolled": false,
"id": "da49e20c-b2f2-4d31-b07b-1064e96e3b70",
"last_modified": 1690297023211
},
{
"schema": 1690296478406,
"derHash": "wEww5A3X6WmC+GBuvvNVSOXG9PeSpSpReM8koOn9c5Y=",
"subject": "CN=e-Szigno DV TLS CA 2023,O=Microsec Ltd.,L=Budapest,C=HU",
"subjectDN": "MHMxCzAJBgNVBAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMgTHRkLjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxIDAeBgNVBAMMF2UtU3ppZ25vIERWIFRMUyBDQSAyMDIz",
"whitelist": false,
"attachment": {
"hash": "e024d6f71f79e22a937ce5712dfbf1c17be250937f7a1a1b7aaa69d96607e27b",
"size": 1431,
"filename": "XxwXFeAhoV94cB2wpw1cfCsPS8BPvJevCyCobm4QKxg=.pem",
"location": "security-state-staging/intermediates/6e6e1fde-6155-4773-b392-6ee7800fcbdc.pem",
"mimetype": "application/x-pem-file"
},
"pubKeyHash": "XxwXFeAhoV94cB2wpw1cfCsPS8BPvJevCyCobm4QKxg=",
"crlite_enrolled": false,
"id": "0d228708-baa8-45e3-a4ea-0bce48f43f86",
"last_modified": 1690297023208
},
{
"schema": 1690296478088,
"derHash": "EtRTenVH/2PDaSNiKiga/+lIESDbeBd2qvmBofm2aNg=",
"subject": "CN=e-Szigno OV TLS CA 2023,O=Microsec Ltd.,L=Budapest,C=HU",
"subjectDN": "MHMxCzAJBgNVBAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMgTHRkLjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxIDAeBgNVBAMMF2UtU3ppZ25vIE9WIFRMUyBDQSAyMDIz",
"whitelist": false,
"attachment": {
"hash": "ab5bf3cb8d3a60923137ac8e379030e9e4208f811155f11e65307099425c5d04",
"size": 1431,
"filename": "CBpKKUYnWuYNjyn6A4C6-fbIOhB5kbX1rkHpBJ-7g0Y=.pem",
"location": "security-state-staging/intermediates/0052bd62-f25b-4c75-b5e2-123cf02b80fe.pem",
"mimetype": "application/x-pem-file"
},
"pubKeyHash": "CBpKKUYnWuYNjyn6A4C6+fbIOhB5kbX1rkHpBJ+7g0Y=",
"crlite_enrolled": false,
"id": "a206224b-c943-44b0-b74e-3c4bfb484c15",
"last_modified": 1690297023205
},
{
"schema": 1689929282855,
"derHash": "5G+yp1CXo0XUJG3PRKENqnHZ/Q6/q2G6Z+bbhO5bbKs=",
@ -14624,6 +14575,24 @@
"id": "5ec3f078-2414-46ca-aaf8-e9630ae2109a",
"last_modified": 1666727874812
},
{
"schema": 1666727388343,
"derHash": "ppxZlm67zf7H9P8CiMhv9gNW+nhgIIuTtDoJWwYAzB4=",
"subject": "CN=nazwaSSL,OU=http://nazwa.pl,O=nazwa.pl sp. z o.o.,C=PL",
"subjectDN": "MFgxCzAJBgNVBAYTAlBMMRwwGgYDVQQKDBNuYXp3YS5wbCBzcC4geiBvLm8uMRgwFgYDVQQLDA9odHRwOi8vbmF6d2EucGwxETAPBgNVBAMMCG5hendhU1NM",
"whitelist": false,
"attachment": {
"hash": "882b6da025cdfc61d89e03806a350163dfdfc251470ff6e5f8433ca8370adea9",
"size": 1605,
"filename": "AW6U8qPqk114rfl2sAhiEim2Pf0mq_Rb_BeWSlVAiP4=.pem",
"location": "security-state-staging/intermediates/4a692d29-8a7d-4aa6-b0fa-426ad6f59300.pem",
"mimetype": "application/x-pem-file"
},
"pubKeyHash": "AW6U8qPqk114rfl2sAhiEim2Pf0mq/Rb/BeWSlVAiP4=",
"crlite_enrolled": false,
"id": "bbeb9d9e-3dd2-4546-8c96-d7fc9be4f2e6",
"last_modified": 1666727874798
},
{
"schema": 1666727382505,
"derHash": "6sJBwEQKNoMBETgzNrwgysdAnCD26I1PhPSCe+kZ4zg=",
@ -16046,6 +16015,24 @@
"id": "42115fab-f048-4a66-92be-15d909da568b",
"last_modified": 1666727872798
},
{
"schema": 1666727452311,
"derHash": "I7zV16lqUTqYHq0nk25ZqAKKgHvXKGBBj2i1VaKRFnA=",
"subject": "CN=Certigna Identity CA,OU=0002 48146308100036,O=DHIMYOTIS,C=FR",
"subjectDN": "MIGCMQswCQYDVQQGEwJGUjESMBAGA1UECgwJREhJTVlPVElTMRwwGgYDVQQLDBMwMDAyIDQ4MTQ2MzA4MTAwMDM2MSIwIAYDVQRhDBlOVFJGUi0wMDAyIDQ4MTQ2MzA4MTAwMDM2MR0wGwYDVQQDDBRDZXJ0aWduYSBJZGVudGl0eSBDQQ==",
"whitelist": false,
"attachment": {
"hash": "211c9fabe3b82a58caaded8a0e4fe51f77d8506e143103dc3f8db31704cb7e6e",
"size": 2178,
"filename": "lwJkDQYtogkGJEFJMX5DjskCXh2W7dNBRH_eJZlWjWo=.pem",
"location": "security-state-staging/intermediates/00c1f21f-a695-478a-9e33-19d48f9525d8.pem",
"mimetype": "application/x-pem-file"
},
"pubKeyHash": "lwJkDQYtogkGJEFJMX5DjskCXh2W7dNBRH/eJZlWjWo=",
"crlite_enrolled": false,
"id": "f695b618-333e-4759-a681-19c5f52aeb16",
"last_modified": 1666727872784
},
{
"schema": 1666727400274,
"derHash": "HMNYpt+gp2u1RwZg1487JfI8zWOVZn5JzPyCAdo9GS0=",
@ -18566,6 +18553,24 @@
"id": "d340c468-a715-4aa3-a149-c150973125ed",
"last_modified": 1666727869444
},
{
"schema": 1666727411011,
"derHash": "co2vQG/ans1NVV3BLyfWfW3kRSRpVGShIGaSAPILKEs=",
"subject": "CN=AgID CA1,OU=Area Soluzioni per la Pubblica Amministrazione,O=Agenzia per l'Italia Digitale,L=Roma,C=IT",
"subjectDN": "MIGQMQswCQYDVQQGEwJJVDENMAsGA1UEBwwEUm9tYTEmMCQGA1UECgwdQWdlbnppYSBwZXIgbCdJdGFsaWEgRGlnaXRhbGUxNzA1BgNVBAsMLkFyZWEgU29sdXppb25pIHBlciBsYSBQdWJibGljYSBBbW1pbmlzdHJhemlvbmUxETAPBgNVBAMMCEFnSUQgQ0Ex",
"whitelist": false,
"attachment": {
"hash": "ff3a99bc1b4b533a0133498e18b56144ddeaaae3dfb43cf3c18b178f16a864a6",
"size": 6127,
"filename": "OePGxvE8liB3UXJpTSD4HtrVWoYTk0zap8N5Om0muGs=.pem",
"location": "security-state-staging/intermediates/f92cd274-a6c5-4692-89d8-bb79a6ff2229.pem",
"mimetype": "application/x-pem-file"
},
"pubKeyHash": "OePGxvE8liB3UXJpTSD4HtrVWoYTk0zap8N5Om0muGs=",
"crlite_enrolled": false,
"id": "fbd44422-0d3b-47de-9e7b-2a8f647897eb",
"last_modified": 1666727869413
},
{
"schema": 1666727367726,
"derHash": "N/0pxwHWl3mY8gUVPqikwumWNU3wctSYTcXYsfdaK2E=",
@ -18584,6 +18589,24 @@
"id": "47f9f4d2-4baa-40bb-9b5b-aa8cefeea36f",
"last_modified": 1666727869399
},
{
"schema": 1666727395775,
"derHash": "0HC/AZz7pGyNNBTW/o19IQd/NUXC/oOePSUPMk43xas=",
"subject": "CN=AgID CA1,OU=Area Soluzioni per la Pubblica Amministrazione,O=Agenzia per l'Italia Digitale,L=Roma,C=IT",
"subjectDN": "MIGQMQswCQYDVQQGEwJJVDENMAsGA1UEBwwEUm9tYTEmMCQGA1UECgwdQWdlbnppYSBwZXIgbCdJdGFsaWEgRGlnaXRhbGUxNzA1BgNVBAsMLkFyZWEgU29sdXppb25pIHBlciBsYSBQdWJibGljYSBBbW1pbmlzdHJhemlvbmUxETAPBgNVBAMMCEFnSUQgQ0Ex",
"whitelist": false,
"attachment": {
"hash": "acd4d6d8a473c1fc0d659c79901ef8ffbd4acdcd519a73233aa6ae62e6eafbda",
"size": 6208,
"filename": "OePGxvE8liB3UXJpTSD4HtrVWoYTk0zap8N5Om0muGs=.pem",
"location": "security-state-staging/intermediates/995cf1f7-a18a-4753-a7dd-edadaef3dfe1.pem",
"mimetype": "application/x-pem-file"
},
"pubKeyHash": "OePGxvE8liB3UXJpTSD4HtrVWoYTk0zap8N5Om0muGs=",
"crlite_enrolled": false,
"id": "d5a2518e-b5a8-4ddb-bf31-9b97ea3416f9",
"last_modified": 1666727869386
},
{
"schema": 1666727382024,
"derHash": "lItxEa9C9UbVec/1ziveyCE03ZkUhCvdsMUocutgTjk=",
@ -18602,6 +18625,24 @@
"id": "6430f852-d358-4b1a-b2c9-577cf8cf4f97",
"last_modified": 1666727869373
},
{
"schema": 1666727357771,
"derHash": "knHKfojO0l7R0fjgivoDsR0f4S7RElWFraUBJD4srAk=",
"subject": "CN=AgID CA1,OU=Area Soluzioni per la Pubblica Amministrazione,O=Agenzia per l'Italia Digitale,L=Roma,C=IT",
"subjectDN": "MIGQMQswCQYDVQQGEwJJVDENMAsGA1UEBwwEUm9tYTEmMCQGA1UECgwdQWdlbnppYSBwZXIgbCdJdGFsaWEgRGlnaXRhbGUxNzA1BgNVBAsMLkFyZWEgU29sdXppb25pIHBlciBsYSBQdWJibGljYSBBbW1pbmlzdHJhemlvbmUxETAPBgNVBAMMCEFnSUQgQ0Ex",
"whitelist": false,
"attachment": {
"hash": "134d08513f86579b09ea4693ac4d3685f5fc88e012db239d7b017feecbf3f87e",
"size": 6306,
"filename": "OePGxvE8liB3UXJpTSD4HtrVWoYTk0zap8N5Om0muGs=.pem",
"location": "security-state-staging/intermediates/f3792909-e805-46b5-a4d0-bb3979399b7b.pem",
"mimetype": "application/x-pem-file"
},
"pubKeyHash": "OePGxvE8liB3UXJpTSD4HtrVWoYTk0zap8N5Om0muGs=",
"crlite_enrolled": false,
"id": "07f2dc33-3379-48ad-b352-dc3a300c8197",
"last_modified": 1666727869330
},
{
"schema": 1666727444337,
"derHash": "g5Tj0H780el+psuiFMOgVcF92afr+N3gAg/N23byhlM=",
@ -18656,6 +18697,24 @@
"id": "f18dd59f-ebc7-4e0d-9963-60e432ae1d44",
"last_modified": 1666727869270
},
{
"schema": 1666727413717,
"derHash": "YBjw3/qk1I9rNj29iVtD1yBpH5ZY49lAcn+xSZ1SUAU=",
"subject": "CN=AgID CA1,OU=Area Soluzioni per la Pubblica Amministrazione,O=Agenzia per l'Italia Digitale,L=Roma,C=IT",
"subjectDN": "MIGQMQswCQYDVQQGEwJJVDENMAsGA1UEBwwEUm9tYTEmMCQGA1UECgwdQWdlbnppYSBwZXIgbCdJdGFsaWEgRGlnaXRhbGUxNzA1BgNVBAsMLkFyZWEgU29sdXppb25pIHBlciBsYSBQdWJibGljYSBBbW1pbmlzdHJhemlvbmUxETAPBgNVBAMMCEFnSUQgQ0Ex",
"whitelist": false,
"attachment": {
"hash": "2ce5754aafd954d566863872c84b5b09cc520df3b7c3fcdf3f3109c176f7236f",
"size": 6204,
"filename": "OePGxvE8liB3UXJpTSD4HtrVWoYTk0zap8N5Om0muGs=.pem",
"location": "security-state-staging/intermediates/71d7de8a-96d4-4d28-95c1-ddd904ad7b95.pem",
"mimetype": "application/x-pem-file"
},
"pubKeyHash": "OePGxvE8liB3UXJpTSD4HtrVWoYTk0zap8N5Om0muGs=",
"crlite_enrolled": false,
"id": "f311d986-6d46-4d1e-87fe-52110484e044",
"last_modified": 1666727869243
},
{
"schema": 1666727453330,
"derHash": "TpO8rdXU6VMxrjYt+cYGbMp/lCqP3k0+4BHeNAdPWEA=",
@ -18674,6 +18733,24 @@
"id": "31daf90c-ae6a-4df7-9505-d52c9abded80",
"last_modified": 1666727869229
},
{
"schema": 1666727368224,
"derHash": "RkiQCwQnJiirey2C3fdM1beNd/hlLVu/KCS7ZN0Xhlk=",
"subject": "CN=AgID CA1,OU=Area Soluzioni per la Pubblica Amministrazione,O=Agenzia per l'Italia Digitale,L=Roma,C=IT",
"subjectDN": "MIGQMQswCQYDVQQGEwJJVDENMAsGA1UEBwwEUm9tYTEmMCQGA1UECgwdQWdlbnppYSBwZXIgbCdJdGFsaWEgRGlnaXRhbGUxNzA1BgNVBAsMLkFyZWEgU29sdXppb25pIHBlciBsYSBQdWJibGljYSBBbW1pbmlzdHJhemlvbmUxETAPBgNVBAMMCEFnSUQgQ0Ex",
"whitelist": false,
"attachment": {
"hash": "db3cb445b73014519c03c7c1b234573a3cf1ba480f778be153e10d2069492dc1",
"size": 6383,
"filename": "OePGxvE8liB3UXJpTSD4HtrVWoYTk0zap8N5Om0muGs=.pem",
"location": "security-state-staging/intermediates/6f6d6bc0-5ac7-497e-b77d-50b85aeaad14.pem",
"mimetype": "application/x-pem-file"
},
"pubKeyHash": "OePGxvE8liB3UXJpTSD4HtrVWoYTk0zap8N5Om0muGs=",
"crlite_enrolled": false,
"id": "ec340448-450e-44bb-9a1b-f58c6fa4661e",
"last_modified": 1666727869203
},
{
"schema": 1666727406308,
"derHash": "mKDDuhiZJYWV0E8V0TTFcy6GS3VcZIpI0cF/CiYO9ac=",
@ -20150,6 +20227,24 @@
"id": "4627074c-5b10-4a84-93b4-b84a6d421f42",
"last_modified": 1666727867498
},
{
"schema": 1666727385276,
"derHash": "vbeqKPFk5LwV1pIHM7Ij7ZjlUiCj5W87Hs/QTofTC3E=",
"subject": "CN=InCommon ECC Server CA,OU=InCommon,O=Internet2,L=Ann Arbor,ST=MI,C=US",
"subjectDN": "MHYxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJNSTESMBAGA1UEBxMJQW5uIEFyYm9yMRIwEAYDVQQKEwlJbnRlcm5ldDIxETAPBgNVBAsTCEluQ29tbW9uMR8wHQYDVQQDExZJbkNvbW1vbiBFQ0MgU2VydmVyIENB",
"whitelist": false,
"attachment": {
"hash": "6ba40ddb17a0c5e550d03cf27b415658441db787e87cc7efbaeacbe40e7954dd",
"size": 1293,
"filename": "8Ped1-_2NPqUB2Q-UJri8oBJaaIrldtkbw8LmkGTkrE=.pem",
"location": "security-state-staging/intermediates/b23bebad-6d65-4274-8012-f0cc243b967d.pem",
"mimetype": "application/x-pem-file"
},
"pubKeyHash": "8Ped1+/2NPqUB2Q+UJri8oBJaaIrldtkbw8LmkGTkrE=",
"crlite_enrolled": false,
"id": "d876197d-e674-4e0b-8d72-41091e4b2fb3",
"last_modified": 1666727867454
},
{
"schema": 1666727366065,
"derHash": "51WunELBMV8n3NBkUcar4LxqrW7dwuVjXPxJGBktNEw=",
@ -29114,6 +29209,24 @@
"id": "60de9866-3e99-4374-b830-17ad74f56f75",
"last_modified": 1576536533289
},
{
"schema": 1576535711746,
"derHash": "k1BhvlLI6ojANLOa39UiuzFMv1ME5acGRzXdvaMkKq8=",
"subject": "CN=Certigna Entity Code Signing CA,OU=0002 48146308100036,O=DHIMYOTIS,C=FR",
"subjectDN": "MIGIMQswCQYDVQQGEwJGUjESMBAGA1UECgwJREhJTVlPVElTMRwwGgYDVQQLDBMwMDAyIDQ4MTQ2MzA4MTAwMDM2MR0wGwYDVQRhDBROVFJGUi00ODE0NjMwODEwMDAzNjEoMCYGA1UEAwwfQ2VydGlnbmEgRW50aXR5IENvZGUgU2lnbmluZyBDQQ==",
"whitelist": false,
"attachment": {
"hash": "dfa52fac8680622c2c208aa337be1f107052398f893cb8cdaa1bc8ee0c3c1f93",
"size": 2186,
"filename": "u3ZvFIlkZqOQDQbj9Abh3WXDOESr4pASOdoob9Oo2YI=.pem",
"location": "security-state-staging/intermediates/a34d09dc-c1e9-4b35-bb0f-0c7ee3e64ad8.pem",
"mimetype": "application/x-pem-file"
},
"pubKeyHash": "u3ZvFIlkZqOQDQbj9Abh3WXDOESr4pASOdoob9Oo2YI=",
"crlite_enrolled": false,
"id": "90283279-5bef-4526-8705-37883c1dc2bc",
"last_modified": 1576536533281
},
{
"schema": 1576535685544,
"derHash": "Rcsdh0ywO9XFtuB5yPwp5RUh7lYoSGMBlkpB+Uuln4g=",
@ -30555,5 +30668,5 @@
"last_modified": 1559865884636
}
],
"timestamp": 1767110222688
"timestamp": 1764082622611
}

View file

@ -1,245 +1,5 @@
{
"data": [
{
"schema": 1764954051281,
"details": {
"bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2004418",
"who": "",
"why": "",
"name": "",
"created": ""
},
"enabled": false,
"issuerName": "MIGFMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01PRE8gQ0EgTGltaXRlZDErMCkGA1UEAxMiQ09NT0RPIFJTQSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQ==",
"serialNumber": "AJFZN56em7HZgckLifaauTo=",
"id": "09f13136-0183-4582-be09-38b0dec73c60",
"last_modified": 1765387587348
},
{
"schema": 1764954051205,
"details": {
"bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2004418",
"who": "",
"why": "",
"name": "",
"created": ""
},
"enabled": false,
"issuerName": "MIGFMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01PRE8gQ0EgTGltaXRlZDErMCkGA1UEAxMiQ09NT0RPIEVDQyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQ==",
"serialNumber": "AN+yROlloEAqqg4G6aHdFk8=",
"id": "c7a3bd39-ee1d-4675-9e99-e954502bc6ef",
"last_modified": 1765387587342
},
{
"schema": 1764954051050,
"details": {
"bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2004418",
"who": "",
"why": "",
"name": "",
"created": ""
},
"enabled": false,
"issuerName": "MDcxFDASBgNVBAoMC1RlbGlhU29uZXJhMR8wHQYDVQQDDBZUZWxpYVNvbmVyYSBSb290IENBIHYx",
"serialNumber": "TEYq9tv794BPhMF8/qlytg==",
"id": "159440cb-b6c1-4a3b-abb1-463a4a8e00a6",
"last_modified": 1765387587336
},
{
"schema": 1764954050974,
"details": {
"bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2004418",
"who": "",
"why": "",
"name": "",
"created": ""
},
"enabled": false,
"issuerName": "MIGCMQswCQYDVQQGEwJERTErMCkGA1UECgwiVC1TeXN0ZW1zIEVudGVycHJpc2UgU2VydmljZXMgR21iSDEfMB0GA1UECwwWVC1TeXN0ZW1zIFRydXN0IENlbnRlcjElMCMGA1UEAwwcVC1UZWxlU2VjIEdsb2JhbFJvb3QgQ2xhc3MgMg==",
"serialNumber": "DQhC23luw5lX4cFe2MeDxw==",
"id": "73149904-bb79-44a5-9b14-eebb7c1ee93f",
"last_modified": 1765387587331
},
{
"schema": 1764954050730,
"details": {
"bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2004418",
"who": "",
"why": "",
"name": "",
"created": ""
},
"enabled": false,
"issuerName": "MIGCMQswCQYDVQQGEwJERTErMCkGA1UECgwiVC1TeXN0ZW1zIEVudGVycHJpc2UgU2VydmljZXMgR21iSDEfMB0GA1UECwwWVC1TeXN0ZW1zIFRydXN0IENlbnRlcjElMCMGA1UEAwwcVC1UZWxlU2VjIEdsb2JhbFJvb3QgQ2xhc3MgMg==",
"serialNumber": "Ks7V+RxC8r+Ri1uAk6jAJA==",
"id": "3b08fe4c-94d3-41e5-bb12-7b4ac1499c76",
"last_modified": 1765387587326
},
{
"schema": 1764954050510,
"details": {
"bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2004418",
"who": "",
"why": "",
"name": "",
"created": ""
},
"enabled": false,
"issuerName": "MGsxCzAJBgNVBAYTAklUMQ4wDAYDVQQHDAVNaWxhbjEjMCEGA1UECgwaQWN0YWxpcyBTLnAuQS4vMDMzNTg1MjA5NjcxJzAlBgNVBAMMHkFjdGFsaXMgQXV0aGVudGljYXRpb24gUm9vdCBDQQ==",
"serialNumber": "SYgCH6U1+Go=",
"id": "92434599-a653-47af-aac7-e8a1f40242d6",
"last_modified": 1765387587321
},
{
"schema": 1764954050815,
"details": {
"bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2004418",
"who": "",
"why": "",
"name": "",
"created": ""
},
"enabled": false,
"issuerName": "MIGFMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01PRE8gQ0EgTGltaXRlZDErMCkGA1UEAxMiQ09NT0RPIEVDQyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQ==",
"serialNumber": "WyXOaQfEJlVm0zkMmalUrQ==",
"id": "7cfc413a-e855-4723-afd4-5d77984fdb40",
"last_modified": 1765387587316
},
{
"schema": 1764954050436,
"details": {
"bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2004418",
"who": "",
"why": "",
"name": "",
"created": ""
},
"enabled": false,
"issuerName": "MGsxCzAJBgNVBAYTAklUMQ4wDAYDVQQHDAVNaWxhbjEjMCEGA1UECgwaQWN0YWxpcyBTLnAuQS4vMDMzNTg1MjA5NjcxJzAlBgNVBAMMHkFjdGFsaXMgQXV0aGVudGljYXRpb24gUm9vdCBDQQ==",
"serialNumber": "bHGKodaE7KY=",
"id": "1e09c558-f654-4e08-95d4-a9d0ed05bc5d",
"last_modified": 1765387587311
},
{
"schema": 1764954050282,
"details": {
"bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2004418",
"who": "",
"why": "",
"name": "",
"created": ""
},
"enabled": false,
"issuerName": "MIGFMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01PRE8gQ0EgTGltaXRlZDErMCkGA1UEAxMiQ09NT0RPIFJTQSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQ==",
"serialNumber": "AOiuT82x88HxRnXSU5rusCc=",
"id": "7885b8f0-842b-445f-9849-e6be71654fba",
"last_modified": 1765387587306
},
{
"schema": 1764954051362,
"details": {
"bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2004418",
"who": "",
"why": "",
"name": "",
"created": ""
},
"enabled": false,
"issuerName": "MGsxCzAJBgNVBAYTAklUMQ4wDAYDVQQHDAVNaWxhbjEjMCEGA1UECgwaQWN0YWxpcyBTLnAuQS4vMDMzNTg1MjA5NjcxJzAlBgNVBAMMHkFjdGFsaXMgQXV0aGVudGljYXRpb24gUm9vdCBDQQ==",
"serialNumber": "JBwXCyRk4Bg=",
"id": "9b0b6908-be23-450a-9b16-78cb603c53ae",
"last_modified": 1765387587300
},
{
"schema": 1764954050656,
"details": {
"bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2004418",
"who": "",
"why": "",
"name": "",
"created": ""
},
"enabled": false,
"issuerName": "MGMxCzAJBgNVBAYTAkRFMScwJQYDVQQKDB5EZXV0c2NoZSBUZWxla29tIFNlY3VyaXR5IEdtYkgxKzApBgNVBAMMIlRlbGVrb20gU2VjdXJpdHkgVExTIEVDQyBSb290IDIwMjA=",
"serialNumber": "H7KN4bwqtn0heoLQH+Ikfg==",
"id": "d803458c-98bd-4269-9a47-6da26c059d1f",
"last_modified": 1765387587295
},
{
"schema": 1764900945407,
"details": {
"bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2004418",
"who": "",
"why": "",
"name": "",
"created": ""
},
"enabled": false,
"issuerName": "MIGFMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01PRE8gQ0EgTGltaXRlZDErMCkGA1UEAxMiQ09NT0RPIEVDQyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQ==",
"serialNumber": "d80mOd5SbH9F5w2RaqvnRg==",
"id": "bceaddea-4834-4c20-bc0d-f9ff865df807",
"last_modified": 1765387587290
},
{
"schema": 1764954051131,
"details": {
"bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2004418",
"who": "",
"why": "",
"name": "",
"created": ""
},
"enabled": false,
"issuerName": "MGMxCzAJBgNVBAYTAkRFMScwJQYDVQQKDB5EZXV0c2NoZSBUZWxla29tIFNlY3VyaXR5IEdtYkgxKzApBgNVBAMMIlRlbGVrb20gU2VjdXJpdHkgVExTIFJTQSBSb290IDIwMjM=",
"serialNumber": "EohvAEWvDUpPBmzprCXgAA==",
"id": "a87e2e5c-8215-43e0-adb1-8a13121ff595",
"last_modified": 1765387587285
},
{
"schema": 1764954050584,
"details": {
"bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2004418",
"who": "",
"why": "",
"name": "",
"created": ""
},
"enabled": false,
"issuerName": "MGsxCzAJBgNVBAYTAklUMQ4wDAYDVQQHDAVNaWxhbjEjMCEGA1UECgwaQWN0YWxpcyBTLnAuQS4vMDMzNTg1MjA5NjcxJzAlBgNVBAMMHkFjdGFsaXMgQXV0aGVudGljYXRpb24gUm9vdCBDQQ==",
"serialNumber": "SYGm41PP2qU=",
"id": "26ade970-ec10-4be1-b857-ba2e83cd9456",
"last_modified": 1765387587280
},
{
"schema": 1764954050363,
"details": {
"bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2004418",
"who": "",
"why": "",
"name": "",
"created": ""
},
"enabled": false,
"issuerName": "MIGFMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01PRE8gQ0EgTGltaXRlZDErMCkGA1UEAxMiQ09NT0RPIFJTQSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQ==",
"serialNumber": "C6LQHcvLd3borGUJesElQQ==",
"id": "53f31f8b-61e9-4a6e-8a53-3a723fe17256",
"last_modified": 1765387587274
},
{
"schema": 1764954050892,
"details": {
"bug": "https://bugzilla.mozilla.org/show_bug.cgi?id=2004418",
"who": "",
"why": "",
"name": "",
"created": ""
},
"enabled": false,
"issuerName": "MGsxCzAJBgNVBAYTAklUMQ4wDAYDVQQHDAVNaWxhbjEjMCEGA1UECgwaQWN0YWxpcyBTLnAuQS4vMDMzNTg1MjA5NjcxJzAlBgNVBAMMHkFjdGFsaXMgQXV0aGVudGljYXRpb24gUm9vdCBDQQ==",
"serialNumber": "ZyDvubBx51s=",
"id": "c9c582ba-71f1-4147-9a1b-95e48cdaaa5a",
"last_modified": 1765387587268
},
{
"schema": 1759112148984,
"details": {
@ -26234,5 +25994,5 @@
"last_modified": 1480349158647
}
],
"timestamp": 1765387587348
"timestamp": 1759512219332
}

View file

@ -1,2 +1,2 @@
20260106170501
https://hg.mozilla.org/releases/mozilla-esr140/rev/82e96a128bf5e3e7dd6e5180c9528f623ba5e0f7
20251201132345
https://hg.mozilla.org/releases/mozilla-esr140/rev/18556c0b079c839f4d15597a57b0f048fdadcedd

View file

@ -643,36 +643,11 @@ taskgraph:
workers:
aliases:
b-linux-gcp:
b-linux.*:
provisioner: '{trust-domain}-{level}'
implementation: docker-worker
os: linux
worker-type: b-linux
b-linux-gcp-aarch64:
provisioner: '{trust-domain}-{level}'
implementation: docker-worker
os: linux
worker-type: b-linux-aarch64
b-linux-kvm-gcp:
provisioner: '{trust-domain}-{level}'
implementation: docker-worker
os: linux
worker-type: b-linux-kvm
b-linux-medium-gcp:
provisioner: '{trust-domain}-{level}'
implementation: docker-worker
os: linux
worker-type: b-linux-medium
b-linux-large-gcp:
provisioner: '{trust-domain}-{level}'
implementation: docker-worker
os: linux
worker-type: b-linux-large
b-linux-xlarge-gcp:
provisioner: '{trust-domain}-{level}'
implementation: docker-worker
os: linux
worker-type: b-linux-xlarge
worker-type: '{alias}'
b-win2012:
provisioner: '{trust-domain}-{level}'
implementation: generic-worker
@ -702,12 +677,12 @@ workers:
provisioner: '{trust-domain}-{level}'
implementation: docker-worker
os: linux
worker-type: images
worker-type: '{alias}'
images-gcp-aarch64:
provisioner: '{trust-domain}-{level}'
implementation: docker-worker
os: linux
worker-type: images-aarch64
worker-type: '{alias}'
addon:
provisioner: scriptworker-k8s
implementation: push-addons
@ -863,6 +838,16 @@ workers:
implementation: docker-worker
os: linux
worker-type: '{alias}'
t-linux(-large|-xlarge|-xlarge-source):
provisioner: '{trust-domain}-t'
implementation: docker-worker
os: linux
worker-type: '{alias}-gcp'
t-linux(-large|-xlarge|-xlarge-source)-noscratch:
provisioner: '{trust-domain}-t'
implementation: docker-worker
os: linux
worker-type: '{alias}-gcp'
t-linux-kvm:
provisioner: '{trust-domain}-t'
implementation: docker-worker
@ -998,7 +983,7 @@ workers:
provisioner: '{trust-domain}-t'
implementation: docker-worker
os: linux
worker-type: misc
worker-type: misc-gcp
mac-signing:

View file

@ -202,7 +202,6 @@ def make_task(config, jobs):
# download.
Required("key-path"): str,
},
Optional("headers"): [str],
# The name to give to the generated artifact. Defaults to the file
# portion of the URL. Using a different extension converts the
# archive to the given type. Only conversion to .tar.zst is
@ -266,9 +265,6 @@ def create_fetch_url_task(config, name, fetch):
]
)
for header in fetch.get("headers", []):
command.extend(["--header", header])
command.extend(
[
fetch["url"],

View file

@ -127,6 +127,7 @@ test_description_schema = Schema(
"large-noscratch",
"xlarge",
"xlarge-noscratch",
"large-dw",
),
),
# type of virtualization or hardware required by test.

View file

@ -607,6 +607,9 @@ def enable_code_coverage(config, tasks):
task["instance-size"] = "xlarge-noscratch"
if "jittest" in task["test-name"]:
task["instance-size"] = "xlarge"
elif task["suite"] == "xpcshell" and "linux" in task["build-platform"]:
# TODO figure out OOM/timeout issues on d2g (bug 1962414)
task["instance-size"] = "large-dw"
# Temporarily disable Mac tests on mozilla-central
if "mac" in task["build-platform"]:

View file

@ -10,6 +10,7 @@ LINUX_WORKER_TYPES = {
"large-noscratch": "t-linux-docker-noscratch",
"xlarge": "t-linux-docker",
"xlarge-noscratch": "t-linux-docker-noscratch",
"large-dw": "t-linux-large-noscratch",
"default": "t-linux-docker-noscratch",
}

View file

@ -172,20 +172,24 @@ def chunk_manifests(suite, platform, chunks, manifests):
A list of length `chunks` where each item contains a list of manifests
that run in that chunk.
"""
if "web-platform-tests" not in suite:
ini_manifests = {x.replace(".toml", ".ini"): x for x in manifests}
ini_manifests = set([x.replace(".toml", ".ini") for x in manifests])
if "web-platform-tests" not in suite and "marionette" not in suite:
runtimes = {
k: v for k, v in get_runtimes(platform, suite).items() if k in ini_manifests
}
retVal = []
for c in chunk_by_runtime(None, chunks, runtimes).get_chunked_manifests(
ini_manifests
):
retVal.append(
[m if m in manifests else m.replace(".ini", ".toml") for m in c[1]]
)
cbr = chunk_by_runtime(None, chunks, runtimes)
return [
[ini_manifests.get(m, m) for m in c]
for _, c in cbr.get_chunked_manifests(manifests)
]
# Keep track of test paths for each chunk, and the runtime information.
chunked_manifests = [[] for _ in range(chunks)]
# Spread out the test manifests evenly across all chunks.
chunked_manifests = [[] for _ in range(chunks)]
for index, key in enumerate(sorted(manifests)):
chunked_manifests[index % chunks].append(key)

View file

@ -137,11 +137,11 @@ mpfr-3.1.4:
description: mpfr 3.1.4 source code
fetch:
type: static-url
url: https://ftpmirror.gnu.org/gnu/mpfr/mpfr-3.1.4.tar.bz2
url: http://www.mpfr.org/mpfr-3.1.4/mpfr-3.1.4.tar.bz2
sha256: d3103a80cdad2407ed581f3618c4bed04e0c92d1cf771a65ead662cc397f7775
size: 1279284
gpg-signature:
sig-url: "{url}.sig"
sig-url: "{url}.asc"
key-path: build/unix/build-gcc/07F3DBBECC1A39605078094D980C197698C3739D.key
artifact-name: mpfr-source.tar.zst
strip-components: 1
@ -276,8 +276,6 @@ hfsplus-tools:
url: https://src.fedoraproject.org/repo/pkgs/hfsplus-tools/diskdev_cmds-540.1.linux3.tar.gz/0435afc389b919027b69616ad1b05709/diskdev_cmds-540.1.linux3.tar.gz
sha256: b01b203a97f9a3bf36a027c13ddfc59292730552e62722d690d33bd5c24f5497
size: 411205
headers:
- "Accept: application/octet-stream"
xar:
description: xar source code
@ -758,7 +756,7 @@ mozilla-pdf.js:
fetch:
type: git
repo: https://github.com/mozilla/pdf.js
revision: 2ac8185956b0e222cbb798a9d455e82bca954462
revision: 81cf42df470f85eb60150bdffca380e3eee79c08
xmlstarlet-1.6.1:
description: xmlstarlet for Android Performance Tests

View file

@ -107,6 +107,7 @@ lints:
- 'tools/lint/**'
fenix:
worker-type: t-linux-xlarge-source
treeherder:
symbol: A(fenix-lints)
run:
@ -134,6 +135,7 @@ fenix:
- 'tools/lint/**'
focus:
worker-type: t-linux-xlarge-source
treeherder:
symbol: A(focus-lints)
run:
@ -161,6 +163,7 @@ focus:
- 'tools/lint/**'
android-components:
worker-type: t-linux-xlarge-source
treeherder:
symbol: A(ac-lints)
run:

View file

@ -53,7 +53,7 @@ tasks:
./mach update-test
linux64-icecat:
worker-type: t-linux-docker
worker-type: t-linux-xlarge-source
worker:
docker-image: {in-tree: ubuntu2404-test}
description: Test updates on Linux

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