Skip to content

Commit 890c5b9

Browse files
Merge pull request #1009 from jonathanmendez/main-merge_2026060900
Enterprise main merge 2026060900
2 parents 416564d + 64db7e9 commit 890c5b9

1,001 files changed

Lines changed: 25036 additions & 12778 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.taskcluster.yml

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -258,12 +258,11 @@ tasks:
258258
- -cx
259259
- $let:
260260
extraArgs:
261-
$if: 'tasks_for == "cron"'
262-
then: '${cron.quoted_args}'
263-
else:
264-
$if: 'repository.project in ["autoland", "try"]'
265-
then: '--no-verify'
266-
else: ''
261+
$switch:
262+
'tasks_for == "cron"': '${cron.quoted_args}'
263+
'repository.project == "autoland"': '--no-verify'
264+
'repository.project == "try"': '--no-verify --allow-parameter-override'
265+
$default: ''
267266
in:
268267
$if: 'tasks_for == "action"'
269268
then: >
@@ -580,7 +579,11 @@ tasks:
580579
- bash
581580
- -cx
582581
- $let:
583-
extraArgs: {$if: 'tasks_for == "cron"', then: '${cron.quoted_args}', else: ''}
582+
extraArgs:
583+
$switch:
584+
'tasks_for == "cron"': '${cron.quoted_args}'
585+
'repoType == "dev"': '--allow-parameter-override'
586+
$default: ''
584587
in:
585588
$if: 'eventType == "action"'
586589
then: >

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

accessible/base/Logging.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include "nsIWebProgress.h"
1818
#include "prenv.h"
1919
#include "nsIDocShellTreeItem.h"
20+
#include "nsPIDOMWindowInlines.h"
2021
#include "mozilla/Maybe.h"
2122
#include "mozilla/PresShell.h"
2223
#include "mozilla/ScrollContainerFrame.h"

accessible/generic/ApplicationAccessible.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#include "mozilla/Components.h"
1616
#include "nsGlobalWindowOuter.h"
1717
#include "nsIStringBundle.h"
18+
#include "nsPIDOMWindowInlines.h"
1819

1920
using namespace mozilla::a11y;
2021

browser/base/content/test/favicons/browser.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,10 @@ https_first_disabled = true
107107
support-files = ["file_invalid_href.html"]
108108

109109
["browser_favicon_pdf.js"]
110+
# Bug 2015285: PDF.js now declares an explicit chrome:// favicon, so no
111+
# /favicon.ico request is made to the PDF's origin and this test no longer
112+
# observes one. Disabled until the test is updated for the new behavior.
113+
skip-if = ["true"]
110114
support-files = ["blank.pdf"]
111115

112116
["browser_missing_favicon.js"]

browser/components/BrowserGlue.sys.mjs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -891,9 +891,10 @@ BrowserGlue.prototype = {
891891
// This usually happens after the test harness is done collecting
892892
// test errors, thus we can't easily add a failure to it. The only
893893
// noticeable solution we have is crashing.
894+
// See bug 2034905 for filename / fileName shenanigans.
894895
Cc["@mozilla.org/xpcom/debug;1"]
895896
.getService(Ci.nsIDebug2)
896-
.abort(ex.filename, ex.lineNumber);
897+
.abort(ex.filename || ex.fileName, ex.lineNumber);
897898
}
898899
}
899900

browser/components/aboutwelcome/content/aboutwelcome.bundle.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1711,10 +1711,15 @@ class ProtonScreen extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCom
17111711
renderSecondarySection(content) {
17121712
const background = this.getEffectiveBackground(content);
17131713
const heroImageUrl = this.getEffectiveHeroImageUrl(content);
1714+
// pinnable_sites exposes its background through a custom property so the
1715+
// stylesheet can swap the wide-layout image for a narrow gradient without
1716+
// overriding an inline `background` shorthand.
1717+
const tiles = Array.isArray(content.tiles) ? content.tiles : [content.tiles];
1718+
const isPinnableSites = tiles.some(tile => tile?.type === "pinnable_sites");
17141719
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
17151720
className: `section-secondary ${content.hide_secondary_section ? "with-secondary-section-hidden" : ""}`,
17161721
style: background ? {
1717-
background,
1722+
[isPinnableSites ? "--pinnable-sites-bkg" : "background"]: background,
17181723
"--mr-secondary-background-position-y": content.split_narrow_bkg_position
17191724
} : {}
17201725
}, content.dismiss_button && content.reverse_split ? this.renderDismissButton() : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_MSLocalized__WEBPACK_IMPORTED_MODULE_1__.Localized, {

browser/components/aboutwelcome/content/aboutwelcome.css

Lines changed: 87 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1209,8 +1209,90 @@ html {
12091209
padding-block: 40px 0;
12101210
}
12111211
.onboardingContainer:has(.pinnable-sites-list) .screen[pos=split] .section-main .main-content .action-buttons .primary {
1212-
min-width: 96px;
1213-
padding-block: 8px;
1212+
min-width: 71px;
1213+
padding-block: 7px;
1214+
}
1215+
.onboardingContainer:has(.pinnable-sites-list) .screen[pos=split] .section-main .main-content .tile-title {
1216+
font-size: 18px;
1217+
}
1218+
.onboardingContainer:has(.pinnable-sites-list) .screen[pos=split] .section-secondary {
1219+
background: var(--pinnable-sites-bkg);
1220+
}
1221+
.onboardingContainer:has(.pinnable-sites-list) .screen[pos=split] .section-secondary .hero-text h1 {
1222+
font-size: 26px;
1223+
}
1224+
.onboardingContainer:has(.pinnable-sites-list) .screen[pos=split] .section-secondary .hero-text h2 {
1225+
margin-block-end: 370px;
1226+
}
1227+
@media only screen and (width <= 800px) {
1228+
.onboardingContainer:has(.pinnable-sites-list) .screen[pos=split] .section-main .main-content .main-content-inner {
1229+
align-items: stretch;
1230+
margin-block-start: -30px;
1231+
}
1232+
.onboardingContainer:has(.pinnable-sites-list) .screen[pos=split] .section-main .main-content .action-buttons {
1233+
text-align: start;
1234+
justify-content: flex-start;
1235+
}
1236+
.onboardingContainer:has(.pinnable-sites-list) .screen[pos=split] .section-main .main-content .pinnable-sites-list {
1237+
max-width: none;
1238+
}
1239+
.onboardingContainer:has(.pinnable-sites-list) .screen[pos=split] .section-main .main-content .pinnable-sites-list .pinnable-sites-pin-button {
1240+
min-width: 62px;
1241+
}
1242+
.onboardingContainer:has(.pinnable-sites-list) .screen[pos=split] .section-main .main-content .tile-title {
1243+
font-size: 13px;
1244+
}
1245+
.onboardingContainer:has(.pinnable-sites-list) .screen[pos=split] .section-secondary {
1246+
background: linear-gradient(0deg, light-dark(rgb(252, 245, 240), #210340) 0%, light-dark(rgb(250, 236, 241), #210340) 57%, light-dark(rgb(245, 212, 245), #210340) 100%);
1247+
height: auto;
1248+
min-height: 100px;
1249+
}
1250+
.onboardingContainer:has(.pinnable-sites-list) .screen[pos=split] .section-secondary .message-text {
1251+
margin-inline: 0;
1252+
}
1253+
.onboardingContainer:has(.pinnable-sites-list) .screen[pos=split] .section-secondary .hero-text h1 {
1254+
text-align: start;
1255+
margin-inline: 0;
1256+
padding-inline: 40px;
1257+
font-size: 17px;
1258+
}
1259+
.onboardingContainer:has(.pinnable-sites-list) .screen[pos=split] .section-secondary .hero-text h2 {
1260+
margin-block-end: 0;
1261+
}
1262+
}
1263+
[narrow] .onboardingContainer:has(.pinnable-sites-list) .screen[pos=split] .section-main .main-content .main-content-inner {
1264+
align-items: stretch;
1265+
margin-block-start: -30px;
1266+
}
1267+
[narrow] .onboardingContainer:has(.pinnable-sites-list) .screen[pos=split] .section-main .main-content .action-buttons {
1268+
text-align: start;
1269+
justify-content: flex-start;
1270+
}
1271+
[narrow] .onboardingContainer:has(.pinnable-sites-list) .screen[pos=split] .section-main .main-content .pinnable-sites-list {
1272+
max-width: none;
1273+
}
1274+
[narrow] .onboardingContainer:has(.pinnable-sites-list) .screen[pos=split] .section-main .main-content .pinnable-sites-list .pinnable-sites-pin-button {
1275+
min-width: 62px;
1276+
}
1277+
[narrow] .onboardingContainer:has(.pinnable-sites-list) .screen[pos=split] .section-main .main-content .tile-title {
1278+
font-size: 13px;
1279+
}
1280+
[narrow] .onboardingContainer:has(.pinnable-sites-list) .screen[pos=split] .section-secondary {
1281+
background: linear-gradient(0deg, light-dark(rgb(252, 245, 240), #210340) 0%, light-dark(rgb(250, 236, 241), #210340) 57%, light-dark(rgb(245, 212, 245), #210340) 100%);
1282+
height: auto;
1283+
min-height: 100px;
1284+
}
1285+
[narrow] .onboardingContainer:has(.pinnable-sites-list) .screen[pos=split] .section-secondary .message-text {
1286+
margin-inline: 0;
1287+
}
1288+
[narrow] .onboardingContainer:has(.pinnable-sites-list) .screen[pos=split] .section-secondary .hero-text h1 {
1289+
text-align: start;
1290+
margin-inline: 0;
1291+
padding-inline: 40px;
1292+
font-size: 17px;
1293+
}
1294+
[narrow] .onboardingContainer:has(.pinnable-sites-list) .screen[pos=split] .section-secondary .hero-text h2 {
1295+
margin-block-end: 0;
12141296
}
12151297

12161298
.onboardingContainer:has(.embedded-backup-restore-container) .screen[pos=split][fullscreen] .section-main .main-content {
@@ -3467,14 +3549,14 @@ html {
34673549
display: flex;
34683550
flex-direction: column;
34693551
padding: 0;
3470-
gap: var(--space-medium);
3552+
gap: 16px;
34713553
max-width: 300px;
34723554
}
34733555
.onboardingContainer .pinnable-sites-list .pinnable-sites-item {
34743556
display: flex;
34753557
flex-direction: row;
34763558
align-items: center;
3477-
padding: 4px;
3559+
padding-inline: 8px;
34783560
list-style: none;
34793561
border: 1px solid var(--border-color);
34803562
border-radius: var(--border-radius-medium);
@@ -3512,7 +3594,7 @@ html {
35123594
opacity: 0;
35133595
pointer-events: none;
35143596
min-width: 62px;
3515-
padding-block: 8px;
3597+
padding-block: 7px;
35163598
transition: opacity 100ms;
35173599
}
35183600
@starting-style {

browser/components/aiwindow/ui/components/ai-chat-content/ai-chat-content.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@
8989
min-height: var(--content-height);
9090
width: 100%;
9191

92-
& > :last-child {
92+
& > :last-child:not(.chat-bubble-user) {
9393
padding-block-end: var(--smart-window-fade-size);
9494
}
9595

browser/components/aiwindow/ui/modules/AIWindow.sys.mjs

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,6 @@ export const AIWindow = {
9191
if (!this._windowStates.has(win)) {
9292
this._windowStates.set(win, {});
9393
this.initializeAITabsToolbar(win);
94-
this._updateToolbarButtonPositions(win);
9594
this._initializeAskButtonOnToolbox(win);
9695
const windowArgs = win?.arguments?.[1];
9796
if (
@@ -283,32 +282,47 @@ export const AIWindow = {
283282
if (modeSwitcherButton) {
284283
modeSwitcherButton.hidden = !this.isAIWindowEnabled() || isPrivateWindow;
285284
}
285+
if (!isPrivateWindow) {
286+
this._updateToolbarButtonPositions(win);
287+
}
286288
},
287289

288290
_onTabstripOrientationChange() {
289-
this._forEachWindow(win => this._updateToolbarButtonPositions(win));
291+
this._forEachWindow(win => {
292+
if (!lazy.PrivateBrowsingUtils.isWindowPrivate(win)) {
293+
this._updateToolbarButtonPositions(win);
294+
}
295+
});
290296
},
291297

292-
_updateToolbarButtonPositions(win, { isToggling = false } = {}) {
298+
_updateToolbarButtonPositions(win) {
293299
const modeSwitcherButton = win.document.getElementById("ai-window-toggle");
294300
const hamburgerMenu = win.document.getElementById("PanelUI-button");
295-
301+
const hamburgerMenuShouldBeAdjacent =
302+
this.isAIWindowEnabled() || this.verticalTabsEnabled;
296303
const targetToolbar = win.document.getElementById(
297304
this.verticalTabsEnabled ? "nav-bar" : "TabsToolbar"
298305
);
299306
const titlebarContainer = targetToolbar.querySelector(
300307
".titlebar-buttonbox-container"
301308
);
309+
const postTabsSpacer = win.document
310+
.getElementById("nav-bar")
311+
.querySelector('.titlebar-spacer[type="post-tabs"]');
302312

303-
titlebarContainer.after(modeSwitcherButton);
313+
if (modeSwitcherButton.previousElementSibling !== titlebarContainer) {
314+
titlebarContainer.after(modeSwitcherButton);
315+
}
304316

305-
if (this.isAIWindowActive(win) || this.verticalTabsEnabled) {
317+
if (
318+
hamburgerMenuShouldBeAdjacent &&
319+
modeSwitcherButton.nextElementSibling !== hamburgerMenu
320+
) {
306321
modeSwitcherButton.after(hamburgerMenu);
307-
} else if (isToggling) {
308-
// Restore hamburger menu to its original position in nav-bar.
309-
const postTabsSpacer = win.document
310-
.getElementById("nav-bar")
311-
.querySelector('.titlebar-spacer[type="post-tabs"]');
322+
} else if (
323+
!hamburgerMenuShouldBeAdjacent &&
324+
hamburgerMenu.nextElementSibling !== postTabsSpacer
325+
) {
312326
postTabsSpacer.before(hamburgerMenu);
313327
}
314328
},
@@ -693,7 +707,6 @@ export const AIWindow = {
693707
win.document.documentElement.toggleAttribute("ai-window");
694708

695709
this._reconcileNewTabPages(win, newTabPref, homePagePref);
696-
this._updateToolbarButtonPositions(win, { isToggling: true });
697710
this._initializeAskButtonOnToolbox(win);
698711
Services.obs.notifyObservers(
699712
win,

0 commit comments

Comments
 (0)