diff -urN firefox-157.0-orig/browser/app/profile/firefox.js firefox-157.0/browser/app/profile/firefox.js --- firefox-157.0-orig/browser/app/profile/firefox.js 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/app/profile/firefox.js 2026-10-05 09:15:51 +0900 @@ -79,11 +79,6 @@ // Dictionary download preference pref("browser.dictionaries.download.url", "https://addons.mozilla.org/%LOCALE%/firefox/language-tools/"); -// Whether the Nova Themes picker should be enabled in the about:addons page. -// (needs also browser.nova.enabled for the Nova Themes picker to be shown -// in the about:addons page). -pref("browser.aboutaddons.novaThemesPickerEnabled", true); - // At startup, should we check to see if the installation // date is older than some threshold pref("app.update.checkInstallTime", true); @@ -2183,9 +2178,6 @@ // Communicates to AboutNewTabChild whether or not it should load the classic scripts or do nothing. pref("browser.newtabpage.activity-stream.selfLoading.enabled", true); -// Enables the Nova UI refresh for the new tab page. -pref("browser.newtabpage.activity-stream.nova.enabled", true); - // Set to true to enable debug logging for AboutNewTabResourceMapping. pref("browser.newtabpage.resource-mapping.log", false); @@ -2211,9 +2203,6 @@ pref("browser.aboutwelcome.experimentsGate.minDisplayMs", 3000); pref("browser.aboutwelcome.experimentsGate.maxDisplayMs", 8000); -// Global Nova redesign enabled pref -pref("browser.nova.enabled", true); - // Disable singleProfile messaging mitigation (Bug 1963213) for multiProfile feature users pref("messaging-system.profile.singleProfileMessaging.disable", true); diff -urN firefox-157.0-orig/browser/base/content/browser.js firefox-157.0/browser/base/content/browser.js --- firefox-157.0-orig/browser/base/content/browser.js 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/base/content/browser.js 2026-10-05 09:11:40 +0900 @@ -3460,12 +3460,7 @@ }, }; -XPCOMUtils.defineLazyPreferenceGetter( - gUIDensity, - "novaEnabled", - "browser.nova.enabled", - false -); +gUIDensity.novaEnabled = false; const DynamicShortcutTooltip = { nodeToTooltipMap: { diff -urN firefox-157.0-orig/browser/base/content/test/about/browser_aboutSupport_user_namespaces.js firefox-157.0/browser/base/content/test/about/browser_aboutSupport_user_namespaces.js --- firefox-157.0-orig/browser/base/content/test/about/browser_aboutSupport_user_namespaces.js 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/base/content/test/about/browser_aboutSupport_user_namespaces.js 2026-10-05 09:14:25 +0900 @@ -17,7 +17,7 @@ }); add_task(async function test_user_namespaces() { - const isNova = Services.prefs.getBoolPref("browser.nova.enabled", false); + const isNova = false; await BrowserTestUtils.withNewTab( { gBrowser, url: "about:support" }, async function (browser) { diff -urN firefox-157.0-orig/browser/base/content/test/maximized/browser_maximized_decoration.js firefox-157.0/browser/base/content/test/maximized/browser_maximized_decoration.js --- firefox-157.0-orig/browser/base/content/test/maximized/browser_maximized_decoration.js 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/base/content/test/maximized/browser_maximized_decoration.js 2026-10-05 09:14:41 +0900 @@ -14,7 +14,7 @@ * corners. */ -const NOVA_ENABLED = Services.prefs.getBoolPref("browser.nova.enabled", false); +const NOVA_ENABLED = false; // Allow for sub-pixel rounding const EDGE_TOLERANCE = 1; diff -urN firefox-157.0-orig/browser/base/content/test/performance/browserNova.toml firefox-157.0/browser/base/content/test/performance/browserNova.toml --- firefox-157.0-orig/browser/base/content/test/performance/browserNova.toml 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/base/content/test/performance/browserNova.toml 1970-01-01 09:00:00 +0900 @@ -1,27 +0,0 @@ -[DEFAULT] -dupe-manifest = true -tags = "nova" -# to avoid overhead when running the browser normally, StartupRecorder.sys.mjs will -# do almost nothing unless browser.startup.record is true. -# gfx.canvas.willReadFrequently.enable is just an optimization, but needs to be -# set during early startup to have an impact as a canvas will be used by -# StartupRecorder.sys.mjs -prefs = [ - # Skip migration work in BG__migrateUI for browser_startup.js since it isn't - # representative of common startup. - "browser.migration.version=9999999", - "browser.startup.record=true", - "gfx.canvas.willReadFrequently.enable=true", - # The form autofill framescript is only used in certain locales if this - # pref is set to 'detect', which is the default value on non-Nightly. - "extensions.formautofill.addresses.available='on'", - # For perfomance tests do not enable the remote control cue, which gets set - # when Marionette is enabled, but users normally don't see. - "browser.chrome.disableRemoteControlCueForTests=true", - "browser.nova.enabled=true", -] -support-files = ["head.js"] - -["browser_urlbar_keyed_search.js"] - -["browser_urlbar_search.js"] diff -urN firefox-157.0-orig/browser/base/content/test/performance/browser_startup_flicker.js firefox-157.0/browser/base/content/test/performance/browser_startup_flicker.js --- firefox-157.0-orig/browser/base/content/test/performance/browser_startup_flicker.js 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/base/content/test/performance/browser_startup_flicker.js 2026-10-05 09:14:10 +0900 @@ -41,7 +41,7 @@ { name: "Shadow around active tab should not flicker on macOS (bug 1960967)", condition(r) { - if (Services.prefs.getBoolPref("browser.nova.enabled", false)) { + if (false) { // The Nova redesign does not have a shadow around the active tab. return false; } diff -urN firefox-157.0-orig/browser/base/content/test/performance/browser_tabclose.js firefox-157.0/browser/base/content/test/performance/browser_tabclose.js --- firefox-157.0-orig/browser/base/content/test/performance/browser_tabclose.js 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/base/content/test/performance/browser_tabclose.js 2026-10-05 09:12:19 +0900 @@ -43,10 +43,7 @@ // The '+' button uses a different glyph under nova which paints 1px // shorter than the proton one. - const kNewTabIconHeight = Services.prefs.getBoolPref( - "browser.nova.enabled", - false - ) + const kNewTabIconHeight = false ? 12 : 13; diff -urN firefox-157.0-orig/browser/base/content/test/performance/browser_tabopen.js firefox-157.0/browser/base/content/test/performance/browser_tabopen.js --- firefox-157.0-orig/browser/base/content/test/performance/browser_tabopen.js 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/base/content/test/performance/browser_tabopen.js 2026-10-05 09:14:17 +0900 @@ -84,10 +84,7 @@ // The '+' button uses a different glyph under nova which paints 1px // shorter than the proton one. - const kNewTabIconHeight = Services.prefs.getBoolPref( - "browser.nova.enabled", - false - ) + const kNewTabIconHeight = false ? 12 : 13; diff -urN firefox-157.0-orig/browser/base/content/test/performance/head.js firefox-157.0/browser/base/content/test/performance/head.js --- firefox-157.0-orig/browser/base/content/test/performance/head.js 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/base/content/test/performance/head.js 2026-10-05 09:12:11 +0900 @@ -1349,7 +1349,7 @@ // around the toolbox and content areas. When the window's active state changes, // we see a repaint across the whole window (not just the titlebar.) if ( - Services.prefs.getBoolPref("browser.nova.enabled", false) && + false && rects.length && rects.every( r => r.x1 == 0 && r.y1 == 0 && r.w >= frame.width && r.h >= frame.height diff -urN firefox-157.0-orig/browser/base/content/test/performance/moz.build firefox-157.0/browser/base/content/test/performance/moz.build --- firefox-157.0-orig/browser/base/content/test/performance/moz.build 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/base/content/test/performance/moz.build 2026-10-05 09:12:55 +0900 @@ -5,7 +5,6 @@ BROWSER_CHROME_MANIFESTS += [ "browser.toml", - "browserNova.toml", "hidpi/browser.toml", "io/browser.toml", "lowdpi/browser.toml", diff -urN firefox-157.0-orig/browser/base/content/test/popups/browser_popup_new_window_size.js firefox-157.0/browser/base/content/test/popups/browser_popup_new_window_size.js --- firefox-157.0-orig/browser/base/content/test/popups/browser_popup_new_window_size.js 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/base/content/test/popups/browser_popup_new_window_size.js 2026-10-05 09:11:57 +0900 @@ -9,94 +9,6 @@ SimpleTest.requestCompleteLog(); add_task(async function test_new_window_size() { - SpecialPowers.pushPrefEnv({ set: [["browser.nova.enabled", false]] }); - - let tab = await BrowserTestUtils.openNewForegroundTab( - window.gBrowser, - baseURL - ); - - await SpecialPowers.spawn(tab.linkedBrowser, [], async () => { - info("Opening popup."); - let requestedWidth = 200; - let requestedHeight = 200; - let win = this.content.open( - "popup_size.html", - "", - `width=${requestedWidth},height=${requestedHeight}` - ); - - let loadPromise = ContentTaskUtils.waitForEvent(win, "load"); - - let { innerWidth: preLoadWidth, innerHeight: preLoadHeight } = win; - is(preLoadWidth, requestedWidth, "Width before load event."); - is(preLoadHeight, requestedHeight, "Height before load event."); - - await loadPromise; - - let { innerWidth: postLoadWidth, innerHeight: postLoadHeight } = win; - is(postLoadWidth, requestedWidth, "Width after load event."); - is(postLoadHeight, requestedHeight, "Height after load event."); - - await ContentTaskUtils.waitForCondition( - () => - win.innerWidth == requestedWidth && win.innerHeight == requestedHeight, - "Waiting for window to become request size." - ); - - let { innerWidth: finalWidth, innerHeight: finalHeight } = win; - is(finalWidth, requestedWidth, "Final width."); - is(finalHeight, requestedHeight, "Final height."); - - await SpecialPowers.spawn( - win, - [{ requestedWidth, requestedHeight }], - async input => { - let { initialSize, loadSize } = this.content.wrappedJSObject; - is( - initialSize.width, - input.requestedWidth, - "Content width before load event." - ); - is( - initialSize.height, - input.requestedHeight, - "Content height before load event." - ); - is( - loadSize.width, - input.requestedWidth, - "Content width after load event." - ); - is( - loadSize.height, - input.requestedHeight, - "Content height after load event." - ); - is( - this.content.innerWidth, - input.requestedWidth, - "Content final width." - ); - is( - this.content.innerHeight, - input.requestedHeight, - "Content final height." - ); - } - ); - - info("Closing popup."); - win.close(); - }); - - await BrowserTestUtils.removeTab(tab); - SpecialPowers.popPrefEnv(); -}); - -add_task(async function test_new_window_size_nova_enabled() { - SpecialPowers.pushPrefEnv({ set: [["browser.nova.enabled", true]] }); - let tab = await BrowserTestUtils.openNewForegroundTab( window.gBrowser, baseURL @@ -177,5 +89,4 @@ }); await BrowserTestUtils.removeTab(tab); - SpecialPowers.popPrefEnv(); }); diff -urN firefox-157.0-orig/browser/base/moz.build firefox-157.0/browser/base/moz.build --- firefox-157.0-orig/browser/base/moz.build 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/base/moz.build 2026-10-05 09:13:03 +0900 @@ -35,7 +35,6 @@ "content/test/keyboard/browserSidebarRevamp.toml", "content/test/linkHandling/browser.toml", "content/test/maximized/browser.toml", - "content/test/maximized/browserNova.toml", "content/test/menubar/browser.toml", "content/test/metaTags/browser.toml", "content/test/mousepostracker/browser.toml", diff -urN firefox-157.0-orig/browser/components/aboutwelcome/content/aboutwelcome.css firefox-157.0/browser/components/aboutwelcome/content/aboutwelcome.css --- firefox-157.0-orig/browser/components/aboutwelcome/content/aboutwelcome.css 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/aboutwelcome/content/aboutwelcome.css 2026-10-05 08:41:39 +0900 @@ -380,25 +380,6 @@ pointer-events: none; } -@media (not (prefers-contrast)) and (-moz-pref("browser.nova.enabled")) { - :root:not([lwtheme]) #feature-callout[hide-arrow=permanent][zap-border] .screen[pos=callout] .section-main .main-content, - :root:not([lwtheme]) #feature-callout[hide-arrow=permanent][zap-border] .background-arrow { - background: var(--fc-zap-border-background); - } - :root:not([lwtheme]) #feature-callout[hide-arrow=permanent][zap-border] .screen[pos=callout] .section-main .main-content, - :root:not([lwtheme]) #feature-callout[hide-arrow=permanent][zap-border] .shadow-arrow { - border-color: var(--fc-zap-border); - } - :root:not([lwtheme]) #feature-callout[hide-arrow=permanent][zap-shadow]:where(div) .screen[pos=callout] .section-main::before { - content: ""; - position: absolute; - z-index: -1; - inset: 7px; - border-radius: 60px; - filter: blur(30px); - box-shadow: -12px -12px 40px 0 light-dark(#E7D9FF, rgba(99, 47, 200, 0.4)), 10px 10px 40px 0 light-dark(#FFD3B7, rgba(255, 138, 87, 0.4)); - } -} #feature-callout .onboardingContainer, #feature-callout .onboardingContainer .outer-wrapper { --transition: none; @@ -1785,21 +1766,6 @@ .onboardingContainer .screen[pos=center].with-noodles .section-main { height: 504px; } -@media (not (prefers-contrast)) and (-moz-pref("browser.nova.enabled")) { - .onboardingContainer .screen[pos=center].zap-border .main-content { - background: linear-gradient(96deg, #B89CFF 20.68%, #FF9565 79.34%) border-box border-area, image(var(--background-color-box)) padding-box; - border: 1px solid transparent; - } - .onboardingContainer .screen[pos=center].zap-shadow .section-main::before { - content: ""; - position: absolute; - z-index: -1; - inset: 7px; - border-radius: 60px; - box-shadow: -12px -12px 70px 0 light-dark(#E7D9FF, rgba(99, 47, 200, 0.8)), 10px 10px 70px 0 light-dark(#FFD3B7, rgba(255, 138, 87, 0.8)); - transition: var(--transition); - } -} .onboardingContainer .screen[pos=center].with-video { justify-content: center; background: none; @@ -2102,16 +2068,6 @@ margin: auto; pointer-events: none; } -@media (not (prefers-contrast)) and (-moz-pref("browser.nova.enabled")) { - .onboardingContainer .screen[pos=split]:where(:not([fullscreen])).zap-border::before { - background: linear-gradient(96deg, #B89CFF 20.68%, #FF9565 79.34%) border-box border-area, image(var(--background-color-box)) padding-box; - border: 1px solid transparent; - } - .onboardingContainer .screen[pos=split]:where(:not([fullscreen])).zap-shadow::before { - box-shadow: -12px -12px 70px 0 light-dark(#E7D9FF, rgba(99, 47, 200, 0.8)), 10px 10px 70px 0 light-dark(#FFD3B7, rgba(255, 138, 87, 0.8)); - transition: var(--transition); - } -} .onboardingContainer .screen[pos=split] #content-tiles-container { margin: 0; } @@ -3671,14 +3627,6 @@ top: -10px; line-height: 1; } -@media (-moz-pref("browser.nova.enabled")) { - .onboardingContainer .tiles-single-select-section.single-select .select-item .flair, .onboardingContainer .tiles-single-select-section.theme .select-item .flair { - border-radius: var(--border-radius-xlarge); - right: 10px; - top: -12px; - align-content: center; - } -} .onboardingContainer .tiles-single-select-section.single-select .select-item .flair.centered, .onboardingContainer .tiles-single-select-section.theme .select-item .flair.centered { /* stylelint-disable-next-line */ border-radius: 8px 8px 0 0; @@ -3691,29 +3639,12 @@ width: 100%; box-sizing: border-box; } -@media (-moz-pref("browser.nova.enabled")) { - .onboardingContainer .tiles-single-select-section.single-select .select-item .flair.centered, .onboardingContainer .tiles-single-select-section.theme .select-item .flair.centered { - top: -5px; - align-content: center; - } -} .onboardingContainer .tiles-single-select-section.single-select .select-item .flair.centered.backup, .onboardingContainer .tiles-single-select-section.theme .select-item .flair.centered.backup { /* stylelint-disable-next-line */ border-radius: 10px 10px 0 0; background-color: var(--picker-backup-flair-background); color: var(--picker-backup-flair-color); } -@media (-moz-pref("browser.nova.enabled")) { - .onboardingContainer .tiles-single-select-section.single-select .select-item .flair.centered.backup, .onboardingContainer .tiles-single-select-section.theme .select-item .flair.centered.backup { - border-radius: var(--border-radius-xlarge); - background-color: var(--button-background-color-primary); - color: var(--button-text-color-primary); - padding-inline: 12px; - align-content: center; - top: -9px; - width: unset; - } -} .onboardingContainer .tiles-single-select-section.single-select .select-item .flair.centered.backup.spacer, .onboardingContainer .tiles-single-select-section.theme .select-item .flair.centered.backup.spacer { background-color: transparent; } diff -urN firefox-157.0-orig/browser/components/aboutwelcome/modules/AboutWelcomeDefaults.sys.mjs firefox-157.0/browser/components/aboutwelcome/modules/AboutWelcomeDefaults.sys.mjs --- firefox-157.0-orig/browser/components/aboutwelcome/modules/AboutWelcomeDefaults.sys.mjs 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/aboutwelcome/modules/AboutWelcomeDefaults.sys.mjs 2026-10-05 08:39:56 +0900 @@ -622,45 +622,6 @@ }, }, { - id: "AW_THEME_PICKER", - targeting: "'browser.nova.enabled'|preferenceValue", - content: { - fullscreen: true, - position: "split", - tiles: { - type: "theme-picker", - data: { installSource: "about:welcome" }, - }, - title: { - string_id: "onboarding-theme-picker-title", - }, - subtitle: { - string_id: "onboarding-theme-picker-subtitle", - }, - background: - "url('chrome://activity-stream/content/data/content/assets/br-amo-fox-paint.svg') var(--mr-secondary-position) no-repeat light-dark(rgba(252, 245, 240, 1), rgba(33, 3, 64, 1))", - progress_bar: true, - hide_secondary_section: "responsive", - primary_button: { - label: { - string_id: "onboarding-theme-picker-button-label", - }, - action: { - navigate: true, - }, - }, - secondary_button: { - label: { - string_id: "mr2022-onboarding-secondary-skip-button-label", - }, - action: { - navigate: true, - }, - has_arrow_icon: true, - }, - }, - }, - { id: "AW_AMO_INTRODUCE", targeting: "localeLanguageCode == 'en'", content: { diff -urN firefox-157.0-orig/browser/components/aboutwelcome/tests/browser/browser.toml firefox-157.0/browser/components/aboutwelcome/tests/browser/browser.toml --- firefox-157.0-orig/browser/components/aboutwelcome/tests/browser/browser.toml 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/aboutwelcome/tests/browser/browser.toml 2026-10-05 08:41:07 +0900 @@ -79,8 +79,6 @@ ["browser_aboutwelcome_screen_targeting.js"] -["browser_aboutwelcome_theme_picker.js"] - ["browser_aboutwelcome_toolbar_button.js"] ["browser_aboutwelcome_upgrade_multistage_mr.js"] diff -urN firefox-157.0-orig/browser/components/aboutwelcome/tests/browser/browser_aboutwelcome_configurable_ui.js firefox-157.0/browser/components/aboutwelcome/tests/browser/browser_aboutwelcome_configurable_ui.js --- firefox-157.0-orig/browser/components/aboutwelcome/tests/browser/browser_aboutwelcome_configurable_ui.js 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/aboutwelcome/tests/browser/browser_aboutwelcome_configurable_ui.js 2026-10-05 08:40:24 +0900 @@ -357,7 +357,7 @@ ); // Ensure secondary action has button styling - const novaEnabled = Services.prefs.getBoolPref("browser.nova.enabled", false); + const novaEnabled = false; await test_element_styles( browser, ".action-buttons .secondary-cta .secondary", @@ -411,7 +411,7 @@ ); // Ensure main section has center-large template styling. - const novaEnabled = Services.prefs.getBoolPref("browser.nova.enabled", false); + const novaEnabled = false; await test_element_styles( browser, "main.screen .section-main .main-content", @@ -868,7 +868,7 @@ ); // Ensure title inherits light text color - const novaEnabled = Services.prefs.getBoolPref("browser.nova.enabled", false); + const novaEnabled = false; await test_element_styles( browser, "#mainContentHeader", @@ -930,7 +930,7 @@ }); let browser = await openAboutWelcome(JSON.stringify(screens)); - const novaEnabled = Services.prefs.getBoolPref("browser.nova.enabled", false); + const novaEnabled = false; await SpecialPowers.spawn(browser, [novaEnabled], async isNova => { const progressBar = await ContentTaskUtils.waitForCondition(() => content.document.querySelector(".progress-bar") diff -urN firefox-157.0-orig/browser/components/aboutwelcome/tests/browser/browser_aboutwelcome_theme_picker.js firefox-157.0/browser/components/aboutwelcome/tests/browser/browser_aboutwelcome_theme_picker.js --- firefox-157.0-orig/browser/components/aboutwelcome/tests/browser/browser_aboutwelcome_theme_picker.js 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/aboutwelcome/tests/browser/browser_aboutwelcome_theme_picker.js 1970-01-01 09:00:00 +0900 @@ -1,164 +0,0 @@ -"use strict"; - -const { AboutWelcomeDefaults } = ChromeUtils.importESModule( - "resource:///modules/aboutwelcome/AboutWelcomeDefaults.sys.mjs" -); - -const { ThemePickerParent } = ChromeUtils.importESModule( - "resource:///actors/ThemePickerParent.sys.mjs" -); - -function getThemePickerScreen() { - const { screens } = AboutWelcomeDefaults.getDefaults(); - return screens.find(screen => screen.id === "AW_THEME_PICKER"); -} - -add_task(async function test_aboutwelcome_theme_picker_screen_displays() { - // AW_THEME_PICKER is targeted on browser.nova.enabled. - await pushPrefs( - ["browser.nova.enabled", true], - ["ui.systemUsesDarkTheme", -1], - ["browser.theme.native-theme", false] - ); - await setAboutWelcomeMultiStage(JSON.stringify([getThemePickerScreen()])); - - Services.fog.testResetFOG(); - - let { cleanup, browser } = await openMRAboutWelcome(); - - await test_screen_content( - browser, - "theme picker screen renders", - // Expected selectors: - ["main.AW_THEME_PICKER", ".main-content", "theme-picker"] - ); - - await SpecialPowers.spawn(browser, [], async () => { - const renderedThemePicker = await ContentTaskUtils.waitForCondition( - () => content.document.querySelector("theme-picker"), - "theme-picker element should be present" - ); - - await renderedThemePicker.updateComplete; - - await ContentTaskUtils.waitForCondition( - () => - !!renderedThemePicker.shadowRoot.querySelectorAll( - "moz-visual-picker-item" - ).length, - "theme-picker should render at least one theme button" - ); - }); - - await Services.fog.testFlushAllChildren(); - const events = Glean.themePicker.shown.testGetValue(); - Assert.equal( - events?.length, - 1, - "Displaying the screen should record shown once" - ); - Assert.equal( - events?.[0].extra.source, - "about:welcome", - "The about:welcome source should be recorded" - ); - Assert.equal( - events?.[0].extra.layout, - "full", - "The full picker layout should be recorded" - ); - - Services.fog.testResetFOG(); - - const { source, layout, nativeThemeChanged } = await SpecialPowers.spawn( - browser, - [], - async () => { - const themePicker = content.document.querySelector("theme-picker"); - const picker = themePicker.wrappedJSObject; - const EventUtils = ContentTaskUtils.getEventUtils(content); - - const appearanceButton = themePicker.shadowRoot.querySelector( - 'moz-segmented-control-item[value="dark"]' - ); - EventUtils.synthesizeMouseAtCenter(appearanceButton, {}, content); - await ContentTaskUtils.waitForCondition( - () => picker.appearance === "dark", - "The rendered theme picker should update to dark appearance" - ); - - const nativeThemeCheckbox = - themePicker.shadowRoot.querySelector("moz-checkbox"); - if (nativeThemeCheckbox) { - EventUtils.synthesizeMouseAtCenter(nativeThemeCheckbox, {}, content); - await ContentTaskUtils.waitForCondition( - () => picker.nativeTheme, - "The rendered theme picker should enable the native theme" - ); - } - - return { - source: themePicker.getAttribute("installsource"), - layout: picker.layout, - nativeThemeChanged: !!nativeThemeCheckbox, - }; - } - ); - - await Services.fog.testFlushAllChildren(); - - const expectedChangeExtras = [ - { - source, - layout, - property: "appearance", - appearance: "dark", - }, - ]; - if (nativeThemeChanged) { - expectedChangeExtras.push({ - source, - layout, - property: "nativeTheme", - native_theme: "true", - }); - } - - const changeEvents = Glean.themePicker.change.testGetValue(); - Assert.deepEqual( - changeEvents?.map(event => event.extra), - expectedChangeExtras, - "Clicked picker changes should record their telemetry extras" - ); - - await cleanup(); - await popPrefs(); -}); - -add_task(async function test_theme_picker_parent_retries_failed_manager_load() { - const parent = new ThemePickerParent(); - - async function getManagerError() { - let error; - try { - await parent.getThemesManager(); - } catch (caughtError) { - error = caughtError; - } - Assert.stringContains( - error?.message, - "getThemesList installSource option is mandatory", - "The manager load should fail for a missing install source" - ); - return error; - } - - const firstError = await getManagerError(); - const secondError = await getManagerError(); - - Assert.notEqual( - firstError, - secondError, - "A failed manager load should be retried" - ); -}); diff -urN firefox-157.0-orig/browser/components/aiwindow/ui/components/ai-action-confirmation/ai-action-confirmation.css firefox-157.0/browser/components/aiwindow/ui/components/ai-action-confirmation/ai-action-confirmation.css --- firefox-157.0-orig/browser/components/aiwindow/ui/components/ai-action-confirmation/ai-action-confirmation.css 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/aiwindow/ui/components/ai-action-confirmation/ai-action-confirmation.css 2026-10-05 08:12:07 +0900 @@ -9,11 +9,6 @@ --ai-action-confirmation-accent-color: var(--smartwindow-text-color-accent-primary, light-dark(var(--color-violet-90), var(--color-violet-20))); --ai-action-confirmation-background-color: light-dark(var(--color-violet-10), var(--color-violet-80)); } - - /* TODO: Bug 2033070 - desaturated tokens only exist in Nova, remove after it becomes default */ - @media -moz-pref("browser.nova.enabled") and (not (forced-colors)) { - --ai-action-confirmation-background-color: light-dark(var(--color-violet-desaturated-10), var(--color-violet-desaturated-70)); - } } .action-confirmation-wrapper { diff -urN firefox-157.0-orig/browser/components/aiwindow/ui/components/ai-chat-card/ai-chat-card.css firefox-157.0/browser/components/aiwindow/ui/components/ai-chat-card/ai-chat-card.css --- firefox-157.0-orig/browser/components/aiwindow/ui/components/ai-chat-card/ai-chat-card.css 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/aiwindow/ui/components/ai-chat-card/ai-chat-card.css 2026-10-05 08:11:40 +0900 @@ -9,10 +9,6 @@ --card-box-shadow: none; --ai-chat-card-thumbnail-background: var(--background-color-box); - @media -moz-pref("browser.nova.enabled") { - --card-border-radius: var(--border-radius-medium); - } - @media not (forced-colors) { --card-border-color: light-dark(var(--color-violet-10), var(--color-violet-50)); --box-shadow-level-4: 0 4px 12px 2px rgba(58, 15, 110, 0.24); @@ -140,12 +136,6 @@ fill: light-dark(var(--color-violet-10), var(--color-violet-70)); } - @media -moz-pref("browser.nova.enabled") and (not (forced-colors)) { - /* stylelint-disable-next-line -- Figma design */ - fill: light-dark(var(--color-violet-desaturated-10), var(--color-violet-desaturated-70)); - } - } - .box { fill: var(--icon-color); diff -urN firefox-157.0-orig/browser/components/aiwindow/ui/components/ai-chat-content/ai-chat-content.css firefox-157.0/browser/components/aiwindow/ui/components/ai-chat-content/ai-chat-content.css --- firefox-157.0-orig/browser/components/aiwindow/ui/components/ai-chat-content/ai-chat-content.css 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/aiwindow/ui/components/ai-chat-content/ai-chat-content.css 2026-10-05 08:10:49 +0900 @@ -38,35 +38,6 @@ transparent ); position: relative; - - /* TODO: Bug 2033070 - Nova tokens were implemented as the default value for the custom properties, and the fallbacks (and lint exceptions) will need to be removed after launch */ - @media -moz-pref("browser.nova.enabled") { - mask-image: none; - - &::after, - &::before { - backdrop-filter: blur(2px); - content: ""; - height: var(--size-item-xlarge); - inset-inline: 0; - margin-inline: auto; - /* Also caps the backdrop-filter surface well under WebRender's - 4096px limit so the blur doesn't silently drop on large screens. */ - max-width: var(--smartwindow-content-max-width); - position: fixed; - } - - &::after { - mask: linear-gradient(var(--color-black) 30%, var(--color-black-alpha-60) 50%, transparent 70%); - top: 0; - } - - &::before { - bottom: 0; - mask: linear-gradient(transparent 30%, var(--color-black-alpha-60) 50%, var(--color-black) 70%); - z-index: 1; - } - } } &[overflowing][scrolled-to-bottom] { @@ -116,25 +87,6 @@ */ .fullpage-top-scrim { display: none; - - :host([mode="fullpage"]) & { - /* Nova only; non-nova uses button backgrounds instead of the scrim. */ - @media -moz-pref("browser.nova.enabled") and (not (forced-colors)) { - --fullpage-scrim-bg: var(--ai-background-color, var(--background-color-canvas)); - display: block; - position: fixed; - /* Paint in front of .fullpage-top-blur so the scrim sits above it */ - z-index: 1; - /* Per design the scrim starts at the browser top, but the content frame - begins below the chrome, so shift it up by that gap; the overhang is - clipped. */ - top: -55px; - inset-inline: 0; - height: 109px; - background: linear-gradient(to bottom, var(--fullpage-scrim-bg) 0, var(--fullpage-scrim-bg) 74%, rgb(from var(--fullpage-scrim-bg) r g b / 0) 100%); - pointer-events: none; - } - } } .chat-inner-wrapper { @@ -154,11 +106,6 @@ min-height: var(--content-height); width: 100%; - /* TODO: Bug 2033070 - Nova tokens were implemented as the default value for the custom properties, and the fallbacks (and lint exceptions) will need to be removed after launch */ - @media -moz-pref("browser.nova.enabled") { - padding-inline: max(var(--space-medium), calc((100vw - var(--smartwindow-content-max-width) + var(--space-xlarge)) / 2)); - } - & > :last-child:not(.chat-bubble-user) { padding-block-end: var(--smart-window-fade-size); } @@ -210,13 +157,6 @@ --smartwindow-message-chat-bubble-line-height: 1.5; /* for readability */ line-height: var(--smartwindow-message-chat-bubble-line-height); padding-block: var(--space-large); - - @media -moz-pref("browser.nova.enabled") and (not (forced-colors)) { - --text-color: light-dark( - color-mix(in srgb, var(--color-violet-desaturated-90) 70%, transparent), - color-mix(in srgb, var(--color-violet-desaturated-0) 70%, transparent) - ); - } } } @@ -240,18 +180,6 @@ --chat-bubble-inset-color: color-mix(in srgb, var(--color-violet-30) 12%, transparent); background: var(--chat-bubble-background-color); } - - /* TODO: Bug 2033070 - Nova tokens were implemented as the default value for the custom properties, and the fallbacks (and lint exceptions) will need to be removed after launch */ - @media -moz-pref("browser.nova.enabled") { - border: var(--border-width) solid var(--border-color); - box-shadow: none; - - @media not (forced-colors) { - --chat-bubble-background-color: light-dark(var(--color-white), var(--color-gray-75)); - --chat-bubble-border-color: light-dark(var(--color-violet-desaturated-10), var(--color-violet-desaturated-50)); - border-color: var(--chat-bubble-border-color); - } - } } } @@ -260,12 +188,6 @@ .chat-bubble-inner { gap: var(--space-small); - /* TODO: Bug 2033070 - Nova tokens were implemented as the default value for the custom properties, and the fallbacks (and lint exceptions) will need to be removed after launch */ - @media -moz-pref("browser.nova.enabled") and (not (forced-colors)) { - --chat-bubble-assistant-background-color: var(--ai-background-color); - /* Background color is needed in order to have the blur effect on the edges */ - background-color: var(--chat-bubble-assistant-background-color); - } } } diff -urN firefox-157.0-orig/browser/components/aiwindow/ui/components/ai-chat-content/chat-assistant-citations/chat-assistant-citations.css firefox-157.0/browser/components/aiwindow/ui/components/ai-chat-content/chat-assistant-citations/chat-assistant-citations.css --- firefox-157.0-orig/browser/components/aiwindow/ui/components/ai-chat-content/chat-assistant-citations/chat-assistant-citations.css 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/aiwindow/ui/components/ai-chat-content/chat-assistant-citations/chat-assistant-citations.css 2026-10-05 08:11:05 +0900 @@ -11,11 +11,6 @@ --citations-background-color: light-dark(var(--color-violet-0), var(--color-violet-80)); --citations-background-color-hover: light-dark(color-mix(in srgb, var(--color-violet-50) 15%, transparent), var(--color-violet-110)); - @media -moz-pref("browser.nova.enabled") { - --citations-background-color: light-dark(color-mix(in srgb, var(--color-violet-desaturated-10) 70%, transparent), var(--color-violet-desaturated-60)); - --citations-background-color-hover: var(--citations-background-color); - } - @media (forced-colors) { --citations-background-color: ButtonFace; --citations-background-color-hover: SelectedItem; @@ -50,9 +45,5 @@ --button-padding: var(--space-xxsmall) var(--space-small); --button-text-color-ghost: light-dark(var(--color-violet-90), var(--color-violet-10)); white-space: nowrap; - - @media -moz-pref("browser.nova.enabled") { - --button-text-color-ghost: light-dark(var(--color-violet-desaturated-90), var(--color-violet-desaturated-0)); - } } } diff -urN firefox-157.0-orig/browser/components/aiwindow/ui/components/ai-chat-content/chat-assistant-footer/applied-memories-button.css firefox-157.0/browser/components/aiwindow/ui/components/ai-chat-content/chat-assistant-footer/applied-memories-button.css --- firefox-157.0-orig/browser/components/aiwindow/ui/components/ai-chat-content/chat-assistant-footer/applied-memories-button.css 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/aiwindow/ui/components/ai-chat-content/chat-assistant-footer/applied-memories-button.css 2026-10-05 08:11:32 +0900 @@ -61,58 +61,6 @@ } } -/* TODO: Bug 2033070 - Nova tokens were implemented as the default value for the custom properties, and the fallbacks (and lint exceptions) will need to be removed after launch */ -:host { - @media -moz-pref("browser.nova.enabled") { - --button-font-size: var(--font-size-small); - - --aiwindow-popover-border-radius: var(--border-radius-xlarge); - --aiwindow-popover-gap: var(--space-small); - --aiwindow-popover-padding: var(--space-medium); - - --aiwindow-action-row-padding: 0; - - --aiwindow-action-row-button-alignment: left; - --aiwindow-action-row-button-padding: var(--space-xsmall) var(--space-small); - --aiwindow-action-row-button-width: 100%; - - /* TODO: Bug 2030460 - replace with token when available */ - /* stylelint-disable-next-line stylelint-plugin-mozilla/use-design-tokens */ - --aiwindow-memory-item-border-radius: 20px; - --aiwindow-memory-item-color: var(--text-color); - --aiwindow-memory-item-font-weight: var(--font-weight); - --aiwindow-memory-item-padding: var(--space-small) var(--space-medium); - - --aiwindow-remove-btn-margin-inline-end: var(--space-xsmall); - - @media not (forced-colors) { - --aiwindow-popover-bg: light-dark(var(--color-white), var(--color-gray-75)); - --aiwindow-popover-border-color: light-dark(var(--color-violet-desaturated-20), var(--color-violet-desaturated-50)); - - --aiwindow-action-row-btn-ghost-text: light-dark(var(--color-violet-60), var(--color-violet-30)); - - --aiwindow-memory-item-bg: light-dark(var(--color-violet-desaturated-0), color-mix(in srgb, var(--color-violet-30) 12%, transparent)); - - --aiwindow-remove-btn-bg-hover: light-dark( - color-mix(in srgb, var(--color-violet-desaturated-40) 38%, transparent), - color-mix(in srgb, var(--color-violet-30) 40%, transparent) - ); - - --button-background-color-ghost-hover: var(--chat-assistant-footer-button-bg-hover); - --button-background-color-ghost-active: var(--chat-assistant-footer-button-bg-active); - --button-background-color-ghost-selected: var(--button-background-color-ghost-hover); - --button-text-color-ghost-selected: var(--button-text-color-ghost-hover); - - .retry-without-memories-button { - --button-background-color-ghost-hover: var(--smartwindow-panel-item-background-color-hover); - --button-background-color-ghost-active: var(--smartwindow-panel-item-background-color-active); - --button-text-color-ghost: light-dark(var(--color-violet-60), var(--color-violet-30)); - --button-text-color-ghost-hover: light-dark(var(--color-violet-60), var(--color-violet-30)); - } - } - } -} - /* Only show the label when the sidebar is wider than 250px */ @media (width > 250px) { moz-button.memories-trigger { @@ -127,7 +75,7 @@ } :host([data-open]) & { - @media (not (forced-colors)) and (not -moz-pref("browser.nova.enabled")) { + @media (not (forced-colors)) { --button-background-color-ghost: var(--chat-assistant-footer-button-bg-hover); --button-background-color-ghost-selected: var(--chat-assistant-footer-button-bg-hover); --button-text-color-ghost-selected: var(--chat-assistant-footer-button-icon-fill); diff -urN firefox-157.0-orig/browser/components/aiwindow/ui/components/ai-chat-content/chat-assistant-footer/assistant-message-footer.css firefox-157.0/browser/components/aiwindow/ui/components/ai-chat-content/chat-assistant-footer/assistant-message-footer.css --- firefox-157.0-orig/browser/components/aiwindow/ui/components/ai-chat-content/chat-assistant-footer/assistant-message-footer.css 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/aiwindow/ui/components/ai-chat-content/chat-assistant-footer/assistant-message-footer.css 2026-10-05 08:11:10 +0900 @@ -12,20 +12,6 @@ --chat-assistant-footer-button-text-color-hover: var(--button-text-color-ghost); --chat-assistant-footer-button-bg-hover: rgba(191, 143, 204, 0.2); --chat-assistant-footer-button-bg-active: rgba(191, 143, 204, 0.26); - - @media -moz-pref("browser.nova.enabled") { - --chat-assistant-footer-button-text-color-hover: light-dark(var(--color-violet-90), var(--color-gray-0)); - --chat-assistant-footer-button-icon-fill: var(--smartwindow-icon-color-accent-primary-desaturated); - --chat-assistant-footer-button-icon-fill-hover: var(--chat-assistant-footer-button-text-color-hover); - --chat-assistant-footer-button-bg-hover: light-dark( - color-mix(in srgb, var(--color-violet-desaturated-60) 16%, transparent), - color-mix(in srgb, var(--color-violet-40) 24%, transparent) - ); - --chat-assistant-footer-button-bg-active: light-dark( - color-mix(in srgb, var(--color-violet-desaturated-60) 30%, transparent), - color-mix(in srgb, var(--color-violet-40) 36%, transparent) - ); - } } .footer { diff -urN firefox-157.0-orig/browser/components/aiwindow/ui/components/ai-chat-message/ai-chat-message.css firefox-157.0/browser/components/aiwindow/ui/components/ai-chat-message/ai-chat-message.css --- firefox-157.0-orig/browser/components/aiwindow/ui/components/ai-chat-message/ai-chat-message.css 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/aiwindow/ui/components/ai-chat-message/ai-chat-message.css 2026-10-05 08:15:20 +0900 @@ -134,13 +134,3 @@ --ai-chat-grid-columns: repeat(1, minmax(0, 1fr)); } } - -/* stylelint-disable-next-line media-query-no-invalid */ -@media -moz-pref("browser.nova.enabled") { - .message-assistant { - a { - --smartwindow-assistant-link-color-active: light-dark(var(--color-violet-80), var(--color-violet-50)); - --smartwindow-assistant-accent-color-focus: light-dark(var(--color-violet-50), var(--color-violet-10)); - } - } -} diff -urN firefox-157.0-orig/browser/components/aiwindow/ui/components/ai-chat-table/ai-chat-table.css firefox-157.0/browser/components/aiwindow/ui/components/ai-chat-table/ai-chat-table.css --- firefox-157.0-orig/browser/components/aiwindow/ui/components/ai-chat-table/ai-chat-table.css 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/aiwindow/ui/components/ai-chat-table/ai-chat-table.css 2026-10-05 08:12:22 +0900 @@ -24,11 +24,6 @@ --button-padding: var(--space-xsmall); --button-background-color-ghost-hover: light-dark(var(--color-violet-0), color-mix(in srgb, var(--color-violet-20) 24%, transparent)); --button-background-color-ghost-active: light-dark(var(--color-violet-10), color-mix(in srgb, var(--color-violet-0) 24%, transparent)); - - /* stylelint-disable-next-line media-query-no-invalid */ - @media -moz-pref("browser.nova.enabled") { - --button-icon-fill: var(--smartwindow-icon-color-accent-primary-desaturated); - } } } diff -urN firefox-157.0-orig/browser/components/aiwindow/ui/components/ai-grouped-chip-container/ai-grouped-chip-container.css firefox-157.0/browser/components/aiwindow/ui/components/ai-grouped-chip-container/ai-grouped-chip-container.css --- firefox-157.0-orig/browser/components/aiwindow/ui/components/ai-grouped-chip-container/ai-grouped-chip-container.css 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/aiwindow/ui/components/ai-grouped-chip-container/ai-grouped-chip-container.css 2026-10-05 08:15:59 +0900 @@ -20,21 +20,10 @@ transition: gap 0.3s ease-in-out; } - /* Bug 2033070: remove nova media queries */ - @media -moz-pref("browser.nova.enabled") { - border-radius: var(--border-radius-large); - border-end-end-radius: var(--border-radius-xsmall); - } - @media not forced-colors { --ai-grouped-chip-container-bg-color: light-dark(var(--color-violet-20), var(--color-violet-70)); /* stylelint-disable-next-line stylelint-plugin-mozilla/use-design-tokens */ background-color: var(--ai-grouped-chip-container-bg-color); - - /* Bug 2033070: remove nova media queries */ - @media -moz-pref("browser.nova.enabled") { - --ai-grouped-chip-container-bg-color: light-dark(var(--color-violet-desaturated-10), var(--color-violet-desaturated-60)); - } } } diff -urN firefox-157.0-orig/browser/components/aiwindow/ui/components/ai-website-chip/ai-website-chip.css firefox-157.0/browser/components/aiwindow/ui/components/ai-website-chip/ai-website-chip.css --- firefox-157.0-orig/browser/components/aiwindow/ui/components/ai-website-chip/ai-website-chip.css 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/aiwindow/ui/components/ai-website-chip/ai-website-chip.css 2026-10-05 08:15:14 +0900 @@ -46,62 +46,6 @@ --context-chip-icon-hover-display: none; } -@media -moz-pref("browser.nova.enabled") { - /* Nova tokens were implemented as the default value for the custom properties, and the fallbacks (and lint exceptions) will need to be removed after launch */ - .chip { - --chip-border-radius: var(--border-radius-medium); - --chip-border-radius-end-end: var(--border-radius-xsmall); - --chip-border-color: transparent; - --chip-hover-border-color: transparent; - --chip-hover-background-color: transparent; - - --chip-remove-border-radius: var(--border-radius-circle); - --chip-remove-size: var(--icon-size-medium); - --chip-remove-icon-size: var(--icon-size-xsmall); - --chip-remove-icon-padding: 0; - - --context-chip-background-color: light-dark( - color-mix(in srgb, var(--color-violet-desaturated-10, #e1dbf1) 70%, transparent), - var(--color-violet-desaturated-60, #534577) - ); - --context-chip-hover-background-color: var(--context-chip-background-color); - - --context-chip-border-color: transparent; - --context-chip-active-border-color: light-dark(var(--color-violet-50), var(--color-violet-30)); - --context-chip-hover-border-color: transparent; - --context-chip-border-width: var(--focus-outline-width); - - --context-chip-remove-hover-background-color: light-dark( - color-mix(in srgb, var(--color-violet-desaturated-60, #534577) 16%, transparent), - color-mix(in srgb, var(--color-violet-30) 24%, transparent) - ); - --context-chip-remove-initial-display: flex; - - --context-chip-label-color: light-dark(var(--color-violet-desaturated-90, #14092b), var(--color-violet-desaturated-0, #f2f0f8)); - --context-chip-label-hover-text-decoration: underline; - - --context-chip-icon-hover-display: flex; - } - - :host([type="context-chip"]) .chip[data-removable] { - &:hover .chip-remove { - inset-inline-end: var(--space-small); - opacity: 1; - } - - .chip-remove { - inset-inline-end: calc(-1 * var(--space-small)); - opacity: 0; - position: absolute; - z-index: 1; - - @media not (prefers-reduced-motion) { - transition: all ease 150ms; - } - } - } -} - @media (forced-colors) { .chip { --chip-border-color: var(--button-border-color); @@ -259,26 +203,6 @@ --background-color-box: var(--context-chip-hover-background-color); border-color: var(--context-chip-hover-border-color); - @media -moz-pref("browser.nova.enabled") { - .chip-label { - clip-path: inset(0 var(--chip-remove-size) 0 0); - mask-image: linear-gradient( - to left, - transparent var(--chip-remove-size), - var(--color-black) calc(var(--chip-remove-size) + var(--chip-label-mask-size)) - ); - - &:dir(rtl) { - clip-path: inset(0 0 0 var(--chip-remove-size)); - mask-image: linear-gradient( - to right, - transparent var(--chip-remove-size), - var(--color-black) calc(var(--chip-remove-size) + var(--chip-label-mask-size)) - ); - } - } - } - .chip-icon { display: var(--context-chip-icon-hover-display); } diff -urN firefox-157.0-orig/browser/components/aiwindow/ui/components/ai-window/ai-window.css firefox-157.0/browser/components/aiwindow/ui/components/ai-window/ai-window.css --- firefox-157.0-orig/browser/components/aiwindow/ui/components/ai-window/ai-window.css 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/aiwindow/ui/components/ai-window/ai-window.css 2026-10-05 08:12:01 +0900 @@ -207,46 +207,12 @@ --button-background-color-ghost-hover: var(--smartwindow-ghost-button-background-hover); --button-background-color-ghost-active: var(--smartwindow-ghost-button-background-active); --button-text-color-ghost: var(--smartwindow-text-color); - - @media -moz-pref("browser.nova.enabled") { - --button-icon-fill: light-dark(var(--color-violet-desaturated-60), var(--color-violet-desaturated-40)); - --button-background-color-ghost: light-dark(var(--color-white), var(--color-gray-70)); - --button-background-color-ghost-hover: var(--button-background-color-ghost); - --button-background-color-ghost-active: var(--button-background-color-ghost); - --button-background-color-ghost-selected: var(--button-background-color-ghost); - } } &::part(button) { backdrop-filter: blur(12px); box-shadow: var(--box-shadow-level-1); } - - @media -moz-pref("browser.nova.enabled") and (not (forced-colors)) { - &::part(button) { - --nova-border-gradient: linear-gradient( - 180deg, - transparent 35%, - color-mix(in srgb, var(--color-violet-40) 30%, transparent) 80%, - color-mix(in srgb, var(--color-violet-40) 50%, transparent) 100% - ); - border: var(--border-width) solid transparent; - background: - image(var(--button-background-color-ghost)) padding-box, - var(--nova-border-gradient) border-box; - color: var(--button-text-color-ghost); - } - - &:is(:hover, :active)::part(button) { - --nova-border-gradient: linear-gradient( - 180deg, - color-mix(in srgb, var(--color-violet-40) 10%, transparent) 5%, - color-mix(in srgb, var(--color-violet-40) 30%, transparent) 20%, - color-mix(in srgb, var(--color-violet-40) 40%, transparent) 40%, - color-mix(in srgb, var(--color-violet-40) 90%, transparent) 100% - ); - } - } } moz-button.close-sidebar-button { diff -urN firefox-157.0-orig/browser/components/aiwindow/ui/components/input-cta/input-cta.css firefox-157.0/browser/components/aiwindow/ui/components/input-cta/input-cta.css --- firefox-157.0-orig/browser/components/aiwindow/ui/components/input-cta/input-cta.css 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/aiwindow/ui/components/input-cta/input-cta.css 2026-10-05 08:13:51 +0900 @@ -215,73 +215,3 @@ background-image: url("chrome://global/skin/icons/search-glass.svg"); } } - -/* TODO: Bug 2033070 - Nova tokens were implemented as the default value for the custom properties, and the fallbacks (and lint exceptions) will need to be removed after launch */ -@media -moz-pref("browser.nova.enabled") { - @media not (forced-colors) { - moz-button { - &[type="split"].input-cta { - --button-icon-fill: var(--button-text-color-primary); - --button-background-color: var(--button-background-color-primary); - --button-background-color-active: var(--button-background-color-primary-active); - --button-background-color-disabled: var(--button-background-color-primary-disabled); - --button-background-color-hover: var(--button-background-color-primary-hover); - --button-background-color-selected: var(--button-background-color-primary-selected); - --button-text-color: var(--button-text-color-primary); - --button-text-color-active: var(--button-text-color-primary-active); - --button-text-color-disabled: var(--button-text-color-primary-disabled); - --button-text-color-hover: var(--button-text-color-primary); - --button-text-color-selected: var(--button-text-color-primary-selected); - --button-border-color: var(--button-border-color-primary); - --button-border-color-active: var(--button-border-color-primary-active); - --button-border-color-disabled: var(--button-border-color-primary-disabled); - --button-border-color-hover: var(--button-border-color-primary-hover); - --button-border-color-selected: var(--button-border-color-primary-selected); - --button-separator-color: light-dark(var(--color-white-alpha-60), var(--color-gray-70)); - } - - &[type="ghost"].input-cta { - --button-background-color-ghost: transparent; - --button-background-color-ghost-active: color-mix(in srgb, var(--color-violet-desaturated-60) 30%, transparent); - --button-background-color-ghost-disabled: transparent; - --button-background-color-ghost-hover: color-mix(in srgb, var(--color-violet-desaturated-60) 16%, transparent); - --button-background-color-ghost-selected: var(--button-background-color-ghost-active); - } - - &.input-cta::part(button) { - @media not (forced-colors) { - @container smartbar-controls (max-width: 380px) { - /* stylelint-disable-next-line stylelint-plugin-mozilla/use-design-tokens */ - fill: var(--button-text-color-primary); - } - } - } - } - } - - panel-list { - /* stylelint-disable-next-line stylelint-plugin-mozilla/use-design-tokens */ - min-width: 256px; - --panel-list-border-radius: var(--border-radius-large); - - @media (not (forced-colors)) { - --panel-list-border-color: light-dark(var(--color-violet-desaturated-20), var(--color-violet-desaturated-50)); - --button-background-color-hover: var(--smartwindow-panel-item-background-color-hover); - } - } - - panel-item::part(button) { - background-position-x: var(--space-large); - /* stylelint-disable-next-line stylelint-plugin-mozilla/use-design-tokens */ - border-radius: var(--smartwindow-panel-item-border-radius); - padding: var(--space-small) var(--space-large) var(--space-small) calc(var(--space-medium) + var(--space-xxlarge)); - - @media (not (forced-colors)) { - --panel-icon-fill-color: light-dark(var(--color-violet-50), var(--color-violet-20)); - - &:hover { - background-color: var(--button-background-color-hover); - } - } - } -} diff -urN firefox-157.0-orig/browser/components/aiwindow/ui/components/input-model-select/input-model-select.css firefox-157.0/browser/components/aiwindow/ui/components/input-model-select/input-model-select.css --- firefox-157.0-orig/browser/components/aiwindow/ui/components/input-model-select/input-model-select.css 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/aiwindow/ui/components/input-model-select/input-model-select.css 2026-10-05 08:11:51 +0900 @@ -62,12 +62,6 @@ &:active { background-color: var(--button-background-color-active); } - - /* TODO: Bug 2033070 - Nova tokens were implemented as the default value for the custom properties, and the fallbacks (and lint exceptions) will need to be removed after launch */ - @media -moz-pref("browser.nova.enabled") { - /* stylelint-disable-next-line stylelint-plugin-mozilla/use-design-tokens */ - border-radius: var(--smartwindow-panel-item-border-radius); - } } .model-item-avatar { diff -urN firefox-157.0-orig/browser/components/aiwindow/ui/components/smartwindow-footer/smartwindow-footer.css firefox-157.0/browser/components/aiwindow/ui/components/smartwindow-footer/smartwindow-footer.css --- firefox-157.0-orig/browser/components/aiwindow/ui/components/smartwindow-footer/smartwindow-footer.css 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/aiwindow/ui/components/smartwindow-footer/smartwindow-footer.css 2026-10-05 08:11:46 +0900 @@ -32,42 +32,3 @@ gap: var(--space-small); } } - -@media -moz-pref("browser.nova.enabled") { - .footer-action-button { - --button-padding: var(--space-medium); - /* stylelint-disable stylelint-plugin-mozilla/use-design-tokens, stylelint-plugin-mozilla/no-base-design-tokens */ - min-width: 86px; - - &::part(button) { - --button-border-radius: var(--border-radius-large); - } - - &::part(button), - &::part(moz-button-label) { - cursor: pointer; - } - - @media not (forced-colors) { - --button-text-color-ghost: var(--smartwindow-icon-color-accent-primary-desaturated); - - --button-background-color-ghost-active: light-dark( - color-mix(in srgb, var(--color-violet-60) 30%, transparent), - color-mix(in srgb, var(--color-violet-30) 36%, transparent) - ); - /* Active state is using a different text color for a11y contrast */ - --button-text-color-ghost-active: light-dark(var(--color-violet-90), var(--color-gray-0)); - - --button-background-color-ghost-hover: light-dark( - color-mix(in srgb, var(--color-violet-60) 16%, transparent), - color-mix(in srgb, var(--color-violet-30) 24%, transparent) - ); - --button-text-color-ghost-hover: var(--smartwindow-icon-color-accent-primary-desaturated); - - --button-background-color-ghost-selected: light-dark( - color-mix(in srgb, var(--color-violet-60) 16%, transparent), - color-mix(in srgb, var(--color-violet-30) 24%, transparent) - ); - } - } -} diff -urN firefox-157.0-orig/browser/components/aiwindow/ui/components/smartwindow-heading/smartwindow-heading.css firefox-157.0/browser/components/aiwindow/ui/components/smartwindow-heading/smartwindow-heading.css --- firefox-157.0-orig/browser/components/aiwindow/ui/components/smartwindow-heading/smartwindow-heading.css 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/aiwindow/ui/components/smartwindow-heading/smartwindow-heading.css 2026-10-05 08:15:30 +0900 @@ -4,10 +4,6 @@ :host { --heading-text-color: light-dark(var(--color-violet-70), var(--color-violet-30)); - - @media -moz-pref("browser.nova.enabled") { - --heading-text-color: var(--text-color); - } } .heading-container { diff -urN firefox-157.0-orig/browser/components/aiwindow/ui/components/smartwindow-history-menu/smartwindow-history-menu.css firefox-157.0/browser/components/aiwindow/ui/components/smartwindow-history-menu/smartwindow-history-menu.css --- firefox-157.0-orig/browser/components/aiwindow/ui/components/smartwindow-history-menu/smartwindow-history-menu.css 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/aiwindow/ui/components/smartwindow-history-menu/smartwindow-history-menu.css 2026-10-05 08:13:32 +0900 @@ -19,7 +19,7 @@ } /* Non-nova has no top scrim, so these ghost buttons carry their own background. */ -@media (not -moz-pref("browser.nova.enabled")) and (not (forced-colors)) { +@media (not (forced-colors)) { moz-button.fullpage-action-button { --button-background-color-ghost: var(--smartwindow-ghost-button-background); --button-background-color-ghost-hover: var(--smartwindow-ghost-button-background-hover); @@ -32,11 +32,9 @@ } /* Non-nova: round the fullpage action buttons into pills. */ -@media (not -moz-pref("browser.nova.enabled")) { moz-button.fullpage-action-button { --button-border-radius: var(--border-radius-circle); } -} /* 4px gap between a trigger button and its opened menu. panel-list reflects valign to say whether it opened below (bottom) or above (top) the anchor. */ @@ -48,30 +46,6 @@ margin-block-start: calc(-1 * var(--space-xsmall)); } -@media -moz-pref("browser.nova.enabled") and (not (forced-colors)) { - moz-button.fullpage-action-button { - /* Resting icon/label use the muted accent (#584a7d / #9687c0); on - hover/active/selected they brighten to button/text/color (#fcfbff in - dark). The icon tracks the label via currentColor. */ - --button-text-color-ghost: var(--icon-color-accent-primary-desaturated); - --button-text-color-ghost-hover: var(--button-text-color); - --button-text-color-ghost-active: var(--button-text-color); - --button-text-color-ghost-selected: var(--button-text-color); - --button-icon-fill: currentColor; - /* No resting fill (transparent ghost; the top scrim provides legibility). - Design button/background/color/ghost/hover: #584a7d @16% light, #b89cff - @24% dark. Not a shared token, so define it once locally and reuse for - the pressed and menu-open (selected) states. */ - --fullpage-ghost-bg: light-dark( - color-mix(in srgb, var(--color-violet-desaturated-60) 16%, transparent), - color-mix(in srgb, var(--color-violet-30) 24%, transparent) - ); - --button-background-color-ghost-hover: var(--fullpage-ghost-bg); - --button-background-color-ghost-active: var(--fullpage-ghost-bg); - --button-background-color-ghost-selected: var(--fullpage-ghost-bg); - } -} - /* Sidebar "..." trigger, matching the New chat / Close buttons. */ moz-button.history-menu-button { --button-border-radius: var(--border-radius-circle); @@ -83,47 +57,12 @@ /* Hold the hover fill while the menu is open. */ --button-background-color-ghost-selected: var(--button-background-color-ghost-hover); --button-text-color-ghost: var(--smartwindow-text-color); - - @media -moz-pref("browser.nova.enabled") { - --button-icon-fill: light-dark(var(--color-violet-desaturated-60), var(--color-violet-desaturated-40)); - --button-background-color-ghost: light-dark(var(--color-white), var(--color-gray-70)); - --button-background-color-ghost-hover: var(--button-background-color-ghost); - --button-background-color-ghost-active: var(--button-background-color-ghost); - --button-background-color-ghost-selected: var(--button-background-color-ghost); - } } &::part(button) { backdrop-filter: blur(12px); box-shadow: var(--box-shadow-level-1); } - - @media -moz-pref("browser.nova.enabled") and (not (forced-colors)) { - &::part(button) { - --nova-border-gradient: linear-gradient( - 180deg, - transparent 35%, - color-mix(in srgb, var(--color-violet-40) 30%, transparent) 80%, - color-mix(in srgb, var(--color-violet-40) 50%, transparent) 100% - ); - border: var(--border-width) solid transparent; - /* stylelint-disable-next-line stylelint-plugin-mozilla/use-design-tokens */ - background: - image(var(--button-background-color-ghost)) padding-box, - var(--nova-border-gradient) border-box; - color: var(--button-text-color-ghost); - } - - &:is(:hover, :active)::part(button) { - --nova-border-gradient: linear-gradient( - 180deg, - color-mix(in srgb, var(--color-violet-40) 10%, transparent) 5%, - color-mix(in srgb, var(--color-violet-40) 30%, transparent) 20%, - color-mix(in srgb, var(--color-violet-40) 40%, transparent) 40%, - color-mix(in srgb, var(--color-violet-40) 90%, transparent) 100% - ); - } - } } /* Match the shared smartwindow panel-list item metrics. */ @@ -227,16 +166,6 @@ font-weight: var(--font-weight-bold); } -/* Nova: the back arrow uses the Smart Window accent-desaturated icon fill (per - design); its hover matches the row hover, not moz-button's solid default. */ -@media -moz-pref("browser.nova.enabled") and (not (forced-colors)) { - .history-menu .history-menu-back { - --button-icon-fill: var(--smartwindow-icon-color-accent-primary-desaturated); - --button-background-color-ghost-hover: var(--smartwindow-panel-item-background-color-hover); - --button-background-color-ghost-active: var(--smartwindow-panel-item-background-color-active); - } -} - /* Favicon (60%) over the chat-bubble overlay, matching Firefox View Chats. */ .history-menu panel-item[icon].history-menu-chat.chat-overlay::part(button) { background-image: var(--panel-item-icon-url), url("chrome://browser/content/firefoxview/empty-chat.svg"); @@ -262,7 +191,6 @@ /* Non-nova: inset the row hover/active to line up with the separator (8px) and round it, matching the standard application-menu panel-list rather than full-bleeding to the submenu edges. */ -@media (not -moz-pref("browser.nova.enabled")) { .history-menu panel-item::part(button) { margin-inline: var(--space-small); /* stylelint-disable-next-line stylelint-plugin-mozilla/use-design-tokens */ @@ -270,29 +198,3 @@ /* stylelint-disable-next-line stylelint-plugin-mozilla/use-design-tokens */ border-radius: var(--panel-menuitem-border-radius); } -} - -/* Nova theme; non-nova uses panel-list's application-menu defaults. */ -@media -moz-pref("browser.nova.enabled") { - .history-menu { - --panel-list-border-radius: var(--border-radius-large); - --panel-list-box-shadow: var(--box-shadow-level-3); - /* stylelint-disable-next-line stylelint-plugin-mozilla/use-design-tokens */ - --panel-item-button-border-radius: var(--smartwindow-panel-item-border-radius); - - @media not (forced-colors) { - --panel-list-border-color: light-dark(var(--color-violet-desaturated-20), var(--color-violet-desaturated-50)); - --panel-list-text-color: light-dark(var(--color-violet-90), var(--color-gray-0)); - --button-background-color-hover: var(--smartwindow-panel-item-background-color-hover); - --button-background-color-active: var(--smartwindow-panel-item-background-color-active); - } - } - - .history-menu panel-item::part(button) { - /* stylelint-disable-next-line stylelint-plugin-mozilla/use-design-tokens */ - border-radius: var(--panel-item-button-border-radius); - margin-inline: var(--space-small); - /* stylelint-disable-next-line stylelint-plugin-mozilla/use-design-tokens */ - max-width: calc(100% - 2 * var(--space-small)); - } -} diff -urN firefox-157.0-orig/browser/components/aiwindow/ui/components/smartwindow-panel-list/smartwindow-panel-list.css firefox-157.0/browser/components/aiwindow/ui/components/smartwindow-panel-list/smartwindow-panel-list.css --- firefox-157.0-orig/browser/components/aiwindow/ui/components/smartwindow-panel-list/smartwindow-panel-list.css 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/aiwindow/ui/components/smartwindow-panel-list/smartwindow-panel-list.css 2026-10-05 08:12:42 +0900 @@ -28,7 +28,7 @@ max-width: var(--panel-max-width); white-space: normal; - @media (not (forced-colors)) and (not -moz-pref("browser.nova.enabled")) { + @media (not (forced-colors)) { --panel-list-background-color: light-dark(color-mix(in srgb, var(--color-violet-30) 5%, white), var(--color-violet-110)); --panel-list-border-color: light-dark(var(--color-purple-20), var(--color-gray-70)); --panel-list-text-color: light-dark(var(--color-violet-110), var(--color-violet-0)); @@ -42,29 +42,6 @@ --panel-max-width: min(392px, calc(100% - 2 * var(--panel-inline-margin))); } -@media -moz-pref("browser.nova.enabled") { - /* TODO: Bug 2033070 - Nova tokens were implemented as the default value for the custom properties, and the fallbacks (and lint exceptions) will need to be removed after launch */ - panel-list { - /* stylelint-disable-next-line stylelint-plugin-mozilla/use-design-tokens */ - --panel-list-border-radius: var(--smartwindow-panel-item-border-radius); - --panel-section-header-padding-inline-start: var(--size-item-small); - /* stylelint-disable-next-line stylelint-plugin-mozilla/use-design-tokens */ - --panel-item-button-border-radius: var(--smartwindow-panel-item-border-radius); - - @media not (forced-colors) { - --panel-list-border-color: light-dark(var(--color-violet-desaturated-20), var(--color-violet-desaturated-50)); - --panel-list-text-color: light-dark(var(--color-violet-90), var(--color-gray-0)); - --panel-section-header-color: light-dark( - color-mix(in srgb, var(--color-violet-desaturated-90) 70%, transparent), - color-mix(in srgb, var(--color-violet-desaturated-0) 70%, transparent) - ); - --button-background-color-hover: var(--smartwindow-panel-item-background-color-hover); - --button-background-color-active: var(--smartwindow-panel-item-background-color-active); - --button-text-color-hover: var(--panel-list-text-color); - } - } -} - panel-list[valign="bottom"] { /* Override hook: a consumer can set this custom property on its host to change the gap */ margin-block-start: var(--smartwindow-panel-list-valign-bottom-margin-block-start, var(--space-small)); @@ -159,12 +136,6 @@ outline-offset: var(--focus-outline-inset); } -@media -moz-pref("browser.nova.enabled") { - panel-list ai-website-chip::part(chip) { - --background-color-hover: light-dark(color-mix(in srgb, var(--color-violet-desaturated-10) 70%, transparent), var(--color-violet-desaturated-60)); - } -} - .panel-item-container { border-radius: var(--border-radius-small); cursor: pointer; diff -urN firefox-157.0-orig/browser/components/aiwindow/ui/components/smartwindow-promo/smartwindow-promo.css firefox-157.0/browser/components/aiwindow/ui/components/smartwindow-promo/smartwindow-promo.css --- firefox-157.0-orig/browser/components/aiwindow/ui/components/smartwindow-promo/smartwindow-promo.css 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/aiwindow/ui/components/smartwindow-promo/smartwindow-promo.css 2026-10-05 08:14:40 +0900 @@ -34,20 +34,4 @@ --button-text-color-ghost-active: var(--button-text-color-ghost); --button-text-color-ghost-hover: var(--button-text-color-ghost); --button-text-color-ghost-selected: var(--button-text-color-ghost); - - /* stylelint-disable-next-line media-query-no-invalid */ - @media -moz-pref("browser.nova.enabled") { - --button-background-color-ghost: transparent; - --button-background-color-ghost-hover: var(--smartwindow-panel-item-background-color-hover); - --button-background-color-ghost-active: var(--smartwindow-panel-item-background-color-active); - --button-background-color-ghost-selected: var(--smartwindow-panel-item-background-color-active); - --button-text-color-ghost: var(--smartwindow-text-color-accent-primary); - --button-text-color-ghost-hover: var(--button-text-color-ghost); - --button-text-color-ghost-active: var(--button-text-color-ghost); - --button-text-color-ghost-selected: var(--button-text-color-ghost); - --button-border-color-ghost: light-dark(var(--color-violet-30), var(--color-violet-40)); - --button-border-color-ghost-hover: var(--button-border-color-ghost); - --button-border-color-ghost-active: var(--button-border-color-ghost); - --button-border-color-ghost-selected: var(--button-border-color-ghost); - } } diff -urN firefox-157.0-orig/browser/components/aiwindow/ui/components/smartwindow-prompts/smartwindow-prompts.css firefox-157.0/browser/components/aiwindow/ui/components/smartwindow-prompts/smartwindow-prompts.css --- firefox-157.0-orig/browser/components/aiwindow/ui/components/smartwindow-prompts/smartwindow-prompts.css 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/aiwindow/ui/components/smartwindow-prompts/smartwindow-prompts.css 2026-10-05 08:14:28 +0900 @@ -344,192 +344,3 @@ mask-composite: exclude; pointer-events: none; } - -@media -moz-pref("browser.nova.enabled") { - @keyframes hover-focus-fade-in { - 0% { - opacity: 0; - background-image: linear-gradient( - 365deg, - var(--sw-prompt-gradient-violet) 50%, - var(--sw-prompt-gradient-pink) 80%, - var(--sw-prompt-gradient-orange) 100% - ); - } - 33% { - background-image: linear-gradient( - 365deg, - var(--sw-prompt-gradient-violet) 50%, - var(--sw-prompt-gradient-pink) 80%, - var(--sw-prompt-gradient-orange) 100% - ); - } - 100% { - opacity: 1; - background-image: linear-gradient( - 400deg, - var(--sw-prompt-gradient-violet) 50%, - var(--sw-prompt-gradient-pink) 80%, - var(--sw-prompt-gradient-orange) 100% - ); - } - } - - @keyframes hover-focus-fade-out { - 0% { - opacity: 1; - background-image: linear-gradient( - 400deg, - var(--sw-prompt-gradient-violet) 50%, - var(--sw-prompt-gradient-pink) 80%, - var(--sw-prompt-gradient-orange) 100% - ); - } - 67% { - background-image: linear-gradient( - 365deg, - var(--sw-prompt-gradient-violet) 50%, - var(--sw-prompt-gradient-pink) 80%, - var(--sw-prompt-gradient-orange) 100% - ); - } - 100% { - opacity: 0; - background-image: linear-gradient( - 365deg, - var(--sw-prompt-gradient-violet) 50%, - var(--sw-prompt-gradient-pink) 80%, - var(--sw-prompt-gradient-orange) 100% - ); - } - } - - @keyframes active-fade-in { - 0% { - opacity: 1; - background-image: linear-gradient( - 400deg, - var(--sw-prompt-gradient-violet) 50%, - var(--sw-prompt-gradient-pink) 80%, - var(--sw-prompt-gradient-orange) 100% - ); - } - 100% { - opacity: 1; - background-image: linear-gradient(450deg, var(--sw-prompt-gradient-violet) 40%, var(--sw-prompt-gradient-pink) 100%); - } - } - - /* Custom properties are also declared on the container (not just - * .sw-prompt-button) so the skeleton placeholder pill can inherit them - - * see the base (non-Nova) declaration above for why. */ - .sw-prompts-container, - .sw-prompt-button { - /* Note: Listing the Nova value of these tokens as a backup for consistency because some tokens do not currently exist, ex: "color-neutral" */ - --prompt-button-background-dark-color: var(--color-gray-70, #26272f); - --prompt-button-background-color: light-dark(white, var(--prompt-button-background-dark-color)); - - --sw-prompt-gradient-violet: var(--color-violet-40); - --sw-prompt-gradient-pink: var(--color-pink-30); - --sw-prompt-gradient-orange: var(--color-orange-30); - - --button-background-color: var(--prompt-button-background-color); - --button-background-color-active: var(--prompt-button-background-color); - --button-background-color-disabled: var(--color-gray-20); - --button-background-color-hover: var(--prompt-button-background-color); - --button-background-color-selected: var(--prompt-button-background-color); - - --button-text-color: var(--smartwindow-text-color-accent-primary); - --button-text-color-hover: var(--smartwindow-text-color-accent-primary); - --button-text-color-active: var(--smartwindow-text-color-accent-primary); - } - - .sw-prompt-button { - --focus-outline-offset: 2px; - - outline: none; - } - - .sw-prompt-button::part(button) { - /* TODO: Bug 2030722 to address necessity for adding transparent border color. Currently, a blue one appears */ - border-color: transparent; - box-shadow: none; - cursor: pointer; - } - - .sw-prompt-button::part(button)::before, - .sw-prompt-button::part(button)::after { - content: ""; - position: absolute; - inset: calc(-1 * var(--border-width)); - border-radius: inherit; - padding: var(--border-width); - mask: - linear-gradient(#fff 0 0) content-box, - linear-gradient(#fff 0 0); - mask-composite: exclude; - pointer-events: none; - transition: all ease-out 200ms; - } - - .sw-prompt-button::part(button)::before { - background: linear-gradient(180deg, var(--prompt-button-background-color) 60%, var(--color-violet-30) 100%); - opacity: 1; - } - - .sw-prompt-button:is(:hover, :active, :focus)::before { - opacity: 0; - } - - .sw-prompt-button::part(button)::after { - background-image: linear-gradient(365deg, var(--sw-prompt-gradient-violet) 50%, var(--sw-prompt-gradient-pink) 80%, var(--sw-prompt-gradient-orange) 100%); - opacity: 0; - } - - .sw-prompt-button.has-interacted:not(:hover, :focus, :active)::part(button)::after { - animation: hover-focus-fade-out 200ms ease-out forwards; - } - - .sw-prompt-button:is(:hover, :focus)::part(button)::after { - animation: hover-focus-fade-in 200ms ease-in forwards; - } - - .sw-prompt-button:active::part(button)::after { - animation: active-fade-in 200ms ease-in forwards; - background-image: linear-gradient(400deg, var(--sw-prompt-gradient-violet) 40%, var(--sw-prompt-gradient-pink) 100%); - } - - .sw-prompt-button::part(moz-button-label) { - cursor: pointer; - } - - /* Styles below apply only to the `resume` pill variant. :has() avoids a - * dedicated class since only these pills render a favicon cluster. The - * border/hover treatment is otherwise identical to a regular pill; - * only the favicon cluster differs. */ - /* stylelint-disable-next-line stylelint-plugin-mozilla/no-has-selector */ - .sw-prompt-button:has(.sw-prompt-favicons) { - --sw-prompt-fill-color: var(--prompt-button-background-color); - } - - .sw-prompt-favicon, - .sw-prompt-favicon-overflow { - border: 1.5px solid var(--sw-prompt-fill-color); - border-radius: var(--border-radius-xsmall); - height: 14px; - margin-inline-end: -4px; - width: 14px; - } - - /* contain avoids stretching non-square favicons; the matching - * background fills any letterboxed/transparent edges. fill/ - * context-properties only affect the defaultFavicon.svg fallback (real - * site favicons don't use context-fill), giving it correct contrast in - * dark theme instead of rendering with the wrong color. */ - .sw-prompt-favicon { - background-color: var(--sw-prompt-fill-color); - object-fit: contain; - -moz-context-properties: fill; - fill: var(--icon-color); - } -} diff -urN firefox-157.0-orig/browser/components/aiwindow/ui/components/website-chip-container/website-chip-container.css firefox-157.0/browser/components/aiwindow/ui/components/website-chip-container/website-chip-container.css --- firefox-157.0-orig/browser/components/aiwindow/ui/components/website-chip-container/website-chip-container.css 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/aiwindow/ui/components/website-chip-container/website-chip-container.css 2026-10-05 08:15:46 +0900 @@ -9,11 +9,6 @@ @media not ((prefers-contrast) or (forced-colors)) { --overflow-more-background-color: light-dark(var(--color-violet-0), var(--color-violet-80)); --overflow-more-background-color-hover: light-dark(color-mix(in srgb, var(--color-violet-50) 15%, transparent), var(--color-violet-110)); - - @media -moz-pref("browser.nova.enabled") { - --overflow-more-background-color: light-dark(color-mix(in srgb, var(--color-violet-desaturated-10) 70%, transparent), var(--color-violet-desaturated-60)); - --overflow-more-background-color-hover: var(--overflow-more-background-color); - } } } @@ -52,14 +47,6 @@ --button-background-color-ghost: var(--overflow-more-background-color); --button-background-color-ghost-hover: var(--overflow-more-background-color-hover); --button-text-color-ghost: light-dark(var(--color-violet-90), var(--color-violet-10)); - - @media -moz-pref("browser.nova.enabled") { - --button-text-color-ghost: light-dark(var(--color-violet-desaturated-90), var(--color-violet-desaturated-0)); - } - } - - @media -moz-pref("browser.nova.enabled") { - --button-border: var(--focus-outline-width) solid transparent; } } } diff -urN firefox-157.0-orig/browser/components/aiwindow/ui/content/ai-window-shared.css firefox-157.0/browser/components/aiwindow/ui/content/ai-window-shared.css --- firefox-157.0-orig/browser/components/aiwindow/ui/content/ai-window-shared.css 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/aiwindow/ui/content/ai-window-shared.css 2026-10-05 08:16:17 +0900 @@ -18,10 +18,6 @@ --smartwindow-ghost-button-background-hover: light-dark(var(--color-violet-20), var(--smartwindow-ghost-button-fill-dark)); --smartwindow-ghost-button-background-active: light-dark(var(--color-violet-30), var(--smartwindow-ghost-button-fill-dark)); --smartwindow-text-color: light-dark(var(--color-violet-90), var(--button-text-color)); - /* Nova uses the light violet token rather than moz-button's default text. */ - @media -moz-pref("browser.nova.enabled") { - --smartwindow-text-color: light-dark(var(--color-violet-90), var(--color-violet-0)); - } /* Override box-shadow-level-2 with custom colors */ --box-shadow-color-lighter-layer-1: color-mix(in srgb, var(--color-violet-50) 15%, transparent); @@ -29,31 +25,4 @@ --smartwindow-shadow: var(--box-shadow-level-2); --smartwindow-ai-chat-grid-border-color: light-dark(var(--color-violet-10), var(--container-bg, rgba(191, 143, 204, 0.2))); - - /* stylelint-disable-next-line media-query-no-invalid */ - @media -moz-pref("browser.nova.enabled") { - /* HCM Default */ - --smartwindow-text-color-accent-primary: var(--text-color); - --smartwindow-icon-color-accent-primary-desaturated: var(--icon-color); - - --smartwindow-panel-item-border-radius: var(--border-radius-xlarge); - - @media not (forced-colors) { - /* Smart Window Nova Tokens */ - --smartwindow-text-color-accent-primary: light-dark(var(--color-violet-60), var(--color-violet-30)); - --smartwindow-icon-color-accent-primary-desaturated: light-dark(var(--color-violet-desaturated-60), var(--color-violet-desaturated-40)); - - --smartwindow-panel-item-background-color-hover: light-dark( - color-mix(in srgb, var(--color-violet-60) 15%, transparent), - color-mix(in srgb, var(--color-violet-40) 25%, transparent) - ); - --smartwindow-panel-item-background-color-active: light-dark( - color-mix(in srgb, var(--color-violet-60) 27%, transparent), - color-mix(in srgb, var(--color-violet-40) 40%, transparent) - ); - - --box-shadow-color-lighter-layer-1: color-mix(in srgb, var(--color-violet-70) 15%, transparent); - --box-shadow-color-lighter-layer-2: color-mix(in srgb, var(--color-violet-70) 24%, transparent); - } - } } diff -urN firefox-157.0-orig/browser/components/aiwindow/ui/content/firstrun.css firefox-157.0/browser/components/aiwindow/ui/content/firstrun.css --- firefox-157.0-orig/browser/components/aiwindow/ui/content/firstrun.css 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/aiwindow/ui/content/firstrun.css 2026-10-05 08:17:12 +0900 @@ -23,8 +23,6 @@ --card-icon-bg: light-dark(var(--color-violet-0), var(--color-white-alpha-10)); --button-icon-color: var(--card-text-color); - /* TODO: Bug 2033070 - remove these media queries after Nova launch */ - @media not -moz-pref("browser.nova.enabled") { /* stylelint-disable-next-line -- using linear gradient for text effect */ --header-bg-image: light-dark(linear-gradient(91deg, #7630c0 22.04%, #5c66ee 78.7%), linear-gradient(65deg, #9165ff 18.85%, #d8c9ff 78.79%)); --card-bg: light-dark(var(--color-white-alpha-50), var(--color-gray-80)); @@ -37,21 +35,6 @@ --button-text-color-primary-selected: var(--button-text-color-primary); --button-text-color-primary-active: var(--button-text-color-primary); --card-border-color-gradient: var(--smartwindow-border-color-gradient); - } - - /* TODO: Bug 2033070 - remove these media queries after Nova launch */ - @media -moz-pref("browser.nova.enabled") { - --header-bg-image: light-dark( - linear-gradient(270deg, var(--color-violet-40) 11.55%, var(--color-violet-60) 90.5%), - linear-gradient(270deg, var(--color-violet-30) 11.55%, var(--color-violet-50) 90.5%) - ); - --card-bg: light-dark(var(--color-white), var(--color-gray-75)); - --card-bg-hover: var(--card-bg); - --card-border-color: light-dark(var(--color-violet-desaturated-20), var(--color-violet-desaturated-50)); - --card-border-color-hover: var(--color-violet-desaturated-30); - --card-icon-bg: light-dark(var(--color-violet-0), color-mix(in srgb, var(--color-violet-40) 25%, transparent)); - --card-border-color-gradient: linear-gradient(244deg, var(--color-orange-30) 14.32%, var(--color-pink-30) 28.57%, var(--color-violet-40) 59.95%); - } } @media (forced-colors) { @@ -83,13 +66,10 @@ letter-spacing: -0.3px; cursor: pointer; - /* TODO: Bug 2033070 - remove these media queries after Nova launch */ - @media not -moz-pref("browser.nova.enabled") { border: none; border-radius: var(--border-radius-medium); /* stylelint-disable-next-line stylelint-plugin-mozilla/use-design-tokens -- custom gradient per Figma design */ background-image: var(--button-background-color-primary); - } &:disabled { cursor: default; @@ -111,11 +91,8 @@ fill: var(--button-icon-color); cursor: pointer; - /* TODO: Bug 2033070 - remove these media queries after Nova launch */ - @media not -moz-pref("browser.nova.enabled") { /* stylelint-disable-next-line stylelint-plugin-mozilla/use-design-tokens */ background-color: var(--card-border-color); - } &:dir(rtl) { background-image: url("chrome://browser/skin/forward.svg"); @@ -397,8 +374,6 @@ box-shadow 0.4s ease; width: 100%; - /* TODO: Bug 2033070 - remove these media queries after Nova launch */ - @media not -moz-pref("browser.nova.enabled") { /* outline color is the button background color, which is a gradient for MVP and doesn't work on outline */ /* stylelint-disable-next-line stylelint-plugin-mozilla/no-has-selector */ @@ -406,7 +381,6 @@ outline: var(--focus-outline-width) solid var(--focus-outline-color); outline-offset: var(--focus-outline-offset); } - } /* stylelint-disable-next-line stylelint-plugin-mozilla/no-has-selector */ &:hover:not(:has(.selected)) { diff -urN firefox-157.0-orig/browser/components/asrouter/content/assets/arrow-down-tiny.svg firefox-157.0/browser/components/asrouter/content/assets/arrow-down-tiny.svg --- firefox-157.0-orig/browser/components/asrouter/content/assets/arrow-down-tiny.svg 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/asrouter/content/assets/arrow-down-tiny.svg 2026-10-05 09:10:25 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/components/asrouter/content/assets/glyph-cfr-feature-16.svg firefox-157.0/browser/components/asrouter/content/assets/glyph-cfr-feature-16.svg --- firefox-157.0-orig/browser/components/asrouter/content/assets/glyph-cfr-feature-16.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/asrouter/content/assets/glyph-cfr-feature-16.svg 2026-10-05 09:10:27 +0900 @@ -5,13 +5,9 @@ - \ No newline at end of file + diff -urN firefox-157.0-orig/browser/components/asrouter/content/assets/glyph-mail-mask-16.svg firefox-157.0/browser/components/asrouter/content/assets/glyph-mail-mask-16.svg --- firefox-157.0-orig/browser/components/asrouter/content/assets/glyph-mail-mask-16.svg 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/asrouter/content/assets/glyph-mail-mask-16.svg 2026-10-05 09:10:28 +0900 @@ -5,14 +5,10 @@ - \ No newline at end of file + diff -urN firefox-157.0-orig/browser/components/asrouter/content/components/asrouter-newtab-multistage/asrouter-newtab-multistage.css firefox-157.0/browser/components/asrouter/content/components/asrouter-newtab-multistage/asrouter-newtab-multistage.css --- firefox-157.0-orig/browser/components/asrouter/content/components/asrouter-newtab-multistage/asrouter-newtab-multistage.css 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/asrouter/content/components/asrouter-newtab-multistage/asrouter-newtab-multistage.css 2026-10-05 09:11:06 +0900 @@ -383,25 +383,6 @@ pointer-events: none; } -@media (not (prefers-contrast)) and (-moz-pref("browser.nova.enabled")) { - :root:not([lwtheme]) #feature-callout[hide-arrow=permanent][zap-border] .screen[pos=callout] .section-main .main-content, - :root:not([lwtheme]) #feature-callout[hide-arrow=permanent][zap-border] .background-arrow { - background: var(--fc-zap-border-background); - } - :root:not([lwtheme]) #feature-callout[hide-arrow=permanent][zap-border] .screen[pos=callout] .section-main .main-content, - :root:not([lwtheme]) #feature-callout[hide-arrow=permanent][zap-border] .shadow-arrow { - border-color: var(--fc-zap-border); - } - :root:not([lwtheme]) #feature-callout[hide-arrow=permanent][zap-shadow]:where(div) .screen[pos=callout] .section-main::before { - content: ""; - position: absolute; - z-index: -1; - inset: 7px; - border-radius: 60px; - filter: blur(30px); - box-shadow: -12px -12px 40px 0 light-dark(#E7D9FF, rgba(99, 47, 200, 0.4)), 10px 10px 40px 0 light-dark(#FFD3B7, rgba(255, 138, 87, 0.4)); - } -} #feature-callout .onboardingContainer, #feature-callout .onboardingContainer .outer-wrapper { --transition: none; @@ -1788,21 +1769,6 @@ .onboardingContainer .screen[pos=center].with-noodles .section-main { height: 504px; } -@media (not (prefers-contrast)) and (-moz-pref("browser.nova.enabled")) { - .onboardingContainer .screen[pos=center].zap-border .main-content { - background: linear-gradient(96deg, #B89CFF 20.68%, #FF9565 79.34%) border-box border-area, image(var(--background-color-box)) padding-box; - border: 1px solid transparent; - } - .onboardingContainer .screen[pos=center].zap-shadow .section-main::before { - content: ""; - position: absolute; - z-index: -1; - inset: 7px; - border-radius: 60px; - box-shadow: -12px -12px 70px 0 light-dark(#E7D9FF, rgba(99, 47, 200, 0.8)), 10px 10px 70px 0 light-dark(#FFD3B7, rgba(255, 138, 87, 0.8)); - transition: var(--transition); - } -} .onboardingContainer .screen[pos=center].with-video { justify-content: center; background: none; @@ -2105,16 +2071,6 @@ margin: auto; pointer-events: none; } -@media (not (prefers-contrast)) and (-moz-pref("browser.nova.enabled")) { - .onboardingContainer .screen[pos=split]:where(:not([fullscreen])).zap-border::before { - background: linear-gradient(96deg, #B89CFF 20.68%, #FF9565 79.34%) border-box border-area, image(var(--background-color-box)) padding-box; - border: 1px solid transparent; - } - .onboardingContainer .screen[pos=split]:where(:not([fullscreen])).zap-shadow::before { - box-shadow: -12px -12px 70px 0 light-dark(#E7D9FF, rgba(99, 47, 200, 0.8)), 10px 10px 70px 0 light-dark(#FFD3B7, rgba(255, 138, 87, 0.8)); - transition: var(--transition); - } -} .onboardingContainer .screen[pos=split] #content-tiles-container { margin: 0; } @@ -3674,14 +3630,6 @@ top: -10px; line-height: 1; } -@media (-moz-pref("browser.nova.enabled")) { - .onboardingContainer .tiles-single-select-section.single-select .select-item .flair, .onboardingContainer .tiles-single-select-section.theme .select-item .flair { - border-radius: var(--border-radius-xlarge); - right: 10px; - top: -12px; - align-content: center; - } -} .onboardingContainer .tiles-single-select-section.single-select .select-item .flair.centered, .onboardingContainer .tiles-single-select-section.theme .select-item .flair.centered { /* stylelint-disable-next-line */ border-radius: 8px 8px 0 0; @@ -3694,29 +3642,12 @@ width: 100%; box-sizing: border-box; } -@media (-moz-pref("browser.nova.enabled")) { - .onboardingContainer .tiles-single-select-section.single-select .select-item .flair.centered, .onboardingContainer .tiles-single-select-section.theme .select-item .flair.centered { - top: -5px; - align-content: center; - } -} .onboardingContainer .tiles-single-select-section.single-select .select-item .flair.centered.backup, .onboardingContainer .tiles-single-select-section.theme .select-item .flair.centered.backup { /* stylelint-disable-next-line */ border-radius: 10px 10px 0 0; background-color: var(--picker-backup-flair-background); color: var(--picker-backup-flair-color); } -@media (-moz-pref("browser.nova.enabled")) { - .onboardingContainer .tiles-single-select-section.single-select .select-item .flair.centered.backup, .onboardingContainer .tiles-single-select-section.theme .select-item .flair.centered.backup { - border-radius: var(--border-radius-xlarge); - background-color: var(--button-background-color-primary); - color: var(--button-text-color-primary); - padding-inline: 12px; - align-content: center; - top: -9px; - width: unset; - } -} .onboardingContainer .tiles-single-select-section.single-select .select-item .flair.centered.backup.spacer, .onboardingContainer .tiles-single-select-section.theme .select-item .flair.centered.backup.spacer { background-color: transparent; } @@ -5243,31 +5174,6 @@ inset-inline-end: var(--space-medium); z-index: 999; } -@media (-moz-pref("browser.nova.enabled")) { - .multistage-newtab-wrapper .onboardingContainer .screen:focus { - outline: none; - } - .multistage-newtab-wrapper .onboardingContainer .main-content { - background-color: var(--background-color-box); - } - .multistage-newtab-wrapper .onboardingContainer .screen[pos=center] .main-content { - border: 2px solid var(--card-border-color); - box-shadow: none; - } - .multistage-newtab-wrapper .onboardingContainer .screen[pos=split]:where(:not([fullscreen], .zap-border, .zap-shadow)) { - border: 2px solid var(--card-border-color); - border-radius: var(--border-radius-xlarge, var(--border-radius-medium)); - overflow: hidden; - } - .multistage-newtab-wrapper .onboardingContainer .screen[pos=split]:where(:not([fullscreen], .zap-border, .zap-shadow))::before { - box-shadow: none; - } - .multistage-newtab-wrapper .onboardingContainer .screen[pos=split]:where(:not([fullscreen], .zap-border, .zap-shadow)) .section-secondary { - background-color: var(--background-color-dimmed); - border-radius: 0; - margin: 0; - } -} @media (width <= 800px) { .multistage-newtab-wrapper { diff -urN firefox-157.0-orig/browser/components/asrouter/content/components/menu-message/menu-message.css firefox-157.0/browser/components/asrouter/content/components/menu-message/menu-message.css --- firefox-157.0-orig/browser/components/asrouter/content/components/menu-message/menu-message.css 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/asrouter/content/components/menu-message/menu-message.css 2026-10-05 09:10:33 +0900 @@ -204,21 +204,3 @@ align-self: flex-start; margin-block-start: var(--space-medium); } - -@media -moz-pref("browser.nova.enabled") { - :host { - margin: var(--space-medium); - } - - #container { - border-radius: var(--border-radius-medium); - border: 1px solid var(--border-color-deemphasized); - padding: var(--space-medium); - margin-block-start: 0; - } - - #secondary, - #close-button { - color: var(--text-color-deemphasized); - } -} diff -urN firefox-157.0-orig/browser/components/asrouter/content-src/components/asrouter-newtab-multistage/asrouter-newtab-multistage.scss firefox-157.0/browser/components/asrouter/content-src/components/asrouter-newtab-multistage/asrouter-newtab-multistage.scss --- firefox-157.0-orig/browser/components/asrouter/content-src/components/asrouter-newtab-multistage/asrouter-newtab-multistage.scss 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/asrouter/content-src/components/asrouter-newtab-multistage/asrouter-newtab-multistage.scss 2026-10-05 09:08:13 +0900 @@ -57,45 +57,6 @@ inset-inline-end: var(--space-medium); z-index: 999; } - - @media (-moz-pref('browser.nova.enabled')) { - .onboardingContainer { - // The embedded surface focuses the screen container - // (role="alertdialog") for screen-reader announcement. Since it isn't a - // modal here, suppress the resulting focus ring around the whole card; - .screen:focus { - outline: none; - } - - .main-content { - background-color: var(--background-color-box); - } - - // Frame the card like the other New Tab message surfaces - // (asrouter-newtab-message) - .screen[pos='center'] .main-content { - border: 2px solid var(--card-border-color); - box-shadow: none; - } - - .screen[pos='split']:where(:not([fullscreen], .zap-border, .zap-shadow)) { - border: 2px solid var(--card-border-color); - // Match the inner split components' corner radius. - border-radius: var(--border-radius-xlarge, var(--border-radius-medium)); - overflow: hidden; - - &::before { - box-shadow: none; - } - - .section-secondary { - background-color: var(--background-color-dimmed); - border-radius: 0; - margin: 0; - } - } - } - } } @media (width <= 800px) { diff -urN firefox-157.0-orig/browser/components/asrouter/content-src/styles/_feature-callout.scss firefox-157.0/browser/components/asrouter/content-src/styles/_feature-callout.scss --- firefox-157.0-orig/browser/components/asrouter/content-src/styles/_feature-callout.scss 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/asrouter/content-src/styles/_feature-callout.scss 2026-10-05 09:09:34 +0900 @@ -131,38 +131,6 @@ } } - @media (not (prefers-contrast)) and (-moz-pref('browser.nova.enabled')) { - @at-root :root:not([lwtheme]) #{&}[hide-arrow='permanent'] { - // Nova gradient border - &[zap-border] { - .screen[pos='callout'] .section-main .main-content, - .background-arrow { - background: var(--fc-zap-border-background); - } - - .screen[pos='callout'] .section-main .main-content, - .shadow-arrow { - border-color: var(--fc-zap-border); - } - } - - // Nova gradient shadow - we can only show on
callouts, because - // callouts display in a popup context that cuts off overflow. - &[zap-shadow]:where(div) { - .screen[pos='callout'] .section-main::before { - content: ''; - position: absolute; - z-index: -1; - inset: 7px; - border-radius: 60px; - filter: blur(30px); - box-shadow: -12px -12px 40px 0 light-dark(#E7D9FF, #632FC866), - 10px 10px 40px 0 light-dark(#FFD3B7, #FF8A5766); - } - } - } - } - .onboardingContainer, .onboardingContainer .outer-wrapper { // Override the element transitions from aboutwelcome.scss diff -urN firefox-157.0-orig/browser/components/asrouter/content-src/styles/_multistage.scss firefox-157.0/browser/components/asrouter/content-src/styles/_multistage.scss --- firefox-157.0-orig/browser/components/asrouter/content-src/styles/_multistage.scss 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/asrouter/content-src/styles/_multistage.scss 2026-10-05 09:09:22 +0900 @@ -637,7 +637,6 @@ .main-content { background-color: var(--background-color-canvas); - // Fallback value can be removed after Nova has reached release border-radius: var(--border-radius-xlarge, 16px); box-shadow: 0 2px 14px 0 rgba(0, 0, 0, 20%); display: flex; @@ -750,7 +749,6 @@ overflow: hidden; &.light-text { - // fallback values can be removed after Nova has reached release --text-color: var(--color-violet-desaturated-0, rgb(251, 251, 254)); --button-text-color-primary: #252428; --button-text-color-primary-hover: #252428; @@ -761,7 +759,6 @@ } &.dark-text { - // fallback values can be removed after Nova has reached release --text-color: var(--color-violet-desaturated-90, rgb(21, 20, 26)); --button-text-color-primary: #FFF; --button-text-color-primary-hover: #FFF; @@ -791,30 +788,6 @@ } } - @media (not (prefers-contrast)) and (-moz-pref('browser.nova.enabled')) { - // Nova gradient border - &.zap-border { - .main-content { - background: linear-gradient(96deg, #B89CFF 20.68%, #FF9565 79.34%) border-box border-area, image(var(--background-color-box)) padding-box; - border: 1px solid transparent; - } - } - - // Nova gradient shadow - &.zap-shadow { - .section-main::before { - content: ''; - position: absolute; - z-index: -1; - inset: 7px; - border-radius: 60px; - box-shadow: -12px -12px 70px 0 light-dark(#E7D9FF, rgba(99, 47, 200, 80%)), - 10px 10px 70px 0 light-dark(#FFD3B7, rgba(255, 138, 87, 80%)); - transition: var(--transition); - } - } - } - &.with-video { justify-content: center; background: none; @@ -1081,25 +1054,6 @@ margin: auto; pointer-events: none; } - - @media (not (prefers-contrast)) and (-moz-pref('browser.nova.enabled')) { - // Nova gradient border for split layout - &.zap-border { - &::before { - background: linear-gradient(96deg, #B89CFF 20.68%, #FF9565 79.34%) border-box border-area, image(var(--background-color-box)) padding-box; - border: 1px solid transparent; - } - } - - // Nova gradient shadow for split layout - &.zap-shadow { - &::before { - box-shadow: -12px -12px 70px 0 light-dark(#E7D9FF, rgba(99, 47, 200, 80%)), - 10px 10px 70px 0 light-dark(#FFD3B7, rgba(255, 138, 87, 80%)); - transition: var(--transition); - } - } - } } #content-tiles-container { @@ -2452,13 +2406,6 @@ top: -10px; line-height: 1; - @media (-moz-pref('browser.nova.enabled')) { - border-radius: var(--border-radius-xlarge); - right: 10px; - top: -12px; - align-content: center; - } - &.centered { /* stylelint-disable-next-line */ border-radius: 8px 8px 0 0; @@ -2471,27 +2418,12 @@ width: 100%; box-sizing: border-box; - @media (-moz-pref('browser.nova.enabled')) { - top: -5px; - align-content: center; - } - &.backup { /* stylelint-disable-next-line */ border-radius: 10px 10px 0 0; background-color: var(--picker-backup-flair-background); color: var(--picker-backup-flair-color); - @media (-moz-pref('browser.nova.enabled')) { - border-radius: var(--border-radius-xlarge); - background-color: var(--button-background-color-primary); - color: var(--button-text-color-primary); - padding-inline: 12px; - align-content: center; - top: -9px; - width: unset; - } - &.spacer { background-color: transparent; } diff -urN firefox-157.0-orig/browser/components/asrouter/modules/OnboardingMessageProvider.sys.mjs firefox-157.0/browser/components/asrouter/modules/OnboardingMessageProvider.sys.mjs --- firefox-157.0-orig/browser/components/asrouter/modules/OnboardingMessageProvider.sys.mjs 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/asrouter/modules/OnboardingMessageProvider.sys.mjs 2026-10-05 09:07:55 +0900 @@ -179,7 +179,7 @@ }, }, targeting: - "'browser.nova.enabled'|preferenceValue != true && source == 'app_menu' && os.isWindows && os.windowsVersion >= 10 && !isDefaultBrowser && !hasActiveEnterprisePolicies && 'browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features' | preferenceValue != false", + "false != true && source == 'app_menu' && os.isWindows && os.windowsVersion >= 10 && !isDefaultBrowser && !hasActiveEnterprisePolicies && 'browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features' | preferenceValue != false", trigger: { id: "menuOpened", }, @@ -232,7 +232,7 @@ }, }, targeting: - "'browser.nova.enabled'|preferenceValue != true && source == 'app_menu' && os.isMac && !isDefaultBrowser && !hasActiveEnterprisePolicies && 'browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features' | preferenceValue != false", + "false != true && source == 'app_menu' && os.isMac && !isDefaultBrowser && !hasActiveEnterprisePolicies && 'browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features' | preferenceValue != false", trigger: { id: "menuOpened", }, @@ -285,7 +285,7 @@ }, }, targeting: - "'browser.nova.enabled'|preferenceValue == true && source == 'app_menu' && os.isWindows && os.windowsVersion >= 10 && !isDefaultBrowser && !hasActiveEnterprisePolicies && 'browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features'| preferenceValue != false", + "'false == true && source == 'app_menu' && os.isWindows && os.windowsVersion >= 10 && !isDefaultBrowser && !hasActiveEnterprisePolicies && 'browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features'| preferenceValue != false", trigger: { id: "menuOpened", }, @@ -340,7 +340,7 @@ }, }, targeting: - "'browser.nova.enabled'|preferenceValue == true && source == 'app_menu' && os.isMac && !isDefaultBrowser && !hasActiveEnterprisePolicies && 'browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features'| preferenceValue != false", + "false == true && source == 'app_menu' && os.isMac && !isDefaultBrowser && !hasActiveEnterprisePolicies && 'browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features'| preferenceValue != false", trigger: { id: "menuOpened", }, diff -urN firefox-157.0-orig/browser/components/asrouter/tests/NimbusRolloutMessageProvider.sys.mjs firefox-157.0/browser/components/asrouter/tests/NimbusRolloutMessageProvider.sys.mjs --- firefox-157.0-orig/browser/components/asrouter/tests/NimbusRolloutMessageProvider.sys.mjs 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/asrouter/tests/NimbusRolloutMessageProvider.sys.mjs 2026-10-05 09:10:21 +0900 @@ -1298,7 +1298,7 @@ lifetime: 1, }, targeting: - "source == 'startup' && firefoxVersion >= 155 && firefoxVersion < 157 && 'browser.nova.enabled'|preferenceValue && !activeNotifications && !'messaging-system-action.novaEarlyAccess.gotIt'|preferenceValue && !'messaging-system-action.novaEarlyAccess.feedback'|preferenceValue", + "source == 'startup' && firefoxVersion >= 155 && firefoxVersion < 157 && false && !activeNotifications && !'messaging-system-action.novaEarlyAccess.gotIt'|preferenceValue && !'messaging-system-action.novaEarlyAccess.feedback'|preferenceValue", }, { // Nimbus slug: smart-window-whats-new-select-text:control diff -urN firefox-157.0-orig/browser/components/contextualidentity/content/briefcase.svg firefox-157.0/browser/components/contextualidentity/content/briefcase.svg --- firefox-157.0-orig/browser/components/contextualidentity/content/briefcase.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/contextualidentity/content/briefcase.svg 2026-10-05 08:45:31 +0900 @@ -5,10 +5,6 @@ .nova { display: none; } -@media -moz-pref("browser.nova.enabled") { - .proton { display: none; } - .nova { display: revert; } -} .nova { display: none; } -@media -moz-pref("browser.nova.enabled") { - .proton { display: none; } - .nova { display: revert; } -} diff -urN firefox-157.0-orig/browser/components/contextualidentity/content/container-select.css firefox-157.0/browser/components/contextualidentity/content/container-select.css --- firefox-157.0-orig/browser/components/contextualidentity/content/container-select.css 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/contextualidentity/content/container-select.css 2026-10-05 08:45:40 +0900 @@ -24,10 +24,3 @@ overflow: hidden; text-overflow: ellipsis; } - -@media -moz-pref("browser.nova.enabled") { - .select-option-icon, - panel-item[icon]::part(button) { - fill: var(--identity-fill-color); - } -} diff -urN firefox-157.0-orig/browser/components/contextualidentity/content/dollar.svg firefox-157.0/browser/components/contextualidentity/content/dollar.svg --- firefox-157.0-orig/browser/components/contextualidentity/content/dollar.svg 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/contextualidentity/content/dollar.svg 2026-10-05 08:45:29 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/components/contextualidentity/content/fingerprint.svg firefox-157.0/browser/components/contextualidentity/content/fingerprint.svg --- firefox-157.0-orig/browser/components/contextualidentity/content/fingerprint.svg 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/contextualidentity/content/fingerprint.svg 2026-10-05 08:45:21 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/components/contextualidentity/content/food.svg firefox-157.0/browser/components/contextualidentity/content/food.svg --- firefox-157.0-orig/browser/components/contextualidentity/content/food.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/contextualidentity/content/food.svg 2026-10-05 08:45:19 +0900 @@ -5,10 +5,6 @@ .toolbarbutton-icon { - box-sizing: content-box; - padding: var(--identity-icon-inset); - border-radius: var(--border-radius-circle); - background-color: var(--identity-fill-tint); - background-origin: content-box; - fill: var(--identity-fill-color); - } -} - .menuitem-iconic[data-usercontextid] { --menuitem-icon: var(--identity-icon); --menuitem-icon-fill: var(--identity-icon-color); - - /* When nova is enabled the container icon sits inside a round tinted - background, mirroring the about:preferences#containers list. */ - @media -moz-pref("browser.nova.enabled") { - --menuitem-icon-fill: var(--identity-fill-color); - - > .menu-icon { - width: var(--icon-size-large); - height: var(--icon-size-large); - padding: var(--identity-icon-inset); - border-radius: var(--border-radius-circle); - overflow-clip-margin: border-box; - background-color: var(--identity-fill-tint); - } - } } diff -urN firefox-157.0-orig/browser/components/contextualidentity/content/vacation.svg firefox-157.0/browser/components/contextualidentity/content/vacation.svg --- firefox-157.0-orig/browser/components/contextualidentity/content/vacation.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/contextualidentity/content/vacation.svg 2026-10-05 08:45:37 +0900 @@ -5,10 +5,6 @@ -40); // proton keeps the legacy literal on --identity-icon-color. const cssVar = novaEnabled diff -urN firefox-157.0-orig/browser/components/contextualidentity/test/browser/browser_switchTab_across_user_context.js firefox-157.0/browser/components/contextualidentity/test/browser/browser_switchTab_across_user_context.js --- firefox-157.0-orig/browser/components/contextualidentity/test/browser/browser_switchTab_across_user_context.js 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/contextualidentity/test/browser/browser_switchTab_across_user_context.js 2026-10-05 08:44:27 +0900 @@ -67,7 +67,7 @@ "Urlbar results contain the switch to tab from another container." ); let element = UrlbarTestUtils.getRowAt(window, resultIndex); - if (Services.prefs.getBoolPref("browser.nova.enabled", false)) { + if (false) { let chiclet = element.querySelector(".urlbarView-user-context"); Assert.ok(chiclet, "The user-context chiclet should exist"); Assert.ok( @@ -138,7 +138,7 @@ }); let row = UrlbarTestUtils.getRowAt(window, 1); - if (Services.prefs.getBoolPref("browser.nova.enabled", false)) { + if (false) { let chiclet = row.querySelector(".urlbarView-user-context"); Assert.ok(chiclet, "The user-context chiclet should exist"); Assert.ok( diff -urN firefox-157.0-orig/browser/components/controlcenter/content/components/breach-alert-panel.css firefox-157.0/browser/components/controlcenter/content/components/breach-alert-panel.css --- firefox-157.0-orig/browser/components/controlcenter/content/components/breach-alert-panel.css 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/controlcenter/content/components/breach-alert-panel.css 2026-10-05 08:33:15 +0900 @@ -21,14 +21,6 @@ gap: var(--space-small); align-self: stretch; border-radius: var(--border-radius-medium); - - @media -moz-pref("browser.nova.enabled") { - background-color: transparent; - align-items: flex-start; - gap: var(--space-medium); - border: 1px solid var(--border-color); - border-radius: var(--border-radius-large); - } } .main { @@ -37,10 +29,6 @@ align-items: center; gap: var(--space-large); align-self: stretch; - - @media -moz-pref("browser.nova.enabled") { - align-items: flex-start; - } } .content { @@ -61,17 +49,6 @@ } } -.fox-icon-legacy { - @media -moz-pref("browser.nova.enabled") { - display: none; - } -} - .shield-icon { display: none; - - @media -moz-pref("browser.nova.enabled") { - width: var(--size-image-medium); - display: revert; - } } diff -urN firefox-157.0-orig/browser/components/customizableui/CustomizableUI.sys.mjs firefox-157.0/browser/components/customizableui/CustomizableUI.sys.mjs --- firefox-157.0-orig/browser/components/customizableui/CustomizableUI.sys.mjs 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/customizableui/CustomizableUI.sys.mjs 2026-10-05 08:30:34 +0900 @@ -42,7 +42,6 @@ const kPrefDrawInTitlebar = "browser.tabs.inTitlebar"; const kPrefUIDensity = "browser.uidensity"; const kPrefAutoTouchMode = "browser.touchmode.auto"; -const kPrefNovaEnabled = "browser.nova.enabled"; const kPrefAutoHideDownloadsButton = "browser.download.autohideButton"; const kPrefProtonToolbarVersion = "browser.proton.toolbar.version"; const kPrefHomeButtonUsed = "browser.engagement.home-button.has-used"; @@ -466,7 +465,7 @@ .getDefaultBranch("") .setBoolPref( kPrefAutoTouchMode, - !Services.prefs.getBoolPref(kPrefNovaEnabled, false) + !false ); }, diff -urN firefox-157.0-orig/browser/components/customizableui/content/panelUI.js firefox-157.0/browser/components/customizableui/content/panelUI.js --- firefox-157.0-orig/browser/components/customizableui/content/panelUI.js 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/customizableui/content/panelUI.js 2026-10-05 08:29:53 +0900 @@ -468,10 +468,6 @@ this.updateNotifications(); break; case "click": { - let novaFxaButton = aEvent.target.closest("#appMenu-nova-fxa-label"); - if (novaFxaButton) { - gSync.toggleAccountPanel(novaFxaButton, aEvent); - } break; } case "command": @@ -868,34 +864,6 @@ } items.appendChild(fragment); - - if (Services.prefs.getBoolPref("browser.nova.enabled", false)) { - let switchDeviceButton = items.querySelector("#appMenu_helpSwitchDevice"); - if (switchDeviceButton) { - const HTML_NS = "http://www.w3.org/1999/xhtml"; - let novaPromo = document.createElementNS(HTML_NS, "moz-promo"); - novaPromo.id = "appMenu-nova-switch-device-promo"; - novaPromo.setAttribute("type", "vibrant"); - novaPromo.setAttribute( - "data-l10n-id", - "appmenu-nova-switch-device-promo" - ); - novaPromo.setAttribute("data-l10n-attrs", "message"); - - let link = document.createElementNS(HTML_NS, "a"); - link.id = "appMenu-nova-switch-device-link"; - link.slot = "support-link"; - link.href = "#"; - link.setAttribute("data-l10n-id", "appmenu-nova-switch-device-link"); - link.addEventListener("click", e => { - e.preventDefault(); - openSwitchingDevicesPage(); - }); - novaPromo.appendChild(link); - - switchDeviceButton.replaceWith(novaPromo); - } - } }, _onHelpCommand(aEvent) { @@ -1310,25 +1278,12 @@ messageIDs[notification.id] ); - const isNovaUpdateRestart = - notification.id === "update-restart" && - Services.prefs.getBoolPref("browser.nova.enabled", false); - // Drop the description in private windows const noDescription = - isNovaUpdateRestart && PrivateBrowsingUtils.isWindowPrivate(window); + PrivateBrowsingUtils.isWindowPrivate(window); this._panelBannerItem.toggleAttribute("no-description", noDescription); - if (isNovaUpdateRestart) { - this._panelBannerItem.setAttribute( - "aria-labelledby", - noDescription - ? "appMenu-update-banner-title" - : "appMenu-update-banner-title appMenu-update-banner-description" - ); - } else { this._panelBannerItem.removeAttribute("aria-labelledby"); - } this._panelBannerItem.setAttribute("notificationid", notification.id); this._panelBannerItem.hidden = false; diff -urN firefox-157.0-orig/browser/components/customizableui/test/browser.toml firefox-157.0/browser/components/customizableui/test/browser.toml --- firefox-157.0-orig/browser/components/customizableui/test/browser.toml 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/customizableui/test/browser.toml 2026-10-05 08:26:58 +0900 @@ -339,10 +339,6 @@ ["browser_newtab_button_customizemode.js"] -["browser_novaHelpSwitchDevicePromo.js"] - -["browser_novaHelpViewLayout.js"] - ["browser_open_from_popup.js"] ["browser_open_in_lazy_tab.js"] @@ -369,8 +365,6 @@ ["browser_panelUINotifications_multiWindow.js"] -["browser_panelUINotifications_novaUpdateBanner.js"] - ["browser_panel_keyboard_navigation.js"] skip-if = [ "nova", # Bug 2058027 @@ -461,10 +455,6 @@ "os == 'win'", ] -["browser_uidensity_auto_compact.js"] - -["browser_uidensity_auto_touch.js"] - ["browser_unified_extensions_reset.js"] ["browser_vertical_tabs_customize_navbar.js"] diff -urN firefox-157.0-orig/browser/components/customizableui/test/browser_970511_undo_restore_default.js firefox-157.0/browser/components/customizableui/test/browser_970511_undo_restore_default.js --- firefox-157.0-orig/browser/components/customizableui/test/browser_970511_undo_restore_default.js 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/customizableui/test/browser_970511_undo_restore_default.js 2026-10-05 08:25:41 +0900 @@ -12,8 +12,6 @@ await SpecialPowers.pushPrefEnv({ set: [ ["browser.compactmode.show", true], - // The density dropdown is only shown when Nova is disabled. - ["browser.nova.enabled", false], ], }); let stopReloadButtonId = "stop-reload-button"; diff -urN firefox-157.0-orig/browser/components/customizableui/test/browser_customizemode_uidensity.js firefox-157.0/browser/components/customizableui/test/browser_customizemode_uidensity.js --- firefox-157.0-orig/browser/components/customizableui/test/browser_customizemode_uidensity.js 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/customizableui/test/browser_customizemode_uidensity.js 2026-10-05 08:24:39 +0900 @@ -162,11 +162,6 @@ } add_task(async function test_touch_mode_menuitem() { - // The density dropdown is only shown when Nova is disabled. - await SpecialPowers.pushPrefEnv({ - set: [["browser.nova.enabled", false]], - }); - // browser.touchmode.auto's default tracks whether nova is enabled and is set // once at startup (see CustomizableUI._setAutoTouchModeDefault). Re-derive it // now that nova is forced off, so the "checked by default" and @@ -245,42 +240,6 @@ await endCustomizing(); await SpecialPowers.popPrefEnv(); }); - -// When Nova is enabled, a link to the Window Density section of -// about:preferences is shown instead of the density dropdown. -add_task(async function test_uidensity_link() { - await SpecialPowers.pushPrefEnv({ - set: [["browser.nova.enabled", true]], - }); - - await startCustomizing(); - - let button = document.getElementById("customization-uidensity-button"); - let link = document.getElementById("customization-uidensity-link"); - - ok(button.hidden, "The density dropdown button is hidden when Nova is on"); - ok(!link.hidden, "The density link is visible when Nova is on"); - - let waitForNewTab = BrowserTestUtils.waitForNewTab(gBrowser, url => - url.startsWith("about:preferences") - ); - link.click(); - let prefsTab = await waitForNewTab; - - ok( - gBrowser.currentURI.spec.startsWith("about:preferences#appearance"), - "The link opened about:preferences#appearance" - ); - BrowserTestUtils.removeTab(prefsTab); - - // Wait for customize mode to be re-entered now that the customize tab is - // active. This is needed for endCustomizing() to work properly. - await TestUtils.waitForCondition(() => - document.documentElement.hasAttribute("customizing") - ); - await endCustomizing(); - await SpecialPowers.popPrefEnv(); -}); add_task(async function cleanup() { await endCustomizing(); diff -urN firefox-157.0-orig/browser/components/customizableui/test/browser_help_panel_cloning.js firefox-157.0/browser/components/customizableui/test/browser_help_panel_cloning.js --- firefox-157.0-orig/browser/components/customizableui/test/browser_help_panel_cloning.js 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/customizableui/test/browser_help_panel_cloning.js 2026-10-05 08:27:26 +0900 @@ -50,7 +50,7 @@ // browser_novaHelpSwitchDevicePromo.js, so skip it here. if ( helpMenuPopupItem.id == "helpSwitchDevice" && - Services.prefs.getBoolPref("browser.nova.enabled", false) + false ) { info( "Skipping helpSwitchDevice: replaced by Nova promo " + diff -urN firefox-157.0-orig/browser/components/customizableui/test/browser_novaHelpSwitchDevicePromo.js firefox-157.0/browser/components/customizableui/test/browser_novaHelpSwitchDevicePromo.js --- firefox-157.0-orig/browser/components/customizableui/test/browser_novaHelpSwitchDevicePromo.js 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/customizableui/test/browser_novaHelpSwitchDevicePromo.js 1970-01-01 09:00:00 +0900 @@ -1,104 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - http://creativecommons.org/publicdomain/zero/1.0/ */ - -"use strict"; - -add_setup(async function () { - await SpecialPowers.pushPrefEnv({ set: [["browser.nova.enabled", true]] }); -}); - -registerCleanupFunction(async function () { - await SpecialPowers.popPrefEnv(); -}); - -async function openHelpView() { - await gCUITestUtils.openMainMenu(); - PanelUI.showHelpView(document.getElementById("PanelUI-menu-button")); - let helpView = document.getElementById("PanelUI-helpView"); - await BrowserTestUtils.waitForEvent(helpView, "ViewShowing"); - return helpView; -} - -add_task(async function testNovaPromoReplacesHelpSwitchDevice() { - let helpView = await openHelpView(); - - ok( - !helpView.querySelector("#appMenu_helpSwitchDevice"), - "appMenu_helpSwitchDevice should not be present when nova is enabled" - ); - - let promo = helpView.querySelector("#appMenu-nova-switch-device-promo"); - ok(promo, "Nova switch device promo should be present when nova is enabled"); - - await gCUITestUtils.hideMainMenu(); -}); - -add_task(async function testSwitchDeviceButtonPresentWithoutNova() { - await SpecialPowers.pushPrefEnv({ set: [["browser.nova.enabled", false]] }); - - let helpView = await openHelpView(); - - ok( - helpView.querySelector("#appMenu_helpSwitchDevice"), - "appMenu_helpSwitchDevice should be present when nova is disabled" - ); - ok( - !helpView.querySelector("#appMenu-nova-switch-device-promo"), - "Nova switch device promo should not be present when nova is disabled" - ); - - await gCUITestUtils.hideMainMenu(); - await SpecialPowers.popPrefEnv(); -}); - -add_task( - async function testNovaPromoSupportLinkCallsOpenSwitchingDevicesPage() { - let switchingDevicesPageOpened = false; - let originalFn = window.openSwitchingDevicesPage; - window.openSwitchingDevicesPage = () => { - switchingDevicesPageOpened = true; - }; - - let helpView = await openHelpView(); - - let link = helpView.querySelector("#appMenu-nova-switch-device-link"); - ok(link, "Nova switch device support link should exist"); - link.click(); - - ok( - switchingDevicesPageOpened, - "openSwitchingDevicesPage should be called when the support link is clicked" - ); - - window.openSwitchingDevicesPage = originalFn; - await gCUITestUtils.hideMainMenu(); - } -); - -add_task(async function testNovaPromoLinkOpensForegroundTab() { - await SpecialPowers.pushPrefEnv({ - set: [["app.support.baseURL", "https://example.com/support/"]], - }); - - let helpView = await openHelpView(); - - let tabPromise = BrowserTestUtils.waitForNewTab( - gBrowser, - url => url.startsWith("https://example.com/support/switching-devices"), - false - ); - helpView.querySelector("#appMenu-nova-switch-device-link").click(); - let tab = await tabPromise; - - Assert.equal( - gBrowser.selectedTab, - tab, - "The switching devices page should open in a foreground tab" - ); - - BrowserTestUtils.removeTab(tab); - if (PanelUI.panel.state == "open") { - await gCUITestUtils.hideMainMenu(); - } - await SpecialPowers.popPrefEnv(); -}); diff -urN firefox-157.0-orig/browser/components/customizableui/test/browser_novaHelpViewLayout.js firefox-157.0/browser/components/customizableui/test/browser_novaHelpViewLayout.js --- firefox-157.0-orig/browser/components/customizableui/test/browser_novaHelpViewLayout.js 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/customizableui/test/browser_novaHelpViewLayout.js 1970-01-01 09:00:00 +0900 @@ -1,173 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - http://creativecommons.org/publicdomain/zero/1.0/ */ - -"use strict"; - -/* global PanelUI */ - -add_setup(async function () { - // menu_referralsPage is hidden by default, but pin it so that a future - // default flip does not silently change the expected layout below. - await SpecialPowers.pushPrefEnv({ - set: [["browser.referrals.enabled", false]], - }); -}); - -async function openHelpView() { - await gCUITestUtils.openMainMenu(); - PanelUI.showHelpView(document.getElementById("PanelUI-menu-button")); - let helpView = document.getElementById("PanelUI-helpView"); - // ViewShown rather than ViewShowing: the tasks below measure geometry, and - // the view is not laid out yet at ViewShowing. - await BrowserTestUtils.waitForEvent(helpView, "ViewShown"); - return helpView; -} - -function getLayout(helpView) { - let items = helpView.querySelector(".panel-subview-body"); - return [...items.children].map(node => node.id || node.localName); -} - -function expectedLayout(lastItem) { - let expected = [ - "appMenu_menu_openHelp", - "appMenu_help_reportBrokenSite", - "appMenu_menu_HelpPopup_reportPhishingtoolmenu", - "toolbarseparator", - "appMenu_helpSafeMode", - "appMenu_troubleShooting", - "toolbarseparator", - "appMenu_feedbackPage", - lastItem, - ]; - // macOS relocates About into the native application menu, which leaves the - // last group empty and so drops its separator too. - if (!document.getElementById("aboutName").hidden) { - expected.push("toolbarseparator", "appMenu_aboutName"); - } - return expected; -} - -add_task(async function testHelpViewOrderWithNova() { - await SpecialPowers.pushPrefEnv({ set: [["browser.nova.enabled", true]] }); - - let helpView = await openHelpView(); - - Assert.deepEqual( - getLayout(helpView), - expectedLayout("appMenu-nova-switch-device-promo"), - "The Help and Report subview is grouped and ordered as designed" - ); - - await gCUITestUtils.hideMainMenu(); - await SpecialPowers.popPrefEnv(); -}); - -add_task(async function testHelpViewOrderWithoutNova() { - await SpecialPowers.pushPrefEnv({ set: [["browser.nova.enabled", false]] }); - - let helpView = await openHelpView(); - - // The layout is deliberately not gated on browser.nova.enabled, matching - // bug 2023762, so the only difference here is the promo not replacing - // the Switch device item. - Assert.deepEqual( - getLayout(helpView), - expectedLayout("appMenu_helpSwitchDevice"), - "The same layout applies when the Nova promo is not substituted in" - ); - - await gCUITestUtils.hideMainMenu(); - await SpecialPowers.popPrefEnv(); -}); - -add_task(async function testSeparatorsAreVisible() { - await SpecialPowers.pushPrefEnv({ set: [["browser.nova.enabled", true]] }); - - let helpView = await openHelpView(); - - let separators = helpView.querySelectorAll( - ".panel-subview-body > toolbarseparator" - ); - let expectedCount = expectedLayout("appMenu-nova-switch-device-promo").filter( - id => id == "toolbarseparator" - ).length; - Assert.equal( - separators.length, - expectedCount, - `${expectedCount} group separators were inserted` - ); - for (let separator of separators) { - Assert.ok(!separator.hidden, "The separator is not hidden"); - Assert.greater( - separator.getBoundingClientRect().height, - 0, - "The separator takes up vertical space" - ); - } - - await gCUITestUtils.hideMainMenu(); - await SpecialPowers.popPrefEnv(); -}); - -add_task(async function testReportBrokenSiteHasCaret() { - await SpecialPowers.pushPrefEnv({ set: [["browser.nova.enabled", true]] }); - - let helpView = await openHelpView(); - - let button = helpView.querySelector("#appMenu_help_reportBrokenSite"); - let content = getComputedStyle(button, "::after").content; - let expected = Services.locale.isAppLocaleRTL - ? "arrow-left.svg" - : "arrow-right.svg"; - Assert.ok( - content.includes(expected), - `Report Broken Site renders a subview caret, got ${content}` - ); - - await gCUITestUtils.hideMainMenu(); - await SpecialPowers.popPrefEnv(); -}); - -add_task(async function testNoSeparatorBeforePromo() { - await SpecialPowers.pushPrefEnv({ set: [["browser.nova.enabled", true]] }); - - let helpView = await openHelpView(); - - let promo = helpView.querySelector("#appMenu-nova-switch-device-promo"); - Assert.ok(promo, "The Nova switch device promo is present"); - Assert.equal( - promo.previousElementSibling.id, - "appMenu_feedbackPage", - "The promo sits directly below Share ideas and feedback" - ); - Assert.notEqual( - promo.previousElementSibling.localName, - "toolbarseparator", - "There is no divider between the feedback item and the promo" - ); - - await gCUITestUtils.hideMainMenu(); - await SpecialPowers.popPrefEnv(); -}); - -add_task(async function testUngroupedItemsAreAppendedLast() { - // Nothing lands in the fallback bucket by default, so add an item that no - // group lists to pin down where a future Help menu addition shows up. - let extra = document.createXULElement("menuitem"); - extra.id = "helpViewFallbackTestItem"; - extra.setAttribute("label", "Fallback test item"); - document.getElementById("menu_HelpPopup").appendChild(extra); - registerCleanupFunction(() => extra.remove()); - - let helpView = await openHelpView(); - - Assert.equal( - getLayout(helpView).at(-1), - "appMenu_helpViewFallbackTestItem", - "An item that no group lists is appended after the last group" - ); - - await gCUITestUtils.hideMainMenu(); - extra.remove(); -}); diff -urN firefox-157.0-orig/browser/components/customizableui/test/browser_panelUINotifications_novaUpdateBanner.js firefox-157.0/browser/components/customizableui/test/browser_panelUINotifications_novaUpdateBanner.js --- firefox-157.0-orig/browser/components/customizableui/test/browser_panelUINotifications_novaUpdateBanner.js 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/customizableui/test/browser_panelUINotifications_novaUpdateBanner.js 1970-01-01 09:00:00 +0900 @@ -1,121 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - http://creativecommons.org/publicdomain/zero/1.0/ */ - -"use strict"; - -const { AppMenuNotifications } = ChromeUtils.importESModule( - "resource://gre/modules/AppMenuNotifications.sys.mjs" -); - -add_setup(async function () { - await SpecialPowers.pushPrefEnv({ set: [["browser.nova.enabled", true]] }); -}); - -registerCleanupFunction(async function () { - await SpecialPowers.popPrefEnv(); -}); - -async function showBannerInNewWindow(notificationId) { - let win = await BrowserTestUtils.openNewBrowserWindow(); - AppMenuNotifications.showBadgeOnlyNotification(notificationId); - - let menuButton = win.document.getElementById("PanelUI-menu-button"); - let shown = BrowserTestUtils.waitForEvent(win.PanelUI.mainView, "ViewShown"); - menuButton.click(); - await shown; - - let banner = win.document.getElementById("appMenu-update-banner"); - await BrowserTestUtils.waitForMutationCondition( - banner, - { attributes: true, attributeFilter: ["notificationid", "hidden"] }, - () => - !banner.hidden && banner.getAttribute("notificationid") === notificationId - ); - - return { win, banner }; -} - -async function cleanup(win) { - AppMenuNotifications.removeNotification(/.*/); - await BrowserTestUtils.closeWindow(win); -} - -add_task(async function testUpdateRestartUsesAriaLabelledby() { - let { win, banner } = await showBannerInNewWindow("update-restart"); - - is( - banner.getAttribute("aria-labelledby"), - "appMenu-update-banner-title appMenu-update-banner-description", - "Banner should reference inline title + description via aria-labelledby" - ); - - let inner = banner.querySelector(".appMenu-update-banner-text"); - ok(inner, "Two-line text container should exist in markup"); - ok( - BrowserTestUtils.isVisible(inner), - "Two-line title/description should be visible for update-restart" - ); - - await cleanup(win); -}); - -add_task(async function testUpdateRestartClickCallsMainAction() { - let mainActionCalled = false; - let mainAction = { - callback: () => { - mainActionCalled = true; - }, - }; - - let win = await BrowserTestUtils.openNewBrowserWindow(); - AppMenuNotifications.showNotification("update-restart", mainAction, null, { - dismissed: true, - }); - - let menuButton = win.document.getElementById("PanelUI-menu-button"); - let shown = BrowserTestUtils.waitForEvent(win.PanelUI.mainView, "ViewShown"); - menuButton.click(); - await shown; - - let banner = win.document.getElementById("appMenu-update-banner"); - await BrowserTestUtils.waitForMutationCondition( - banner, - { attributes: true, attributeFilter: ["notificationid", "hidden"] }, - () => - !banner.hidden && - banner.getAttribute("notificationid") === "update-restart" - ); - - banner.click(); - ok(mainActionCalled, "Main action callback fires when the banner is clicked"); - - await cleanup(win); -}); - -add_task(async function testOtherUpdateStatesKeepLabel() { - for (let id of [ - "update-available", - "update-downloading", - "update-manual", - "update-unsupported", - ]) { - let { win, banner } = await showBannerInNewWindow(id); - - ok( - !banner.hasAttribute("aria-labelledby"), - `Banner should not set aria-labelledby for ${id}` - ); - ok( - banner.hasAttribute("data-l10n-id"), - `Banner should have data-l10n-id for ${id} under nova` - ); - - let inner = banner.querySelector(".appMenu-update-banner-text"); - ok( - !BrowserTestUtils.isVisible(inner), - `Two-line title/description should be hidden for ${id}` - ); - - await cleanup(win); - } -}); diff -urN firefox-157.0-orig/browser/components/customizableui/test/browser_uidensity_auto_compact.js firefox-157.0/browser/components/customizableui/test/browser_uidensity_auto_compact.js --- firefox-157.0-orig/browser/components/customizableui/test/browser_uidensity_auto_compact.js 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/customizableui/test/browser_uidensity_auto_compact.js 1970-01-01 09:00:00 +0900 @@ -1,550 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -"use strict"; - -// Tests the dynamic auto-compact behavior of gUIDensity, which overrides the -// uidensity to "compact" in small windows under nova, based on the -// browser.compactmode.auto.threshold pref (Bug 2044082). - -const PREF_UI_DENSITY = "browser.uidensity"; -const PREF_NOVA = "browser.nova.enabled"; -const PREF_THRESHOLD = "browser.compactmode.auto.threshold"; - -// Returns a threshold string strictly below the given ratio (so the -// corresponding auto-compact check fires), and one strictly above it (so the -// check does not fire). -function below(ratio) { - return String(ratio / 2); -} -function above(ratio) { - return String(ratio * 2); -} - -// The auto-compact height check is REFERENCE_HEIGHT / innerHeight > threshold. -// Compute the ratio for the given window so we can pick thresholds that -// deterministically flip the trigger regardless of the window's real size. -function heightRatio(win) { - return ( - win.gUIDensity.AUTO_COMPACT_REFERENCE_TABSTRIP_HEIGHT / win.innerHeight - ); -} - -async function withNewWindow(callback) { - let win = await BrowserTestUtils.openNewBrowserWindow(); - try { - await callback(win); - } finally { - await BrowserTestUtils.closeWindow(win); - } -} - -function isCompact(win) { - return win.document.documentElement.getAttribute("uidensity") == "compact"; -} - -// Reads a computed custom property off the window's root element. -function cssVar(win, name) { - return win - .getComputedStyle(win.document.documentElement) - .getPropertyValue(name) - .trim(); -} - -// Runs `callback` with only the collapsed-launcher width branch of -// _shouldAutoCompact() able to activate compact mode, so compact tracks the launcher -// state alone. Resizing the window narrow enough to cross the width threshold -// naturally isn't an option (resizeTo below the WM minimum width is unreliable -// in CI), so instead: -// - zero out the tabstrip height, which makes the height ratio 0 so -// that check can never exceed a threshold, and -// - increase the launcher width to the window's width, making the -// width ratio exactly 1, then pick a threshold below it. -async function withLauncherWidthCheckOnly(win, callback) { - let { gUIDensity } = win; - let originalRefHeight = gUIDensity.AUTO_COMPACT_REFERENCE_TABSTRIP_HEIGHT; - let originalRefWidth = - gUIDensity.AUTO_COMPACT_REFERENCE_SIDEBAR_LAUNCHER_WIDTH; - gUIDensity.AUTO_COMPACT_REFERENCE_TABSTRIP_HEIGHT = 0; - gUIDensity.AUTO_COMPACT_REFERENCE_SIDEBAR_LAUNCHER_WIDTH = win.innerWidth; - Services.prefs.setCharPref(PREF_THRESHOLD, below(1)); - try { - await callback(); - } finally { - gUIDensity.AUTO_COMPACT_REFERENCE_TABSTRIP_HEIGHT = originalRefHeight; - gUIDensity.AUTO_COMPACT_REFERENCE_SIDEBAR_LAUNCHER_WIDTH = originalRefWidth; - Services.prefs.clearUserPref(PREF_THRESHOLD); - } -} - -add_task(async function test_auto_compact_engages_in_small_window() { - await SpecialPowers.pushPrefEnv({ - set: [[PREF_NOVA, true]], - clear: [[PREF_UI_DENSITY]], - }); - - await withNewWindow(async win => { - let ratio = heightRatio(win); - Services.prefs.setCharPref(PREF_THRESHOLD, below(ratio)); - win.gUIDensity.update(); - - let density = win.gUIDensity.getCurrentDensity(); - is( - density.mode, - win.gUIDensity.MODE_COMPACT, - "Auto-compact engages when the tabstrip ratio exceeds the threshold" - ); - Assert.ok( - density.overridden, - "The compact density is reported as overridden" - ); - Assert.ok(isCompact(win), "The document is marked compact"); - }); - - Services.prefs.clearUserPref(PREF_THRESHOLD); - await SpecialPowers.popPrefEnv(); -}); - -add_task(async function test_auto_compact_disabled_above_threshold() { - await SpecialPowers.pushPrefEnv({ - set: [[PREF_NOVA, true]], - clear: [[PREF_UI_DENSITY]], - }); - - await withNewWindow(async win => { - let ratio = heightRatio(win); - Services.prefs.setCharPref(PREF_THRESHOLD, above(ratio)); - win.gUIDensity.update(); - - let density = win.gUIDensity.getCurrentDensity(); - is( - density.mode, - win.gUIDensity.MODE_NORMAL, - "Auto-compact does not engage when the ratio is below the threshold" - ); - Assert.ok(!density.overridden, "The density is not reported as overridden"); - Assert.ok(!isCompact(win), "The document is not marked compact"); - }); - - Services.prefs.clearUserPref(PREF_THRESHOLD); - await SpecialPowers.popPrefEnv(); -}); - -add_task(async function test_user_uidensity_disables_auto_compact() { - await withNewWindow(async win => { - let ratio = heightRatio(win); - await SpecialPowers.pushPrefEnv({ - set: [ - [PREF_NOVA, true], - // A triggering threshold, but the user has explicitly chosen a - // (non-default) uidensity, which must win over auto-compact. - [PREF_THRESHOLD, below(ratio)], - [PREF_UI_DENSITY, win.gUIDensity.MODE_TOUCH], - ], - }); - - win.gUIDensity.update(); - - let density = win.gUIDensity.getCurrentDensity(); - is( - density.mode, - win.gUIDensity.MODE_TOUCH, - "Auto-compact is skipped when the user has chosen a uidensity value" - ); - Assert.ok(!density.overridden, "The density is not reported as overridden"); - Assert.ok(!isCompact(win), "The document is not marked compact"); - - await SpecialPowers.popPrefEnv(); - }); -}); - -add_task(async function test_threshold_zero_disables_auto_compact() { - await SpecialPowers.pushPrefEnv({ - set: [ - [PREF_NOVA, true], - [PREF_THRESHOLD, "0"], - ], - clear: [[PREF_UI_DENSITY]], - }); - - await withNewWindow(async win => { - win.gUIDensity.update(); - is( - win.gUIDensity.getCurrentDensity().mode, - win.gUIDensity.MODE_NORMAL, - "A threshold of zero disables auto-compact entirely" - ); - Assert.ok(!isCompact(win), "The document is not marked compact"); - }); - - await SpecialPowers.popPrefEnv(); -}); - -add_task(async function test_nova_disabled_disables_auto_compact() { - await SpecialPowers.pushPrefEnv({ - set: [[PREF_NOVA, false]], - clear: [[PREF_UI_DENSITY]], - }); - - await withNewWindow(async win => { - let ratio = heightRatio(win); - Services.prefs.setCharPref(PREF_THRESHOLD, below(ratio)); - win.gUIDensity.update(); - - is( - win.gUIDensity.getCurrentDensity().mode, - win.gUIDensity.MODE_NORMAL, - "Auto-compact does not engage when nova is disabled" - ); - Assert.ok(!isCompact(win), "The document is not marked compact"); - }); - - Services.prefs.clearUserPref(PREF_THRESHOLD); - await SpecialPowers.popPrefEnv(); -}); - -add_task(async function test_threshold_change_reevaluates() { - await SpecialPowers.pushPrefEnv({ - set: [[PREF_NOVA, true]], - clear: [[PREF_UI_DENSITY]], - }); - - await withNewWindow(async win => { - let ratio = heightRatio(win); - - // Start above the threshold: not compact. - Services.prefs.setCharPref(PREF_THRESHOLD, above(ratio)); - await TestUtils.waitForCondition( - () => !isCompact(win), - "Window starts non-compact above the threshold" - ); - - // Lowering the threshold under the ratio should engage compact via the - // pref observer, without an explicit update() call. - Services.prefs.setCharPref(PREF_THRESHOLD, below(ratio)); - await TestUtils.waitForCondition( - () => isCompact(win), - "Lowering the threshold re-evaluates and engages compact" - ); - - // Raising it back should disengage compact. - Services.prefs.setCharPref(PREF_THRESHOLD, above(ratio)); - await TestUtils.waitForCondition( - () => !isCompact(win), - "Raising the threshold re-evaluates and disengages compact" - ); - }); - - Services.prefs.clearUserPref(PREF_THRESHOLD); - await SpecialPowers.popPrefEnv(); -}); - -// A resize triggers update() only when auto-compact could change the density. -// When it can't apply, resizing can't affect density, so update() is skipped -// to keep the resize hot path cheap (bug 2049353). -function resizeCallsUpdate(win) { - let original = win.gUIDensity.update; - let called = false; - win.gUIDensity.update = function (...args) { - called = true; - return original.apply(this, args); - }; - try { - win.dispatchEvent(new win.Event("resize")); - return called; - } finally { - win.gUIDensity.update = original; - } -} - -add_task( - async function test_resize_triggers_update_when_auto_compact_applies() { - await SpecialPowers.pushPrefEnv({ - set: [[PREF_NOVA, true]], - clear: [[PREF_UI_DENSITY]], - }); - - await withNewWindow(async win => { - Assert.ok( - resizeCallsUpdate(win), - "A resize triggers update() when auto-compact can apply" - ); - }); - - await SpecialPowers.popPrefEnv(); - } -); - -add_task( - async function test_resize_skips_update_when_auto_compact_inapplicable() { - await SpecialPowers.pushPrefEnv({ - set: [[PREF_NOVA, false]], - clear: [[PREF_UI_DENSITY]], - }); - - await withNewWindow(async win => { - Assert.ok( - !resizeCallsUpdate(win), - "A resize skips update() when auto-compact can't apply (nova disabled)" - ); - }); - - await SpecialPowers.popPrefEnv(); - } -); - -add_task(async function test_resize_skips_update_with_user_uidensity() { - await SpecialPowers.pushPrefEnv({ - set: [ - [PREF_NOVA, true], - // A non-default (touch) value so prefHasUserValue() is unambiguously true. - [PREF_UI_DENSITY, 2], - ], - }); - - await withNewWindow(async win => { - Assert.ok( - !resizeCallsUpdate(win), - "A resize skips update() when the user has chosen a uidensity value" - ); - }); - - await SpecialPowers.popPrefEnv(); -}); - -// Regression test for bug 2047330: update() runs on every window resize, but -// must only notify consumers (the urlbar view and tabstrip listen for -// uidensitychanged) when the resolved density actually changes. Otherwise the -// view and tabstrip flicker continuously while the window is resized. -add_task(async function test_uidensitychanged_only_on_actual_change() { - await withNewWindow(async win => { - win.gUIDensity.update(win.gUIDensity.MODE_NORMAL); - - let count = 0; - let listener = () => count++; - win.addEventListener("uidensitychanged", listener); - try { - // Re-applying the same mode must not notify consumers. - win.gUIDensity.update(win.gUIDensity.MODE_NORMAL); - Assert.equal(count, 0, "No uidensitychanged when the mode is unchanged"); - - // An actual change notifies exactly once. - win.gUIDensity.update(win.gUIDensity.MODE_COMPACT); - Assert.equal( - count, - 1, - "uidensitychanged fires once when the mode changes" - ); - - // Re-applying the new mode must not notify again. - win.gUIDensity.update(win.gUIDensity.MODE_COMPACT); - Assert.equal( - count, - 1, - "No uidensitychanged when re-applying the same mode" - ); - } finally { - win.removeEventListener("uidensitychanged", listener); - win.gUIDensity.update(win.gUIDensity.MODE_NORMAL); - } - }); -}); - -// Resize events that don't change the resolved density must not re-dispatch -// uidensitychanged. This reproduces the bug 2047330 STR (resizing the window) -// at the event level. -add_task(async function test_resize_without_change_does_not_redispatch() { - await SpecialPowers.pushPrefEnv({ - set: [[PREF_NOVA, false]], - clear: [[PREF_UI_DENSITY]], - }); - - await withNewWindow(async win => { - // Settle on a stable density that a resize cannot change (nova off). - win.gUIDensity.update(); - - let dispatched = false; - let listener = () => { - dispatched = true; - }; - win.addEventListener("uidensitychanged", listener); - try { - for (let i = 0; i < 5; i++) { - win.dispatchEvent(new win.Event("resize")); - } - Assert.ok( - !dispatched, - "uidensitychanged is not dispatched on resize when density is unchanged" - ); - } finally { - win.removeEventListener("uidensitychanged", listener); - } - }); - - await SpecialPowers.popPrefEnv(); -}); - -add_task(async function test_sidebar_launcher_collapsed_requires_revamp() { - await withNewWindow(async win => { - await SpecialPowers.pushPrefEnv({ - set: [["sidebar.revamp", false]], - }); - Assert.ok( - !win.gUIDensity._isSidebarLauncherCollapsed(), - "The collapsed-launcher check is false when sidebar.revamp is disabled" - ); - await SpecialPowers.popPrefEnv(); - }); -}); - -add_task(async function test_collapsed_launcher_width_triggers_compact() { - await SpecialPowers.pushPrefEnv({ - set: [ - [PREF_NOVA, true], - ["sidebar.revamp", true], - ["sidebar.verticalTabs", true], - ], - clear: [[PREF_UI_DENSITY]], - }); - - await withNewWindow(async win => { - await TestUtils.waitForCondition( - () => win.SidebarController?.initialized, - "SidebarController is initialized" - ); - - // Put the launcher in its visible-but-collapsed state explicitly rather - // than relying on the default, which can be overridden by persisted state. - win.SidebarController._state.launcherVisible = true; - win.SidebarController._state.launcherExpanded = false; - - Assert.ok( - win.gUIDensity._isSidebarLauncherCollapsed(), - "The launcher is visible and collapsed" - ); - - await withLauncherWidthCheckOnly(win, async () => { - win.gUIDensity.update(); - Assert.ok( - isCompact(win), - "Compact engages via the collapsed-launcher width check" - ); - - // Expanding the launcher removes the collapsed condition, so compact - // should disengage since the height check can't engage it. - win.SidebarController._state.launcherExpanded = true; - win.gUIDensity.update(); - Assert.ok( - !isCompact(win), - "Compact disengages once the launcher is expanded" - ); - - win.SidebarController._state.launcherExpanded = false; - }); - }); - - await SpecialPowers.popPrefEnv(); -}); - -add_task(async function test_closing_sidebar_disengages_compact() { - await SpecialPowers.pushPrefEnv({ - set: [ - [PREF_NOVA, true], - ["sidebar.revamp", true], - ["sidebar.verticalTabs", false], - ["sidebar.visibility", "hide-on-close"], - ], - clear: [[PREF_UI_DENSITY]], - }); - - await withNewWindow(async win => { - await TestUtils.waitForCondition( - () => win.SidebarController?.initialized, - "SidebarController is initialized" - ); - - // Start from the STR's state: sidebar closed, launcher not showing. - win.SidebarController._state.launcherVisible = false; - - await withLauncherWidthCheckOnly(win, async () => { - await TestUtils.waitForCondition( - () => !isCompact(win), - "Window starts non-compact with the launcher hidden" - ); - Assert.ok(!isCompact(win), "Not compact while the sidebar is closed"); - - await win.SidebarController.show("viewHistorySidebar"); - await TestUtils.waitForCondition( - () => isCompact(win), - "Compact engages when the panel makes the collapsed launcher visible" - ); - Assert.ok(isCompact(win), "Compact engages when the panel opens"); - - win.SidebarController.hide(); - await TestUtils.waitForCondition( - () => !isCompact(win), - "Compact disengages once the panel is closed and the launcher hidden" - ); - Assert.ok(!isCompact(win), "Compact disengages when the panel closes"); - }); - }); - - await SpecialPowers.popPrefEnv(); -}); - -// The expand-on-hover launcher is absolutely positioned while expanded, so it -// keeps reserving only its collapsed width. Compact must not flip on and off as -// the pointer enters and leaves the launcher. -add_task(async function test_expand_on_hover_keeps_compact() { - await SpecialPowers.pushPrefEnv({ - set: [ - [PREF_NOVA, true], - ["sidebar.revamp", true], - ["sidebar.verticalTabs", true], - ["sidebar.visibility", "expand-on-hover"], - ], - clear: [[PREF_UI_DENSITY]], - }); - - await withNewWindow(async win => { - await TestUtils.waitForCondition( - () => win.SidebarController?.initialized, - "SidebarController is initialized" - ); - - win.SidebarController._state.launcherVisible = true; - win.SidebarController._state.launcherExpanded = false; - - await withLauncherWidthCheckOnly(win, async () => { - await TestUtils.waitForCondition( - () => isCompact(win), - "Compact engages via the collapsed-launcher width check" - ); - - win.SidebarController._state.launcherExpanded = true; - await TestUtils.waitForCondition( - () => win.SidebarController._state.launcherExpanded, - "The launcher reports itself expanded" - ); - Assert.ok( - win.gUIDensity._isSidebarLauncherCollapsed(), - "A hover-expanded launcher still counts as collapsed" - ); - Assert.ok(isCompact(win), "Compact stays engaged while hover-expanded"); - - win.SidebarController._state.launcherExpanded = false; - Assert.ok(isCompact(win), "Compact stays engaged once un-hovered"); - }); - }); - - await SpecialPowers.popPrefEnv(); -}); - -registerCleanupFunction(() => { - // Enabling sidebar.revamp introduces the sidebar button as a side effect, - // which persists this pref; clear it so we don't leak a changed pref. - Services.prefs.clearUserPref( - "browser.toolbarbuttons.introduced.sidebar-button" - ); -}); diff -urN firefox-157.0-orig/browser/components/customizableui/test/browser_uidensity_auto_touch.js firefox-157.0/browser/components/customizableui/test/browser_uidensity_auto_touch.js --- firefox-157.0-orig/browser/components/customizableui/test/browser_uidensity_auto_touch.js 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/customizableui/test/browser_uidensity_auto_touch.js 1970-01-01 09:00:00 +0900 @@ -1,308 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -"use strict"; - -const PREF_UI_DENSITY = "browser.uidensity"; -const PREF_NOVA = "browser.nova.enabled"; -const PREF_AUTO_TOUCH = "browser.touchmode.auto"; -const PREF_THRESHOLD = "browser.compactmode.auto.threshold"; - -const gUIDensity = window.gUIDensity; - -// CustomizableUI owns the startup logic that sets browser.touchmode.auto's -// default based on nova (see _setAutoTouchModeDefault). Reach it to re-derive -// the default on demand for the default-value assertions below. -const CustomizableUIInternal = CustomizableUI.getTestOnlyInternalProp( - "CustomizableUIInternal" -); - -async function withTabletMode({ prefs, inTablet }, callback) { - let original = gUIDensity._inTabletMode; - gUIDensity._inTabletMode = () => inTablet; - await SpecialPowers.pushPrefEnv(prefs); - try { - gUIDensity.update(); - await callback(); - } finally { - gUIDensity._inTabletMode = original; - await SpecialPowers.popPrefEnv(); - gUIDensity.update(); - } -} - -function isTouch() { - return document.documentElement.getAttribute("uidensity") == "touch"; -} - -add_task(async function test_startup_default_reflects_nova() { - is( - Services.prefs.getDefaultBranch("").getBoolPref(PREF_AUTO_TOUCH), - !Services.prefs.getBoolPref(PREF_NOVA, false), - "browser.touchmode.auto default is the inverse of the nova value" - ); -}); - -add_task(async function test_automatic_switches_to_touch_in_tablet_mode() { - await withTabletMode( - { - // The auto-touch checkbox is off: automatic must still switch to touch. - prefs: { - set: [ - [PREF_NOVA, true], - [PREF_THRESHOLD, "0"], - [PREF_AUTO_TOUCH, false], - ], - clear: [[PREF_UI_DENSITY]], - }, - inTablet: true, - }, - () => { - let density = gUIDensity.getCurrentDensity(); - is( - density.mode, - gUIDensity.MODE_TOUCH, - "Automatic density switches to touch in tablet mode even when " + - "browser.touchmode.auto is false" - ); - Assert.ok( - density.overridden, - "The touch density is reported as overridden" - ); - Assert.ok(isTouch(), "The document is marked touch"); - } - ); -}); - -add_task(async function test_automatic_touch_leaves_tablet_mode() { - await withTabletMode( - { - prefs: { - set: [ - [PREF_NOVA, true], - [PREF_THRESHOLD, "0"], - [PREF_AUTO_TOUCH, false], - ], - clear: [[PREF_UI_DENSITY]], - }, - inTablet: false, - }, - () => { - let density = gUIDensity.getCurrentDensity(); - is( - density.mode, - gUIDensity.MODE_NORMAL, - "Automatic density is normal when not in tablet mode" - ); - Assert.ok( - !density.overridden, - "The density is not reported as overridden" - ); - Assert.ok(!isTouch(), "The document is not marked touch"); - } - ); -}); - -add_task(async function test_standard_ignores_tablet_mode_without_optin() { - await withTabletMode( - { - // Standard is an explicit uidensity value (MODE_NORMAL), so it is not - // "automatic" and must not switch to touch unless the user opted in. - prefs: { - set: [ - [PREF_NOVA, true], - [PREF_THRESHOLD, "0"], - [PREF_UI_DENSITY, 0], - [PREF_AUTO_TOUCH, false], - ], - }, - inTablet: true, - }, - () => { - let density = gUIDensity.getCurrentDensity(); - is( - density.mode, - gUIDensity.MODE_NORMAL, - "Standard density stays normal in tablet mode without the opt-in" - ); - Assert.ok( - !density.overridden, - "The density is not reported as overridden" - ); - Assert.ok(!isTouch(), "The document is not marked touch"); - } - ); -}); - -add_task(async function test_standard_optin_switches_to_touch_in_tablet_mode() { - await withTabletMode( - { - // The user opted into auto-touch-mode for the standard density. - prefs: { - set: [ - [PREF_NOVA, true], - [PREF_THRESHOLD, "0"], - [PREF_UI_DENSITY, 0], - [PREF_AUTO_TOUCH, true], - ], - }, - inTablet: true, - }, - () => { - let density = gUIDensity.getCurrentDensity(); - is( - density.mode, - gUIDensity.MODE_TOUCH, - "Standard density switches to touch in tablet mode when the user " + - "opted into auto-touch-mode" - ); - Assert.ok( - density.overridden, - "The touch density is reported as overridden" - ); - Assert.ok(isTouch(), "The document is marked touch"); - } - ); -}); - -add_task(async function test_auto_touch_ignored_for_explicit_compact() { - await withTabletMode( - { - // Compact is an explicit choice. The auto-touch-mode pref is the standard - // density's opt-in, so it must not override compact to touch even when on. - prefs: { - set: [ - [PREF_NOVA, true], - [PREF_THRESHOLD, "0"], - [PREF_UI_DENSITY, 1], - [PREF_AUTO_TOUCH, true], - ], - }, - inTablet: true, - }, - () => { - let density = gUIDensity.getCurrentDensity(); - is( - density.mode, - gUIDensity.MODE_COMPACT, - "Explicit compact stays compact in tablet mode even with " + - "browser.touchmode.auto enabled" - ); - Assert.ok( - !density.overridden, - "The density is not reported as overridden" - ); - Assert.ok(!isTouch(), "The document is not marked touch"); - } - ); -}); - -add_task(async function test_explicit_touchmode_pref_without_nova() { - await withTabletMode( - { - // Without nova there is no "Automatic" density, so tablet-mode touch is - // driven purely by the auto-touch-mode pref. Here it is explicitly off. - prefs: { - set: [ - [PREF_NOVA, false], - [PREF_THRESHOLD, "0"], - [PREF_AUTO_TOUCH, false], - ], - clear: [[PREF_UI_DENSITY]], - }, - inTablet: true, - }, - async () => { - is( - gUIDensity.getCurrentDensity().mode, - gUIDensity.MODE_NORMAL, - "Without nova, tablet mode does not switch to touch when " + - "browser.touchmode.auto is explicitly false" - ); - Assert.ok(!isTouch(), "The document is not marked touch"); - - // Turning it on switches to touch without nova. - await SpecialPowers.pushPrefEnv({ set: [[PREF_AUTO_TOUCH, true]] }); - gUIDensity.update(); - is( - gUIDensity.getCurrentDensity().mode, - gUIDensity.MODE_TOUCH, - "Without nova, enabling browser.touchmode.auto switches to touch" - ); - Assert.ok(isTouch(), "The document is marked touch"); - await SpecialPowers.popPrefEnv(); - } - ); -}); - -add_task(async function test_auto_touch_default_follows_nova() { - const defaultBranch = Services.prefs.getDefaultBranch(""); - const original = defaultBranch.getBoolPref(PREF_AUTO_TOUCH); - registerCleanupFunction(() => - defaultBranch.setBoolPref(PREF_AUTO_TOUCH, original) - ); - - await SpecialPowers.pushPrefEnv({ set: [[PREF_NOVA, false]] }); - CustomizableUIInternal._setAutoTouchModeDefault(); - is( - defaultBranch.getBoolPref(PREF_AUTO_TOUCH), - true, - "browser.touchmode.auto defaults on when nova is disabled" - ); - await SpecialPowers.popPrefEnv(); - - await SpecialPowers.pushPrefEnv({ set: [[PREF_NOVA, true]] }); - CustomizableUIInternal._setAutoTouchModeDefault(); - is( - defaultBranch.getBoolPref(PREF_AUTO_TOUCH), - false, - "browser.touchmode.auto defaults off when nova is enabled" - ); - await SpecialPowers.popPrefEnv(); - - CustomizableUIInternal._setAutoTouchModeDefault(); -}); - -add_task(async function test_non_nova_default_switches_to_touch_in_tablet() { - const defaultBranch = Services.prefs.getDefaultBranch(""); - const original = defaultBranch.getBoolPref(PREF_AUTO_TOUCH); - registerCleanupFunction(() => - defaultBranch.setBoolPref(PREF_AUTO_TOUCH, original) - ); - - await withTabletMode( - { - // No explicit browser.touchmode.auto user value: rely on the nova-derived - // default (on, pre-nova). - prefs: { - set: [ - [PREF_NOVA, false], - [PREF_THRESHOLD, "0"], - ], - clear: [[PREF_UI_DENSITY], [PREF_AUTO_TOUCH]], - }, - inTablet: true, - }, - () => { - CustomizableUIInternal._setAutoTouchModeDefault(); - is( - Services.prefs.getBoolPref(PREF_AUTO_TOUCH), - true, - "Pre-nova, browser.touchmode.auto is on by default" - ); - gUIDensity.update(); - let density = gUIDensity.getCurrentDensity(); - is( - density.mode, - gUIDensity.MODE_TOUCH, - "Pre-nova auto-switches to touch in tablet mode with the default pref" - ); - Assert.ok( - density.overridden, - "The touch density is reported as overridden" - ); - Assert.ok(isTouch(), "The document is marked touch"); - } - ); -}); diff -urN firefox-157.0-orig/browser/components/extensions/extension-popup-panel.css firefox-157.0/browser/components/extensions/extension-popup-panel.css --- firefox-157.0-orig/browser/components/extensions/extension-popup-panel.css 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/extensions/extension-popup-panel.css 2026-10-05 08:24:16 +0900 @@ -5,15 +5,6 @@ body { border-radius: 8px; - @media -moz-pref("browser.nova.enabled") { - /* TODO: Look into generating this CSS based on the Design Tokens - * to ensure the border radius is automatically kept in sync with - * the Design Tokens json data. */ - - /* NOTE: keep in sync with --popup-border-radius */ - border-radius: 24px; - } - @media (-moz-platform: linux) and (not (-moz-gtk-csd-transparency-available)) { /* NOTE: keep in sync with the Linux CSD-transparency exception in * toolkit/themes/shared/popup.css: some linux WMs can't draw diff -urN firefox-157.0-orig/browser/components/extensions/test/browser/browser_ext_popup_corners.js firefox-157.0/browser/components/extensions/test/browser/browser_ext_popup_corners.js --- firefox-157.0-orig/browser/components/extensions/test/browser/browser_ext_popup_corners.js 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/extensions/test/browser/browser_ext_popup_corners.js 2026-10-05 08:23:51 +0900 @@ -1,10 +1,7 @@ "use strict"; // Nova being enabled changes some of the styling that is being tested here. -const novaEnabled = Services.prefs.getBoolPref( - "browser.nova.enabled", - true // If the pref isn't set to false assume Nova styles are enabled by default. -); +const novaEnabled = false; info(`Run with Nova browser styles ${novaEnabled ? "enabled" : "disabled"}`); diff -urN firefox-157.0-orig/browser/components/firefoxview/SyncedTabsController.sys.mjs firefox-157.0/browser/components/firefoxview/SyncedTabsController.sys.mjs --- firefox-157.0-orig/browser/components/firefoxview/SyncedTabsController.sys.mjs 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/firefoxview/SyncedTabsController.sys.mjs 2026-10-05 08:53:13 +0900 @@ -251,7 +251,7 @@ #getMessageCardForState({ error = false, action, errorState }) { errorState = errorState || this.errorState; - const nova = Services.prefs.getBoolPref("browser.nova.enabled", false); + const nova = false; let header, description, descriptionLink, buttonLabel, mainImageUrl; let descriptionArray; if (error) { diff -urN firefox-157.0-orig/browser/components/firefoxview/chats.mjs firefox-157.0/browser/components/firefoxview/chats.mjs --- firefox-157.0-orig/browser/components/firefoxview/chats.mjs 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/firefoxview/chats.mjs 2026-10-05 08:46:20 +0900 @@ -233,7 +233,7 @@ const descriptionHeader = "firefoxview-chats-empty-header"; const descriptionLabels = ["firefoxview-chats-empty-description"]; - let asset = Services.prefs.getBoolPref("browser.nova.enabled", false) + let asset = false ? "chrome://browser/skin/sidebar/kit-page-history.svg" : "chrome://browser/content/firefoxview/history-empty.svg"; diff -urN firefox-157.0-orig/browser/components/firefoxview/firefox-view-synced-tabs-error-handler.sys.mjs firefox-157.0/browser/components/firefoxview/firefox-view-synced-tabs-error-handler.sys.mjs --- firefox-157.0-orig/browser/components/firefoxview/firefox-view-synced-tabs-error-handler.sys.mjs 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/firefoxview/firefox-view-synced-tabs-error-handler.sys.mjs 2026-10-05 08:53:22 +0900 @@ -91,7 +91,7 @@ }, getFluentStringsForErrorType(type) { - const mappings = Services.prefs.getBoolPref("browser.nova.enabled", false) + const mappings = false ? this._novaErrorStateStringMappings : this._errorStateStringMappings; return Object.freeze(mappings[type]); diff -urN firefox-157.0-orig/browser/components/firefoxview/firefoxview.css firefox-157.0/browser/components/firefoxview/firefoxview.css --- firefox-157.0-orig/browser/components/firefoxview/firefoxview.css 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/firefoxview/firefoxview.css 2026-10-05 08:46:09 +0900 @@ -37,12 +37,10 @@ color-scheme: dark; } - @media not -moz-pref("browser.nova.enabled") { /* ensure utility button hover states match those of the rest of the page */ --button-background-color-hover: var(--fxview-element-background-hover); --button-background-color-active: var(--fxview-element-background-active); --button-text-color-hover: var(--fxview-text-color-hover); - } } @media (forced-colors) { @@ -156,7 +154,6 @@ min-width: 250px; } - @media not (-moz-pref("browser.nova.enabled")) { /* center align the empty state image */ &.recentlyclosed::part(image-container) { margin-inline-start: 50px; @@ -166,5 +163,4 @@ &.recentlyclosed::part(main) { padding-inline-start: 50px; } - } } diff -urN firefox-157.0-orig/browser/components/firefoxview/fxview-empty-state.css firefox-157.0/browser/components/firefoxview/fxview-empty-state.css --- firefox-157.0-orig/browser/components/firefoxview/fxview-empty-state.css 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/firefoxview/fxview-empty-state.css 2026-10-05 08:47:12 +0900 @@ -84,7 +84,6 @@ /* Restore the legacy emphasized heading and tighter title spacing when the * sidebar/Firefox View redesign is disabled. */ -@media not -moz-pref("browser.nova.enabled") { .header { font-weight: var(--font-weight-heading); } @@ -92,7 +91,6 @@ .description { margin-block-start: 4px; } -} .main a { color: var(--fxview-primary-action-background); diff -urN firefox-157.0-orig/browser/components/firefoxview/history.mjs firefox-157.0/browser/components/firefoxview/history.mjs --- firefox-157.0-orig/browser/components/firefoxview/history.mjs 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/firefoxview/history.mjs 2026-10-05 08:47:24 +0900 @@ -353,7 +353,7 @@ } #emptyMessageTemplate() { - const nova = Services.prefs.getBoolPref("browser.nova.enabled", false); + const nova = false; let descriptionHeader; let descriptionLabels; let descriptionLink; diff -urN firefox-157.0-orig/browser/components/firefoxview/opentabs-tab-row.css firefox-157.0/browser/components/firefoxview/opentabs-tab-row.css --- firefox-157.0-orig/browser/components/firefoxview/opentabs-tab-row.css 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/firefoxview/opentabs-tab-row.css 2026-10-05 08:45:48 +0900 @@ -80,19 +80,6 @@ background-size: cover; -moz-context-properties: fill; fill: var(--identity-icon-color); - - /* Match the container context-menu items: fill-color icon inside a round - 15% tinted background. */ - @media -moz-pref("browser.nova.enabled") { - box-sizing: content-box; - padding: var(--identity-icon-inset); - border-radius: var(--border-radius-circle); - background-color: var(--identity-fill-tint); - background-origin: content-box; - background-repeat: no-repeat; - background-position: center; - fill: var(--identity-fill-color); - } } .fxview-tab-row-main { diff -urN firefox-157.0-orig/browser/components/firefoxview/recentlyclosed.mjs firefox-157.0/browser/components/firefoxview/recentlyclosed.mjs --- firefox-157.0-orig/browser/components/firefoxview/recentlyclosed.mjs 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/firefoxview/recentlyclosed.mjs 2026-10-05 08:46:00 +0900 @@ -307,7 +307,7 @@ } emptyMessageTemplate() { - const nova = Services.prefs.getBoolPref("browser.nova.enabled", false); + const nova = false; let descriptionHeader; let descriptionLabels; let descriptionLink; diff -urN firefox-157.0-orig/browser/components/firefoxview/tests/browser/browser_history_firefoxview.js firefox-157.0/browser/components/firefoxview/tests/browser/browser_history_firefoxview.js --- firefox-157.0-orig/browser/components/firefoxview/tests/browser/browser_history_firefoxview.js 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/firefoxview/tests/browser/browser_history_firefoxview.js 2026-10-05 08:46:28 +0900 @@ -19,7 +19,7 @@ const NEVER_REMEMBER_HISTORY_PREF = "browser.privatebrowsing.autostart"; // Different strings used for Nova UI. -const isNovaEnabled = Services.prefs.getBoolPref("browser.nova.enabled", false); +const isNovaEnabled = false; const EMPTY_HEADER_L10N_ID = isNovaEnabled ? "firefoxview-history-empty-header-2" : "firefoxview-history-empty-header"; diff -urN firefox-157.0-orig/browser/components/firefoxview/tests/browser/browser_recentlyclosed_firefoxview.js firefox-157.0/browser/components/firefoxview/tests/browser/browser_recentlyclosed_firefoxview.js --- firefox-157.0-orig/browser/components/firefoxview/tests/browser/browser_recentlyclosed_firefoxview.js 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/firefoxview/tests/browser/browser_recentlyclosed_firefoxview.js 2026-10-05 08:46:53 +0900 @@ -11,7 +11,7 @@ const NEVER_REMEMBER_HISTORY_PREF = "browser.privatebrowsing.autostart"; // Different strings used for Nova UI. -let isNovaEnabled = Services.prefs.getBoolPref("browser.nova.enabled", false); +let isNovaEnabled = false; let NEVER_REMEMBER_HEADER_L10N_ID = isNovaEnabled ? "firefoxview-dont-remember-history-empty-header-3" : "firefoxview-dont-remember-history-empty-header-2"; diff -urN firefox-157.0-orig/browser/components/firefoxview/tests/browser/browser_syncedtabs_errors_firefoxview.js firefox-157.0/browser/components/firefoxview/tests/browser/browser_syncedtabs_errors_firefoxview.js --- firefox-157.0-orig/browser/components/firefoxview/tests/browser/browser_syncedtabs_errors_firefoxview.js 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/firefoxview/tests/browser/browser_syncedtabs_errors_firefoxview.js 2026-10-05 08:47:02 +0900 @@ -6,7 +6,7 @@ ); // Different strings used for Nova UI. -let isNovaEnabled = Services.prefs.getBoolPref("browser.nova.enabled", false); +let isNovaEnabled = false; const OFFLINE_HEADER_L10N_ID = isNovaEnabled ? "firefoxview-tabpickup-network-offline-header-2" : "firefoxview-tabpickup-network-offline-header"; diff -urN firefox-157.0-orig/browser/components/firefoxview/tests/browser/browser_syncedtabs_firefoxview.js firefox-157.0/browser/components/firefoxview/tests/browser/browser_syncedtabs_firefoxview.js --- firefox-157.0-orig/browser/components/firefoxview/tests/browser/browser_syncedtabs_firefoxview.js 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/firefoxview/tests/browser/browser_syncedtabs_firefoxview.js 2026-10-05 08:46:42 +0900 @@ -68,10 +68,7 @@ }); add_task(async function test_loading_state() { - const isNovaEnabled = Services.prefs.getBoolPref( - "browser.nova.enabled", - false - ); + const isNovaEnabled = false; const loadingHeaderL10nId = isNovaEnabled ? "firefoxview-syncedtabs-loading-header-2" : "firefoxview-syncedtabs-loading-header"; @@ -192,7 +189,7 @@ Services.fog.testResetFOG(); // TODO: Exercise the QR-code based flow on Nova, once implemented. // FIXME: Bug 2058059 - [Nova] On the tabs from other devices panel there is no QR code displayed when signed in to sync with no devices connected - if (!Services.prefs.getBoolPref("browser.nova.enabled", false)) { + if (!false) { EventUtils.synthesizeMouseAtCenter( emptyState.querySelector(`moz-button[data-action="add-device"]`) .buttonEl, diff -urN firefox-157.0-orig/browser/components/ipprotection/assets/shield-vpn-exceptions.svg firefox-157.0/browser/components/ipprotection/assets/shield-vpn-exceptions.svg --- firefox-157.0-orig/browser/components/ipprotection/assets/shield-vpn-exceptions.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/ipprotection/assets/shield-vpn-exceptions.svg 2026-10-05 09:06:23 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/components/ipprotection/content/ipprotection-content.css firefox-157.0/browser/components/ipprotection/content/ipprotection-content.css --- firefox-157.0-orig/browser/components/ipprotection/content/ipprotection-content.css 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/ipprotection/content/ipprotection-content.css 2026-10-05 09:07:04 +0900 @@ -7,11 +7,6 @@ :host { --skeleton-container-bg-color: var(--background-color-box-info); --skeleton-placeholder-bg-color: var(--card-border-color); - - @media -moz-pref("browser.nova.enabled") { - --skeleton-container-bg-color: light-dark(var(--color-gray-0), var(--color-black-alpha-50)); - --skeleton-placeholder-bg-color: light-dark(var(--color-black-alpha-10), var(--color-white-alpha-20)); - } } hr { @@ -28,10 +23,6 @@ hr { margin-block-end: var(--space-small); } - - @media -moz-pref("browser.nova.enabled") { - margin-inline: var(--space-small); - } } ipprotection-status-card { @@ -52,9 +43,7 @@ --focus-outline-offset: calc(-1 * var(--focus-outline-width)); width: 100%; - @media not -moz-pref("browser.nova.enabled") { --button-border-radius: var(--border-radius-small); - } } } @@ -122,9 +111,7 @@ padding-block-end: var(--space-small); padding-inline-start: var(--space-large); padding-inline-end: var(--space-large); - @media not -moz-pref("browser.nova.enabled") { color: var(--text-color); - } } #unauthenticated-vpn-img { @@ -161,9 +148,7 @@ margin: 0 auto; width: var(--size-layout-small); - @media not -moz-pref("browser.nova.enabled") { width: 100%; - } } #unauthenticated-footer { @@ -209,10 +194,6 @@ width: var(--size-layout-xsmall); border-radius: var(--space-xxsmall); margin-block: var(--space-medium) var(--space-small); - - @media -moz-pref("browser.nova.enabled") { - margin-block: var(--space-xsmall) 0; - } } .skeleton-line { @@ -229,11 +210,6 @@ &:first-of-type { margin-block-start: var(--space-xxlarge); } - - @media -moz-pref("browser.nova.enabled") { - padding-block: var(--space-xsmall); - border-radius: var(--border-radius-circle); - } } .skeleton-image { diff -urN firefox-157.0-orig/browser/components/ipprotection/content/ipprotection-status-box.css firefox-157.0/browser/components/ipprotection/content/ipprotection-status-box.css --- firefox-157.0-orig/browser/components/ipprotection/content/ipprotection-status-box.css 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/ipprotection/content/ipprotection-status-box.css 2026-10-05 09:06:29 +0900 @@ -69,13 +69,6 @@ border-radius: var(--border-radius-medium); padding: var(--space-medium); - @media -moz-pref("browser.nova.enabled") { - /* Use one neutral panel background for every state with Nova enabled. */ - /* stylelint-disable-next-line stylelint-plugin-mozilla/no-base-design-tokens, stylelint-plugin-mozilla/use-design-tokens */ - background-color: light-dark(var(--color-gray-0), var(--color-black-alpha-50)); - border: var(--border-width) solid var(--border-color-deemphasized); - } - @media (prefers-contrast) { background-color: var(--background-color-box); } diff -urN firefox-157.0-orig/browser/components/multilineeditor/multiline-editor.css firefox-157.0/browser/components/multilineeditor/multiline-editor.css --- firefox-157.0-orig/browser/components/multilineeditor/multiline-editor.css 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/multilineeditor/multiline-editor.css 2026-10-05 08:09:43 +0900 @@ -17,14 +17,6 @@ width: 100%; } -@media -moz-pref("browser.nova.enabled") { - /* TODO: Bug 2033070 - Nova tokens were implemented as the default value for the custom properties, and the fallbacks (and lint exceptions) will need to be removed after launch */ - :host { - --multiline-editor-mention-placeholder-background-color: light-dark(var(--color-violet-desaturated-10), var(--color-violet-desaturated-60)); - --multiline-editor-mention-placeholder-border-color: light-dark(var(--color-violet-desaturated-10), var(--color-violet-desaturated-60)); - } -} - .multiline-editor { border-radius: var(--multiline-editor-border-radius); border: var(--multiline-editor-border); diff -urN firefox-157.0-orig/browser/components/preferences/config/appearance.mjs firefox-157.0/browser/components/preferences/config/appearance.mjs --- firefox-157.0-orig/browser/components/preferences/config/appearance.mjs 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/preferences/config/appearance.mjs 2026-10-05 08:38:58 +0900 @@ -172,7 +172,7 @@ Preferences.addSetting({ id: "uiDensity", deps: ["uiDensityPref"], - visible: () => Services.prefs.getBoolPref("browser.nova.enabled", false), + visible: () => false, // Map the browser.uidensity pref to one of the radio options. When the pref // has no user value, gUIDensity (see browser.js) chooses the density // automatically: small windows are auto-compacted based on diff -urN firefox-157.0-orig/browser/components/preferences/tests/browser_appearance_pane.js firefox-157.0/browser/components/preferences/tests/browser_appearance_pane.js --- firefox-157.0-orig/browser/components/preferences/tests/browser_appearance_pane.js 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/preferences/tests/browser_appearance_pane.js 2026-10-05 08:38:37 +0900 @@ -136,36 +136,6 @@ .isTabletCapable; } -async function withWindowDensityPane(callback) { - await SpecialPowers.pushPrefEnv({ - set: [["browser.nova.enabled", true]], - }); - // browser.uidensity is a sticky pref, so any user value set during the test - // outlives pushPrefEnv. Start each task from the default (no user value, i.e. - // automatic) and restore it when we're done. - Services.prefs.clearUserPref("browser.uidensity"); - registerCleanupFunction(() => - Services.prefs.clearUserPref("browser.uidensity") - ); - - let tab = await openPrefsTab("appearance"); - let win = tab.linkedBrowser.contentWindow; - let doc = win.document; - - await BrowserTestUtils.waitForMutationCondition( - doc.getElementById("mainPrefPane"), - { childList: true, subtree: true }, - () => doc.querySelector('setting-group[groupid="windowDensity"]') - ); - - try { - await callback({ tab, win, doc }); - } finally { - BrowserTestUtils.removeTab(tab); - await SpecialPowers.popPrefEnv(); - } -} - // Click a Window Density radio option in the pane the way a user would. The // radio group re-renders asynchronously when browser.uidensity changes, so // wait for it to settle (DOM value caught up to the setting model) before @@ -190,147 +160,6 @@ ); } -add_task(async function test_window_density_group_visible_with_nova() { - await withWindowDensityPane(async ({ win }) => { - let group = win.document.querySelector( - 'setting-group[groupid="windowDensity"]' - ); - ok(group, "windowDensity setting-group exists"); - is_element_visible(group, "windowDensity setting-group is visible"); - - let control = getSettingControl("uiDensity", win); - ok(control, "uiDensity setting-control exists"); - await control.updateComplete; - is_element_visible(control, "uiDensity radio group is visible"); - }); -}); - -add_task(async function test_window_density_radio_reflects_pref() { - await withWindowDensityPane(async ({ win }) => { - let control = getSettingControl("uiDensity", win); - await control.updateComplete; - - const cases = [ - { pref: null, expected: "auto", desc: "no user value maps to automatic" }, - { - pref: 0, - expected: "standard", - desc: "normal density maps to standard", - }, - { pref: 1, expected: "compact", desc: "compact density maps to compact" }, - { pref: 2, expected: "touch", desc: "touch density maps to touch" }, - ]; - - for (let { pref, expected, desc } of cases) { - if (pref === null) { - Services.prefs.clearUserPref("browser.uidensity"); - } else { - Services.prefs.setIntPref("browser.uidensity", pref); - } - is(control.setting.value, expected, desc); - await TestUtils.waitForCondition( - () => control.controlEl.value === expected, - `radio group renders "${expected}": ${desc}` - ); - } - }); -}); - -add_task(async function test_window_density_radio_updates_pref() { - await withWindowDensityPane(async ({ win }) => { - let control = getSettingControl("uiDensity", win); - await control.updateComplete; - - let selectOption = value => selectDensityOption(control, value); - - await selectOption("compact"); - is( - Services.prefs.getIntPref("browser.uidensity"), - 1, - "Selecting compact sets browser.uidensity to 1" - ); - - await selectOption("touch"); - is( - Services.prefs.getIntPref("browser.uidensity"), - 2, - "Selecting touch sets browser.uidensity to 2" - ); - - await selectOption("standard"); - ok( - Services.prefs.prefHasUserValue("browser.uidensity"), - "Selecting standard records an explicit user value" - ); - is( - Services.prefs.getIntPref("browser.uidensity"), - 0, - "Selecting standard sets browser.uidensity to 0" - ); - - await selectOption("auto"); - ok( - !Services.prefs.prefHasUserValue("browser.uidensity"), - "Selecting automatic clears the browser.uidensity user value" - ); - }); -}); - -// Picking an explicit density in about:preferences must leave the user's -// browser.touchmode.auto choice untouched, even when the density is currently -// overridden (e.g. forced to touch by tablet mode). gUIDensity.getCurrentDensity -// already respects an explicit compact/touch value over the auto-touch pref, and -// the auto-touch pref is the standard density's own opt-in, so selecting a -// density should never rewrite it. -add_task( - async function test_window_density_preserves_auto_touch_on_explicit_choice() { - await withWindowDensityPane(async ({ win }) => { - let control = getSettingControl("uiDensity", win); - await control.updateComplete; - - let gUIDensity = win.browsingContext.topChromeWindow.gUIDensity; - let originalGetCurrentDensity = gUIDensity.getCurrentDensity; - // Simulate tablet mode's touch override without needing a real tablet, so - // that any re-introduced clear-on-override logic would trigger here. - gUIDensity.getCurrentDensity = () => ({ - mode: gUIDensity.MODE_TOUCH, - overridden: true, - }); - registerCleanupFunction(() => { - gUIDensity.getCurrentDensity = originalGetCurrentDensity; - Services.prefs.clearUserPref("browser.touchmode.auto"); - Services.prefs.clearUserPref("browser.uidensity"); - }); - - let selectOption = value => selectDensityOption(control, value); - - Services.prefs.setBoolPref("browser.touchmode.auto", true); - await selectOption("compact"); - is( - Services.prefs.getIntPref("browser.uidensity"), - 1, - "Selecting compact sets browser.uidensity to 1" - ); - ok( - Services.prefs.getBoolPref("browser.touchmode.auto"), - "Selecting compact leaves browser.touchmode.auto untouched" - ); - - await selectOption("touch"); - ok( - Services.prefs.getBoolPref("browser.touchmode.auto"), - "Selecting touch leaves browser.touchmode.auto untouched" - ); - - await selectOption("standard"); - ok( - Services.prefs.getBoolPref("browser.touchmode.auto"), - "Selecting standard leaves browser.touchmode.auto untouched" - ); - }); - } -); - // Assert the nested auto-touch checkbox's visibility. Only meaningful where // auto-touch is available; callers skip otherwise. async function assertAutoTouchCheckboxVisibility(win, expectVisible, desc) { @@ -347,81 +176,6 @@ } } -// The "Use touch spacing for tablet mode" checkbox is nested under the Standard -// density option and should only be shown while that option is selected. -add_task(async function test_window_density_auto_touch_checkbox_visibility() { - if (!autoTouchModeAvailable()) { - info( - "Auto-touch mode is unavailable on this device, so the checkbox is " + - "always hidden and there is nothing to assert. Note that this leaves " + - "the shown path uncovered here; Linux (GTK) is where it runs." - ); - return; - } - await withWindowDensityPane(async ({ win }) => { - let control = getSettingControl("uiDensity", win); - await control.updateComplete; - - let selectOption = value => selectDensityOption(control, value); - let assertVisibility = (standardSelected, desc) => - assertAutoTouchCheckboxVisibility(win, standardSelected, desc); - - // The pane opens on automatic in a fresh profile. - await assertVisibility(false, "automatic hides the checkbox on load"); - - // Switch automatic to standard, with the int fixed at 0: the checkbox has to - // appear the first time Standard is selected. - await selectOption("standard"); - await assertVisibility(true, "standard shows the checkbox"); - - // Switch standard to automatic, again with the int fixed at 0. - await selectOption("auto"); - await assertVisibility(false, "automatic hides the checkbox"); - - await selectOption("compact"); - await assertVisibility(false, "compact hides the checkbox"); - - await selectOption("standard"); - await assertVisibility(true, "standard shows the checkbox again"); - - await selectOption("touch"); - await assertVisibility(false, "touch hides the checkbox"); - }); -}); - -// The checkbox must also follow the density changing from outside the pane (for -// example from another window), which has no radio click to piggyback on. -add_task( - async function test_window_density_auto_touch_checkbox_follows_pref_changes() { - if (!autoTouchModeAvailable()) { - info( - "Auto-touch mode is unavailable on this device, so the checkbox is " + - "always hidden and there is nothing to assert. Note that this " + - "leaves the shown path uncovered here; Linux (GTK) is where it runs." - ); - return; - } - await withWindowDensityPane(async ({ win }) => { - let control = getSettingControl("uiDensity", win); - await control.updateComplete; - let assertVisibility = (standardSelected, desc) => - assertAutoTouchCheckboxVisibility(win, standardSelected, desc); - - Services.prefs.setIntPref("browser.uidensity", 0); - await assertVisibility(true, "explicit standard shows the checkbox"); - - Services.prefs.clearUserPref("browser.uidensity"); - await assertVisibility(false, "cleared pref hides the checkbox"); - - Services.prefs.setIntPref("browser.uidensity", 2); - await assertVisibility(false, "touch hides the checkbox"); - - Services.prefs.setIntPref("browser.uidensity", 0); - await assertVisibility(true, "standard shows the checkbox"); - }); - } -); - add_task(async function test_browser_layout_group_in_tabs_browsing_pane() { await SpecialPowers.pushPrefEnv({ set: [["browser.settings-redesign.enabled", true]], diff -urN firefox-157.0-orig/browser/components/privatebrowsing/content/aboutPrivateBrowsing.js firefox-157.0/browser/components/privatebrowsing/content/aboutPrivateBrowsing.js --- firefox-157.0-orig/browser/components/privatebrowsing/content/aboutPrivateBrowsing.js 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/privatebrowsing/content/aboutPrivateBrowsing.js 2026-10-05 08:37:27 +0900 @@ -41,7 +41,7 @@ const shouldShowPromo = await RPMSendQuery("ShouldShowPromo", { type: promoType, }); - const novaEnabled = RPMGetBoolPref("browser.nova.enabled", false); + const novaEnabled = false; const legacyContainer = document.querySelector(".promo"); const novaContainer = document.querySelector(".nova-promo-wrapper"); @@ -409,7 +409,7 @@ window.PrivateBrowsingRecordClick("InfoLink"); }); - if (RPMGetBoolPref("browser.nova.enabled", false)) { + if (false) { document.getElementById("info-title").hidden = true; document.l10n.setAttributes( document.getElementById("info-body"), diff -urN firefox-157.0-orig/browser/components/privatebrowsing/test/browser/browser.toml firefox-157.0/browser/components/privatebrowsing/test/browser/browser.toml --- firefox-157.0-orig/browser/components/privatebrowsing/test/browser/browser.toml 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/privatebrowsing/test/browser/browser.toml 2026-10-05 08:34:42 +0900 @@ -47,8 +47,6 @@ ["browser_privatebrowsing_about_nimbus_impressions.js"] -["browser_privatebrowsing_about_nova_promo.js"] - ["browser_privatebrowsing_about_search_banner.js"] ["browser_privatebrowsing_beacon.js"] diff -urN firefox-157.0-orig/browser/components/privatebrowsing/test/browser/browser_privatebrowsing_about_nova_promo.js firefox-157.0/browser/components/privatebrowsing/test/browser/browser_privatebrowsing_about_nova_promo.js --- firefox-157.0-orig/browser/components/privatebrowsing/test/browser/browser_privatebrowsing_about_nova_promo.js 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/privatebrowsing/test/browser/browser_privatebrowsing_about_nova_promo.js 1970-01-01 09:00:00 +0900 @@ -1,378 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -const PROMO_HEADER = "Nova promo header"; -const PROMO_TITLE = "Nova promo body text"; -const PROMO_LINK_TEXT = "Nova learn more"; -const PROMO_IMAGE = "chrome://browser/content/assets/private-promo-asset.svg"; - -function novaPromoMessage(contentOverrides = {}) { - return { - id: `PB_NEWTAB_NOVA_PROMO_${Math.random()}`, - template: "pb_newtab", - content: { - hideDefault: true, - promoEnabled: true, - promoSectionStyle: "bottom", - promoHeader: PROMO_HEADER, - promoTitleEnabled: true, - promoTitle: PROMO_TITLE, - promoLinkText: PROMO_LINK_TEXT, - promoLinkType: "link", - promoImageLarge: PROMO_IMAGE, - promoButton: { - action: { - data: { args: "https://example.com/", where: "tabshifted" }, - type: "OPEN_URL", - }, - }, - ...contentOverrides, - }, - // Priority ensures this message is picked over the ones in - // OnboardingMessageProvider. - priority: 5, - targeting: "true", - }; -} - -add_setup(async function () { - ASRouter.resetMessageState(); -}); - -add_task(async function test_nova_promo_renders() { - await SpecialPowers.pushPrefEnv({ - set: [["browser.nova.enabled", true]], - }); - let doExperimentCleanup = - await setupMSExperimentWithMessage(novaPromoMessage()); - - let { win, tab } = await openTabAndWaitForRender(); - - await SpecialPowers.spawn( - tab, - [{ PROMO_HEADER, PROMO_TITLE, PROMO_LINK_TEXT, PROMO_IMAGE }], - async function (expected) { - const promoEl = content.document.getElementById("nova-promo"); - ok(promoEl, "Nova moz-promo element is rendered"); - is( - content.document.querySelector(".promo"), - null, - "Legacy promo markup is not used when Nova is enabled" - ); - - // The moz-promo properties are set on the underlying JS object, which is - // not visible through the content task's Xray wrapper. Assert on the - // rendered shadow DOM instead, which is what the user sees. - const shadow = promoEl.shadowRoot; - await ContentTaskUtils.waitForCondition( - () => shadow.querySelector(".heading")?.textContent, - "Promo heading rendered" - ); - is( - shadow.querySelector(".heading").textContent, - expected.PROMO_HEADER, - "Promo heading is rendered" - ); - ok( - shadow - .querySelector(".message") - .textContent.includes(expected.PROMO_TITLE), - "Promo message is rendered" - ); - is( - shadow.querySelector(".image-container img").getAttribute("src"), - expected.PROMO_IMAGE, - "Promo image is rendered" - ); - is( - content.document.getElementById("nova-promo-link").textContent, - expected.PROMO_LINK_TEXT, - "Promo link text is set" - ); - is( - content.document.getElementById("nova-promo-button"), - null, - "The button call to action is removed for a link promo" - ); - const closeButton = shadow.querySelector("moz-button.close"); - ok(closeButton, "The promo has a close button"); - const closeButtonEl = closeButton.shadowRoot.querySelector("button"); - await ContentTaskUtils.waitForCondition( - () => closeButtonEl.getAttribute("aria-label"), - "Close button is localized" - ); - is( - closeButtonEl.getAttribute("aria-label"), - "Close", - "Close button has an accessible name" - ); - - // Regardless of the requested "bottom" section style, the Nova promo is - // always shown below the search box. - const wrapper = content.document.querySelector(".nova-promo-wrapper"); - ok(!wrapper.hidden, "Nova promo wrapper is visible"); - is( - wrapper.previousElementSibling, - content.document.querySelector(".search-inner-wrapper"), - "Nova promo is inserted directly below the search box" - ); - } - ); - - await BrowserTestUtils.closeWindow(win); - await doExperimentCleanup(); - await SpecialPowers.popPrefEnv(); -}); - -add_task(async function test_nova_promo_link_dispatches_action() { - await SpecialPowers.pushPrefEnv({ - set: [["browser.nova.enabled", true]], - }); - let doExperimentCleanup = - await setupMSExperimentWithMessage(novaPromoMessage()); - - let { win, tab } = await openTabAndWaitForRender(); - - let newTabOpened = BrowserTestUtils.waitForNewTab( - win.gBrowser, - "https://example.com/" - ); - - await SpecialPowers.spawn(tab, [], async function () { - content.document.getElementById("nova-promo-link").click(); - }); - - let newTab = await newTabOpened; - ok(newTab, "Clicking the Nova promo link dispatched the OPEN_URL action"); - - BrowserTestUtils.removeTab(newTab); - await BrowserTestUtils.closeWindow(win); - await doExperimentCleanup(); - await SpecialPowers.popPrefEnv(); -}); - -add_task(async function test_nova_promo_button_renders_and_dispatches_action() { - await SpecialPowers.pushPrefEnv({ - set: [["browser.nova.enabled", true]], - }); - let doExperimentCleanup = await setupMSExperimentWithMessage( - novaPromoMessage({ promoLinkType: "button" }) - ); - - let { win, tab } = await openTabAndWaitForRender(); - - await SpecialPowers.spawn(tab, [PROMO_LINK_TEXT], async function (linkText) { - const buttonEl = content.document.getElementById("nova-promo-button"); - ok(buttonEl, "Button call to action is rendered for a button promo"); - is( - content.document.getElementById("nova-promo-link"), - null, - "The link call to action is removed for a button promo" - ); - // moz-button reflects its label to an attribute, which is visible through - // the content task's Xray wrapper unlike the underlying JS property. - await ContentTaskUtils.waitForCondition( - () => buttonEl.getAttribute("label") === linkText, - "Promo button label is set" - ); - }); - - let newTabOpened = BrowserTestUtils.waitForNewTab( - win.gBrowser, - "https://example.com/" - ); - - await SpecialPowers.spawn(tab, [], async function () { - content.document.getElementById("nova-promo-button").click(); - }); - - let newTab = await newTabOpened; - ok(newTab, "Clicking the Nova promo button dispatched the OPEN_URL action"); - - BrowserTestUtils.removeTab(newTab); - await BrowserTestUtils.closeWindow(win); - await doExperimentCleanup(); - await SpecialPowers.popPrefEnv(); -}); - -add_task(async function test_nova_promo_dismiss() { - await SpecialPowers.pushPrefEnv({ - set: [["browser.nova.enabled", true]], - }); - let doExperimentCleanup = - await setupMSExperimentWithMessage(novaPromoMessage()); - - let { win: win1, tab: tab1 } = await openTabAndWaitForRender(); - - await SpecialPowers.spawn(tab1, [], async function () { - ok( - content.document.getElementById("nova-promo"), - "Nova promo is shown before dismissing" - ); - }); - await clickPromoDismissButton(tab1); - - let { win: win2, tab: tab2 } = await openTabAndWaitForRender(); - - await SpecialPowers.spawn(tab2, [], async function () { - is( - content.document.getElementById("nova-promo"), - null, - "Nova promo is no longer shown after dismissing" - ); - }); - - await BrowserTestUtils.closeWindow(win1); - await BrowserTestUtils.closeWindow(win2); - await doExperimentCleanup(); - await SpecialPowers.popPrefEnv(); -}); - -add_task(async function test_nova_promo_respects_impression_cap() { - await SpecialPowers.pushPrefEnv({ - set: [["browser.nova.enabled", true]], - }); - const message = novaPromoMessage(); - message.frequency = { lifetime: 2 }; - let doExperimentCleanup = await setupMSExperimentWithMessage(message); - - for (let i = 1; i <= 2; i++) { - let { win, tab } = await openTabAndWaitForRender(); - await SpecialPowers.spawn(tab, [i], async function (impression) { - ok( - content.document.getElementById("nova-promo"), - `Nova promo is shown on impression ${impression}` - ); - }); - await BrowserTestUtils.closeWindow(win); - } - - let { win, tab } = await openTabAndWaitForRender(); - await SpecialPowers.spawn(tab, [], async function () { - is( - content.document.getElementById("nova-promo"), - null, - "Nova promo is no longer shown once the impression cap is reached" - ); - }); - - await BrowserTestUtils.closeWindow(win); - await doExperimentCleanup(); - await SpecialPowers.popPrefEnv(); -}); - -add_task( - async function test_nova_promo_removed_from_prerendered_tab_if_blocked() { - // The PB newtab is pre-rendered. If the promo is dismissed in one tab, the - // handlePromoOnPreload() visibilitychange handler removes it from the - // already-rendered tab when it becomes visible. See aboutPrivateBrowsing.js. - await SpecialPowers.pushPrefEnv({ - set: [["browser.nova.enabled", true]], - }); - let doExperimentCleanup = - await setupMSExperimentWithMessage(novaPromoMessage()); - - const { win, tab: tab1 } = await openTabAndWaitForRender(); - - await SpecialPowers.spawn(tab1, [], async function () { - ok( - content.document.getElementById("nova-promo"), - "Nova promo is shown in tab 1" - ); - }); - - // Open a background tab while the promo is still unblocked, so it pre-renders - // with the promo present. - win.openTrustedLinkIn(win.BROWSER_NEW_TAB_URL, "tabshifted"); - - // Dismiss (block) the promo in tab 1. - await clickPromoDismissButton(tab1); - await SpecialPowers.spawn(tab1, [], async function () { - await ContentTaskUtils.waitForCondition( - () => !content.document.querySelector(".nova-promo-wrapper"), - "The promo is removed from tab 1 after dismissing" - ); - }); - - // Switch to the background tab, triggering its visibilitychange handler. - await BrowserTestUtils.switchTab(win.gBrowser, win.gBrowser.tabs[1]); - - await SpecialPowers.spawn( - win.gBrowser.tabs[1].linkedBrowser, - [], - async () => { - await ContentTaskUtils.waitForCondition( - () => !content.document.querySelector(".nova-promo-wrapper"), - "Nova promo is removed from a new tab after being dismissed in another tab" - ); - } - ); - - await BrowserTestUtils.closeWindow(win); - await doExperimentCleanup(); - await SpecialPowers.popPrefEnv(); - } -); - -add_task(async function test_nova_promo_is_hidden_until_it_has_content() { - // The user should never see an empty promo. The page builds the promo while - // it is still marked `hidden`, then reveals it once it has content. This test - // guards that the `hidden` promo really is invisible to the user: previously - // the styling ignored the `hidden` attribute, so an empty promo was shown - // before its heading, message and link were filled in. - await SpecialPowers.pushPrefEnv({ - set: [["browser.nova.enabled", true]], - }); - let doExperimentCleanup = - await setupMSExperimentWithMessage(novaPromoMessage()); - - let { win, tab } = await openTabAndWaitForRender(); - - await SpecialPowers.spawn(tab, [], async function () { - const promo = content.document.querySelector(".nova-promo-wrapper"); - - ok( - ContentTaskUtils.isVisible(promo), - "The populated promo is shown to the user" - ); - - promo.hidden = true; - ok( - ContentTaskUtils.isHidden(promo), - "A promo marked hidden is not shown to the user" - ); - }); - - await BrowserTestUtils.closeWindow(win); - await doExperimentCleanup(); - await SpecialPowers.popPrefEnv(); -}); - -add_task(async function test_nova_disabled_uses_legacy_promo() { - await SpecialPowers.pushPrefEnv({ - set: [["browser.nova.enabled", false]], - }); - let doExperimentCleanup = - await setupMSExperimentWithMessage(novaPromoMessage()); - - let { win, tab } = await openTabAndWaitForRender(); - - await SpecialPowers.spawn(tab, [], async function () { - const promo = content.document.querySelector(".promo"); - ok(promo, "Legacy promo markup is used when Nova is disabled"); - ok( - ContentTaskUtils.isVisible(promo), - "Legacy promo is visible when Nova is disabled" - ); - is( - content.document.getElementById("nova-promo"), - null, - "Nova moz-promo element is not used when Nova is disabled" - ); - }); - - await BrowserTestUtils.closeWindow(win); - await doExperimentCleanup(); - await SpecialPowers.popPrefEnv(); -}); diff -urN firefox-157.0-orig/browser/components/privatebrowsing/test/browser/browser_privatebrowsing_indicator.js firefox-157.0/browser/components/privatebrowsing/test/browser/browser_privatebrowsing_indicator.js --- firefox-157.0-orig/browser/components/privatebrowsing/test/browser/browser_privatebrowsing_indicator.js 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/privatebrowsing/test/browser/browser_privatebrowsing_indicator.js 2026-10-05 08:35:55 +0900 @@ -141,130 +141,15 @@ await BrowserTestUtils.closeWindow(win); }); -// The button + info panel below are gated on the design-refresh pref, so the -// tests set it explicitly rather than relying on the channel default. -const NOVA_PREF = "browser.nova.enabled"; - function getVisibleIndicatorButton(win) { return [...win.document.querySelectorAll(BUTTON_INDICATOR_SELECTOR)].find( el => BrowserTestUtils.isVisible(el) ); } -// In a private window, the icon-only indicator button is shown and clicking it -// opens the info panel with a title, body copy, and learn-more link. -add_task(async function test_indicator_button_opens_panel() { - await SpecialPowers.pushPrefEnv({ set: [[NOVA_PREF, true]] }); - let win = await BrowserTestUtils.openNewBrowserWindow({ private: true }); - - let button = getVisibleIndicatorButton(win); - Assert.ok(button, "Private browsing indicator button is visible"); - - let panel = win.document.getElementById("private-browsing-info-panel"); - let shown = BrowserTestUtils.waitForEvent(panel, "popupshown"); - EventUtils.synthesizeMouseAtCenter(button, {}, win); - await shown; - - Assert.ok( - panel.querySelector(".private-browsing-info-title")?.textContent, - "Panel has a title" - ); - Assert.ok( - panel.querySelector(".private-browsing-info-description")?.textContent, - "Panel has body copy" - ); - Assert.ok( - panel.querySelector("a[is='moz-support-link']"), - "Panel has a learn-more link" - ); - - let hidden = BrowserTestUtils.waitForEvent(panel, "popuphidden"); - panel.hidePopup(); - await hidden; - - await BrowserTestUtils.closeWindow(win); - await SpecialPowers.popPrefEnv(); -}); - -// Clicking the button again while the panel is open dismisses it, and the button -// reflects the open state via the [open] attribute while the panel is showing. -add_task(async function test_indicator_button_toggles_closed() { - await SpecialPowers.pushPrefEnv({ set: [[NOVA_PREF, true]] }); - let win = await BrowserTestUtils.openNewBrowserWindow({ private: true }); - - let button = getVisibleIndicatorButton(win); - let panel = win.document.getElementById("private-browsing-info-panel"); - - let shown = BrowserTestUtils.waitForEvent(panel, "popupshown"); - EventUtils.synthesizeMouseAtCenter(button, {}, win); - await shown; - Assert.ok( - button.hasAttribute("open"), - "Button has [open] while the panel is showing" - ); - - let hidden = BrowserTestUtils.waitForEvent(panel, "popuphidden"); - EventUtils.synthesizeMouseAtCenter(button, {}, win); - await hidden; - Assert.equal( - panel.state, - "closed", - "Clicking the button again closes the panel" - ); - Assert.ok( - !button.hasAttribute("open"), - "Button [open] is cleared after dismissal" - ); - - await BrowserTestUtils.closeWindow(win); - await SpecialPowers.popPrefEnv(); -}); - -// Clicking the learn-more link inside the panel dismisses it. -add_task(async function test_indicator_link_closes_panel() { - await SpecialPowers.pushPrefEnv({ set: [[NOVA_PREF, true]] }); - let win = await BrowserTestUtils.openNewBrowserWindow({ private: true }); - - let button = getVisibleIndicatorButton(win); - let panel = win.document.getElementById("private-browsing-info-panel"); - - let shown = BrowserTestUtils.waitForEvent(panel, "popupshown"); - EventUtils.synthesizeMouseAtCenter(button, {}, win); - await shown; - - // Stub link navigation so the click doesn't open a SUMO tab. - let originalOpen = win.openTrustedLinkIn; - win.openTrustedLinkIn = () => {}; - - let link = panel.querySelector("a[is='moz-support-link']"); - let hidden = BrowserTestUtils.waitForEvent(panel, "popuphidden"); - EventUtils.synthesizeMouseAtCenter(link, {}, win); - await hidden; - Assert.equal( - panel.state, - "closed", - "Panel closes when the learn-more link is clicked" - ); - - win.openTrustedLinkIn = originalOpen; - await BrowserTestUtils.closeWindow(win); - await SpecialPowers.popPrefEnv(); -}); - -// The indicator button is not shown in a regular (non-private) window. -add_task(async function test_indicator_button_not_in_regular_window() { - await SpecialPowers.pushPrefEnv({ set: [[NOVA_PREF, true]] }); - Assert.ok( - !getVisibleIndicatorButton(window), - "No indicator button in a regular window" - ); - await SpecialPowers.popPrefEnv(); -}); - // The indicator button is not shown when the pref is off (the classic labeled // indicator is used instead). add_task(async function test_indicator_button_hidden_when_pref_off() { - await SpecialPowers.pushPrefEnv({ set: [[NOVA_PREF, false]] }); let win = await BrowserTestUtils.openNewBrowserWindow({ private: true }); Assert.ok( !getVisibleIndicatorButton(win), diff -urN firefox-157.0-orig/browser/components/privatebrowsing/test/browser/head.js firefox-157.0/browser/components/privatebrowsing/test/browser/head.js --- firefox-157.0-orig/browser/components/privatebrowsing/test/browser/head.js 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/privatebrowsing/test/browser/head.js 2026-10-05 08:34:13 +0900 @@ -73,10 +73,6 @@ container: ".promo", link: "#private-browsing-promo-link", }, - nova: { - container: ".nova-promo-wrapper", - link: "#nova-promo-link", - }, }; /** @@ -89,15 +85,10 @@ body: "about-private-browsing-felt-privacy-v1-info-body", link: "about-private-browsing-felt-privacy-v1-info-link", }, - nova: { - titleHidden: true, - body: "about-private-browsing-nova-info-body", - link: "about-private-browsing-nova-info-link", - }, }; function isNovaEnabled() { - return Services.prefs.getBoolPref("browser.nova.enabled", false); + return false; } /** diff -urN firefox-157.0-orig/browser/components/profiles/ProfilesParent.sys.mjs firefox-157.0/browser/components/profiles/ProfilesParent.sys.mjs --- firefox-157.0-orig/browser/components/profiles/ProfilesParent.sys.mjs 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/profiles/ProfilesParent.sys.mjs 2026-10-05 08:31:06 +0900 @@ -47,7 +47,7 @@ profiles: await Promise.all(profiles.map(p => p.toContentSafeObject())), profileCreated: await profileAge.created, themes, - novaEnabled: Services.prefs.getBoolPref("browser.nova.enabled", false), + novaEnabled: false, }; } @@ -293,7 +293,7 @@ } async getSafeForContentThemes(isDark) { - let novaEnabled = Services.prefs.getBoolPref("browser.nova.enabled", false); + let novaEnabled = false; if (novaEnabled) { let themesList = await lazy.getThemesList({ diff -urN firefox-157.0-orig/browser/components/profiles/SelectableProfileService.sys.mjs firefox-157.0/browser/components/profiles/SelectableProfileService.sys.mjs --- firefox-157.0-orig/browser/components/profiles/SelectableProfileService.sys.mjs 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/profiles/SelectableProfileService.sys.mjs 2026-10-05 08:31:25 +0900 @@ -53,12 +53,7 @@ false ); -XPCOMUtils.defineLazyPreferenceGetter( - lazy, - "NOVA_ENABLED", - "browser.nova.enabled", - true -); +lazy.NOVA_ENABLED = false; const PROFILES_CRYPTO_SALT_LENGTH_BYTES = 16; diff -urN firefox-157.0-orig/browser/components/profiles/tests/browser/browser-legacy.toml firefox-157.0/browser/components/profiles/tests/browser/browser-legacy.toml --- firefox-157.0-orig/browser/components/profiles/tests/browser/browser-legacy.toml 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/profiles/tests/browser/browser-legacy.toml 2026-10-05 08:32:33 +0900 @@ -1,7 +1,7 @@ [DEFAULT] support-files = ["head.js"] dupe-manifest = true -prefs = ["browser.profiles.enabled=true","browser.profiles.created=false","browser.nova.enabled=false",] +prefs = ["browser.profiles.enabled=true","browser.profiles.created=false",] ["browser_activate.js"] run-if = [ diff -urN firefox-157.0-orig/browser/components/profiles/tests/browser/browser.toml firefox-157.0/browser/components/profiles/tests/browser/browser.toml --- firefox-157.0-orig/browser/components/profiles/tests/browser/browser.toml 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/profiles/tests/browser/browser.toml 2026-10-05 08:31:53 +0900 @@ -1,7 +1,7 @@ [DEFAULT] support-files = ["head.js"] dupe-manifest = true -prefs = ["browser.profiles.enabled=true","browser.profiles.created=false","browser.nova.enabled=true",] +prefs = ["browser.profiles.enabled=true","browser.profiles.created=false",] ["browser_activate.js"] run-if = [ diff -urN firefox-157.0-orig/browser/components/profiles/tests/browser/browser_create_profile_page_test.js firefox-157.0/browser/components/profiles/tests/browser/browser_create_profile_page_test.js --- firefox-157.0-orig/browser/components/profiles/tests/browser/browser_create_profile_page_test.js 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/profiles/tests/browser/browser_create_profile_page_test.js 2026-10-05 08:32:24 +0900 @@ -346,7 +346,7 @@ "Current profile theme was updated" ); - if (!Services.prefs.getBoolPref("browser.nova.enabled", false)) { + if (!false) { await assertGlean("profiles", "new", "theme", expectedThemeId); } } diff -urN firefox-157.0-orig/browser/components/search/SearchUIUtils.sys.mjs firefox-157.0/browser/components/search/SearchUIUtils.sys.mjs --- firefox-157.0-orig/browser/components/search/SearchUIUtils.sys.mjs 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/search/SearchUIUtils.sys.mjs 2026-10-05 08:18:26 +0900 @@ -589,9 +589,6 @@ } onPrefChanged(pref) { - if (pref == "browser.nova.enabled") { - this.updated(); - } } getComponents() { diff -urN firefox-157.0-orig/browser/components/sidebar/sidebar-bookmark-list.css firefox-157.0/browser/components/sidebar/sidebar-bookmark-list.css --- firefox-157.0-orig/browser/components/sidebar/sidebar-bookmark-list.css 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/sidebar/sidebar-bookmark-list.css 2026-10-05 08:18:34 +0900 @@ -113,9 +113,7 @@ background-repeat: no-repeat; } - @media not -moz-pref("browser.nova.enabled") { border-radius: var(--border-radius-small); - } } details > summary { @@ -185,7 +183,5 @@ outline-offset: var(--focus-outline-inset); } - @media not -moz-pref("browser.nova.enabled") { border-radius: var(--border-radius-medium); - } } diff -urN firefox-157.0-orig/browser/components/sidebar/sidebar-customize.css firefox-157.0/browser/components/sidebar/sidebar-customize.css --- firefox-157.0-orig/browser/components/sidebar/sidebar-customize.css 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/sidebar/sidebar-customize.css 2026-10-05 08:19:32 +0900 @@ -46,10 +46,8 @@ color: var(--sidebar-box-color); border-radius: var(--border-radius-medium); - @media not -moz-pref("browser.nova.enabled") { background-color: var(--sidebar-box-background); border: var(--sidebar-box-border); - } } .extension-item { @@ -72,10 +70,8 @@ display: block; &::part(inputs) { - @media not -moz-pref("browser.nova.enabled") { background-color: var(--sidebar-box-background); border: var(--sidebar-box-border); - } color: var(--sidebar-box-color); border-radius: var(--border-radius-medium); gap: 0; @@ -86,11 +82,9 @@ moz-checkbox { padding-block: var(--space-medium); - @media not -moz-pref("browser.nova.enabled") { &:not(:last-of-type) { border-bottom: 0.5px solid var(--panel-separator-color); } - } > moz-checkbox:last-of-type { padding-block: 0; diff -urN firefox-157.0-orig/browser/components/sidebar/sidebar-history.mjs firefox-157.0/browser/components/sidebar/sidebar-history.mjs --- firefox-157.0-orig/browser/components/sidebar/sidebar-history.mjs 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/sidebar/sidebar-history.mjs 2026-10-05 08:19:22 +0900 @@ -434,7 +434,7 @@ } #emptyMessageTemplate() { - const nova = Services.prefs.getBoolPref("browser.nova.enabled", false); + const nova = false; let descriptionHeader; let descriptionLabels; let descriptionLink; diff -urN firefox-157.0-orig/browser/components/sidebar/sidebar-main.css firefox-157.0/browser/components/sidebar/sidebar-main.css --- firefox-157.0-orig/browser/components/sidebar/sidebar-main.css 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/sidebar/sidebar-main.css 2026-10-05 08:20:05 +0900 @@ -62,9 +62,6 @@ margin-inline: var(--tab-inner-inline-margin); margin-block-end: var(--space-small); min-height: 2px; - @media -moz-pref("browser.nova.enabled") { - min-height: 4px; - } &:hover { background-color: var(--focus-outline-color); @@ -121,18 +118,10 @@ &:first-of-type { --button-outer-padding-block-start: var(--space-small); - - @media -moz-pref("browser.nova.enabled") and (not -moz-pref("sidebar.verticalTabs")) { - --button-outer-padding-block-start: 4px; - } } &:last-of-type { --button-outer-padding-block-end: var(--space-small); - - @media -moz-pref("browser.nova.enabled") and (not -moz-pref("sidebar.verticalTabs")) { - --button-outer-padding-block-end: 4px; - } } } @@ -156,10 +145,6 @@ padding-inline: var(--space-medium); padding-block-end: var(--space-small); - @media -moz-pref("browser.nova.enabled") { - gap: 12.5px; - } - @media -moz-pref("sidebar.visibility", "expand-on-hover") { /* We need these rules to apply at all times when the sidebar.visibility pref is set to "expand-on-hover" as opposed to when the "sidebar-expand-on-hover" attribute diff -urN firefox-157.0-orig/browser/components/sidebar/sidebar-opentabs-preview.css firefox-157.0/browser/components/sidebar/sidebar-opentabs-preview.css --- firefox-157.0-orig/browser/components/sidebar/sidebar-opentabs-preview.css 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/sidebar/sidebar-opentabs-preview.css 2026-10-05 08:19:53 +0900 @@ -32,10 +32,6 @@ border-radius: var(--border-radius-medium); margin-inline: calc(-1 * var(--space-small)); - @media -moz-pref("browser.nova.enabled") { - border-radius: var(--border-radius-circle); - } - cursor: pointer; &:hover { diff -urN firefox-157.0-orig/browser/components/sidebar/sidebar-opentabs.css firefox-157.0/browser/components/sidebar/sidebar-opentabs.css --- firefox-157.0-orig/browser/components/sidebar/sidebar-opentabs.css 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/sidebar/sidebar-opentabs.css 2026-10-05 08:20:38 +0900 @@ -4,39 +4,6 @@ @import url("chrome://browser/skin/tabbrowser/tab.tokens.css"); -.pinned-tabs moz-button::part(button) { - @media -moz-pref("browser.nova.enabled") { - border-color: transparent; - } -} - -.pinned-tabs moz-button.selected::part(button) { - @media -moz-pref("browser.nova.enabled") { - outline: 1px solid var(--tab-border-color-selected); - outline-offset: -1px; - - @media (not (prefers-contrast)) { - border: 1px solid transparent; - /* stylelint-disable-next-line stylelint-plugin-mozilla/use-design-tokens */ - background: - var(--tab-border-color-accent) border-box border-area, - var(--tab-background-color-selected) padding-box; - color: var(--tab-text-color-selected); - } - } -} - -.pinned-tabs moz-button.selected.inactive::part(button) { - @media -moz-pref("browser.nova.enabled") { - outline-color: color-mix(in srgb, var(--tab-border-color-selected) 60%, transparent); - --tab-border-color-accent: linear-gradient( - 96deg, - color-mix(in srgb, var(--color-violet-30) 60%, transparent) 20.68%, - color-mix(in srgb, light-dark(var(--color-orange-30), var(--color-violet-50)) 60%, transparent) 79.34% - ); - } -} - .pinned-tabs { display: flex; flex-wrap: wrap; diff -urN firefox-157.0-orig/browser/components/sidebar/sidebar-pins-promo.mjs firefox-157.0/browser/components/sidebar/sidebar-pins-promo.mjs --- firefox-157.0-orig/browser/components/sidebar/sidebar-pins-promo.mjs 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/sidebar/sidebar-pins-promo.mjs 2026-10-05 08:19:01 +0900 @@ -53,13 +53,7 @@ false, () => this.requestUpdate() ); - XPCOMUtils.defineLazyPreferenceGetter( - this, - "novaEnabled", - "browser.nova.enabled", - false, - () => this.requestUpdate() - ); + this.novaEnabled = false; this.launcherObserver = new MutationObserver(() => this.requestUpdate()); } #icons = [ diff -urN firefox-157.0-orig/browser/components/sidebar/sidebar-tab-list.css firefox-157.0/browser/components/sidebar/sidebar-tab-list.css --- firefox-157.0-orig/browser/components/sidebar/sidebar-tab-list.css 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/sidebar/sidebar-tab-list.css 2026-10-05 08:20:10 +0900 @@ -22,7 +22,5 @@ outline-offset: var(--focus-outline-inset); } - @media not -moz-pref("browser.nova.enabled") { border-radius: var(--border-radius-medium); - } } diff -urN firefox-157.0-orig/browser/components/sidebar/sidebar-tab-row.css firefox-157.0/browser/components/sidebar/sidebar-tab-row.css --- firefox-157.0-orig/browser/components/sidebar/sidebar-tab-row.css 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/sidebar/sidebar-tab-row.css 2026-10-05 08:19:49 +0900 @@ -116,42 +116,6 @@ -moz-context-properties: fill; fill: var(--identity-icon-color); margin-inline-end: 8px; - - /* Match the container context-menu items: fill-color icon inside a round - 15% tinted background. */ - @media -moz-pref("browser.nova.enabled") { - box-sizing: content-box; - padding: var(--identity-icon-inset); - border-radius: var(--border-radius-circle); - background-color: var(--identity-fill-tint); - background-origin: content-box; - background-repeat: no-repeat; - background-position: center; - fill: var(--identity-fill-color); - } -} - -:host([current]) { - @media -moz-pref("browser.nova.enabled") { - outline: 1px solid var(--tab-border-color-selected); - outline-offset: -1px; - - @media (not (prefers-contrast)) { - border: 1px solid transparent; - background: - var(--tab-border-color-accent) border-box border-area, - var(--tab-background-color-selected) padding-box; - color: var(--tab-text-color-selected); - } - } -} - -:host([current][inactive-window]) { - @media -moz-pref("browser.nova.enabled") { - outline-color: color-mix(in srgb, var(--tab-border-color-selected) 60%, transparent); - --tab-border-color-selected-leading: color-mix(in srgb, var(--color-violet-30) 60%, transparent); - --tab-border-color-selected-trailing: color-mix(in srgb, light-dark(var(--color-orange-30), var(--color-violet-50)) 60%, transparent); - } } :host([medium-view]) { diff -urN firefox-157.0-orig/browser/components/sidebar/sidebar.css firefox-157.0/browser/components/sidebar/sidebar.css --- firefox-157.0-orig/browser/components/sidebar/sidebar.css 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/sidebar/sidebar.css 2026-10-05 08:23:40 +0900 @@ -55,22 +55,11 @@ --card-gap: var(--space-small); --card-padding: 8px; --card-heading-padding-inline: 12px; - @media -moz-pref("browser.nova.enabled") { - --card-background-color: transparent; - } margin-block-start: var(--space-medium); box-shadow: none; color: var(--sidebar-box-color); border: var(--sidebar-box-border); - @media -moz-pref("browser.nova.enabled") { - --card-padding: 0; - border: none; - - &::part(moz-card-heading-wrapper) { - padding-inline: 8px; - } - } &::part(summary) { min-height: var(--sidebar-panel-subheading-min-height); diff -urN firefox-157.0-orig/browser/components/sidebar/tests/browser/browser.toml firefox-157.0/browser/components/sidebar/tests/browser/browser.toml --- firefox-157.0-orig/browser/components/sidebar/tests/browser/browser.toml 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/sidebar/tests/browser/browser.toml 2026-10-05 08:23:20 +0900 @@ -67,9 +67,6 @@ ["browser_launcher_splitter_drag_release.js"] tags = "vertical-tabs" -["browser_launcher_splitter_expand_on_hover.js"] -tags = "vertical-tabs" - ["browser_launcher_splitter_visibility.js"] tags = "vertical-tabs" diff -urN firefox-157.0-orig/browser/components/sidebar/tests/browser/browser_domfullscreen_sidebar.js firefox-157.0/browser/components/sidebar/tests/browser/browser_domfullscreen_sidebar.js --- firefox-157.0-orig/browser/components/sidebar/tests/browser/browser_domfullscreen_sidebar.js 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/sidebar/tests/browser/browser_domfullscreen_sidebar.js 2026-10-05 08:21:26 +0900 @@ -64,35 +64,3 @@ ); }); }); - -add_task(async function dom_fullscreen_has_no_extra_margins() { - // Ensure that DOM fullscreen takes up the entire window with no unnecessary - // gaps. (Bug 2057087) - await SpecialPowers.pushPrefEnv({ - set: [ - ["browser.nova.enabled", true], - ["sidebar.visibility", "expand-on-hover"], - ], - }); - const tabbox = document.getElementById("tabbrowser-tabbox"); - - await BrowserTestUtils.withNewTab( - { gBrowser, url: "https://example.com/" }, - async browser => { - await DOMFullscreenTestUtils.changeFullscreen(browser, true); - const { marginInlineStart, marginInlineEnd } = getComputedStyle(tabbox); - Assert.equal( - parseInt(marginInlineStart), - 0, - "Tabbox has no start margins while in DOM fullscreen." - ); - Assert.equal( - parseInt(marginInlineEnd), - 0, - "Tabbox has no end margins while in DOM fullscreen." - ); - } - ); - - await SpecialPowers.popPrefEnv(); -}); diff -urN firefox-157.0-orig/browser/components/sidebar/tests/browser/browser_opentabs_sidebar.js firefox-157.0/browser/components/sidebar/tests/browser/browser_opentabs_sidebar.js --- firefox-157.0-orig/browser/components/sidebar/tests/browser/browser_opentabs_sidebar.js 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/sidebar/tests/browser/browser_opentabs_sidebar.js 2026-10-05 08:21:14 +0900 @@ -323,58 +323,6 @@ SidebarTestUtils.closePanel(window); }); -add_task(async function test_nova_current_tab_marker() { - await SpecialPowers.pushPrefEnv({ - set: [["browser.nova.enabled", true]], - }); - - const tabA = await BrowserTestUtils.openNewForegroundTab( - gBrowser, - "about:blank" - ); - const tabB = await BrowserTestUtils.openNewForegroundTab( - gBrowser, - "about:blank" - ); - - const component = await showOpenTabsPanel(); - const tabList = getTabList(component); - await waitForRowCount(tabList, getVisibleTabCount()); - - const rowFor = tab => - [...tabList.rowEls].find(rowEl => rowEl.tabElement === tab); - - Assert.ok( - rowFor(tabB).hasAttribute("current"), - "The currently-selected tab's row carries the [current] attribute." - ); - Assert.ok( - !rowFor(tabA).hasAttribute("current"), - "A non-selected tab's row does not carry the [current] attribute." - ); - - gBrowser.selectedTab = tabA; - await BrowserTestUtils.waitForMutationCondition( - tabList.shadowRoot, - { subtree: true, attributes: true, attributeFilter: ["current"] }, - () => rowFor(tabA)?.hasAttribute("current") - ); - - Assert.ok( - rowFor(tabA).hasAttribute("current"), - "Switching gBrowser.selectedTab moves the [current] attribute." - ); - Assert.ok( - !rowFor(tabB).hasAttribute("current"), - "The previously-selected tab no longer has the [current] attribute." - ); - - BrowserTestUtils.removeTab(tabA); - BrowserTestUtils.removeTab(tabB); - SidebarTestUtils.closePanel(window); - await SpecialPowers.popPrefEnv(); -}); - add_task(async function test_window_card_collapse_state_persists() { const PREF = "sidebar.openTabsPanel.collapsedWindows"; const { SidebarCollapsedWindows } = ChromeUtils.importESModule( @@ -659,140 +607,6 @@ SidebarTestUtils.closePanel(window); }); -add_task(async function test_pinned_tab_selected_marker() { - await SpecialPowers.pushPrefEnv({ - set: [["browser.nova.enabled", true]], - }); - - const nonPinnedTab = gBrowser.selectedTab; - const tabA = await BrowserTestUtils.openNewForegroundTab( - gBrowser, - "data:text/html,PinnedA" - ); - const tabB = await BrowserTestUtils.openNewForegroundTab( - gBrowser, - "data:text/html,PinnedB" - ); - gBrowser.pinTab(tabA); - gBrowser.pinTab(tabB); - - const component = await showOpenTabsPanel(); - await BrowserTestUtils.waitForMutationCondition( - component.shadowRoot, - { childList: true, subtree: true }, - () => - component.shadowRoot.querySelectorAll(".pinned-tabs moz-button") - .length === 2 - ); - - const buttonFor = title => - [...component.shadowRoot.querySelectorAll(".pinned-tabs moz-button")].find( - button => button.title === title - ); - - // tabB is the currently-selected tab, so its pinned button is marked. - await TestUtils.waitForCondition( - () => buttonFor("PinnedB").classList.contains("selected"), - "The selected pinned tab's button carries the selected class." - ); - Assert.ok( - !buttonFor("PinnedA").classList.contains("selected"), - "A non-selected pinned tab's button does not carry the selected class." - ); - - // Selecting the other pinned tab moves the marker. - gBrowser.selectedTab = tabA; - await TestUtils.waitForCondition( - () => buttonFor("PinnedA").classList.contains("selected"), - "Selecting the other pinned tab moves the selected class." - ); - Assert.ok( - !buttonFor("PinnedB").classList.contains("selected"), - "The previously-selected pinned tab no longer carries the selected class." - ); - - // Selecting a non-pinned tab clears the marker from both pinned buttons. - gBrowser.selectedTab = nonPinnedTab; - await TestUtils.waitForCondition( - () => - !buttonFor("PinnedA").classList.contains("selected") && - !buttonFor("PinnedB").classList.contains("selected"), - "Selecting a non-pinned tab clears the marker from the pinned buttons." - ); - - gBrowser.unpinTab(tabA); - gBrowser.unpinTab(tabB); - BrowserTestUtils.removeTab(tabA); - BrowserTestUtils.removeTab(tabB); - SidebarTestUtils.closePanel(window); - await SpecialPowers.popPrefEnv(); -}); - -add_task(async function test_inactive_window_deemphasizes_selected_border() { - await SpecialPowers.pushPrefEnv({ - set: [["browser.nova.enabled", true]], - }); - - const component = await showOpenTabsPanel(); - await BrowserTestUtils.waitForMutationCondition( - component.shadowRoot, - { childList: true, subtree: true }, - () => component.shadowRoot.querySelectorAll("moz-card").length === 1 - ); - - const secondWindow = await BrowserTestUtils.openNewBrowserWindow(); - await BrowserTestUtils.openNewForegroundTab( - secondWindow.gBrowser, - "data:text/html,Inactive" - ); - const pinnedTab = secondWindow.gBrowser.tabs[0]; - secondWindow.gBrowser.pinTab(pinnedTab); - secondWindow.gBrowser.selectedTab = pinnedTab; - - await BrowserTestUtils.waitForMutationCondition( - component.shadowRoot, - { childList: true, subtree: true }, - () => component.shadowRoot.querySelectorAll("moz-card").length === 2 - ); - - const cards = component.shadowRoot.querySelectorAll("moz-card"); - const currentList = cards[0].querySelector("sidebar-tab-list"); - const inactiveList = cards[1].querySelector("sidebar-tab-list"); - - await TestUtils.waitForCondition( - () => inactiveList.hasAttribute("inactive-window"), - "The non-current window's tab list is marked inactive." - ); - Assert.ok( - !currentList.hasAttribute("inactive-window"), - "The current window's tab list is not marked inactive." - ); - - await BrowserTestUtils.waitForMutationCondition( - inactiveList.shadowRoot, - { childList: true, subtree: true, attributes: true }, - () => - !![...inactiveList.rowEls].length && - [...inactiveList.rowEls].every(row => row.hasAttribute("inactive-window")) - ); - Assert.ok( - [...currentList.rowEls].every(row => !row.hasAttribute("inactive-window")), - "Rows in the current window are not marked inactive." - ); - - const inactivePinnedButton = await TestUtils.waitForCondition(() => - cards[1].querySelector(".pinned-tabs moz-button.selected") - ); - Assert.ok( - inactivePinnedButton.classList.contains("inactive"), - "The selected pinned tab in a non-current window is marked inactive." - ); - - await BrowserTestUtils.closeWindow(secondWindow); - SidebarTestUtils.closePanel(window); - await SpecialPowers.popPrefEnv(); -}); - add_task(async function test_context_menu_close_tab() { const url = "data:text/html,CloseMe"; const tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, url); diff -urN firefox-157.0-orig/browser/components/sidebar/tests/browser/browser_sidebar_expand_on_hover.js firefox-157.0/browser/components/sidebar/tests/browser/browser_sidebar_expand_on_hover.js --- firefox-157.0-orig/browser/components/sidebar/tests/browser/browser_sidebar_expand_on_hover.js 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/sidebar/tests/browser/browser_sidebar_expand_on_hover.js 2026-10-05 08:21:36 +0900 @@ -3,7 +3,7 @@ "use strict"; -const novaEnabled = Services.prefs.getBoolPref("browser.nova.enabled", false); +const novaEnabled = false; add_setup(async () => { await SpecialPowers.pushPrefEnv({ diff -urN firefox-157.0-orig/browser/components/sidebar/tests/browser/browser_sidebar_pinned_tab_promo.js firefox-157.0/browser/components/sidebar/tests/browser/browser_sidebar_pinned_tab_promo.js --- firefox-157.0-orig/browser/components/sidebar/tests/browser/browser_sidebar_pinned_tab_promo.js 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/sidebar/tests/browser/browser_sidebar_pinned_tab_promo.js 2026-10-05 08:20:55 +0900 @@ -9,7 +9,6 @@ ["sidebar.verticalTabs", true], ["sidebar.verticalTabs.dragToPinPromo.dismissed", false], ["sidebar.visibility", "always-show"], - ["browser.nova.enabled", false], ], }); }); @@ -30,40 +29,6 @@ ); }); -/* Bug 2052309: tests that the promo is hidden when Nova is enabled */ -add_task(async function test_promo_card_hidden_when_nova_enabled() { - await SpecialPowers.pushPrefEnv({ set: [["browser.nova.enabled", false]] }); - const promoCard = document.getElementById("drag-to-pin-promo-card"); - - await SidebarController.updateUIState({ expanded: true }); - ok( - BrowserTestUtils.isVisible(promoCard), - "Drag-to-pin promo card is shown when Nova is disabled." - ); - - await SpecialPowers.pushPrefEnv({ set: [["browser.nova.enabled", true]] }); - await BrowserTestUtils.waitForMutationCondition( - promoCard, - { attributeFilter: ["hidden"] }, - () => BrowserTestUtils.isHidden(promoCard) - ); - ok( - BrowserTestUtils.isHidden(promoCard), - "Drag-to-pin promo card is hidden when Nova is enabled." - ); - - await SpecialPowers.popPrefEnv(); - await BrowserTestUtils.waitForMutationCondition( - promoCard, - { attributeFilter: ["hidden"] }, - () => BrowserTestUtils.isVisible(promoCard) - ); - ok( - BrowserTestUtils.isVisible(promoCard), - "Drag-to-pin promo card is shown again when Nova is disabled." - ); -}); - add_task(async function test_dismiss_promo_card() { const promoCard = document.getElementById("drag-to-pin-promo-card"); diff -urN firefox-157.0-orig/browser/components/tabbrowser/content/tab-bar-visibility.js firefox-157.0/browser/components/tabbrowser/content/tab-bar-visibility.js --- firefox-157.0-orig/browser/components/tabbrowser/content/tab-bar-visibility.js 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/tabbrowser/content/tab-bar-visibility.js 2026-10-05 08:44:10 +0900 @@ -37,7 +37,7 @@ // a titlebar? When the tabs toolbar is hidden they form the top edge of the // window, so they share the titlebar's background and inactive styling. let isTitlebar = CustomTitlebar.enabled && hideTabsToolbar; - let titlebarIds = Services.prefs.getBoolPref("browser.nova.enabled") + let titlebarIds = false ? ["nav-bar", "PersonalToolbar"] : ["nav-bar"]; for (let id of titlebarIds) { diff -urN firefox-157.0-orig/browser/components/tabbrowser/content/tab-hover-preview.mjs firefox-157.0/browser/components/tabbrowser/content/tab-hover-preview.mjs --- firefox-157.0-orig/browser/components/tabbrowser/content/tab-hover-preview.mjs 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/tabbrowser/content/tab-hover-preview.mjs 2026-10-05 08:44:03 +0900 @@ -56,12 +56,7 @@ "ui.popup.disable_autohide", false ); - XPCOMUtils.defineLazyPreferenceGetter( - this, - "_novaEnabled", - "browser.nova.enabled", - false - ); + this._novaEnabled = false; this.#win = win; this.#deactivateTimers = new WeakMap(); diff -urN firefox-157.0-orig/browser/components/tabbrowser/content/tabgroup-menu.js firefox-157.0/browser/components/tabbrowser/content/tabgroup-menu.js --- firefox-157.0-orig/browser/components/tabbrowser/content/tabgroup-menu.js 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/tabbrowser/content/tabgroup-menu.js 2026-10-05 08:43:46 +0900 @@ -951,10 +951,7 @@ } #maybeUpdateLayoutForNova() { - const isNovaEnabled = Services.prefs.getBoolPref( - "browser.nova.enabled", - false - ); + const isNovaEnabled = false; if (isNovaEnabled) { this.#nameContainer.before(this.#swatchesContainer); } else { diff -urN firefox-157.0-orig/browser/components/tabbrowser/test/browser/dragdrop/browser_drag_to_pin.js firefox-157.0/browser/components/tabbrowser/test/browser/dragdrop/browser_drag_to_pin.js --- firefox-157.0-orig/browser/components/tabbrowser/test/browser/dragdrop/browser_drag_to_pin.js 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/tabbrowser/test/browser/dragdrop/browser_drag_to_pin.js 2026-10-05 08:41:50 +0900 @@ -138,8 +138,6 @@ ["sidebar.verticalTabs", true], ["sidebar.verticalTabs.dragToPinPromo.dismissed", false], ["sidebar.visibility", "always-show"], - // Bug 2052309: promo card is hidden when Nova is enabled. - ["browser.nova.enabled", false], ], }); diff -urN firefox-157.0-orig/browser/components/tabbrowser/test/browser/tabs/browser.toml firefox-157.0/browser/components/tabbrowser/test/browser/tabs/browser.toml --- firefox-157.0-orig/browser/components/tabbrowser/test/browser/tabs/browser.toml 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/tabbrowser/test/browser/tabs/browser.toml 2026-10-05 08:43:09 +0900 @@ -662,8 +662,6 @@ ["browser_tab_splitview_alt_click.js"] -["browser_tab_splitview_content_size.js"] - ["browser_tab_splitview_contextmenu.js"] skip-if = [ "os == 'mac' && os_version == '10.15' && arch == 'x86_64'", # Bug 1994508 diff -urN firefox-157.0-orig/browser/components/tabbrowser/test/browser/tabs/browser_tab_group_menu.js firefox-157.0/browser/components/tabbrowser/test/browser/tabs/browser_tab_group_menu.js --- firefox-157.0-orig/browser/components/tabbrowser/test/browser/tabs/browser_tab_group_menu.js 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/tabbrowser/test/browser/tabs/browser_tab_group_menu.js 2026-10-05 08:43:21 +0900 @@ -509,10 +509,6 @@ * when Nova is disabled. */ add_task(async function test_swatchLayoutDefault() { - await SpecialPowers.pushPrefEnv({ - set: [["browser.nova.enabled", false]], - }); - let { tabgroupEditor, group } = await createTabGroupAndOpenEditPanel( [], "test_swatchLayoutDefault" @@ -539,71 +535,6 @@ tabgroupPanel.hidePopup(); await panelHidden; - await removeTabGroup(group); - await SpecialPowers.popPrefEnv(); -}); - -/** - * Tests that the swatches are positioned before the name field - * when Nova is enabled, and that their positions are restored - * when Nova is disabled. - */ -add_task(async function test_swatchLayoutNova() { - await SpecialPowers.pushPrefEnv({ - set: [["browser.nova.enabled", true]], - }); - - let { tabgroupEditor, group } = await createTabGroupAndOpenEditPanel( - [], - "test_swatchLayoutNova" - ); - let tabgroupPanel = tabgroupEditor.panel; - let swatches = tabgroupPanel.querySelector(".tab-group-editor-swatches"); - let nameContainer = tabgroupPanel.querySelector(".tab-group-editor-name"); - let propertiesActions = tabgroupPanel.querySelector( - "#tab-group-properties-and-actions" - ); - - Assert.equal( - swatches.nextElementSibling, - nameContainer, - "Swatches are directly above the name field when Nova is enabled" - ); - Assert.notEqual( - swatches.parentElement, - propertiesActions, - "Swatches are not in the properties-and-actions container when Nova is enabled" - ); - - let panelHidden = BrowserTestUtils.waitForPopupEvent(tabgroupPanel, "hidden"); - tabgroupPanel.hidePopup(); - await panelHidden; - await SpecialPowers.popPrefEnv(); - - // Verify layout is restored when we re-open the panel and disable Nova. - await SpecialPowers.pushPrefEnv({ - set: [["browser.nova.enabled", false]], - }); - - let panelShown = BrowserTestUtils.waitForPopupEvent(tabgroupPanel, "shown"); - tabgroupEditor.openEditModal(group); - await panelShown; - - Assert.notEqual( - swatches.nextElementSibling, - nameContainer, - "Swatches are not directly above the name field after disabling Nova" - ); - Assert.equal( - swatches.parentElement, - propertiesActions, - "Swatches are back in the properties-and-actions container after disabling Nova" - ); - - panelHidden = BrowserTestUtils.waitForPopupEvent(tabgroupPanel, "hidden"); - tabgroupPanel.hidePopup(); - await panelHidden; - await removeTabGroup(group); await SpecialPowers.popPrefEnv(); }); diff -urN firefox-157.0-orig/browser/components/tabbrowser/test/browser/tabs/browser_tab_preview.js firefox-157.0/browser/components/tabbrowser/test/browser/tabs/browser_tab_preview.js --- firefox-157.0-orig/browser/components/tabbrowser/test/browser/tabs/browser_tab_preview.js 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/tabbrowser/test/browser/tabs/browser_tab_preview.js 2026-10-05 08:42:25 +0900 @@ -1203,23 +1203,9 @@ const testCases = [ { - prefs: [["browser.nova.enabled", false]], expected: { position: "bottomleft topleft", x: 0, y: 0 }, message: "Without Nova there is no offset", }, - { - prefs: [["browser.nova.enabled", true]], - expected: { position: "bottomleft topleft", x: -16, y: 0 }, - message: "LTR Nova anchors to the left edge and offsets by -16px", - }, - { - prefs: [ - ["browser.nova.enabled", true], - ["intl.l10n.pseudo", "bidi"], - ], - expected: { position: "bottomright topright", x: 16, y: 0 }, - message: "RTL Nova anchors to the right edge and offsets by +16px", - }, ]; await withGroupPanel(async groupPanel => { @@ -1232,60 +1218,18 @@ await SpecialPowers.popPrefEnv(); }); -add_task(async function tabGroupPanelHorizontalOpensWithOffset() { - // The vertical-tabs variant enables sidebar.verticalTabs for the whole run. - await SpecialPowers.pushPrefEnv({ - set: [ - ["sidebar.verticalTabs", false], - ["browser.nova.enabled", true], - ], - }); - - await withGroupPanel(async (groupPanel, group) => { - const openPopupSpy = sinon.spy(groupPanel.panelElement, "openPopup"); - await openGroupPreview(group); - - Assert.ok( - openPopupSpy.calledWith( - group.labelContainerElement, - sinon.match({ position: "bottomleft topleft", x: -16, y: 0 }) - ), - "openPopup is called anchored to the label with the Nova offset" - ); - - await closeGroupPreviews(); - sinon.restore(); - }); - - await SpecialPowers.popPrefEnv(); -}); - add_task(async function tabGroupPanelVerticalOffsetOptions() { const testCases = [ { - nova: false, start: true, expected: { position: "topright topleft", x: 0, y: -5 }, message: "Nova off, sidebar at start: keeps the 5px upward offset", }, { - nova: false, start: false, expected: { position: "topleft topright", x: 0, y: -5 }, message: "Nova off, sidebar at end: 5px offset, anchor mirrored", }, - { - nova: true, - start: true, - expected: { position: "topright topleft", x: 0, y: -16 }, - message: "Nova on, sidebar at start: 16px upward offset", - }, - { - nova: true, - start: false, - expected: { position: "topleft topright", x: 0, y: -16 }, - message: "Nova on, sidebar at end: 16px offset, anchor mirrored", - }, ]; await withGroupPanel(async groupPanel => { await SpecialPowers.pushPrefEnv({ @@ -1299,10 +1243,9 @@ "Tabs are in vertical mode" ); - for (const { nova, start, expected, message } of testCases) { + for (const { start, expected, message } of testCases) { await assertPopupOptions(groupPanel, { prefs: [ - ["browser.nova.enabled", nova], ["sidebar.position_start", start], ], expected, diff -urN firefox-157.0-orig/browser/components/tabbrowser/test/browser/tabs/browser_tab_splitview_content_size.js firefox-157.0/browser/components/tabbrowser/test/browser/tabs/browser_tab_splitview_content_size.js --- firefox-157.0-orig/browser/components/tabbrowser/test/browser/tabs/browser_tab_splitview_content_size.js 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/tabbrowser/test/browser/tabs/browser_tab_splitview_content_size.js 1970-01-01 09:00:00 +0900 @@ -1,227 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - https://creativecommons.org/publicdomain/zero/1.0/ */ - -"use strict"; - -// Selecting one panel of a split view must not resize either panel's content -// area. Decoration that distinguishes the selected panel from the non-selected -// one has to be drawn without taking up layout space, otherwise every -// selection change reflows both documents (bug 2051212). - -// Give the document enough width- and height-dependent layout that resizing it -// has real work to do, so that an optimization which skips reflow for a trivial -// document could not quietly invalidate this test. -const PAGE = - "data:text/html," + - encodeURIComponent( - "Split view panel" + - '
' + - "

" + - "Text that must be laid out again whenever the viewport changes. ".repeat( - 10 - ) + - "

" - ); -const STOP_COUNTING = "TestStopCountingReflows"; - -registerCleanupFunction(() => { - Services.prefs.clearUserPref("browser.tabs.splitview.hasUsed"); -}); - -/** - * Content area dimensions of a split view panel, measured both from the parent - * process and from within the document itself. - * - * @param {MozTabbrowserTab} tab - * @returns {Promise} - */ -async function getContentDimensions(tab) { - const browser = tab.linkedBrowser; - await window.promiseDocumentFlushed(() => {}); - const { width, height } = browser.getBoundingClientRect(); - const inner = await SpecialPowers.spawn(browser, [], async () => { - // Let a pending resize reach the document before measuring it. - await new Promise(resolve => - content.requestAnimationFrame(() => - content.requestAnimationFrame(resolve) - ) - ); - return { width: content.innerWidth, height: content.innerHeight }; - }); - return { - browserWidth: width, - browserHeight: height, - innerWidth: inner.width, - innerHeight: inner.height, - }; -} - -/** - * Counts reflows of each tab's document while a task runs in the parent - * process. Interruptible reflows count too: a reflow caused by the content - * area changing size is dispatched from a refresh driver tick, so it arrives - * as an interruptible one. - * - * @param {MozTabbrowserTab[]} tabs - * @param {Function} task - * @returns {Promise} Reflow count per tab, in the order given. - */ -async function countReflowsDuring(tabs, task) { - const counts = tabs.map(tab => - SpecialPowers.spawn(tab.linkedBrowser, [STOP_COUNTING], async topic => { - let reflows = 0; - const observer = { - reflow: () => reflows++, - reflowInterruptible: () => reflows++, - QueryInterface: ChromeUtils.generateQI([ - "nsIReflowObserver", - "nsISupportsWeakReference", - ]), - }; - // The docshell holds the observer weakly, so it has to stay referenced - // by this frame until the parent process says to stop. - content.docShell.addWeakReflowObserver(observer); - await new Promise(resolve => - content.addEventListener(topic, resolve, { once: true }, true) - ); - // A reflow provoked by the task may still be pending. - await new Promise(resolve => - content.requestAnimationFrame(() => - content.requestAnimationFrame(resolve) - ) - ); - content.docShell.removeWeakReflowObserver(observer); - return reflows; - }) - ); - - // Messages to a content process are ordered, so this round trip cannot - // resolve before the observers above have been registered. - await Promise.all( - tabs.map(tab => SpecialPowers.spawn(tab.linkedBrowser, [], () => {})) - ); - - await task(); - - await window.promiseDocumentFlushed(() => {}); - await Promise.all( - tabs.map(tab => - SpecialPowers.spawn(tab.linkedBrowser, [STOP_COUNTING], topic => { - content.dispatchEvent(new content.Event(topic)); - }) - ) - ); - return Promise.all(counts); -} - -/** - * Whether a panel's content area draws a visible edge, by either mechanism. - * - * @param {MozTabbrowserTab} tab - * @returns {boolean} - */ -function hasSeparator(tab) { - const container = tab.linkedBrowser.closest(".browserContainer"); - const style = getComputedStyle(container); - const outlined = - style.outlineStyle != "none" && parseFloat(style.outlineWidth) > 0; - const bordered = ["Top", "Right", "Bottom", "Left"].every( - side => parseFloat(style[`border${side}Width`]) > 0 - ); - return outlined || bordered; -} - -add_task(async function test_selecting_a_panel_does_not_resize_content() { - await SpecialPowers.pushPrefEnv({ set: [["browser.nova.enabled", true]] }); - - const tab1 = BrowserTestUtils.addTab(gBrowser, PAGE); - const tab2 = BrowserTestUtils.addTab(gBrowser, PAGE); - await Promise.all([ - BrowserTestUtils.browserLoaded(tab1.linkedBrowser), - BrowserTestUtils.browserLoaded(tab2.linkedBrowser), - ]); - - await withSplitView(tab1, tab2, async () => { - const panel1 = document.getElementById(tab1.linkedPanel); - const panel2 = document.getElementById(tab2.linkedPanel); - Assert.ok( - panel1.classList.contains("deck-selected"), - "First panel is selected." - ); - - const metrics1 = await getContentDimensions(tab1); - const metrics2 = await getContentDimensions(tab2); - Assert.greater( - metrics1.innerWidth, - 0, - "First panel has a laid out document." - ); - Assert.greater( - metrics2.innerWidth, - 0, - "Second panel has a laid out document." - ); - - info("Select the second panel."); - let [reflows1, reflows2] = await countReflowsDuring([tab1, tab2], () => - BrowserTestUtils.switchTab(gBrowser, tab2) - ); - Assert.ok( - panel2.classList.contains("deck-selected"), - "Second panel is selected." - ); - Assert.equal( - reflows1, - 0, - "Deselecting the first panel did not reflow its document." - ); - Assert.equal( - reflows2, - 0, - "Selecting the second panel did not reflow its document." - ); - Assert.deepEqual( - await getContentDimensions(tab1), - metrics1, - "First panel's content area is unchanged after being deselected." - ); - Assert.deepEqual( - await getContentDimensions(tab2), - metrics2, - "Second panel's content area is unchanged after being selected." - ); - Assert.ok( - hasSeparator(tab1), - "Deselected panel still draws a separator around its content area." - ); - - info("Select the first panel again."); - [reflows1, reflows2] = await countReflowsDuring([tab1, tab2], () => - BrowserTestUtils.switchTab(gBrowser, tab1) - ); - Assert.equal( - reflows1, - 0, - "Reselecting the first panel did not reflow its document." - ); - Assert.equal( - reflows2, - 0, - "Deselecting the second panel did not reflow its document." - ); - Assert.deepEqual( - await getContentDimensions(tab1), - metrics1, - "First panel's content area is unchanged after being reselected." - ); - Assert.deepEqual( - await getContentDimensions(tab2), - metrics2, - "Second panel's content area is unchanged after being deselected." - ); - Assert.ok( - hasSeparator(tab2), - "Deselected panel still draws a separator around its content area." - ); - }); -}); diff -urN firefox-157.0-orig/browser/components/urlbar/UrlbarNewTabComponentRegistrant.sys.mjs firefox-157.0/browser/components/urlbar/UrlbarNewTabComponentRegistrant.sys.mjs --- firefox-157.0-orig/browser/components/urlbar/UrlbarNewTabComponentRegistrant.sys.mjs 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/urlbar/UrlbarNewTabComponentRegistrant.sys.mjs 2026-10-05 08:53:40 +0900 @@ -9,7 +9,6 @@ import { UrlbarPrefs } from "moz-src:///browser/components/urlbar/UrlbarPrefs.sys.mjs"; const FEATURE_GATE = "newtabFeatureGate"; -const NOVA_PREF = "browser.nova.enabled"; /** * A registrant that adds `` to about:newtab / about:home while the @@ -35,9 +34,6 @@ } onPrefChanged(pref) { - if (pref == NOVA_PREF) { - this.updated(); - } } getComponents() { diff -urN firefox-157.0-orig/browser/components/urlbar/UrlbarPrefs.sys.mjs firefox-157.0/browser/components/urlbar/UrlbarPrefs.sys.mjs --- firefox-157.0-orig/browser/components/urlbar/UrlbarPrefs.sys.mjs 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/urlbar/UrlbarPrefs.sys.mjs 2026-10-05 09:06:12 +0900 @@ -776,7 +776,6 @@ const PREF_OTHER_DEFAULTS = /** @type {PreferenceDefinition[]} */ ([ ["browser.fixup.dns_first_for_single_words", false], ["browser.ml.enable", false], - ["browser.nova.enabled", false], ["browser.search.openintab", false], ["browser.search.suggest.enabled", true], ["browser.search.suggest.enabled.private", false], @@ -1398,9 +1397,6 @@ // Some prefs may influence others. switch (pref) { - case "browser.nova.enabled": - this._map.delete("newtabFeatureGate"); - return; case "autoFill.adaptiveHistory.useCountThreshold": this._map.delete("autoFillAdaptiveHistoryUseCountThreshold"); return; @@ -1502,7 +1498,7 @@ } case "newtabFeatureGate": { // The New Tab search bar is only themed for Nova. - return this.get("browser.nova.enabled") && this._readPref(pref); + return false && this._readPref(pref); } case "defaultBehavior": { let val = 0; diff -urN firefox-157.0-orig/browser/components/urlbar/content/SearchModeSwitcher.mjs firefox-157.0/browser/components/urlbar/content/SearchModeSwitcher.mjs --- firefox-157.0-orig/browser/components/urlbar/content/SearchModeSwitcher.mjs 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/urlbar/content/SearchModeSwitcher.mjs 2026-10-05 09:05:34 +0900 @@ -707,7 +707,7 @@ menuitem.setAttribute("data-l10n-attrs", "accesskey"); this.#input.document.l10n.setAttributes( menuitem, - UrlbarPrefs.get("browser.nova.enabled") + false ? "urlbar-searchmode-popup-settings" : "urlbar-searchmode-popup-search-settings" ); diff -urN firefox-157.0-orig/browser/components/urlbar/content/SmartbarInput.mjs firefox-157.0/browser/components/urlbar/content/SmartbarInput.mjs --- firefox-157.0-orig/browser/components/urlbar/content/SmartbarInput.mjs 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/urlbar/content/SmartbarInput.mjs 2026-10-05 09:05:39 +0900 @@ -154,7 +154,7 @@ click-on-mouseup=""> ${ - UrlbarPrefs.get("browser.nova.enabled") + false ? '' : '' } diff -urN firefox-157.0-orig/browser/components/urlbar/content/UrlbarInputBase.mjs firefox-157.0/browser/components/urlbar/content/UrlbarInputBase.mjs --- firefox-157.0-orig/browser/components/urlbar/content/UrlbarInputBase.mjs 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/urlbar/content/UrlbarInputBase.mjs 2026-10-05 09:05:28 +0900 @@ -168,7 +168,7 @@ click-on-mouseup="">
${ - UrlbarPrefs.get("browser.nova.enabled") + false ? '
' : '
' } @@ -431,7 +431,7 @@ searchModeSwitcherDescription.setAttribute( "data-l10n-id", - this.#isAddressbar && !UrlbarPrefs.get("browser.nova.enabled") + this.#isAddressbar && !false ? "urlbar-searchmode-popup-one-off-header" : "urlbar-searchmode-popup-header" ); diff -urN firefox-157.0-orig/browser/components/urlbar/content/UrlbarView.mjs firefox-157.0/browser/components/urlbar/content/UrlbarView.mjs --- firefox-157.0-orig/browser/components/urlbar/content/UrlbarView.mjs 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/urlbar/content/UrlbarView.mjs 2026-10-05 09:05:18 +0900 @@ -1961,7 +1961,7 @@ noWrap.appendChild(titleSeparator); item._elements.set("titleSeparator", titleSeparator); - if (UrlbarPrefs.get("browser.nova.enabled")) { + if (false) { let userContext = this.#createElement("span"); userContext.classList.add( "urlbarView-user-context", @@ -2388,7 +2388,7 @@ this.#createRowContentForBottomUrl(item, result); } else if ( result.isRichSuggestion || - UrlbarPrefs.get("browser.nova.enabled") + false ) { this.#createRowContentForRichSuggestion(item, result); } else { @@ -2689,7 +2689,7 @@ }; } - if (result.isRichSuggestion || UrlbarPrefs.get("browser.nova.enabled")) { + if (result.isRichSuggestion || false) { this.#updateRowForRichSuggestion(item, result); } @@ -2859,7 +2859,7 @@ // The "rich-suggestion" attribute isn't used in Nova. item.toggleAttribute( "rich-suggestion", - !UrlbarPrefs.get("browser.nova.enabled") + !false ); this.#setRowSelectable(item, result.type != UrlbarShared.RESULT_TYPE.TIP); @@ -2923,7 +2923,7 @@ // The "rich-suggestion" attribute isn't used in Nova. item.toggleAttribute( "rich-suggestion", - !UrlbarPrefs.get("browser.nova.enabled") + !false ); item.setAttribute( @@ -3669,7 +3669,7 @@ : "urlbar-result-action-switch-tab", }); - if (!UrlbarPrefs.get("browser.nova.enabled")) { + if (!false) { this.#updateOtherActionChicletsProton(result, actionNode); return; } diff -urN firefox-157.0-orig/browser/components/urlbar/moz.build firefox-157.0/browser/components/urlbar/moz.build --- firefox-157.0-orig/browser/components/urlbar/moz.build 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/urlbar/moz.build 2026-10-05 08:55:57 +0900 @@ -96,43 +96,26 @@ "tests/UrlbarTestUtils.sys.mjs", ] BROWSER_CHROME_MANIFESTS += [ - "tests/browser-autofill/browser-nova.toml", "tests/browser-autofill/browser-proton.toml", - "tests/browser-editing/browser-nova.toml", "tests/browser-editing/browser-proton.toml", - "tests/browser-engagementTelemetry/browser-nova.toml", "tests/browser-engagementTelemetry/browser-proton.toml", "tests/browser-newtab/browser.toml", - "tests/browser-quickactions/browser-nova.toml", "tests/browser-quickactions/browser-proton.toml", - "tests/browser-results/browser-nova.toml", "tests/browser-results/browser-proton.toml", - "tests/browser-search/browser-nova.toml", "tests/browser-search/browser-proton.toml", - "tests/browser-searchMode/browser-nova.toml", "tests/browser-searchMode/browser-proton.toml", - "tests/browser-tabs/browser-nova.toml", "tests/browser-tabs/browser-proton.toml", - "tests/browser-telemetry/browser-nova.toml", "tests/browser-telemetry/browser-proton.toml", - "tests/browser-tips/browser-nova.toml", "tests/browser-tips/browser-proton.toml", "tests/browser-tips/suppress-tips/browser.toml", - "tests/browser-trustPanel/browser-nova.toml", "tests/browser-trustPanel/browser-proton.toml", - "tests/browser-updateResults/browser-nova.toml", "tests/browser-updateResults/browser-proton.toml", - "tests/browser-UrlbarInput/browser-nova.toml", "tests/browser-UrlbarInput/browser-proton.toml", - "tests/browser-UrlbarView/browser-nova.toml", "tests/browser-UrlbarView/browser-proton.toml", - "tests/browser/browser-nova.toml", "tests/browser/browser-proton.toml", "tests/browser/browserDisableAPZ.toml", "tests/browser/browserSidebarRevamp.toml", - "tests/browser/searchbar/browser-nova.toml", "tests/browser/searchbar/browser-proton.toml", - "tests/quicksuggest/browser/browser-nova.toml", "tests/quicksuggest/browser/browser-proton.toml", ] XPCSHELL_TESTS_MANIFESTS += [ diff -urN firefox-157.0-orig/browser/components/urlbar/tests/UrlbarTestUtils.sys.mjs firefox-157.0/browser/components/urlbar/tests/UrlbarTestUtils.sys.mjs --- firefox-157.0-orig/browser/components/urlbar/tests/UrlbarTestUtils.sys.mjs 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/urlbar/tests/UrlbarTestUtils.sys.mjs 2026-10-05 08:58:28 +0900 @@ -2134,7 +2134,7 @@ * @returns {boolean} */ isSeparatorVisible(separatorElement) { - if (!Services.prefs.getBoolPref("browser.nova.enabled", false)) { + if (!false) { return this.#isVisible(separatorElement); } diff -urN firefox-157.0-orig/browser/components/urlbar/tests/browser/browser-nova.toml firefox-157.0/browser/components/urlbar/tests/browser/browser-nova.toml --- firefox-157.0-orig/browser/components/urlbar/tests/browser/browser-nova.toml 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/urlbar/tests/browser/browser-nova.toml 1970-01-01 09:00:00 +0900 @@ -1,6 +0,0 @@ -[DEFAULT] -dupe-manifest = true -tags = "urlbar urlbar-nova" -prefs = ["browser.nova.enabled=true"] - -["include:browser.toml"] diff -urN firefox-157.0-orig/browser/components/urlbar/tests/browser/browser-proton.toml firefox-157.0/browser/components/urlbar/tests/browser/browser-proton.toml --- firefox-157.0-orig/browser/components/urlbar/tests/browser/browser-proton.toml 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/urlbar/tests/browser/browser-proton.toml 2026-10-05 09:00:58 +0900 @@ -1,6 +1,6 @@ [DEFAULT] dupe-manifest = true tags = "urlbar urlbar-proton" -prefs = ["browser.nova.enabled=false"] +prefs = [] ["include:browser.toml"] diff -urN firefox-157.0-orig/browser/components/urlbar/tests/browser/searchbar/browser-nova.toml firefox-157.0/browser/components/urlbar/tests/browser/searchbar/browser-nova.toml --- firefox-157.0-orig/browser/components/urlbar/tests/browser/searchbar/browser-nova.toml 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/urlbar/tests/browser/searchbar/browser-nova.toml 1970-01-01 09:00:00 +0900 @@ -1,6 +0,0 @@ -[DEFAULT] -dupe-manifest = true -tags = "urlbar urlbar-nova" -prefs = ["browser.nova.enabled=true"] - -["include:browser.toml"] diff -urN firefox-157.0-orig/browser/components/urlbar/tests/browser/searchbar/browser-proton.toml firefox-157.0/browser/components/urlbar/tests/browser/searchbar/browser-proton.toml --- firefox-157.0-orig/browser/components/urlbar/tests/browser/searchbar/browser-proton.toml 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/urlbar/tests/browser/searchbar/browser-proton.toml 2026-10-05 09:01:07 +0900 @@ -1,6 +1,6 @@ [DEFAULT] dupe-manifest = true tags = "urlbar urlbar-proton" -prefs = ["browser.nova.enabled=false"] +prefs = [] ["include:browser.toml"] diff -urN firefox-157.0-orig/browser/components/urlbar/tests/browser-UrlbarInput/browser-nova.toml firefox-157.0/browser/components/urlbar/tests/browser-UrlbarInput/browser-nova.toml --- firefox-157.0-orig/browser/components/urlbar/tests/browser-UrlbarInput/browser-nova.toml 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/urlbar/tests/browser-UrlbarInput/browser-nova.toml 1970-01-01 09:00:00 +0900 @@ -1,6 +0,0 @@ -[DEFAULT] -dupe-manifest = true -tags = "urlbar urlbar-nova" -prefs = ["browser.nova.enabled=true"] - -["include:browser.toml"] diff -urN firefox-157.0-orig/browser/components/urlbar/tests/browser-UrlbarInput/browser-proton.toml firefox-157.0/browser/components/urlbar/tests/browser-UrlbarInput/browser-proton.toml --- firefox-157.0-orig/browser/components/urlbar/tests/browser-UrlbarInput/browser-proton.toml 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/urlbar/tests/browser-UrlbarInput/browser-proton.toml 2026-10-05 08:53:58 +0900 @@ -1,6 +1,6 @@ [DEFAULT] dupe-manifest = true tags = "urlbar urlbar-proton" -prefs = ["browser.nova.enabled=false"] +prefs = [] ["include:browser.toml"] diff -urN firefox-157.0-orig/browser/components/urlbar/tests/browser-UrlbarView/browser-nova.toml firefox-157.0/browser/components/urlbar/tests/browser-UrlbarView/browser-nova.toml --- firefox-157.0-orig/browser/components/urlbar/tests/browser-UrlbarView/browser-nova.toml 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/urlbar/tests/browser-UrlbarView/browser-nova.toml 1970-01-01 09:00:00 +0900 @@ -1,6 +0,0 @@ -[DEFAULT] -dupe-manifest = true -tags = "urlbar urlbar-nova" -prefs = ["browser.nova.enabled=true"] - -["include:browser.toml"] diff -urN firefox-157.0-orig/browser/components/urlbar/tests/browser-UrlbarView/browser-proton.toml firefox-157.0/browser/components/urlbar/tests/browser-UrlbarView/browser-proton.toml --- firefox-157.0-orig/browser/components/urlbar/tests/browser-UrlbarView/browser-proton.toml 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/urlbar/tests/browser-UrlbarView/browser-proton.toml 2026-10-05 09:00:13 +0900 @@ -1,6 +1,6 @@ [DEFAULT] dupe-manifest = true tags = "urlbar urlbar-proton" -prefs = ["browser.nova.enabled=false"] +prefs = [] ["include:browser.toml"] diff -urN firefox-157.0-orig/browser/components/urlbar/tests/browser-UrlbarView/browser_resultDisplay.js firefox-157.0/browser/components/urlbar/tests/browser-UrlbarView/browser_resultDisplay.js --- firefox-157.0-orig/browser/components/urlbar/tests/browser-UrlbarView/browser_resultDisplay.js 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/urlbar/tests/browser-UrlbarView/browser_resultDisplay.js 2026-10-05 09:00:09 +0900 @@ -49,7 +49,7 @@ // The heuristic currently doesn't have a type icon even if it's from // history. !result.heuristic && - Services.prefs.getBoolPref("browser.nova.enabled", false) + false ) { Assert.equal( result.displayed.typeIcon, diff -urN firefox-157.0-orig/browser/components/urlbar/tests/browser-UrlbarView/browser_resultTypes_display.js firefox-157.0/browser/components/urlbar/tests/browser-UrlbarView/browser_resultTypes_display.js --- firefox-157.0-orig/browser/components/urlbar/tests/browser-UrlbarView/browser_resultTypes_display.js 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/urlbar/tests/browser-UrlbarView/browser_resultTypes_display.js 2026-10-05 09:00:37 +0900 @@ -75,7 +75,7 @@ // The separator should *not* be visible, but Proton merely sets its // opacity to zero, which counts as visible. Pass false and remove this // comment when enabling Nova by default. - separator: !Services.prefs.getBoolPref("browser.nova.enabled", false), + separator: !false, title: "about:mozilla", type: UrlbarShared.RESULT_TYPE.TAB_SWITCH, }); @@ -307,7 +307,7 @@ // The separator should *not* be visible, but Proton merely sets its // opacity to zero, which counts as visible. Pass false and remove this // comment when enabling Nova by default. - separator: !Services.prefs.getBoolPref("browser.nova.enabled", false), + separator: !false, title: "Test Remote", type: UrlbarShared.RESULT_TYPE.REMOTE_TAB, }); diff -urN firefox-157.0-orig/browser/components/urlbar/tests/browser-autofill/browser-nova.toml firefox-157.0/browser/components/urlbar/tests/browser-autofill/browser-nova.toml --- firefox-157.0-orig/browser/components/urlbar/tests/browser-autofill/browser-nova.toml 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/urlbar/tests/browser-autofill/browser-nova.toml 1970-01-01 09:00:00 +0900 @@ -1,6 +0,0 @@ -[DEFAULT] -dupe-manifest = true -tags = "urlbar urlbar-nova" -prefs = ["browser.nova.enabled=true"] - -["include:browser.toml"] diff -urN firefox-157.0-orig/browser/components/urlbar/tests/browser-autofill/browser-proton.toml firefox-157.0/browser/components/urlbar/tests/browser-autofill/browser-proton.toml --- firefox-157.0-orig/browser/components/urlbar/tests/browser-autofill/browser-proton.toml 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/urlbar/tests/browser-autofill/browser-proton.toml 2026-10-05 08:57:30 +0900 @@ -1,6 +1,6 @@ [DEFAULT] dupe-manifest = true tags = "urlbar urlbar-proton" -prefs = ["browser.nova.enabled=false"] +prefs = [] ["include:browser.toml"] diff -urN firefox-157.0-orig/browser/components/urlbar/tests/browser-editing/browser-nova.toml firefox-157.0/browser/components/urlbar/tests/browser-editing/browser-nova.toml --- firefox-157.0-orig/browser/components/urlbar/tests/browser-editing/browser-nova.toml 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/urlbar/tests/browser-editing/browser-nova.toml 1970-01-01 09:00:00 +0900 @@ -1,6 +0,0 @@ -[DEFAULT] -dupe-manifest = true -tags = "urlbar urlbar-nova" -prefs = ["browser.nova.enabled=true"] - -["include:browser.toml"] diff -urN firefox-157.0-orig/browser/components/urlbar/tests/browser-editing/browser-proton.toml firefox-157.0/browser/components/urlbar/tests/browser-editing/browser-proton.toml --- firefox-157.0-orig/browser/components/urlbar/tests/browser-editing/browser-proton.toml 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/urlbar/tests/browser-editing/browser-proton.toml 2026-10-05 08:58:16 +0900 @@ -1,6 +1,6 @@ [DEFAULT] dupe-manifest = true tags = "urlbar urlbar-proton" -prefs = ["browser.nova.enabled=false"] +prefs = [] ["include:browser.toml"] diff -urN firefox-157.0-orig/browser/components/urlbar/tests/browser-engagementTelemetry/browser-nova.toml firefox-157.0/browser/components/urlbar/tests/browser-engagementTelemetry/browser-nova.toml --- firefox-157.0-orig/browser/components/urlbar/tests/browser-engagementTelemetry/browser-nova.toml 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/urlbar/tests/browser-engagementTelemetry/browser-nova.toml 1970-01-01 09:00:00 +0900 @@ -1,6 +0,0 @@ -[DEFAULT] -dupe-manifest = true -tags = "urlbar urlbar-nova" -prefs = ["browser.nova.enabled=true"] - -["include:browser.toml"] diff -urN firefox-157.0-orig/browser/components/urlbar/tests/browser-engagementTelemetry/browser-proton.toml firefox-157.0/browser/components/urlbar/tests/browser-engagementTelemetry/browser-proton.toml --- firefox-157.0-orig/browser/components/urlbar/tests/browser-engagementTelemetry/browser-proton.toml 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/urlbar/tests/browser-engagementTelemetry/browser-proton.toml 2026-10-05 09:03:42 +0900 @@ -1,6 +1,6 @@ [DEFAULT] dupe-manifest = true tags = "urlbar urlbar-proton" -prefs = ["browser.nova.enabled=false"] +prefs = [] ["include:browser.toml"] diff -urN firefox-157.0-orig/browser/components/urlbar/tests/browser-newtab/browser.toml firefox-157.0/browser/components/urlbar/tests/browser-newtab/browser.toml --- firefox-157.0-orig/browser/components/urlbar/tests/browser-newtab/browser.toml 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/urlbar/tests/browser-newtab/browser.toml 2026-10-05 08:57:25 +0900 @@ -6,7 +6,7 @@ "head.js", "richSuggestionEngine.sjs", ] -prefs = ["browser.nova.enabled=true", "browser.urlbar.newtab.featureGate=true"] +prefs = ["browser.urlbar.newtab.featureGate=true"] ["browser_blur.js"] diff -urN firefox-157.0-orig/browser/components/urlbar/tests/browser-quickactions/browser-nova.toml firefox-157.0/browser/components/urlbar/tests/browser-quickactions/browser-nova.toml --- firefox-157.0-orig/browser/components/urlbar/tests/browser-quickactions/browser-nova.toml 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/urlbar/tests/browser-quickactions/browser-nova.toml 1970-01-01 09:00:00 +0900 @@ -1,6 +0,0 @@ -[DEFAULT] -dupe-manifest = true -tags = "urlbar urlbar-nova" -prefs = ["browser.nova.enabled=true"] - -["include:browser.toml"] diff -urN firefox-157.0-orig/browser/components/urlbar/tests/browser-quickactions/browser-proton.toml firefox-157.0/browser/components/urlbar/tests/browser-quickactions/browser-proton.toml --- firefox-157.0-orig/browser/components/urlbar/tests/browser-quickactions/browser-proton.toml 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/urlbar/tests/browser-quickactions/browser-proton.toml 2026-10-05 08:56:35 +0900 @@ -1,6 +1,6 @@ [DEFAULT] dupe-manifest = true tags = "urlbar urlbar-proton" -prefs = ["browser.nova.enabled=false"] +prefs = [] ["include:browser.toml"] diff -urN firefox-157.0-orig/browser/components/urlbar/tests/browser-results/browser-nova.toml firefox-157.0/browser/components/urlbar/tests/browser-results/browser-nova.toml --- firefox-157.0-orig/browser/components/urlbar/tests/browser-results/browser-nova.toml 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/urlbar/tests/browser-results/browser-nova.toml 1970-01-01 09:00:00 +0900 @@ -1,6 +0,0 @@ -[DEFAULT] -dupe-manifest = true -tags = "urlbar urlbar-nova" -prefs = ["browser.nova.enabled=true"] - -["include:browser.toml"] diff -urN firefox-157.0-orig/browser/components/urlbar/tests/browser-results/browser-proton.toml firefox-157.0/browser/components/urlbar/tests/browser-results/browser-proton.toml --- firefox-157.0-orig/browser/components/urlbar/tests/browser-results/browser-proton.toml 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/urlbar/tests/browser-results/browser-proton.toml 2026-10-05 09:01:22 +0900 @@ -1,6 +1,6 @@ [DEFAULT] dupe-manifest = true tags = "urlbar urlbar-proton" -prefs = ["browser.nova.enabled=false"] +prefs = [] ["include:browser.toml"] diff -urN firefox-157.0-orig/browser/components/urlbar/tests/browser-results/browser_tag_star_visibility.js firefox-157.0/browser/components/urlbar/tests/browser-results/browser_tag_star_visibility.js --- firefox-157.0-orig/browser/components/urlbar/tests/browser-results/browser_tag_star_visibility.js 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/urlbar/tests/browser-results/browser_tag_star_visibility.js 2026-10-05 09:01:18 +0900 @@ -150,7 +150,7 @@ if (testcase.expected.typeImageVisible) { Assert.equal( result.displayed.typeIcon, - Services.prefs.getBoolPref("browser.nova.enabled", false) + false ? 'url("chrome://browser/skin/urlbar/badge-bookmark.svg#ltr-icon")' : 'url("chrome://browser/skin/bookmark-12.svg")', "Should have the star image displayed or not as expected" @@ -158,7 +158,7 @@ } else { Assert.equal( result.displayed.typeIcon, - Services.prefs.getBoolPref("browser.nova.enabled", false) + false ? 'url("chrome://browser/skin/urlbar/badge-history.svg#ltr-icon")' : "none", "Should have the star image displayed or not as expected" diff -urN firefox-157.0-orig/browser/components/urlbar/tests/browser-search/browser-nova.toml firefox-157.0/browser/components/urlbar/tests/browser-search/browser-nova.toml --- firefox-157.0-orig/browser/components/urlbar/tests/browser-search/browser-nova.toml 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/urlbar/tests/browser-search/browser-nova.toml 1970-01-01 09:00:00 +0900 @@ -1,6 +0,0 @@ -[DEFAULT] -dupe-manifest = true -tags = "urlbar urlbar-nova" -prefs = ["browser.nova.enabled=true"] - -["include:browser.toml"] diff -urN firefox-157.0-orig/browser/components/urlbar/tests/browser-search/browser-proton.toml firefox-157.0/browser/components/urlbar/tests/browser-search/browser-proton.toml --- firefox-157.0-orig/browser/components/urlbar/tests/browser-search/browser-proton.toml 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/urlbar/tests/browser-search/browser-proton.toml 2026-10-05 08:59:25 +0900 @@ -1,6 +1,6 @@ [DEFAULT] dupe-manifest = true tags = "urlbar urlbar-proton" -prefs = ["browser.nova.enabled=false"] +prefs = [] ["include:browser.toml"] diff -urN firefox-157.0-orig/browser/components/urlbar/tests/browser-search/browser_oneOffs_heuristicRestyle.js firefox-157.0/browser/components/urlbar/tests/browser-search/browser_oneOffs_heuristicRestyle.js --- firefox-157.0-orig/browser/components/urlbar/tests/browser-search/browser_oneOffs_heuristicRestyle.js 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/urlbar/tests/browser-search/browser_oneOffs_heuristicRestyle.js 2026-10-05 08:59:19 +0900 @@ -102,7 +102,7 @@ // URL let isUrlVisible = BrowserTestUtils.isVisible(resultDetails.element.url); - if (!Services.prefs.getBoolPref("browser.nova.enabled", false)) { + if (!false) { // In Proton, the element remains visible, it's just empty. isUrlVisible = isUrlVisible && @@ -122,7 +122,7 @@ let isActionVisible = BrowserTestUtils.isVisible( resultDetails.element.action ); - if (!Services.prefs.getBoolPref("browser.nova.enabled", false)) { + if (!false) { // In Proton, the element remains visible, it's just empty. isActionVisible = isActionVisible && diff -urN firefox-157.0-orig/browser/components/urlbar/tests/browser-searchMode/browser-nova.toml firefox-157.0/browser/components/urlbar/tests/browser-searchMode/browser-nova.toml --- firefox-157.0-orig/browser/components/urlbar/tests/browser-searchMode/browser-nova.toml 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/urlbar/tests/browser-searchMode/browser-nova.toml 1970-01-01 09:00:00 +0900 @@ -1,6 +0,0 @@ -[DEFAULT] -dupe-manifest = true -tags = "urlbar urlbar-nova" -prefs = ["browser.nova.enabled=true"] - -["include:browser.toml"] diff -urN firefox-157.0-orig/browser/components/urlbar/tests/browser-searchMode/browser-proton.toml firefox-157.0/browser/components/urlbar/tests/browser-searchMode/browser-proton.toml --- firefox-157.0-orig/browser/components/urlbar/tests/browser-searchMode/browser-proton.toml 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/urlbar/tests/browser-searchMode/browser-proton.toml 2026-10-05 09:00:53 +0900 @@ -1,6 +1,6 @@ [DEFAULT] dupe-manifest = true tags = "urlbar urlbar-proton" -prefs = ["browser.nova.enabled=false"] +prefs = [] ["include:browser.toml"] diff -urN firefox-157.0-orig/browser/components/urlbar/tests/browser-searchMode/browser_searchModeSwitcher_basic.js firefox-157.0/browser/components/urlbar/tests/browser-searchMode/browser_searchModeSwitcher_basic.js --- firefox-157.0-orig/browser/components/urlbar/tests/browser-searchMode/browser_searchModeSwitcher_basic.js 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/urlbar/tests/browser-searchMode/browser_searchModeSwitcher_basic.js 2026-10-05 09:00:48 +0900 @@ -1072,7 +1072,7 @@ { skip_if: () => // Proton has only one separator, so ignore this test. - !Services.prefs.getBoolPref("browser.nova.enabled", false) || + !false || // Settings redesign changes means that the local search modes cannot be // hidden, hence this test doesn't apply. Services.prefs.getBoolPref("browser.settings-redesign.enabled", false), diff -urN firefox-157.0-orig/browser/components/urlbar/tests/browser-tabs/browser-nova.toml firefox-157.0/browser/components/urlbar/tests/browser-tabs/browser-nova.toml --- firefox-157.0-orig/browser/components/urlbar/tests/browser-tabs/browser-nova.toml 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/urlbar/tests/browser-tabs/browser-nova.toml 1970-01-01 09:00:00 +0900 @@ -1,6 +0,0 @@ -[DEFAULT] -dupe-manifest = true -tags = "urlbar urlbar-nova" -prefs = ["browser.nova.enabled=true"] - -["include:browser.toml"] diff -urN firefox-157.0-orig/browser/components/urlbar/tests/browser-tabs/browser-proton.toml firefox-157.0/browser/components/urlbar/tests/browser-tabs/browser-proton.toml --- firefox-157.0-orig/browser/components/urlbar/tests/browser-tabs/browser-proton.toml 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/urlbar/tests/browser-tabs/browser-proton.toml 2026-10-05 08:58:34 +0900 @@ -1,6 +1,6 @@ [DEFAULT] dupe-manifest = true tags = "urlbar urlbar-proton" -prefs = ["browser.nova.enabled=false"] +prefs = [] ["include:browser.toml"] diff -urN firefox-157.0-orig/browser/components/urlbar/tests/browser-tabs/browser_switchToTab_chiclet.js firefox-157.0/browser/components/urlbar/tests/browser-tabs/browser_switchToTab_chiclet.js --- firefox-157.0-orig/browser/components/urlbar/tests/browser-tabs/browser_switchToTab_chiclet.js 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/urlbar/tests/browser-tabs/browser_switchToTab_chiclet.js 2026-10-05 08:59:04 +0900 @@ -165,7 +165,7 @@ // The row should have the contextual ID chiclet, and the chiclet shouldn't // have any l10n attributes. - let chiclet = Services.prefs.getBoolPref("browser.nova.enabled", false) + let chiclet = false ? row.querySelector(".urlbarView-user-context") : row.querySelector(".action-contextualidentity"); Assert.ok(chiclet, "The contextual ID chiclet should be in the row"); @@ -180,7 +180,7 @@ ); // Check its text content. In Nova, there is no text content. - if (!Services.prefs.getBoolPref("browser.nova.enabled", false)) { + if (!false) { let label = ContextualIdentityService.getUserContextLabel(1); Assert.ok(label, "Sanity check: A label is defined for the contextual ID"); Assert.equal( @@ -232,7 +232,7 @@ // The row should have the tab group chiclet, and the chiclet shouldn't have // any l10n attributes. let chiclet = row.querySelector( - Services.prefs.getBoolPref("browser.nova.enabled", false) + false ? ".urlbarView-tab-group-container" : ".urlbarView-tabGroup" ); @@ -305,10 +305,7 @@ let switchTabDetails = await getDetailsOfTabSwitchResult(); Assert.ok(switchTabDetails, "TAB_SWITCH row should be present"); - let tabGroupSelector = Services.prefs.getBoolPref( - "browser.nova.enabled", - false - ) + let tabGroupSelector = false ? ".urlbarView-tab-group-container" : ".urlbarView-tabGroup"; let tabGroupElement = @@ -335,7 +332,7 @@ `Row ${i} should not be a TAB_SWITCH result` ); let groupElement = details.element.row.querySelector(tabGroupSelector); - if (Services.prefs.getBoolPref("browser.nova.enabled", false)) { + if (false) { Assert.ok( BrowserTestUtils.isHidden(groupElement), `Row ${i} should not have a visible stale tab group chiclet` diff -urN firefox-157.0-orig/browser/components/urlbar/tests/browser-telemetry/browser-nova.toml firefox-157.0/browser/components/urlbar/tests/browser-telemetry/browser-nova.toml --- firefox-157.0-orig/browser/components/urlbar/tests/browser-telemetry/browser-nova.toml 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/urlbar/tests/browser-telemetry/browser-nova.toml 1970-01-01 09:00:00 +0900 @@ -1,6 +0,0 @@ -[DEFAULT] -dupe-manifest = true -tags = "urlbar urlbar-nova" -prefs = ["browser.nova.enabled=true"] - -["include:browser.toml"] diff -urN firefox-157.0-orig/browser/components/urlbar/tests/browser-telemetry/browser-proton.toml firefox-157.0/browser/components/urlbar/tests/browser-telemetry/browser-proton.toml --- firefox-157.0-orig/browser/components/urlbar/tests/browser-telemetry/browser-proton.toml 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/urlbar/tests/browser-telemetry/browser-proton.toml 2026-10-05 08:58:20 +0900 @@ -1,6 +1,6 @@ [DEFAULT] dupe-manifest = true tags = "urlbar urlbar-proton" -prefs = ["browser.nova.enabled=false"] +prefs = [] ["include:browser.toml"] diff -urN firefox-157.0-orig/browser/components/urlbar/tests/browser-tips/browser-nova.toml firefox-157.0/browser/components/urlbar/tests/browser-tips/browser-nova.toml --- firefox-157.0-orig/browser/components/urlbar/tests/browser-tips/browser-nova.toml 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/urlbar/tests/browser-tips/browser-nova.toml 1970-01-01 09:00:00 +0900 @@ -1,6 +0,0 @@ -[DEFAULT] -dupe-manifest = true -tags = "urlbar urlbar-nova" -prefs = ["browser.nova.enabled=true"] - -["include:browser.toml"] diff -urN firefox-157.0-orig/browser/components/urlbar/tests/browser-tips/browser-proton.toml firefox-157.0/browser/components/urlbar/tests/browser-tips/browser-proton.toml --- firefox-157.0-orig/browser/components/urlbar/tests/browser-tips/browser-proton.toml 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/urlbar/tests/browser-tips/browser-proton.toml 2026-10-05 09:03:36 +0900 @@ -1,6 +1,6 @@ [DEFAULT] dupe-manifest = true tags = "urlbar urlbar-proton" -prefs = ["browser.nova.enabled=false"] +prefs = [] ["include:browser.toml"] diff -urN firefox-157.0-orig/browser/components/urlbar/tests/browser-tips/browser_tip_richSuggestion.js firefox-157.0/browser/components/urlbar/tests/browser-tips/browser_tip_richSuggestion.js --- firefox-157.0-orig/browser/components/urlbar/tests/browser-tips/browser_tip_richSuggestion.js 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/urlbar/tests/browser-tips/browser_tip_richSuggestion.js 2026-10-05 09:03:31 +0900 @@ -63,7 +63,7 @@ let row = await UrlbarTestUtils.waitForAutocompleteResultAt(window, 0); Assert.equal( row.hasAttribute("rich-suggestion"), - !Services.prefs.getBoolPref("browser.nova.enabled") + !false ); info("Check the icon"); diff -urN firefox-157.0-orig/browser/components/urlbar/tests/browser-trustPanel/browser-nova.toml firefox-157.0/browser/components/urlbar/tests/browser-trustPanel/browser-nova.toml --- firefox-157.0-orig/browser/components/urlbar/tests/browser-trustPanel/browser-nova.toml 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/urlbar/tests/browser-trustPanel/browser-nova.toml 1970-01-01 09:00:00 +0900 @@ -1,6 +0,0 @@ -[DEFAULT] -dupe-manifest = true -tags = "urlbar urlbar-nova" -prefs = ["browser.nova.enabled=true"] - -["include:browser.toml"] diff -urN firefox-157.0-orig/browser/components/urlbar/tests/browser-trustPanel/browser-proton.toml firefox-157.0/browser/components/urlbar/tests/browser-trustPanel/browser-proton.toml --- firefox-157.0-orig/browser/components/urlbar/tests/browser-trustPanel/browser-proton.toml 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/urlbar/tests/browser-trustPanel/browser-proton.toml 2026-10-05 09:00:01 +0900 @@ -1,6 +1,6 @@ [DEFAULT] dupe-manifest = true tags = "urlbar urlbar-proton" -prefs = ["browser.nova.enabled=false"] +prefs = [] ["include:browser.toml"] diff -urN firefox-157.0-orig/browser/components/urlbar/tests/browser-trustPanel/browser_trust_panel.js firefox-157.0/browser/components/urlbar/tests/browser-trustPanel/browser_trust_panel.js --- firefox-157.0-orig/browser/components/urlbar/tests/browser-trustPanel/browser_trust_panel.js 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/urlbar/tests/browser-trustPanel/browser_trust_panel.js 2026-10-05 08:59:55 +0900 @@ -1240,10 +1240,6 @@ }); add_task(async function test_legacy_graphic_when_nova_disabled() { - await SpecialPowers.pushPrefEnv({ - set: [["browser.nova.enabled", false]], - }); - const tab = await BrowserTestUtils.openNewForegroundTab({ gBrowser, opening: "https://example.com", diff -urN firefox-157.0-orig/browser/components/urlbar/tests/browser-updateResults/browser-nova.toml firefox-157.0/browser/components/urlbar/tests/browser-updateResults/browser-nova.toml --- firefox-157.0-orig/browser/components/urlbar/tests/browser-updateResults/browser-nova.toml 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/urlbar/tests/browser-updateResults/browser-nova.toml 1970-01-01 09:00:00 +0900 @@ -1,6 +0,0 @@ -[DEFAULT] -dupe-manifest = true -tags = "urlbar urlbar-nova" -prefs = ["browser.nova.enabled=true"] - -["include:browser.toml"] diff -urN firefox-157.0-orig/browser/components/urlbar/tests/browser-updateResults/browser-proton.toml firefox-157.0/browser/components/urlbar/tests/browser-updateResults/browser-proton.toml --- firefox-157.0-orig/browser/components/urlbar/tests/browser-updateResults/browser-proton.toml 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/urlbar/tests/browser-updateResults/browser-proton.toml 2026-10-05 09:04:45 +0900 @@ -1,6 +1,6 @@ [DEFAULT] dupe-manifest = true tags = "urlbar urlbar-proton" -prefs = ["browser.nova.enabled=false"] +prefs = [] ["include:browser.toml"] diff -urN firefox-157.0-orig/browser/components/urlbar/tests/quicksuggest/browser/browser-nova.toml firefox-157.0/browser/components/urlbar/tests/quicksuggest/browser/browser-nova.toml --- firefox-157.0-orig/browser/components/urlbar/tests/quicksuggest/browser/browser-nova.toml 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/urlbar/tests/quicksuggest/browser/browser-nova.toml 1970-01-01 09:00:00 +0900 @@ -1,6 +0,0 @@ -[DEFAULT] -dupe-manifest = true -tags = "urlbar urlbar-nova" -prefs = ["browser.nova.enabled=true"] - -["include:browser.toml"] diff -urN firefox-157.0-orig/browser/components/urlbar/tests/quicksuggest/browser/browser-proton.toml firefox-157.0/browser/components/urlbar/tests/quicksuggest/browser/browser-proton.toml --- firefox-157.0-orig/browser/components/urlbar/tests/quicksuggest/browser/browser-proton.toml 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/urlbar/tests/quicksuggest/browser/browser-proton.toml 2026-10-05 08:58:11 +0900 @@ -1,6 +1,6 @@ [DEFAULT] dupe-manifest = true tags = "urlbar urlbar-proton" -prefs = ["browser.nova.enabled=false"] +prefs = [] ["include:browser.toml"] diff -urN firefox-157.0-orig/browser/components/urlbar/tests/quicksuggest/browser/browser_quicksuggest.js firefox-157.0/browser/components/urlbar/tests/quicksuggest/browser/browser_quicksuggest.js --- firefox-157.0-orig/browser/components/urlbar/tests/quicksuggest/browser/browser_quicksuggest.js 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/components/urlbar/tests/quicksuggest/browser/browser_quicksuggest.js 2026-10-05 08:58:06 +0900 @@ -369,7 +369,7 @@ expectedSize = AMP_ICON_SIZE_NON_TOP_PICK; } else if (!useNovaIconSize) { expectedSize = AMP_ICON_SIZE_TOP_PICK_SMALL; - } else if (Services.prefs.getBoolPref("browser.nova.enabled")) { + } else if (false) { expectedSize = AMP_ICON_SIZE_TOP_PICK_LARGE_NOVA; } else { expectedSize = AMP_ICON_SIZE_TOP_PICK_LARGE_PROTON; @@ -378,7 +378,7 @@ // The `icon-size` attribute is set in both Nova and Proton, but Nova // doesn't use it, and when Nova is enabled it's set to 52 instead of the // correct 58. We should stop setting it when Proton is removed. - if (!Services.prefs.getBoolPref("browser.nova.enabled")) { + if (!false) { Assert.equal( icon.getAttribute("icon-size"), expectedSize.toString(), diff -urN firefox-157.0-orig/browser/components/urlbar/tests/unit/test_UrlbarNewTabComponentRegistrant.js firefox-157.0/browser/components/urlbar/tests/unit/test_UrlbarNewTabComponentRegistrant.js --- firefox-157.0-orig/browser/components/urlbar/tests/unit/test_UrlbarNewTabComponentRegistrant.js 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/urlbar/tests/unit/test_UrlbarNewTabComponentRegistrant.js 1970-01-01 09:00:00 +0900 @@ -1,146 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ */ - -// Tests that the newtab and the handoff search bar take turns -// registering as New Tab's search component, depending on the urlbar's newtab -// feature gate. - -"use strict"; - -const { AboutNewTabComponentRegistry } = ChromeUtils.importESModule( - "moz-src:///browser/components/newtab/AboutNewTabComponents.sys.mjs" -); - -function searchComponentOf(registry) { - return registry.values.find( - config => config.type == AboutNewTabComponentRegistry.TYPES.SEARCH - ); -} - -add_setup(function () { - // Nova is off by default outside Nightly, and the New Tab search bar stands - // down with it. - Services.prefs.setBoolPref("browser.nova.enabled", true); - registerCleanupFunction(() => { - Services.prefs.clearUserPref("browser.nova.enabled"); - }); -}); - -async function setFeatureGate(registry, enabled) { - let updated = registry.once(AboutNewTabComponentRegistry.UPDATED_EVENT); - UrlbarPrefs.set("newtab.featureGate", enabled); - await updated; -} - -add_task(async function test_featureGate() { - UrlbarPrefs.set("newtab.featureGate", false); - let registry = new AboutNewTabComponentRegistry(); - registerCleanupFunction(() => { - registry.destroy(); - Services.prefs.clearUserPref("browser.urlbar.newtab.featureGate"); - }); - - Assert.equal( - searchComponentOf(registry).tagName, - "content-search-handoff-ui", - "The handoff search bar is registered while the feature gate is disabled" - ); - - await setFeatureGate(registry, true); - let component = searchComponentOf(registry); - Assert.equal( - component.tagName, - "moz-urlbar", - " supersedes the handoff search bar once the gate is enabled" - ); - Assert.equal( - component.componentURL, - "chrome://browser/content/urlbar/UrlbarInput.mjs", - " is delivered from the module that defines it" - ); - Assert.equal( - component.attributes["sap-name"], - "newtab_searchbar", - " reports the newtab search access point" - ); - - await setFeatureGate(registry, false); - Assert.equal( - searchComponentOf(registry).tagName, - "content-search-handoff-ui", - "The handoff search bar comes back once the gate is disabled again" - ); -}); - -add_task(async function test_nova() { - UrlbarPrefs.set("newtab.featureGate", false); - let registry = new AboutNewTabComponentRegistry(); - registerCleanupFunction(() => { - registry.destroy(); - Services.prefs.clearUserPref("browser.urlbar.newtab.featureGate"); - }); - - await setFeatureGate(registry, true); - Assert.equal( - searchComponentOf(registry).tagName, - "moz-urlbar", - " is registered while Nova is enabled" - ); - - let updated = registry.once(AboutNewTabComponentRegistry.UPDATED_EVENT); - Services.prefs.setBoolPref("browser.nova.enabled", false); - await updated; - - Assert.equal( - searchComponentOf(registry).tagName, - "content-search-handoff-ui", - "The handoff search bar takes over once Nova is disabled" - ); - - updated = registry.once(AboutNewTabComponentRegistry.UPDATED_EVENT); - Services.prefs.setBoolPref("browser.nova.enabled", true); - await updated; - - Assert.equal( - searchComponentOf(registry).tagName, - "moz-urlbar", - " comes back once Nova is enabled again" - ); -}); - -add_task(async function test_nimbusRollout() { - UrlbarPrefs.set("newtab.featureGate", false); - let registry = new AboutNewTabComponentRegistry(); - registerCleanupFunction(() => { - registry.destroy(); - Services.prefs.clearUserPref("browser.urlbar.newtab.featureGate"); - }); - - Assert.equal( - searchComponentOf(registry).tagName, - "content-search-handoff-ui", - "The handoff search bar is registered while the gate is disabled" - ); - - let updated = registry.once(AboutNewTabComponentRegistry.UPDATED_EVENT); - let unenroll = await UrlbarTestUtils.initNimbusFeature({ - newtabFeatureGate: true, - }); - await updated; - - Assert.equal( - searchComponentOf(registry).tagName, - "moz-urlbar", - "A Nimbus rollout enables over the disabled pref" - ); - - updated = registry.once(AboutNewTabComponentRegistry.UPDATED_EVENT); - await unenroll(); - await updated; - - Assert.equal( - searchComponentOf(registry).tagName, - "content-search-handoff-ui", - "The handoff search bar comes back once the rollout ends" - ); -}); diff -urN firefox-157.0-orig/browser/components/urlbar/tests/unit/xpcshell.toml firefox-157.0/browser/components/urlbar/tests/unit/xpcshell.toml --- firefox-157.0-orig/browser/components/urlbar/tests/unit/xpcshell.toml 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/components/urlbar/tests/unit/xpcshell.toml 2026-10-05 09:04:36 +0900 @@ -10,8 +10,6 @@ ["test_UrlbarChildController_unit.js"] -["test_UrlbarNewTabComponentRegistrant.js"] - ["test_UrlbarParentController_integration.js"] ["test_UrlbarParentController_telemetry.js"] diff -urN firefox-157.0-orig/browser/extensions/formautofill/content/formfill-anchor.svg firefox-157.0/browser/extensions/formautofill/content/formfill-anchor.svg --- firefox-157.0-orig/browser/extensions/formautofill/content/formfill-anchor.svg 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/extensions/formautofill/content/formfill-anchor.svg 2026-10-05 08:07:36 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/extensions/formautofill/content/icon-credit-card-generic.svg firefox-157.0/browser/extensions/formautofill/content/icon-credit-card-generic.svg --- firefox-157.0-orig/browser/extensions/formautofill/content/icon-credit-card-generic.svg 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/extensions/formautofill/content/icon-credit-card-generic.svg 2026-10-05 08:07:37 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/extensions/newtab/content-src/styles/activity-stream.scss firefox-157.0/browser/extensions/newtab/content-src/styles/activity-stream.scss --- firefox-157.0-orig/browser/extensions/newtab/content-src/styles/activity-stream.scss 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/extensions/newtab/content-src/styles/activity-stream.scss 2026-10-05 08:09:37 +0900 @@ -237,14 +237,4 @@ @import '../components/DiscoveryStreamComponents/PersonalizedCard/PersonalizedCard'; @import '../components/MessageWrapper/MessageWrapper'; -// Nova Component Styles -// @nova-cleanup(merge-styles): Fold TopSites, CardSections and DSCard into their -// component SCSS and drop those three imports. Leave './nova/tokens' -- it is -// generated by `mach buildtokens` and is gated on browser.nova.enabled, a -// different pref, so it is not part of this cleanup. -@import './nova/tokens'; -@import './nova/TopSites'; -@import './nova/CardSections'; -@import './nova/DSCard'; - // stylelint-enable no-invalid-position-at-import-rule diff -urN firefox-157.0-orig/browser/extensions/newtab/content-src/styles/nova/_tokens.scss firefox-157.0/browser/extensions/newtab/content-src/styles/nova/_tokens.scss --- firefox-157.0-orig/browser/extensions/newtab/content-src/styles/nova/_tokens.scss 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/extensions/newtab/content-src/styles/nova/_tokens.scss 2026-10-05 08:09:22 +0900 @@ -14,418 +14,3 @@ * those token values directly so nova/activity-stream.css is self-contained. * Remove this file when `browser.nova.enabled` unifies both prefs and reaches Release. */ - -:root.nova-tokens { - /** background-color **/ - --background-color-box: light-dark(var(--color-white), var(--color-gray-70)); - --background-color-box-info: light-dark(var(--color-gray-15), var(--color-gray-65)); - --background-color-canvas: light-dark(var(--color-gray-05), var(--color-gray-85)); - --background-color-critical: light-dark(var(--color-red-10), var(--color-red-70)); - --background-color-information: light-dark(var(--color-violet-10), var(--color-violet-70)); - --background-color-success: light-dark(var(--color-green-10), var(--color-green-70)); - --background-color-warning: light-dark(var(--color-yellow-10), var(--color-yellow-70)); - - /** border **/ - --border-color: light-dark(var(--color-gray-30), var(--color-gray-40)); - --border-color-deemphasized: light-dark(var(--color-gray-20), var(--color-gray-50)); - --border-color-error: light-dark(var(--color-red-50), var(--color-red-20)); - --border-color-interactive-hover: light-dark(var(--color-gray-50), var(--color-gray-20)); - --border-color-interactive-active: light-dark(var(--color-gray-50), var(--color-gray-15)); - --border-color-interactive-disabled: light-dark(var(--color-gray-25), var(--color-gray-55)); - --border-color-interactive: light-dark(var(--color-gray-45), var(--color-gray-40)); - --border-radius-xsmall: 4px; - --border-radius-small: 8px; - --border-radius-medium: 12px; - --border-radius-xlarge: 24px; - - /** box-shadow **/ - --box-shadow-color-darker-layer-1: light-dark(rgba(0, 0, 0, 15%), rgba(0, 0, 0, 20%)); - --box-shadow-color-darker-layer-2: light-dark(rgba(0, 0, 0, 20%), rgba(0, 0, 0, 40%)); - --box-shadow-color-lighter-layer-1: light-dark(rgba(0, 0, 0, 2%), rgba(0, 0, 0, 6%)); - --box-shadow-color-lighter-layer-2: light-dark(rgba(0, 0, 0, 4%), rgba(0, 0, 0, 12%)); - - /** button **/ - --button-background-color-disabled: var(--button-background-color); - - /* TODO Bug 1821203 - Gray use needs to be consolidated */ - --button-background-color: transparent; - --button-background-color-hover: light-dark(var(--color-violet-desaturated-20), var(--color-violet-desaturated-50)); - --button-background-color-active: light-dark(var(--color-violet-desaturated-30), var(--color-violet-desaturated-40)); - --button-background-color-destructive: light-dark(var(--color-red-50), var(--color-red-30)); - --button-background-color-destructive-hover: light-dark(var(--color-red-60), var(--color-red-20)); - --button-background-color-destructive-active: light-dark(var(--color-red-70), var(--color-red-10)); - --button-background-color-ghost: var(--button-background-color); - --button-background-color-ghost-hover: var(--button-background-color-hover); - --button-background-color-ghost-active: var(--button-background-color-active); - --button-background-color-ghost-selected: var(--button-background-color-selected); - --button-background-color-menu: var(--button-background-color-ghost); - --button-background-color-muted: light-dark(var(--color-gray-20), var(--color-gray-55)); - --button-background-color-muted-hover: light-dark(var(--color-gray-30), var(--color-gray-45)); - --button-background-color-muted-active: light-dark(var(--color-gray-40), var(--color-gray-35)); - --button-background-color-muted-disabled: var(--button-background-color-muted); - --button-background-color-muted-selected: var(--button-background-color-muted-active); - --button-background-color-primary: var(--color-accent-primary); - --button-background-color-primary-hover: var(--color-accent-primary-hover); - --button-background-color-primary-active: var(--color-accent-primary-active); - --button-background-color-primary-disabled: light-dark(var(--color-violet-desaturated-50), var(--color-violet-desaturated-40)); - --button-background-color-selected: var(--button-background-color-active); - --button-border-color: var(--color-accent-primary); - --button-border-color-destructive: var(--button-border-color-ghost); - --button-border-color-destructive-selected: var(--button-border-color-destructive); - --button-border-color-ghost: transparent; - --button-border-color-ghost-hover: var(--button-border-color-ghost); - --button-border-color-ghost-active: var(--button-border-color-ghost); - --button-border-color-ghost-disabled: var(--button-border-color-ghost); - --button-border-color-ghost-selected: var(--button-border-color-ghost); - --button-border-color-muted: var(--button-border-color-ghost); - --button-border-color-muted-hover: var(--button-border-color-muted); - --button-border-color-muted-active: var(--button-border-color-muted); - --button-border-color-muted-disabled: var(--button-border-color-muted); - --button-border-color-muted-selected: var(--button-border-color-muted); - --button-border-color-primary: var(--button-border-color-ghost); - --button-border-color-primary-selected: var(--button-border-color-primary); - --button-border-color-selected: var(--button-border-color); - --button-border-radius: var(--border-radius-xlarge); - --button-border-width-split: 0; - --button-gap-split: 0; - --button-padding-inline-small: var(--space-medium); - --button-split-separator-background-color: var(--button-border-color); - --button-text-color: light-dark(var(--color-violet-90), var(--color-gray-0)); - --button-text-color-destructive: light-dark(var(--color-white), var(--button-text-color-primary)); - --button-text-color-destructive-disabled: var(--button-text-color-destructive); - --button-text-color-destructive-selected: light-dark(var(--button-text-color-destructive), var(--button-text-color-destructive-active)); - --button-text-color-ghost-hover: var(--button-text-color-ghost); - --button-text-color-ghost-active: var(--button-text-color-ghost); - --button-text-color-ghost-disabled: var(--button-text-color-ghost); - --button-text-color-menu-hover: light-dark(var(--button-text-color-ghost-hover), var(--button-text-color-hover)); - --button-text-color-menu-active: light-dark(var(--button-text-color-ghost-active), var(--button-text-color-active)); - --button-text-color-menu-disabled: light-dark(var(--button-text-color-ghost-disabled), var(--button-text-color-disabled)); - --button-text-color-menu-selected: light-dark(var(--button-text-color-ghost-selected), var(--button-text-color-selected)); - --button-text-color-muted: var(--button-text-color); - --button-text-color-muted-hover: var(--button-text-color-muted); - --button-text-color-muted-active: var(--button-text-color-muted); - --button-text-color-muted-disabled: var(--button-text-color-muted); - --button-text-color-muted-selected: var(--button-text-color-muted-active); - --button-text-color-primary: light-dark(var(--color-white), var(--color-gray-70)); - --button-text-color-primary-active: var(--button-text-color-primary); - --button-text-color-selected: var(--button-text-color); - - /** card **/ - --card-gap: var(--space-medium); - --card-header-background-color: var(--button-background-color); - --card-header-border-color: transparent; - - /** color **/ - --color-accent-attention: light-dark(var(--color-green-40), var(--color-green-30)); - --color-accent-primary: light-dark(var(--color-violet-50), var(--color-violet-30)); - --color-accent-primary-hover: light-dark(var(--color-violet-60), var(--color-violet-20)); - --color-accent-primary-active: light-dark(var(--color-violet-70), var(--color-violet-10)); - --color-accent-primary-selected: var(--button-background-color-primary-active); - --color-blue-0: #ECF3F8; - --color-blue-10: #C5EAFE; - --color-blue-20: #A2D3FF; - --color-blue-30: #7BB2FF; - --color-blue-40: #5A87FD; - --color-blue-50: #455FE7; - --color-blue-60: #3246B0; - --color-blue-70: #23327B; - --color-blue-80: #17214C; - --color-blue-90: #111524; - --color-cyan-0: #EBF4F5; - --color-cyan-10: #C3EEF8; - --color-cyan-20: #8FDDF0; - --color-cyan-30: #4CC4E1; - --color-cyan-40: #10A4CA; - --color-cyan-50: #0A809F; - --color-cyan-60: #066077; - --color-cyan-70: #034554; - --color-cyan-80: #002D38; - --color-cyan-90: #011C23; - --color-gray-0: #FCFBFF; - --color-gray-05: #F7F6FB; - --color-gray-10: #EFEDF2; - --color-gray-15: #E3E2E7; - --color-gray-20: #D6D5DA; - --color-gray-25: #C7C6CB; - --color-gray-30: #B7B6BA; - --color-gray-35: #A6A4A9; - --color-gray-40: #949297; - --color-gray-45: #817F84; - --color-gray-50: #67666A; - --color-gray-55: #515054; - --color-gray-60: #3F3E42; - --color-gray-65: #312F33; - --color-gray-70: #252428; - --color-gray-75: #1D1B1F; - --color-gray-80: #171519; - --color-gray-85: #131215; - --color-gray-90: #121114; - --color-green-0: #ECF4F1; - --color-green-10: #C4F1E0; - --color-green-20: #90E3C6; - --color-green-30: #4ACCA6; - --color-green-40: #11AE84; - --color-green-50: #008865; - --color-green-60: #06674B; - --color-green-70: #004933; - --color-green-80: #003020; - --color-green-90: #001E12; - --color-orange-0: #F8F0EC; - --color-orange-10: #FFDBC5; - --color-orange-20: #FEBD99; - --color-orange-30: #FF9565; - --color-orange-40: #F4682C; - --color-orange-50: #CD4208; - --color-orange-60: #9C2C05; - --color-orange-70: #701C07; - --color-orange-80: #461209; - --color-orange-90: #250E0B; - --color-pink-0: #F7EFF3; - --color-pink-10: #FFD5EE; - --color-pink-20: #FFB0E2; - --color-pink-30: #F585D3; - --color-pink-40: #DB54BF; - --color-pink-50: #B32E9F; - --color-pink-60: #882078; - --color-pink-70: #5F1854; - --color-pink-80: #3C1334; - --color-pink-90: #1E111B; - --color-purple-0: #FAEBFF; - --color-purple-10: #F6D7FF; - --color-purple-20: #E8B7FF; - --color-purple-30: #D490FF; - --color-purple-40: #B864EE; - --color-purple-50: #9540C8; - --color-purple-60: #702E98; - --color-purple-70: #4F216B; - --color-purple-80: #311842; - --color-purple-90: #1A1220; - --color-red-0: #FCF2F3; - --color-red-10: #FFD9DF; - --color-red-20: #FFB6BF; - --color-red-30: #FF8998; - --color-red-40: #ED566E; - --color-red-50: #C52D4F; - --color-red-60: #961E3D; - --color-red-70: #69172D; - --color-red-80: #42121F; - --color-red-90: #211014; - --color-violet-0: #F5ECFF; - --color-violet-10: #EADDFF; - --color-violet-20: #D4C1FF; - --color-violet-30: #B89CFF; - --color-violet-40: #9871FF; - --color-violet-50: #764EDD; - --color-violet-60: #5939A8; - --color-violet-70: #3E2976; - --color-violet-80: #271C48; - --color-violet-90: #161423; - --color-violet-desaturated-0: #F2F0F8; - --color-violet-desaturated-10: #E7E1F8; - --color-violet-desaturated-20: #D2C8EC; - --color-violet-desaturated-30: #B6AAD9; - --color-violet-desaturated-40: #9687C0; - --color-violet-desaturated-50: #75669F; - --color-violet-desaturated-60: #584A7D; - --color-violet-desaturated-70: #3E315F; - --color-violet-desaturated-80: #281D44; - --color-violet-desaturated-90: #180E30; - --color-yellow-0: #F9F5E6; - --color-yellow-10: #FDE8B5; - --color-yellow-20: #FBCC77; - --color-yellow-30: #F3A81E; - --color-yellow-40: #DB820E; - --color-yellow-50: #B26100; - --color-yellow-60: #854800; - --color-yellow-70: #5F3100; - --color-yellow-80: #3E1D00; - --color-yellow-90: #270F00; - - /** icon **/ - --icon-color: var(--text-color); - --icon-color-accent-primary-desaturated: light-dark(var(--color-violet-desaturated-60), var(--color-violet-desaturated-40)); - --icon-color-critical: light-dark(var(--color-red-50), var(--color-red-20)); - --icon-color-information: light-dark(var(--color-violet-50), var(--color-violet-20)); - --icon-color-success: light-dark(var(--color-green-50), var(--color-green-20)); - --icon-color-warning: light-dark(var(--color-yellow-50), var(--color-yellow-20)); - --icon-size-xsmall: var(--size-item-xsmall); - --icon-size-small: var(--size-item-small); - --icon-size-large: var(--size-item-medium); - --icon-size-xlarge: var(--size-item-large); - - /** info-bar **/ - --info-bar-border-color: light-dark(var(--color-violet-desaturated-20), var(--color-gray-60)); - --info-bar-margin-block-end: 0; - - /** input **/ - --input-search-border-radius: var(--border-radius-circle); - --input-search-icon-size: var(--icon-size-small); - --input-text-background-color: var(--background-color-box); - --input-text-background-color-disabled: var(--button-background-color-ghost-disabled); - - /** page **/ - --page-main-content-width: 664px; - - /** panel **/ - --panel-background-color: var(--popup-background-color); - --panel-border-color: var(--popup-border-color); - --panel-border-radius: var(--popup-border-radius); - --panel-menuitem-border-radius: var(--border-radius-large); - --panel-text-color: var(--text-color); - - /** popup **/ - --popup-border-color: var(--border-color-deemphasized); - --popup-border-radius: var(--border-radius-xlarge); - - /** sidebar **/ - --sidebar-border-color: var(--chrome-content-separator-color); - - /** table **/ - - /* TODO Bug 1821203 - Gray use needs to be consolidated */ - --table-row-background-color-alternate: light-dark(var(--color-gray-20), var(--color-gray-65)); - - /** text-color **/ - --text-color: light-dark(var(--color-violet-desaturated-90), var(--color-violet-desaturated-0)); - --text-color-accent-primary-selected: light-dark(var(--color-white), var(--color-gray-55)); - --text-color-error: light-dark(var(--color-red-50), var(--color-red-20)); - - /** toolbar **/ - --toolbar-background-color: light-dark(rgba(255, 255, 255, 40%), rgba(0, 0, 0, 20%)); - --toolbar-field-background-color: var(--toolbar-background-color); - --toolbar-field-background-color-focus: var(--background-color-box); - --toolbar-field-border-color: light-dark(var(--color-gray-20), var(--color-gray-60)); - --toolbar-field-border-color-focus: var(--focus-outline-color); - --toolbar-field-text-color: light-dark(var(--color-violet-desaturated-70), var(--color-violet-desaturated-10)); - --toolbar-field-text-color-focus: var(--toolbar-field-text-color); - --toolbar-padding-inline: 6px; - - /** toolbarbutton **/ - --toolbarbutton-background-color-hover: light-dark(rgba(117, 102, 159, 25%), rgba(182, 170, 217, 25%)); - --toolbarbutton-background-color-active: light-dark(rgba(117, 102, 159, 40%), rgba(182, 170, 217, 40%)); - --toolbarbutton-icon-fill: light-dark(var(--color-violet-desaturated-50), var(--color-violet-desaturated-10)); - --toolbarbutton-icon-fill-attention: var(--color-accent-primary); - --toolbarbutton-opacity-disabled: 0.4; - --toolbarbutton-outline-color: transparent; - --toolbarbutton-outline-color-selected: var(--toolbarbutton-outline-color-active); - --toolbarbutton-outline-offset: -1px; - - /** toolbox **/ - --toolbox-background-color: light-dark(var(--color-white), var(--color-gray-70)); - --toolbox-background-color-gradient-leading: light-dark(var(--color-violet-10), var(--color-violet-desaturated-70)); - --toolbox-background-color-gradient-trailing: light-dark(var(--color-orange-10), var(--color-orange-70)); - --toolbox-background-color-inactive: transparent; - - /* This gradient is only used for Nova */ - --toolbox-background-gradient: linear-gradient(96deg, color-mix(var(--toolbox-background-color-gradient-leading) 50%, transparent) 39.84%, color-mix(var(--toolbox-background-color-gradient-trailing) 50%, transparent) 101.72%); - --toolbox-text-color: var(--text-color); - - /* Figma aliases this to toolbox/text/color so designers see a real color, but CSS must use currentColor: the tab inherits --lwt-text-color under an lwtheme and --toolbox-text-color-inactive in a background window, neither of which --toolbox-text-color tracks. Listed in figma-import.mjs's FIGMA_IGNORES so the alias doesn't overwrite this. */ - --toolbox-text-color-current: var(--toolbox-text-color); -} - -@media (forced-colors) { - :root.nova-tokens { - /** border **/ - --border-color-deemphasized: CanvasText; - --border-color-interactive-hover: SelectedItem; - --border-color-interactive-active: ButtonText; - --border-color-interactive-disabled: GrayText; - - /** box-shadow **/ - --box-shadow-color-darker-layer-1: transparent; - --box-shadow-color-darker-layer-2: transparent; - --box-shadow-color-lighter-layer-1: transparent; - --box-shadow-color-lighter-layer-2: transparent; - - /** button **/ - - /* TODO Bug 1821203 - Gray use needs to be consolidated */ - --button-background-color: ButtonFace; - --button-background-color-hover: SelectedItemText; - --button-background-color-active: SelectedItemText; - --button-background-color-destructive: var(--button-background-color-primary); - --button-background-color-destructive-hover: var(--button-background-color-primary-hover); - --button-background-color-destructive-active: var(--button-background-color-primary-active); - --button-background-color-menu: var(--button-background-color); - --button-background-color-menu-hover: ButtonText; - --button-background-color-menu-active: ButtonText; - --button-background-color-muted: var(--button-background-color); - --button-background-color-muted-hover: var(--button-background-color-hover); - --button-background-color-muted-active: var(--button-background-color-active); - --button-background-color-muted-disabled: var(--button-background-color); - --button-background-color-muted-selected: var(--button-background-color-ghost-active); - --button-background-color-primary-disabled: GrayText; - --button-background-color-selected: SelectedItem; - --button-border-color-destructive: var(--button-border-color-primary); - --button-border-color-destructive-selected: var(--button-border-color-destructive-active); - --button-border-color-ghost: var(--button-border-color); - --button-border-color-ghost-hover: var(--button-border-color-hover); - --button-border-color-ghost-active: var(--button-border-color-active); - --button-border-color-ghost-disabled: var(--button-border-color-disabled); - --button-border-color-ghost-selected: var(--button-border-color-ghost-active); - --button-border-color-muted: var(--button-border-color); - --button-border-color-muted-hover: var(--button-border-color-hover); - --button-border-color-muted-active: var(--button-border-color-active); - --button-border-color-muted-disabled: var(--button-border-color-disabled); - --button-border-color-muted-selected: var(--button-border-color-ghost-active); - --button-border-color-primary: ButtonFace; - --button-border-color-primary-selected: var(--button-border-color-primary-active); - --button-border-color-selected: var(--button-border-color-active); - --button-text-color: ButtonText; - --button-text-color-destructive: var(--button-text-color-primary); - --button-text-color-destructive-disabled: var(--button-text-color-primary); - --button-text-color-destructive-selected: var(--button-text-color-destructive-active); - --button-text-color-ghost: ButtonText; - --button-text-color-ghost-hover: var(--button-text-color-ghost-active); - --button-text-color-ghost-disabled: GrayText; - --button-text-color-menu-hover: ButtonFace; - --button-text-color-menu-active: ButtonFace; - --button-text-color-menu-disabled: var(--button-text-color-disabled); - --button-text-color-menu-selected: var(--button-text-color-primary-selected); - --button-text-color-muted: ButtonText; - --button-text-color-muted-hover: var(--button-text-color-ghost-active); - --button-text-color-muted-active: var(--button-text-color-active); - --button-text-color-muted-disabled: GrayText; - --button-text-color-muted-selected: var(--button-text-color-ghost-active); - --button-text-color-primary: ButtonFace; - --button-text-color-primary-active: var(--button-text-color-primary-hover); - --button-text-color-selected: SelectedItemText; - - /** card **/ - --card-header-border-color: var(--button-border-color); - - /** color **/ - --color-accent-attention: AccentColor; - --color-accent-primary: ButtonText; - --color-accent-primary-hover: SelectedItem; - --color-accent-primary-active: var(--color-accent-primary-hover); - --color-accent-primary-selected: SelectedItem; - - /** icon **/ - --icon-color-accent-primary-desaturated: CanvasText; - - /** text-color **/ - --text-color-accent-primary-selected: SelectedItemText; - - /** toolbar **/ - --toolbar-background-color: Canvas; - --toolbar-field-border-color: ButtonText; - --toolbar-field-text-color: var(--text-color); - - /** toolbarbutton **/ - --toolbarbutton-background-color-hover: var(--button-background-color-ghost-hover); - --toolbarbutton-background-color-active: var(--button-background-color-ghost-active); - --toolbarbutton-icon-fill: var(--button-text-color); - --toolbarbutton-outline-color: var(--button-border-color); - --toolbarbutton-outline-color-hover: var(--button-border-color-hover); - --toolbarbutton-outline-color-active: var(--button-border-color-active); - - /** toolbox **/ - --toolbox-background-color-gradient-leading: Canvas; - --toolbox-background-color-gradient-trailing: Canvas; - - /* This gradient is only used for Nova */ - --toolbox-background-gradient: image(transparent); - } -} diff -urN firefox-157.0-orig/browser/extensions/newtab/lib/PrefsFeed.sys.mjs firefox-157.0/browser/extensions/newtab/lib/PrefsFeed.sys.mjs --- firefox-157.0-orig/browser/extensions/newtab/lib/PrefsFeed.sys.mjs 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/extensions/newtab/lib/PrefsFeed.sys.mjs 2026-10-05 07:37:04 +0900 @@ -56,10 +56,6 @@ "activationWindow.temp.topSitesUserValue"; const TOP_STORIES_USER_VALUE_TEMP_PREF = "activationWindow.temp.topStoriesUserValue"; -// Browser-wide Nova gate. Lives off the activity-stream branch, so it is read -// and observed directly here (not via the branch observer) and broadcast to -// content to gate the theme picker in the customize panel. -const BROWSER_NOVA_ENABLED_PREF = "browser.nova.enabled"; // Whether this profile records browsing history, broadcast as the synthetic // `recordsHistory` value to hide history-dependent widgets. Deliberately not // named after places.history.enabled: it derives from that pref AND permanent @@ -739,10 +735,7 @@ // Read the browser-wide Nova gate and observe it so later changes are // broadcast to content (see observe()). - values.browserNovaEnabled = - isThemePickerHostSupported() && - Services.prefs.getBoolPref(BROWSER_NOVA_ENABLED_PREF, false); - Services.prefs.addObserver(BROWSER_NOVA_ENABLED_PREF, this); + values.browserNovaEnabled = false; // Seed the tracked value so observe() can tell a real flip from a pref // write that leaves it alone. @@ -830,7 +823,6 @@ if (this.geo === "") { Services.obs.removeObserver(this, lazy.Region.REGION_TOPIC); } - Services.prefs.removeObserver(BROWSER_NOVA_ENABLED_PREF, this); for (const pref of RECORDS_HISTORY_PREFS) { Services.prefs.removeObserver(pref, this); } @@ -1107,19 +1099,7 @@ ); break; case "nsPref:changed": - if (data === BROWSER_NOVA_ENABLED_PREF) { - this.store.dispatch( - ac.BroadcastToContent({ - type: at.PREF_CHANGED, - data: { - name: "browserNovaEnabled", - value: - isThemePickerHostSupported() && - Services.prefs.getBoolPref(BROWSER_NOVA_ENABLED_PREF, false), - }, - }) - ); - } else if (RECORDS_HISTORY_PREFS.includes(data)) { + if (RECORDS_HISTORY_PREFS.includes(data)) { // Track the derived value, not the writes: two prefs collapse into one // boolean, so a write that leaves it unchanged (e.g. autostart moving // while places.history.enabled is already false) must not act. diff -urN firefox-157.0-orig/browser/extensions/newtab/test/unit/lib/PrefsFeed.test.js firefox-157.0/browser/extensions/newtab/test/unit/lib/PrefsFeed.test.js --- firefox-157.0-orig/browser/extensions/newtab/test/unit/lib/PrefsFeed.test.js 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/extensions/newtab/test/unit/lib/PrefsFeed.test.js 2026-10-05 08:08:33 +0900 @@ -296,45 +296,6 @@ global.Region.REGION_TOPIC ); }); - it("should add a browser.nova.enabled observer on init", () => { - feed.init(); - assert.calledWith( - ServicesStub.prefs.addObserver, - "browser.nova.enabled", - feed - ); - }); - it("should remove the browser.nova.enabled observer on uninit", () => { - feed.uninit(); - assert.calledWith( - ServicesStub.prefs.removeObserver, - "browser.nova.enabled", - feed - ); - }); - it("should broadcast browserNovaEnabled when browser.nova.enabled changes", () => { - ServicesStub.prefs.getBoolPref = sinon.stub().returns(true); - feed.observe(null, "nsPref:changed", "browser.nova.enabled"); - assert.calledWith( - feed.store.dispatch, - ac.BroadcastToContent({ - type: at.PREF_CHANGED, - data: { name: "browserNovaEnabled", value: true }, - }) - ); - }); - it("keeps browserNovaEnabled false on hosts older than 155 even when the pref is on", () => { - ServicesStub.prefs.getBoolPref = sinon.stub().returns(true); - ServicesStub.vc.compare = sinon.stub().returns(-1); - feed.observe(null, "nsPref:changed", "browser.nova.enabled"); - assert.calledWith( - feed.store.dispatch, - ac.BroadcastToContent({ - type: at.PREF_CHANGED, - data: { name: "browserNovaEnabled", value: false }, - }) - ); - }); describe("supportsWidgetSearchSap", () => { it("is true in the initial values on a host that knows the access point", () => { feed.onAction({ type: at.INIT }); @@ -571,18 +532,6 @@ ); }); - it("should not mirror outside the experiment", () => { - FAKE_PREFS.set("pageLayouts.variant", "nova-full-width"); - - feed.onPrefChanged("feeds.section.topstories", false); - - assert.neverCalledWith( - feed._prefs.set, - "spaces.storiesOptOut", - sinon.match.any - ); - }); - it("should not mirror a pref that is not a space", () => { feed.onPrefChanged("feeds.topsites", false); @@ -838,94 +787,6 @@ assert.calledWith(setBoolPref, "feeds.section.highlights", true); }); - it("should put the Recent Activity default back on unenrollment", () => { - FAKE_PREFS.set("pageLayouts.variant", "spaces-buttons-bottom"); - const setBoolPref = sinon.spy(); - ServicesStub.prefs.getDefaultBranch = sinon - .stub() - .returns({ setBoolPref, setStringPref: sinon.spy() }); - const enrolled = { - meta: { isRollout: false }, - value: { type: "highlights", payload: { enabled: true } }, - }; - const getAllEnrollments = sandbox.stub( - global.NimbusFeatures.newtabTrainhop, - "getAllEnrollments" - ); - - getAllEnrollments.returns([enrolled]); - feed.onTrainhopExperimentUpdated(); - - // Unenrolling takes the variant with it, so the revert has to run when - // spaces is no longer assigned -- which is the whole point of it. - getAllEnrollments.returns([]); - FAKE_PREFS.set("pageLayouts.variant", "nova-full-width"); - feed.onTrainhopExperimentUpdated(); - - // Reverted in the same update rather than at the next restart, but only - // because this profile was enrolled. - assert.calledWith(setBoolPref, "feeds.section.highlights", false); - }); - - it("should not opt the space out when unenrolling reverts its default", () => { - // The revert writes feeds.section.highlights, which fires the branch - // observer. Its handler has to see the fresh config, or it reads our own - // write as the user turning Recent Activity off. - const setBoolPref = sinon.spy((name, value) => - feed.onPrefChanged(name, value) - ); - ServicesStub.prefs.getDefaultBranch = sinon - .stub() - .returns({ setBoolPref, setStringPref: sinon.spy() }); - const getAllEnrollments = sandbox.stub( - global.NimbusFeatures.newtabTrainhop, - "getAllEnrollments" - ); - - FAKE_PREFS.set("pageLayouts.variant", "spaces-buttons-bottom"); - getAllEnrollments.returns([ - { - meta: { isRollout: false }, - value: { - type: "multi-payload", - payload: [ - { - type: "pageLayouts", - payload: { variant: "spaces-buttons-bottom" }, - }, - { type: "highlights", payload: { enabled: true } }, - ], - }, - }, - ]); - feed.onTrainhopExperimentUpdated(); - - getAllEnrollments.returns([]); - FAKE_PREFS.set("pageLayouts.variant", "nova-full-width"); - feed.onTrainhopExperimentUpdated(); - - assert.neverCalledWith(feed._prefs.set, "spaces.activityOptOut", true); - }); - - it("should not revert a default this profile was never given", () => { - const setBoolPref = sinon.spy(); - ServicesStub.prefs.getDefaultBranch = sinon - .stub() - .returns({ setBoolPref, setStringPref: sinon.spy() }); - sandbox - .stub(global.NimbusFeatures.newtabTrainhop, "getAllEnrollments") - .returns([]); - - FAKE_PREFS.set("pageLayouts.variant", "nova-full-width"); - feed.onTrainhopExperimentUpdated(); - - assert.neverCalledWith( - setBoolPref, - "feeds.section.highlights", - sinon.match.any - ); - }); - it("should not touch the Recent Activity default for an unrelated config", () => { FAKE_PREFS.set("pageLayouts.variant", "spaces-buttons-bottom"); const setBoolPref = sinon.spy(); diff -urN firefox-157.0-orig/browser/modules/BrowserUsageTelemetry.sys.mjs firefox-157.0/browser/modules/BrowserUsageTelemetry.sys.mjs --- firefox-157.0-orig/browser/modules/BrowserUsageTelemetry.sys.mjs 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/modules/BrowserUsageTelemetry.sys.mjs 2026-10-05 08:06:51 +0900 @@ -1307,7 +1307,7 @@ _recordNovaEnabledValue() { Glean.nova.enabled.set( - Services.prefs.getBoolPref("browser.nova.enabled", false) + false ); }, diff -urN firefox-157.0-orig/browser/modules/UIDensityTelemetry.sys.mjs firefox-157.0/browser/modules/UIDensityTelemetry.sys.mjs --- firefox-157.0-orig/browser/modules/UIDensityTelemetry.sys.mjs 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/modules/UIDensityTelemetry.sys.mjs 2026-10-05 08:07:31 +0900 @@ -18,7 +18,6 @@ const PREF_UI_DENSITY = "browser.uidensity"; const PREF_AUTO_TOUCH_MODE = "browser.touchmode.auto"; -const PREF_NOVA_ENABLED = "browser.nova.enabled"; /** * The "Window density" setting as it is presented in about:preferences and on @@ -30,7 +29,7 @@ */ function currentSetting(win) { if ( - Services.prefs.getBoolPref(PREF_NOVA_ENABLED, false) && + false && !Services.prefs.prefHasUserValue(PREF_UI_DENSITY) ) { return "automatic"; diff -urN firefox-157.0-orig/browser/modules/test/browser/browser.toml firefox-157.0/browser/modules/test/browser/browser.toml --- firefox-157.0-orig/browser/modules/test/browser/browser.toml 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/modules/test/browser/browser.toml 2026-10-05 08:06:15 +0900 @@ -71,8 +71,6 @@ "blank_iframe.html", ] -["browser_UIDensityTelemetry.js"] - ["browser_URILoadingHelper_chromeless.js"] ["browser_UnsubmittedCrashHandler.js"] diff -urN firefox-157.0-orig/browser/modules/test/browser/browser_UIDensityTelemetry.js firefox-157.0/browser/modules/test/browser/browser_UIDensityTelemetry.js --- firefox-157.0-orig/browser/modules/test/browser/browser_UIDensityTelemetry.js 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/modules/test/browser/browser_UIDensityTelemetry.js 1970-01-01 09:00:00 +0900 @@ -1,371 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -"use strict"; - -// Tests the ui_density.mode event: the startup event, the events recorded when -// the user changes the "Window density" setting, and the events recorded when -// the automatic setting resolves to a different density on its own -// (Bug 2023635). - -const PREF_UI_DENSITY = "browser.uidensity"; -const PREF_AUTO_TOUCH_MODE = "browser.touchmode.auto"; -const PREF_NOVA = "browser.nova.enabled"; -const PREF_COMPACT_THRESHOLD = "browser.compactmode.auto.threshold"; - -// A threshold high enough that AUTO_COMPACT_REFERENCE_* / window size never -// exceeds it, and one low enough that it always does. -const THRESHOLD_NEVER_COMPACT = "10"; -const THRESHOLD_ALWAYS_COMPACT = "0.0001"; - -const EXPECTED_TOUCH_CAPABLE = (() => { - switch (AppConstants.platform) { - case "macosx": - return "no"; - case "win": - return Cc["@mozilla.org/windows-ui-utils;1"].getService( - Ci.nsIWindowsUIUtils - ).isTabletCapable - ? "yes" - : "no"; - default: - return "unknown"; - } -})(); - -function takeEvents() { - let events = Glean.uiDensity.mode.testGetValue() ?? []; - Services.fog.testResetFOG(); - return events.map(event => event.extra); -} - -// Restarts the telemetry as if a new session had begun, and returns the -// startup event it recorded. -async function restartTelemetry() { - UIDensityTelemetry.uninit(); - Services.fog.testResetFOG(); - await UIDensityTelemetry.init(window); - let events = takeEvents(); - Assert.equal(events.length, 1, "Restarting records exactly one event."); - return events[0]; -} - -// Runs `change`, which is expected to record exactly one event, and returns it. -function recordOne(change, message) { - change(); - let events = takeEvents(); - Assert.equal(events.length, 1, `Exactly one event was recorded: ${message}`); - return events[0]; -} - -// A stand-in for a second browser window resolving to `resolvedMode`, which -// the caller can change. UIDensityTelemetry only reads the resolved density and -// the geometry off the window it is handed. -function secondWindowStandingIn(resolvedMode) { - let win = { - resolvedMode, - gUIDensity: { - MODE_NORMAL: window.gUIDensity.MODE_NORMAL, - MODE_COMPACT: window.gUIDensity.MODE_COMPACT, - MODE_TOUCH: window.gUIDensity.MODE_TOUCH, - getCurrentDensity: () => ({ mode: win.resolvedMode }), - }, - toolbar: { visible: true }, - outerWidth: window.outerWidth + 100, - outerHeight: window.outerHeight + 100, - devicePixelRatio: window.devicePixelRatio, - }; - return win; -} - -function assertWindowInfo(extra, message) { - Assert.equal( - extra.touch_capable, - EXPECTED_TOUCH_CAPABLE, - `Touch capability is reported: ${message}` - ); - Assert.equal( - Number(extra.window_width), - window.outerWidth, - `Window width is reported: ${message}` - ); - Assert.equal( - Number(extra.window_height), - window.outerHeight, - `Window height is reported: ${message}` - ); - Assert.equal( - extra.device_pixel_ratio, - String(window.devicePixelRatio), - `The device pixel ratio is reported: ${message}` - ); -} - -add_setup(async function () { - let originalInTabletMode = window.gUIDensity._inTabletMode; - // Tablet mode would override the resolved density on Windows, and CI can't - // control it. - window.gUIDensity._inTabletMode = () => false; - - await SpecialPowers.pushPrefEnv({ - set: [ - [PREF_NOVA, true], - [PREF_COMPACT_THRESHOLD, THRESHOLD_NEVER_COMPACT], - ], - }); - Services.prefs.setBoolPref(PREF_AUTO_TOUCH_MODE, false); - Services.prefs.clearUserPref(PREF_UI_DENSITY); - - registerCleanupFunction(async () => { - window.gUIDensity._inTabletMode = originalInTabletMode; - Services.prefs.clearUserPref(PREF_UI_DENSITY); - Services.prefs.clearUserPref(PREF_AUTO_TOUCH_MODE); - await SpecialPowers.popPrefEnv(); - UIDensityTelemetry.uninit(); - await UIDensityTelemetry.init(window); - Services.fog.testResetFOG(); - }); -}); - -add_task(async function test_startup() { - let extra = await restartTelemetry(); - - Assert.equal(extra.current, "automatic", "The setting is automatic."); - Assert.equal(extra.effective, "standard", "It resolved to standard."); - Assert.equal(extra.on_startup, "true", "The event is flagged as startup."); - Assert.ok( - !("previous" in extra), - "There is no previous value on the startup event." - ); - Assert.equal( - extra.auto_adjustments_prior, - "0", - "No automatic adjustments have happened yet." - ); - assertWindowInfo(extra, "startup"); -}); - -add_task(async function test_setting_changed() { - await restartTelemetry(); - - let extra = recordOne( - () => - Services.prefs.setIntPref( - PREF_UI_DENSITY, - window.gUIDensity.MODE_COMPACT - ), - "compact was chosen" - ); - Assert.equal(extra.current, "compact", "The setting is compact."); - Assert.equal(extra.effective, "compact", "It resolved to compact."); - Assert.equal(extra.previous, "automatic", "The previous setting is given."); - Assert.equal(extra.on_startup, "false", "This isn't the startup event."); - Assert.equal(extra.auto_adjustments_prior, "0", "Nothing adjusted itself."); - assertWindowInfo(extra, "setting changed"); - - extra = recordOne( - () => - Services.prefs.setIntPref(PREF_UI_DENSITY, window.gUIDensity.MODE_TOUCH), - "touch was chosen" - ); - Assert.equal(extra.current, "touch", "The setting is touch."); - Assert.equal(extra.effective, "touch", "It resolved to touch."); - Assert.equal(extra.previous, "compact", "The previous setting is given."); - - extra = recordOne( - () => Services.prefs.clearUserPref(PREF_UI_DENSITY), - "automatic was chosen again" - ); - Assert.equal(extra.current, "automatic", "The setting is automatic again."); - Assert.equal(extra.effective, "standard", "It resolved to standard."); - Assert.equal(extra.previous, "touch", "The previous setting is given."); -}); - -add_task(async function test_auto_touch_mode_is_part_of_the_setting() { - Services.prefs.setIntPref(PREF_UI_DENSITY, window.gUIDensity.MODE_NORMAL); - let extra = await restartTelemetry(); - Assert.equal(extra.current, "standard", "The setting is standard."); - - extra = recordOne( - () => Services.prefs.setBoolPref(PREF_AUTO_TOUCH_MODE, true), - "touch spacing for tablet mode was enabled" - ); - Assert.equal( - extra.current, - "standard_and_touch_for_tablet_mode", - "Enabling touch spacing for tablet mode is a distinct setting." - ); - Assert.equal( - extra.effective, - "standard", - "The resolved density is unchanged outside of tablet mode." - ); - Assert.equal(extra.previous, "standard", "The previous setting is given."); - - extra = recordOne( - () => Services.prefs.setBoolPref(PREF_AUTO_TOUCH_MODE, false), - "touch spacing for tablet mode was disabled" - ); - Assert.equal(extra.current, "standard", "The setting is standard again."); - Assert.equal( - extra.previous, - "standard_and_touch_for_tablet_mode", - "The previous setting is given." - ); - - Services.prefs.clearUserPref(PREF_UI_DENSITY); -}); - -add_task(async function test_automatic_adjustments() { - Services.prefs.clearUserPref(PREF_UI_DENSITY); - Services.prefs.setCharPref(PREF_COMPACT_THRESHOLD, THRESHOLD_NEVER_COMPACT); - await restartTelemetry(); - - let extra = recordOne( - () => - Services.prefs.setCharPref( - PREF_COMPACT_THRESHOLD, - THRESHOLD_ALWAYS_COMPACT - ), - "the window became small enough for compact" - ); - Assert.equal(extra.current, "automatic", "The setting didn't change."); - Assert.equal(extra.effective, "compact", "It now resolves to compact."); - Assert.ok( - !("previous" in extra), - "There is no previous value when only the resolved density changed." - ); - Assert.equal( - extra.auto_adjustments_prior, - "0", - "This is the first automatic adjustment of the session." - ); - - extra = recordOne( - () => - Services.prefs.setCharPref( - PREF_COMPACT_THRESHOLD, - THRESHOLD_NEVER_COMPACT - ), - "the window is no longer small enough for compact" - ); - Assert.equal(extra.effective, "standard", "It resolves to standard again."); - Assert.equal( - extra.auto_adjustments_prior, - "1", - "One automatic adjustment happened before this one." - ); - - extra = recordOne( - () => - Services.prefs.setIntPref( - PREF_UI_DENSITY, - window.gUIDensity.MODE_COMPACT - ), - "compact was chosen after two automatic adjustments" - ); - Assert.equal( - extra.auto_adjustments_prior, - "2", - "The user saw two automatic adjustments before changing the setting." - ); - - extra = recordOne( - () => - Services.prefs.setIntPref(PREF_UI_DENSITY, window.gUIDensity.MODE_TOUCH), - "touch was chosen" - ); - Assert.equal( - extra.auto_adjustments_prior, - "0", - "The counter reset when the setting changed." - ); - - Services.prefs.clearUserPref(PREF_UI_DENSITY); -}); - -// The resolved density belongs to a window, so a window that becomes the top -// window must be compared against its own history: another window having last -// reported the same density must not swallow its changes. -add_task(async function test_effective_density_is_tracked_per_window() { - Services.prefs.clearUserPref(PREF_UI_DENSITY); - Services.prefs.setCharPref(PREF_COMPACT_THRESHOLD, THRESHOLD_ALWAYS_COMPACT); - let extra = await restartTelemetry(); - Assert.equal(extra.effective, "compact", "This window resolved to compact."); - - // A second window, large enough that "Automatic" resolves to standard for - // it. A real one can't be used here: this file sets browser.nova.enabled, - // and LightweightThemeConsumer keeps a pref observer on it that throws once - // the window it belongs to has been closed. - let secondWindow = secondWindowStandingIn(window.gUIDensity.MODE_NORMAL); - await UIDensityTelemetry.init(secondWindow); - Assert.deepEqual( - takeEvents(), - [], - "Nothing is recorded for a window that only starts being tracked." - ); - - let originalGetTopWindow = BrowserWindowTracker.getTopWindow; - BrowserWindowTracker.getTopWindow = () => secondWindow; - try { - secondWindow.resolvedMode = window.gUIDensity.MODE_COMPACT; - extra = recordOne( - () => UIDensityTelemetry.onDensityChanged(secondWindow), - "the second window resolved to compact too" - ); - - UIDensityTelemetry.onDensityChanged(secondWindow); - Assert.deepEqual( - takeEvents(), - [], - "Nothing is recorded while the second window's density is unchanged." - ); - } finally { - BrowserWindowTracker.getTopWindow = originalGetTopWindow; - } - - Assert.equal(extra.current, "automatic", "The setting didn't change."); - Assert.equal(extra.effective, "compact", "It resolves to compact."); - Assert.equal( - Number(extra.window_width), - secondWindow.outerWidth, - "The event describes the second window." - ); - Assert.equal( - extra.auto_adjustments_prior, - "0", - "This is the first automatic adjustment of the session." - ); - - Services.prefs.setCharPref(PREF_COMPACT_THRESHOLD, THRESHOLD_NEVER_COMPACT); -}); - -// The reported ratio must follow the UI scale, not the physical density of the -// display, which nsIDOMWindowUtils.displayDPI would have reported on macOS and -// Linux. -add_task(async function test_device_pixel_ratio_tracks_ui_scale() { - Services.prefs.clearUserPref(PREF_UI_DENSITY); - await SpecialPowers.pushPrefEnv({ - set: [["layout.css.devPixelsPerPx", "2.0"]], - }); - Assert.equal(window.devicePixelRatio, 2, "The window is scaled 2x."); - - let extra = await restartTelemetry(); - Assert.equal(extra.device_pixel_ratio, "2", "2x scaling is reported as 2."); - - await SpecialPowers.popPrefEnv(); -}); - -add_task(async function test_no_event_without_a_change() { - Services.prefs.clearUserPref(PREF_UI_DENSITY); - await restartTelemetry(); - - Services.prefs.setCharPref(PREF_COMPACT_THRESHOLD, THRESHOLD_NEVER_COMPACT); - window.gUIDensity.update(); - Assert.deepEqual( - takeEvents(), - [], - "Nothing is recorded while neither the setting nor the resolved density changes." - ); -}); diff -urN firefox-157.0-orig/browser/modules/test/browser/browser_UsageTelemetry_idleDaily.js firefox-157.0/browser/modules/test/browser/browser_UsageTelemetry_idleDaily.js --- firefox-157.0-orig/browser/modules/test/browser/browser_UsageTelemetry_idleDaily.js 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/modules/test/browser/browser_UsageTelemetry_idleDaily.js 2026-10-05 08:05:41 +0900 @@ -7,8 +7,6 @@ const PREF_VALUE_FEATURE_ON = Ci.nsIBrowserDOMWindow.OPEN_NEWTAB_AFTER_CURRENT; const PREF_VALUE_FEATURE_OFF = Ci.nsIBrowserDOMWindow.OPEN_NEWTAB_BACKGROUND; -const NOVA_PREF = "browser.nova.enabled"; - // Bookkeeping prefs written by other idle-daily observers, reset below so this // test doesn't leak state into the rest of its chunk. const COLLATERAL_PREFS = [ @@ -83,36 +81,3 @@ await SpecialPowers.popPrefEnv(); }); - -/** - * browser.nova.enabled is reported on the same schedule, so that we can tell - * how many people turn the Nova redesign off once it is enabled by default. - */ -add_task(async function test_idleDailyRecordsNovaEnabled() { - // The task above already fired idle-daily, so clear that value: otherwise the - // first iteration below could pass without anything having been recorded. - await resetTelemetry(); - Assert.equal( - Glean.nova.enabled.testGetValue(), - null, - "the metric should start out unset" - ); - - for (let novaEnabled of [true, false]) { - await SpecialPowers.pushPrefEnv({ set: [[NOVA_PREF, novaEnabled]] }); - - Services.obs.notifyObservers(null, "idle-daily"); - - await TestUtils.waitForCondition( - () => Glean.nova.enabled.testGetValue() === novaEnabled, - `wait for idle-daily to record browser.nova.enabled=${novaEnabled}` - ); - Assert.equal( - Glean.nova.enabled.testGetValue(), - novaEnabled, - `idle-daily should have recorded browser.nova.enabled=${novaEnabled}` - ); - - await SpecialPowers.popPrefEnv(); - } -}); diff -urN firefox-157.0-orig/browser/themes/osx/browser.css firefox-157.0/browser/themes/osx/browser.css --- firefox-157.0-orig/browser/themes/osx/browser.css 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/themes/osx/browser.css 2026-10-05 09:14:50 +0900 @@ -16,15 +16,6 @@ @media (prefers-color-scheme: dark) { --tab-background-color-selected: color-mix(in srgb, -moz-dialog 75%, white); } - @media -moz-pref("browser.nova.enabled") { - /* Blend against the native window background. The window background - * already reflects the activeness. */ - --toolbox-background-color: light-dark(rgba(0, 0, 0, 0.05), rgba(255, 255, 255, 0.05)); - --toolbox-background-color-inactive: var(--toolbox-background-color); - - /* These look a bit better than the native color */ - --tabs-navbar-separator-color: var(--chrome-content-separator-color); - } } } @@ -142,11 +133,9 @@ /* ::::: tabbrowser ::::: */ -@media not -moz-pref("browser.nova.enabled") { .tab-group-label { margin-block: 1px 0; } -} .tabbrowser-tab:not(:hover) > .tab-stack > .tab-content > .tab-icon-image:not([selected], [multiselected]) { opacity: 0.9; diff -urN firefox-157.0-orig/browser/themes/shared/browser-colors.css firefox-157.0/browser/themes/shared/browser-colors.css --- firefox-157.0-orig/browser/themes/shared/browser-colors.css 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/themes/shared/browser-colors.css 2026-10-05 06:51:30 +0900 @@ -32,16 +32,6 @@ } } - @media -moz-pref("browser.nova.enabled") and (not ((forced-colors) or (-moz-native-theme))) { - &:is([theme-in-app], :not([lwtheme])) { - --chrome-content-separator-color: light-dark(rgba(201, 192, 227, 0.5), rgba(63, 62, 66, 0.5)); - - /* We can assume that panels and toolbars have reasonably similar colors - * for non-lwthemes. */ - --panel-icon-fill: var(--toolbarbutton-icon-fill); - } - } - /** * These colors are for when an AMO LWT is installed, we force blue/cyan for * the link/focus colors. We probably don't want to change this to purple for diff -urN firefox-157.0-orig/browser/themes/shared/browser-shared.css firefox-157.0/browser/themes/shared/browser-shared.css --- firefox-157.0-orig/browser/themes/shared/browser-shared.css 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/themes/shared/browser-shared.css 2026-10-05 06:50:47 +0900 @@ -128,10 +128,6 @@ --toolbox-background-position: right top; --toolbox-background-size: auto; - @media -moz-pref("browser.nova.enabled") { - --toolbox-background-image: var(--toolbox-background-gradient); - } - &[lwtheme] { --toolbox-background-image: var(--lwt-additional-images); --toolbox-background-repeat: var(--lwt-background-tiling); @@ -229,20 +225,6 @@ } } -/* AI Window + Nova: the navbar shadow needs to fall over the chat for - * the top-edge blur, so keep the chat containers below the toolbox - * but not the sidebar so the shadow doesn't spill onto it. */ -@media -moz-pref("browser.nova.enabled") { - :root[ai-window] { - --browser-area-z-index-tabbox: 0; - --browser-area-z-index-toolbox: 1; - - #sidebar-container { - z-index: var(--browser-area-z-index-sidebar); - } - } -} - body { /* Prevents the background from propagating to the viewport */ contain: paint; @@ -630,11 +612,6 @@ #notifications-toolbar { min-height: 0; flex-direction: column; - - @media -moz-pref("browser.nova.enabled") { - --info-bar-margin-block-start: 0; - --info-bar-margin-inline: 0; - } } .bookmark-item[cutting] { @@ -744,11 +721,6 @@ display: none; } } - - /* Nova replaces this labeled indicator with the icon-only button. */ - @media -moz-pref("browser.nova.enabled") { - display: none; - } } .private-browsing-indicator-icon { @@ -775,9 +747,7 @@ display: none; } - @media not -moz-pref("browser.nova.enabled") { display: none; - } > .toolbarbutton-icon { padding: var(--toolbarbutton-padding-inner); @@ -1497,27 +1467,6 @@ } } -@media -moz-pref("browser.nova.enabled") { - .reusable-relay-masks { - gap: var(--space-small); - - > button { - padding: var(--space-xsmall) var(--space-medium); - margin: 0; - align-items: center; - min-height: var(--size-item-large); - border-radius: var(--border-radius-circle); - border: 1px solid var(--border-color-deemphasized); - background-color: transparent; - - &:hover { - background-color: var(--button-background-color-hover); - border-color: var(--border-color-selected); - } - } - } -} - /* History swipe navigation animation */ #historySwipeAnimationContainer { @@ -1648,25 +1597,9 @@ &:is([cui-areatype="toolbar"]):not([overflowedItem]) > .toolbarbutton-icon { padding: var(--toolbarbutton-padding-inner); - @media not -moz-pref("browser.nova.enabled") { /* The design system does not have any inset box-shadow tokens. */ /* stylelint-disable-next-line stylelint-plugin-mozilla/use-design-tokens */ box-shadow: 0 0 16px 4px var(--box-shadow-color-darker-layer-1) inset; - } - - @media -moz-pref("browser.nova.enabled") { - /* set default color for HCM */ - --smart-window-toolbarbutton-color: var(--border-color-interactive-hover); - --toolbarbutton-background-color-hover: var(--background-color-box); - --toolbarbutton-background-color-active: var(--background-color-box); - --toolbarbutton-outline-color: var(--smart-window-toolbarbutton-color); - /* stylelint-disable-next-line stylelint-plugin-mozilla/use-design-tokens */ - border: var(--border-width) solid var(--smart-window-toolbarbutton-color); - - @media not (forced-colors) { - --smart-window-toolbarbutton-color: color-mix(in srgb, var(--color-violet-desaturated-50) 15%, transparent); - } - } } /* Smart Window toggle in Smart Window */ @@ -1675,47 +1608,12 @@ } :root[ai-window] &[cui-areatype="toolbar"]:not([overflowedItem]) { - @media (not (forced-colors)) and -moz-pref("browser.nova.enabled") { - /* toolbar button size (--toolbarbutton-icon-size) + 2 x the hover size (--toolbarbutton-padding-inner-compact) */ - --smart-window-switcher-hover-size: calc(var(--toolbarbutton-icon-size) + 2 * var(--toolbarbutton-padding-inner-compact)); - &::before { - aspect-ratio: 1; - background-color: transparent; - border-radius: var(--border-radius-circle); - content: ""; - position: absolute; - /* stylelint-disable-next-line stylelint-plugin-mozilla/use-design-tokens */ - width: var(--smart-window-switcher-hover-size); - z-index: -1; - } - - &:is(:hover, [open])::before { - /* stylelint-disable-next-line stylelint-plugin-mozilla/use-design-tokens */ - background-color: light-dark(color-mix(in srgb, var(--color-violet-desaturated-50) 15%, transparent), var(--color-violet-desaturated-50)); - } - } - > .toolbarbutton-icon { - @media not -moz-pref("browser.nova.enabled") { /* Smart Window icon has additional 2px padding per side, to be slightly smaller than Classic Window icon when used in Switcher */ padding: var(--toolbarbutton-padding-inner); /* The design system does not have any inset box-shadow tokens. */ /* stylelint-disable-next-line stylelint-plugin-mozilla/use-design-tokens */ box-shadow: 0 0 16px 4px var(--smartwindow-toggle-shadow-color) inset; - } - - @media -moz-pref("browser.nova.enabled") { - /* stylelint-disable-next-line stylelint-plugin-mozilla/use-design-tokens */ - box-shadow: 0 0 16px 4px var(--background-color-box) inset; - --toolbarbutton-background-color-hover: var(--background-color-box); - --toolbarbutton-background-color-active: var(--background-color-box); - --toolbarbutton-outline-color-hover: var(--smart-window-toolbarbutton-color); - --toolbarbutton-outline-color-active: light-dark( - color-mix(in srgb, var(--color-violet-desaturated-50) 30%, transparent), - var(--color-violet-desaturated-50) - ); - --toolbarbutton-outline-color-selected: var(--smart-window-toolbarbutton-color); - } } } } @@ -1754,32 +1652,9 @@ margin-inline-start: auto; } - @media not -moz-pref("browser.nova.enabled") { .ai-window-switch-description { display: none; } - } - - @media -moz-pref("browser.nova.enabled") { - /* TODO: replace with token when available - Bug 2033070 */ - /* stylelint-disable-next-line stylelint-plugin-mozilla/use-design-tokens */ - border-radius: 12px; - - .toolbarbutton-icon { - width: var(--icon-size-large); - height: var(--icon-size-large); - } - - .toolbarbutton-text { - padding-inline-start: var(--space-small); - text-align: start; - } - - .ai-window-switch-description { - color: var(--text-color-deemphasized); - font-size: var(--font-size-small); - } - } } #ai-window-switch-classic { @@ -1797,12 +1672,10 @@ display: none; } - @media not -moz-pref("browser.nova.enabled") { > .toolbarbutton-icon { /* Smart Window icon has additional 0.125rem padding per side, to be slightly smaller than Classic Window icon when used in Switcher */ padding: var(--space-xxsmall); } - } } #appMenu-new-ai-window-button > moz-badge { diff -urN firefox-157.0-orig/browser/themes/shared/controlcenter/3rdpartycookies.svg firefox-157.0/browser/themes/shared/controlcenter/3rdpartycookies.svg --- firefox-157.0-orig/browser/themes/shared/controlcenter/3rdpartycookies.svg 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/themes/shared/controlcenter/3rdpartycookies.svg 2026-10-05 06:54:48 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/controlcenter/cryptominers.svg firefox-157.0/browser/themes/shared/controlcenter/cryptominers.svg --- firefox-157.0-orig/browser/themes/shared/controlcenter/cryptominers.svg 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/themes/shared/controlcenter/cryptominers.svg 2026-10-05 06:54:46 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/controlcenter/panel.css firefox-157.0/browser/themes/shared/controlcenter/panel.css --- firefox-157.0-orig/browser/themes/shared/controlcenter/panel.css 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/controlcenter/panel.css 2026-10-05 06:54:44 +0900 @@ -8,23 +8,11 @@ --trustpanel-warning-bg: light-dark(var(--color-red-20), var(--color-red-90)); --trustpanel-inner-border: 1px solid var(--color-violet-20); --trustpanel-inner-warning-border: 1px solid var(--color-red-10); - - @media -moz-pref("browser.nova.enabled") { - --trustpanel-highlight-bg: light-dark(var(--color-violet-10), var(--color-violet-desaturated-70)); - /* White cards use the standard border token, like the breach alert card; - tinted states override these below. */ - --trustpanel-card-border-color: var(--border-color); - --trustpanel-card-divider-color: var(--border-color); - } } /* On the tinted cards (violet for enabled, box-info for disabled) the border and divider use a subtle wash that blends with the fill. */ #trustpanel-popup:is([tracking-protection="enabled"], [tracking-protection="disabled"]) { - @media -moz-pref("browser.nova.enabled") { - --trustpanel-card-border-color: light-dark(rgba(0, 0, 0, 0.06), rgba(255, 255, 255, 0.12)); - --trustpanel-card-divider-color: light-dark(rgba(0, 0, 0, 0.12), rgba(255, 255, 255, 0.12)); - } } /* Hide all conditional elements by default. */ @@ -852,54 +840,6 @@ &[hidden] { display: none; } - - @media -moz-pref("browser.nova.enabled") { - padding-block-start: var(--space-large); - display: flex; - align-items: flex-start; - gap: var(--space-large); - align-self: stretch; - border: 1px solid var(--trustpanel-card-border-color); - border-radius: var(--border-radius-large); - } -} - -@media -moz-pref("browser.nova.enabled") { - .trustpanel-card-main { - display: flex; - justify-content: center; - align-items: flex-start; - gap: var(--space-large); - align-self: stretch; - } - - .trustpanel-card-content { - display: flex; - flex-direction: column; - align-items: flex-start; - gap: var(--space-small); - align-self: stretch; - - &[hidden] { - display: none; - } - } - - /* Only the text vbox inside the row needs to fill horizontal space alongside - the shield icon. */ - .trustpanel-card-main > .trustpanel-card-content { - flex: 1 0 0; - } - - .trustpanel-card-content > label, - .trustpanel-card-content > description, - .trustpanel-card-content > .trustpanel-header { - margin: 0; - } - - .trustpanel-card-divided { - border-top: 1px solid var(--trustpanel-card-divider-color); - } } .only-trustpanel { @@ -934,27 +874,6 @@ background: var(--trustpanel-background, none); } -@media -moz-pref("browser.nova.enabled") { - #trustpanel-popup[tracking-protection="warning"] #trustpanel-graphic-section, - #trustpanel-popup[connection="not-secure"] #trustpanel-graphic-section, - #trustpanel-popup[connection="cert-error-page"] #trustpanel-graphic-section { - background: none; - } - - #trustpanel-popup[tracking-protection="disabled"] #trustpanel-graphic-section { - background: var(--background-color-box-info); - } - - /* Only one secondary section in the card per state. When the insecure - callout is active (tracking-protection="warning"), it trumps the blocker - callout. When ETP is off (tracking-protection="disabled") the blocker - count is meaningless, so hide it too. */ - #trustpanel-popup[tracking-protection="warning"] #trustpanel-blocker-section, - #trustpanel-popup[tracking-protection="disabled"] #trustpanel-blocker-section { - display: none; - } -} - #trustpanel-graphic-image, #trustpanel-graphic-image-legacy { -moz-context-properties: fill; @@ -971,32 +890,15 @@ height: 80px; margin-inline-end: var(--space-small); background-image: var(--trustpanel-image-legacy); - - @media -moz-pref("browser.nova.enabled") { - display: none; - } } #trustpanel-graphic-image { display: none; - - @media -moz-pref("browser.nova.enabled") { - display: revert; - width: var(--size-image-medium); - height: var(--size-image-medium); - flex-shrink: 0; - background-image: var(--trustpanel-image-nova); - } } #trustpanel-graphic-section-text { align-self: center; margin-inline-start: var(--space-medium); - - @media -moz-pref("browser.nova.enabled") { - align-self: flex-start; - margin-inline-start: 0; - } } .trustpanel-header { @@ -1086,23 +988,10 @@ padding: var(--space-medium); border-radius: var(--border-radius-medium); background: light-dark(rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0.12)); - - @media -moz-pref("browser.nova.enabled") { - margin: 0; - padding: 0; - border-radius: 0; - background: none; - } } #trustpanel-blocker-section { border: var(--trustpanel-inner-border); - - @media -moz-pref("browser.nova.enabled") { - border: none; - border-top: 1px solid var(--trustpanel-card-divider-color); - padding-top: var(--space-large); - } } /* Insecure-section lives inline in the card. Visibility is gated to the @@ -1117,12 +1006,6 @@ visibility: visible; } - @media -moz-pref("browser.nova.enabled") { - border: none; - border-top: 1px solid var(--trustpanel-card-divider-color); - padding-block-start: var(--space-large); - } - .trustpanel-header { background-image: url(chrome://global/skin/icons/security-broken.svg); background-position: left center; @@ -1135,11 +1018,6 @@ &:-moz-locale-dir(rtl) { background-position-x: right; } - - @media -moz-pref("browser.nova.enabled") { - background-image: none; - padding-inline-start: 0; - } } } diff -urN firefox-157.0-orig/browser/themes/shared/controlcenter/tracking-protection.svg firefox-157.0/browser/themes/shared/controlcenter/tracking-protection.svg --- firefox-157.0-orig/browser/themes/shared/controlcenter/tracking-protection.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/controlcenter/tracking-protection.svg 2026-10-05 06:54:52 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/customizableui/panelUI-shared.css firefox-157.0/browser/themes/shared/customizableui/panelUI-shared.css --- firefox-157.0-orig/browser/themes/shared/customizableui/panelUI-shared.css 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/themes/shared/customizableui/panelUI-shared.css 2026-10-05 06:53:03 +0900 @@ -611,114 +611,6 @@ margin-block-end: calc((1cap - 1lh) / 2); } -@media -moz-pref("browser.nova.enabled") { - #appMenu-popup { - .panel-banner-item, - .addon-banner-item { - --panel-banner-item-color: var(--promo-message-text-color-vibrant); - --panel-banner-item-icon-color: light-dark(var(--icon-color-accent-primary-desaturated), var(--icon-color-information)); - --panel-banner-item-background-color: light-dark(var(--promo-background-color-vibrant), var(--background-color-information)); - --panel-banner-item-hover-bgcolor: color-mix(in srgb, var(--panel-banner-item-background-color) 85%, currentColor); - --panel-banner-item-active-bgcolor: color-mix(in srgb, var(--panel-banner-item-background-color) 70%, currentColor); - align-items: center; - gap: var(--space-small); - border: var(--promo-border-width) solid var(--promo-border-color-vibrant); - border-radius: var(--promo-border-radius); - padding-inline: var(--promo-padding); - padding-block: var(--space-large); - } - - .panel-banner-item > .toolbarbutton-icon { - --icon-color: var(--panel-banner-item-icon-color); - order: 0; - flex-shrink: 0; - fill: var(--icon-color); - } - - .addon-banner-item::after { - order: -1; - margin-inline: 0; - fill: var(--icon-color-warning); - } - - #appMenu-update-banner:is([notificationid="update-manual"], [notificationid="update-unsupported"]), - .addon-banner-item { - --panel-banner-item-color: var(--button-text-color); - --panel-banner-item-background-color: var(--background-color-warning); - } - - #appMenu-update-banner:is([notificationid="update-manual"], [notificationid="update-unsupported"]) > .toolbarbutton-icon { - background-image: url(chrome://global/skin/icons/warning.svg); - -moz-context-properties: fill; - fill: var(--icon-color-warning); - } - - #appMenu-update-banner[notificationid="update-restart"] { - position: relative; - align-items: flex-start; - - > .appMenu-update-banner-pulse-ring { - --border-color: var(--panel-banner-item-icon-color); - display: block; - position: absolute; - width: var(--icon-size-small); - height: var(--icon-size-small); - inset-inline-start: var(--promo-padding); - inset-block-start: var(--space-large); - border: 4px solid var(--border-color); - border-radius: var(--border-radius-circle); - opacity: 0; - pointer-events: none; - - @media (prefers-reduced-motion: no-preference) { - animation: appMenu-update-banner-pulse 2s ease-out infinite; - } - } - - > .toolbarbutton-text { - display: none; - } - - .appMenu-update-banner-text { - display: flex; - } - - &[no-description] { - align-items: center; - padding-block: var(--space-medium); - - .appMenu-update-banner-description { - display: none; - } - .appMenu-update-banner-title { - margin-block-start: 0; - } - > .appMenu-update-banner-pulse-ring { - inset-block: 0; - margin-block: auto; - } - } - } - - /* Inset the top cards by the panel body's block padding so top, inline and - bottom gaps match at any density. */ - #appMenu-mainView > .panel-subview-body { - > #appMenu-update-banner, - > #appMenu-menu-message, - > #appMenu-fxa-sign-in-promo, - > #appMenu-addon-banners > .addon-banner-item { - margin-inline: var(--panel-separator-padding-inline); - margin-block: 0 var(--panel-separator-padding-block); - } - } - - /* menu-message sets its own :host margin in menu-message.css */ - #appMenu-menu-message menu-message { - margin: 0; - } - } -} - #appMenu-popup { .panel-banner-item, .addon-banner-item { @@ -965,7 +857,6 @@ &:not([fxastatus]) { padding-block: 0 var(--space-xxsmall); - @media not -moz-pref("browser.nova.enabled") { > #appMenu-fxa-label2 { padding: var(--space-small) var(--space-medium); color: var(--button-text-color); @@ -982,17 +873,6 @@ background-color: var(--button-background-color-active); } } - } - - @media -moz-pref("browser.nova.enabled") { - > #appMenu-fxa-label2 { - display: none; - } - - > #appMenu-nova-fxa-label { - display: flex; - } - } } } @@ -1867,10 +1747,6 @@ toolbarseparator.proton-zap::before { border-image: var(--panel-separator-zap-gradient, none) 1; - - @media -moz-pref("browser.nova.enabled") { - border-image: var(--tab-border-color-accent) 1; - } } } @@ -3079,10 +2955,8 @@ padding-top: 0; width: 28em; - @media not -moz-pref("browser.nova.enabled") { /* stylelint-disable-next-line stylelint-plugin-mozilla/use-design-tokens */ width: 400px; - } > .panel-header { margin: 0; @@ -3097,11 +2971,9 @@ } } -@media not -moz-pref("browser.nova.enabled") { #ipprotection-header-content { color: var(--text-color); } -} #ipprotection-header-content, #ipprotection-experiment-badge { @@ -3112,9 +2984,7 @@ display: inline-block; color: var(--text-color-deemphasized); - @media not -moz-pref("browser.nova.enabled") { margin-inline-start: var(--space-xsmall); - } } #PanelUI-ipprotection-locations { diff -urN firefox-157.0-orig/browser/themes/shared/downloads/downloads.inc.css firefox-157.0/browser/themes/shared/downloads/downloads.inc.css --- firefox-157.0-orig/browser/themes/shared/downloads/downloads.inc.css 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/downloads/downloads.inc.css 2026-10-05 07:19:52 +0900 @@ -47,9 +47,7 @@ padding-inline-end: var(--space-xsmall); margin: 0 0 var(--space-small); border-radius: var(--border-radius-medium); - @media not -moz-pref("browser.nova.enabled") { border-radius: var(--border-radius-small); - } } .downloadMainArea { @@ -179,9 +177,7 @@ --button-background-color-active: var(--button-background-color-ghost-active); --button-active-color: var(--button-text-color-ghost-active); - @media not -moz-pref("browser.nova.enabled") { border-radius: var(--border-radius-small); - } } .downloadButton > .button-box > .button-icon { @@ -250,61 +246,22 @@ /*** Blocked subview ***/ #downloadsPanel-blockedSubview-title { font-weight: var(--font-weight-heading); - @media not -moz-pref("browser.nova.enabled") { font-size: calc(100% * var(--downloads-item-font-size-factor)); font-weight: normal; margin-block-end: var(--space-xlarge); - } } #downloadsPanel-blockedSubview-buttons { margin-block-start: var(--space-large); - @media not -moz-pref("browser.nova.enabled") { margin-block-start: var(--space-xlarge); - } } #downloadsPanel-blockedSubview-details1, #downloadsPanel-blockedSubview-details2 { color: var(--text-color-deemphasized); margin-block-end: 0; - @media not -moz-pref("browser.nova.enabled") { margin-block-end: var(--space-small); font-size: calc(100% * var(--downloads-item-font-size-factor)); - } -} - -@media -moz-pref("browser.nova.enabled") { - #downloadsPanel-blockedSubview { - padding: var(--space-small); - - .subviewbutton-back { - padding: var(--space-small); - } - - > .panel-view-body-unscrollable { - padding: var(--space-small); - } - } - - /* TODO: Bug 2056428 - Post-Nova this should be removed along with the defunct styles - * for icons in the blocked subview. - */ - .downloadsPanel-blockedSubview-image { - display: none; - } - - .downloadsPanel-blockedSubview-title-box { - margin-block: var(--space-xsmall); - } - - #downloadsPanel-blockedSubview-buttons { - justify-content: flex-start; - - .footer-button { - padding: var(--space-small) var(--space-xlarge); - } - } } /*** Toolbarseparator ***/ diff -urN firefox-157.0-orig/browser/themes/shared/downloads/downloads.svg firefox-157.0/browser/themes/shared/downloads/downloads.svg --- firefox-157.0-orig/browser/themes/shared/downloads/downloads.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/downloads/downloads.svg 2026-10-05 07:19:22 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/downloads/progressmeter.css firefox-157.0/browser/themes/shared/downloads/progressmeter.css --- firefox-157.0-orig/browser/themes/shared/downloads/progressmeter.css 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/downloads/progressmeter.css 2026-10-05 07:19:59 +0900 @@ -37,11 +37,6 @@ height: 4px; border-radius: var(--border-radius-xsmall); background-color: color-mix(in srgb, currentColor 15%, transparent); - @media -moz-pref("browser.nova.enabled") { - /* Note: It is not ideal to reset the value of a base background color token. See follow-up Bug 2053911 */ - --background-color-canvas: light-dark(var(--color-gray-05), var(--color-gray-85)); - background-color: var(--background-color-canvas); - } } /* Ensure we have contrast in selected download items */ diff -urN firefox-157.0-orig/browser/themes/shared/formautofill/icon-capture-address-fields.svg firefox-157.0/browser/themes/shared/formautofill/icon-capture-address-fields.svg --- firefox-157.0-orig/browser/themes/shared/formautofill/icon-capture-address-fields.svg 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/themes/shared/formautofill/icon-capture-address-fields.svg 2026-10-05 07:20:30 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/formautofill/icon-capture-email-fields.svg firefox-157.0/browser/themes/shared/formautofill/icon-capture-email-fields.svg --- firefox-157.0-orig/browser/themes/shared/formautofill/icon-capture-email-fields.svg 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/themes/shared/formautofill/icon-capture-email-fields.svg 2026-10-05 07:20:27 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/fxa/avatar-empty.svg firefox-157.0/browser/themes/shared/fxa/avatar-empty.svg --- firefox-157.0-orig/browser/themes/shared/fxa/avatar-empty.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/fxa/avatar-empty.svg 2026-10-05 06:55:47 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/fxa/avatar.svg firefox-157.0/browser/themes/shared/fxa/avatar.svg --- firefox-157.0-orig/browser/themes/shared/fxa/avatar.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/fxa/avatar.svg 2026-10-05 06:55:46 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/add-circle-fill.svg firefox-157.0/browser/themes/shared/icons/add-circle-fill.svg --- firefox-157.0-orig/browser/themes/shared/icons/add-circle-fill.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/icons/add-circle-fill.svg 2026-10-05 07:17:50 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/back.svg firefox-157.0/browser/themes/shared/icons/back.svg --- firefox-157.0-orig/browser/themes/shared/icons/back.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/icons/back.svg 2026-10-05 07:18:52 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/bookmark-hollow.svg firefox-157.0/browser/themes/shared/icons/bookmark-hollow.svg --- firefox-157.0-orig/browser/themes/shared/icons/bookmark-hollow.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/icons/bookmark-hollow.svg 2026-10-05 07:18:00 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/bookmark-star-on-tray.svg firefox-157.0/browser/themes/shared/icons/bookmark-star-on-tray.svg --- firefox-157.0-orig/browser/themes/shared/icons/bookmark-star-on-tray.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/icons/bookmark-star-on-tray.svg 2026-10-05 07:19:08 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/bookmark.svg firefox-157.0/browser/themes/shared/icons/bookmark.svg --- firefox-157.0-orig/browser/themes/shared/icons/bookmark.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/icons/bookmark.svg 2026-10-05 07:18:08 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/canvas-blocked.svg firefox-157.0/browser/themes/shared/icons/canvas-blocked.svg --- firefox-157.0-orig/browser/themes/shared/icons/canvas-blocked.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/icons/canvas-blocked.svg 2026-10-05 07:17:55 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/canvas.svg firefox-157.0/browser/themes/shared/icons/canvas.svg --- firefox-157.0-orig/browser/themes/shared/icons/canvas.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/icons/canvas.svg 2026-10-05 07:18:55 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/device-desktop.svg firefox-157.0/browser/themes/shared/icons/device-desktop.svg --- firefox-157.0-orig/browser/themes/shared/icons/device-desktop.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/icons/device-desktop.svg 2026-10-05 07:19:04 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/device-phone.svg firefox-157.0/browser/themes/shared/icons/device-phone.svg --- firefox-157.0-orig/browser/themes/shared/icons/device-phone.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/icons/device-phone.svg 2026-10-05 07:18:03 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/device-vr.svg firefox-157.0/browser/themes/shared/icons/device-vr.svg --- firefox-157.0-orig/browser/themes/shared/icons/device-vr.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/icons/device-vr.svg 2026-10-05 07:18:04 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/fingerprint.svg firefox-157.0/browser/themes/shared/icons/fingerprint.svg --- firefox-157.0-orig/browser/themes/shared/icons/fingerprint.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/icons/fingerprint.svg 2026-10-05 07:18:01 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/firefox-view.svg firefox-157.0/browser/themes/shared/icons/firefox-view.svg --- firefox-157.0-orig/browser/themes/shared/icons/firefox-view.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/icons/firefox-view.svg 2026-10-05 07:19:17 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/flame.svg firefox-157.0/browser/themes/shared/icons/flame.svg --- firefox-157.0-orig/browser/themes/shared/icons/flame.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/icons/flame.svg 2026-10-05 07:18:17 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/forget.svg firefox-157.0/browser/themes/shared/icons/forget.svg --- firefox-157.0-orig/browser/themes/shared/icons/forget.svg 2026-09-24 19:45:35 +0900 +++ firefox-157.0/browser/themes/shared/icons/forget.svg 2026-10-05 07:18:15 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/forward.svg firefox-157.0/browser/themes/shared/icons/forward.svg --- firefox-157.0-orig/browser/themes/shared/icons/forward.svg 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/themes/shared/icons/forward.svg 2026-10-05 07:18:12 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/fullscreen-exit.svg firefox-157.0/browser/themes/shared/icons/fullscreen-exit.svg --- firefox-157.0-orig/browser/themes/shared/icons/fullscreen-exit.svg 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/themes/shared/icons/fullscreen-exit.svg 2026-10-05 07:17:59 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/fullscreen.svg firefox-157.0/browser/themes/shared/icons/fullscreen.svg --- firefox-157.0-orig/browser/themes/shared/icons/fullscreen.svg 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/themes/shared/icons/fullscreen.svg 2026-10-05 07:18:06 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/history.svg firefox-157.0/browser/themes/shared/icons/history.svg --- firefox-157.0-orig/browser/themes/shared/icons/history.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/icons/history.svg 2026-10-05 07:19:15 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/home.svg firefox-157.0/browser/themes/shared/icons/home.svg --- firefox-157.0-orig/browser/themes/shared/icons/home.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/icons/home.svg 2026-10-05 07:17:53 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/import.svg firefox-157.0/browser/themes/shared/icons/import.svg --- firefox-157.0-orig/browser/themes/shared/icons/import.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/icons/import.svg 2026-10-05 07:18:09 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/labs-16.svg firefox-157.0/browser/themes/shared/icons/labs-16.svg --- firefox-157.0-orig/browser/themes/shared/icons/labs-16.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/icons/labs-16.svg 2026-10-05 07:19:11 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/library.svg firefox-157.0/browser/themes/shared/icons/library.svg --- firefox-157.0-orig/browser/themes/shared/icons/library.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/icons/library.svg 2026-10-05 07:19:16 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/lightning-bolt.svg firefox-157.0/browser/themes/shared/icons/lightning-bolt.svg --- firefox-157.0-orig/browser/themes/shared/icons/lightning-bolt.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/icons/lightning-bolt.svg 2026-10-05 07:18:02 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/login.svg firefox-157.0/browser/themes/shared/icons/login.svg --- firefox-157.0-orig/browser/themes/shared/icons/login.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/icons/login.svg 2026-10-05 07:19:12 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/menu-badged.svg firefox-157.0/browser/themes/shared/icons/menu-badged.svg --- firefox-157.0-orig/browser/themes/shared/icons/menu-badged.svg 2026-09-24 19:45:35 +0900 +++ firefox-157.0/browser/themes/shared/icons/menu-badged.svg 2026-10-05 07:19:21 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/menu.svg firefox-157.0/browser/themes/shared/icons/menu.svg --- firefox-157.0-orig/browser/themes/shared/icons/menu.svg 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/themes/shared/icons/menu.svg 2026-10-05 07:19:18 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/notification-fill-12.svg firefox-157.0/browser/themes/shared/icons/notification-fill-12.svg --- firefox-157.0-orig/browser/themes/shared/icons/notification-fill-12.svg 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/themes/shared/icons/notification-fill-12.svg 2026-10-05 07:17:52 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/payment-methods-16.svg firefox-157.0/browser/themes/shared/icons/payment-methods-16.svg --- firefox-157.0-orig/browser/themes/shared/icons/payment-methods-16.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/icons/payment-methods-16.svg 2026-10-05 07:18:13 +0900 @@ -5,14 +5,10 @@ - \ No newline at end of file + diff -urN firefox-157.0-orig/browser/themes/shared/icons/pin.svg firefox-157.0/browser/themes/shared/icons/pin.svg --- firefox-157.0-orig/browser/themes/shared/icons/pin.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/icons/pin.svg 2026-10-05 07:18:11 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/privateBrowsing.svg firefox-157.0/browser/themes/shared/icons/privateBrowsing.svg --- firefox-157.0-orig/browser/themes/shared/icons/privateBrowsing.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/icons/privateBrowsing.svg 2026-10-05 07:19:07 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/reader-mode.svg firefox-157.0/browser/themes/shared/icons/reader-mode.svg --- firefox-157.0-orig/browser/themes/shared/icons/reader-mode.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/icons/reader-mode.svg 2026-10-05 07:18:58 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/save.svg firefox-157.0/browser/themes/shared/icons/save.svg --- firefox-157.0-orig/browser/themes/shared/icons/save.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/icons/save.svg 2026-10-05 07:18:56 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/share.svg firefox-157.0/browser/themes/shared/icons/share.svg --- firefox-157.0-orig/browser/themes/shared/icons/share.svg 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/themes/shared/icons/share.svg 2026-10-05 07:18:02 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/sidebar-collapsed-right.svg firefox-157.0/browser/themes/shared/icons/sidebar-collapsed-right.svg --- firefox-157.0-orig/browser/themes/shared/icons/sidebar-collapsed-right.svg 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/themes/shared/icons/sidebar-collapsed-right.svg 2026-10-05 07:17:57 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/sidebar-collapsed.svg firefox-157.0/browser/themes/shared/icons/sidebar-collapsed.svg --- firefox-157.0-orig/browser/themes/shared/icons/sidebar-collapsed.svg 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/themes/shared/icons/sidebar-collapsed.svg 2026-10-05 07:17:58 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/sidebar-expanded-right.svg firefox-157.0/browser/themes/shared/icons/sidebar-expanded-right.svg --- firefox-157.0-orig/browser/themes/shared/icons/sidebar-expanded-right.svg 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/themes/shared/icons/sidebar-expanded-right.svg 2026-10-05 07:19:14 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/sidebar-expanded.svg firefox-157.0/browser/themes/shared/icons/sidebar-expanded.svg --- firefox-157.0-orig/browser/themes/shared/icons/sidebar-expanded.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/icons/sidebar-expanded.svg 2026-10-05 07:19:13 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/sort.svg firefox-157.0/browser/themes/shared/icons/sort.svg --- firefox-157.0-orig/browser/themes/shared/icons/sort.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/icons/sort.svg 2026-10-05 07:18:53 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/split-view-left-16.svg firefox-157.0/browser/themes/shared/icons/split-view-left-16.svg --- firefox-157.0-orig/browser/themes/shared/icons/split-view-left-16.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/icons/split-view-left-16.svg 2026-10-05 07:18:05 +0900 @@ -5,13 +5,9 @@ - \ No newline at end of file + diff -urN firefox-157.0-orig/browser/themes/shared/icons/split-view-right-16.svg firefox-157.0/browser/themes/shared/icons/split-view-right-16.svg --- firefox-157.0-orig/browser/themes/shared/icons/split-view-right-16.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/icons/split-view-right-16.svg 2026-10-05 07:18:57 +0900 @@ -5,13 +5,9 @@ - \ No newline at end of file + diff -urN firefox-157.0-orig/browser/themes/shared/icons/subtract-circle-fill.svg firefox-157.0/browser/themes/shared/icons/subtract-circle-fill.svg --- firefox-157.0-orig/browser/themes/shared/icons/subtract-circle-fill.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/icons/subtract-circle-fill.svg 2026-10-05 07:18:51 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/sync.svg firefox-157.0/browser/themes/shared/icons/sync.svg --- firefox-157.0-orig/browser/themes/shared/icons/sync.svg 2026-09-24 19:45:35 +0900 +++ firefox-157.0/browser/themes/shared/icons/sync.svg 2026-10-05 07:19:09 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/synced-tabs.svg firefox-157.0/browser/themes/shared/icons/synced-tabs.svg --- firefox-157.0-orig/browser/themes/shared/icons/synced-tabs.svg 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/themes/shared/icons/synced-tabs.svg 2026-10-05 07:18:10 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/tab.svg firefox-157.0/browser/themes/shared/icons/tab.svg --- firefox-157.0-orig/browser/themes/shared/icons/tab.svg 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/themes/shared/icons/tab.svg 2026-10-05 07:18:07 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/tabs.svg firefox-157.0/browser/themes/shared/icons/tabs.svg --- firefox-157.0-orig/browser/themes/shared/icons/tabs.svg 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/themes/shared/icons/tabs.svg 2026-10-05 07:19:10 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/taskbar-tabs-add-tab.svg firefox-157.0/browser/themes/shared/icons/taskbar-tabs-add-tab.svg --- firefox-157.0-orig/browser/themes/shared/icons/taskbar-tabs-add-tab.svg 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/themes/shared/icons/taskbar-tabs-add-tab.svg 2026-10-05 07:19:20 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/taskbar-tabs-move-tab.svg firefox-157.0/browser/themes/shared/icons/taskbar-tabs-move-tab.svg --- firefox-157.0-orig/browser/themes/shared/icons/taskbar-tabs-move-tab.svg 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/themes/shared/icons/taskbar-tabs-move-tab.svg 2026-10-05 07:18:54 +0900 @@ -5,10 +5,6 @@ @@ -16,4 +12,4 @@ - \ No newline at end of file + diff -urN firefox-157.0-orig/browser/themes/shared/icons/thumb-down.svg firefox-157.0/browser/themes/shared/icons/thumb-down.svg --- firefox-157.0-orig/browser/themes/shared/icons/thumb-down.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/icons/thumb-down.svg 2026-10-05 07:18:59 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/window-firefox.svg firefox-157.0/browser/themes/shared/icons/window-firefox.svg --- firefox-157.0-orig/browser/themes/shared/icons/window-firefox.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/icons/window-firefox.svg 2026-10-05 07:18:17 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/icons/window.svg firefox-157.0/browser/themes/shared/icons/window.svg --- firefox-157.0-orig/browser/themes/shared/icons/window.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/icons/window.svg 2026-10-05 07:18:16 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/identity-block/permissions.svg firefox-157.0/browser/themes/shared/identity-block/permissions.svg --- firefox-157.0-orig/browser/themes/shared/identity-block/permissions.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/identity-block/permissions.svg 2026-10-05 06:52:03 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/identity-block/tracking-protection-disabled.svg firefox-157.0/browser/themes/shared/identity-block/tracking-protection-disabled.svg --- firefox-157.0-orig/browser/themes/shared/identity-block/tracking-protection-disabled.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/identity-block/tracking-protection-disabled.svg 2026-10-05 06:52:06 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/identity-block/tracking-protection.svg firefox-157.0/browser/themes/shared/identity-block/tracking-protection.svg --- firefox-157.0-orig/browser/themes/shared/identity-block/tracking-protection.svg 2026-09-24 19:45:35 +0900 +++ firefox-157.0/browser/themes/shared/identity-block/tracking-protection.svg 2026-10-05 06:52:14 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/identity-block/trust-icon-active.svg firefox-157.0/browser/themes/shared/identity-block/trust-icon-active.svg --- firefox-157.0-orig/browser/themes/shared/identity-block/trust-icon-active.svg 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/themes/shared/identity-block/trust-icon-active.svg 2026-10-05 06:52:05 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/identity-block/trust-icon-disabled.svg firefox-157.0/browser/themes/shared/identity-block/trust-icon-disabled.svg --- firefox-157.0-orig/browser/themes/shared/identity-block/trust-icon-disabled.svg 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/themes/shared/identity-block/trust-icon-disabled.svg 2026-10-05 06:51:59 +0900 @@ -5,10 +5,6 @@ @@ -18,4 +14,4 @@ - \ No newline at end of file + diff -urN firefox-157.0-orig/browser/themes/shared/identity-block/trust-icon-insecure.svg firefox-157.0/browser/themes/shared/identity-block/trust-icon-insecure.svg --- firefox-157.0-orig/browser/themes/shared/identity-block/trust-icon-insecure.svg 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/themes/shared/identity-block/trust-icon-insecure.svg 2026-10-05 06:52:04 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/identity-block/trust-icon-warning.svg firefox-157.0/browser/themes/shared/identity-block/trust-icon-warning.svg --- firefox-157.0-orig/browser/themes/shared/identity-block/trust-icon-warning.svg 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/themes/shared/identity-block/trust-icon-warning.svg 2026-10-05 06:52:13 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/migration/success.svg firefox-157.0/browser/themes/shared/migration/success.svg --- firefox-157.0-orig/browser/themes/shared/migration/success.svg 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/themes/shared/migration/success.svg 2026-10-05 06:55:48 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/notification-icons/autoplay-media-blocked.svg firefox-157.0/browser/themes/shared/notification-icons/autoplay-media-blocked.svg --- firefox-157.0-orig/browser/themes/shared/notification-icons/autoplay-media-blocked.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/notification-icons/autoplay-media-blocked.svg 2026-10-05 07:25:33 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/notification-icons/autoplay-media.svg firefox-157.0/browser/themes/shared/notification-icons/autoplay-media.svg --- firefox-157.0-orig/browser/themes/shared/notification-icons/autoplay-media.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/notification-icons/autoplay-media.svg 2026-10-05 07:25:38 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/notification-icons/camera-blocked.svg firefox-157.0/browser/themes/shared/notification-icons/camera-blocked.svg --- firefox-157.0-orig/browser/themes/shared/notification-icons/camera-blocked.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/notification-icons/camera-blocked.svg 2026-10-05 07:25:45 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/notification-icons/camera.svg firefox-157.0/browser/themes/shared/notification-icons/camera.svg --- firefox-157.0-orig/browser/themes/shared/notification-icons/camera.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/notification-icons/camera.svg 2026-10-05 07:25:40 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/notification-icons/desktop-notification-blocked.svg firefox-157.0/browser/themes/shared/notification-icons/desktop-notification-blocked.svg --- firefox-157.0-orig/browser/themes/shared/notification-icons/desktop-notification-blocked.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/notification-icons/desktop-notification-blocked.svg 2026-10-05 07:25:50 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/notification-icons/desktop-notification.svg firefox-157.0/browser/themes/shared/notification-icons/desktop-notification.svg --- firefox-157.0-orig/browser/themes/shared/notification-icons/desktop-notification.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/notification-icons/desktop-notification.svg 2026-10-05 07:25:51 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/notification-icons/geo-blocked.svg firefox-157.0/browser/themes/shared/notification-icons/geo-blocked.svg --- firefox-157.0-orig/browser/themes/shared/notification-icons/geo-blocked.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/notification-icons/geo-blocked.svg 2026-10-05 07:25:43 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/notification-icons/geo.svg firefox-157.0/browser/themes/shared/notification-icons/geo.svg --- firefox-157.0-orig/browser/themes/shared/notification-icons/geo.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/notification-icons/geo.svg 2026-10-05 07:25:41 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/notification-icons/local-host-blocked.svg firefox-157.0/browser/themes/shared/notification-icons/local-host-blocked.svg --- firefox-157.0-orig/browser/themes/shared/notification-icons/local-host-blocked.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/notification-icons/local-host-blocked.svg 2026-10-05 07:25:32 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/notification-icons/local-network-blocked.svg firefox-157.0/browser/themes/shared/notification-icons/local-network-blocked.svg --- firefox-157.0-orig/browser/themes/shared/notification-icons/local-network-blocked.svg 2026-09-24 19:45:35 +0900 +++ firefox-157.0/browser/themes/shared/notification-icons/local-network-blocked.svg 2026-10-05 07:25:30 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/notification-icons/local-network.svg firefox-157.0/browser/themes/shared/notification-icons/local-network.svg --- firefox-157.0-orig/browser/themes/shared/notification-icons/local-network.svg 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/themes/shared/notification-icons/local-network.svg 2026-10-05 07:25:36 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/notification-icons/microphone-blocked.svg firefox-157.0/browser/themes/shared/notification-icons/microphone-blocked.svg --- firefox-157.0-orig/browser/themes/shared/notification-icons/microphone-blocked.svg 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/themes/shared/notification-icons/microphone-blocked.svg 2026-10-05 07:25:48 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/notification-icons/microphone.svg firefox-157.0/browser/themes/shared/notification-icons/microphone.svg --- firefox-157.0-orig/browser/themes/shared/notification-icons/microphone.svg 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/themes/shared/notification-icons/microphone.svg 2026-10-05 07:25:49 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/notification-icons/midi.svg firefox-157.0/browser/themes/shared/notification-icons/midi.svg --- firefox-157.0-orig/browser/themes/shared/notification-icons/midi.svg 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/themes/shared/notification-icons/midi.svg 2026-10-05 07:25:31 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/notification-icons/persistent-storage-blocked.svg firefox-157.0/browser/themes/shared/notification-icons/persistent-storage-blocked.svg --- firefox-157.0-orig/browser/themes/shared/notification-icons/persistent-storage-blocked.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/notification-icons/persistent-storage-blocked.svg 2026-10-05 07:25:46 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/notification-icons/persistent-storage.svg firefox-157.0/browser/themes/shared/notification-icons/persistent-storage.svg --- firefox-157.0-orig/browser/themes/shared/notification-icons/persistent-storage.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/notification-icons/persistent-storage.svg 2026-10-05 07:25:35 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/notification-icons/popup.svg firefox-157.0/browser/themes/shared/notification-icons/popup.svg --- firefox-157.0-orig/browser/themes/shared/notification-icons/popup.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/notification-icons/popup.svg 2026-10-05 07:25:39 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/notification-icons/screen-blocked.svg firefox-157.0/browser/themes/shared/notification-icons/screen-blocked.svg --- firefox-157.0-orig/browser/themes/shared/notification-icons/screen-blocked.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/notification-icons/screen-blocked.svg 2026-10-05 07:25:47 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/notification-icons/screen.svg firefox-157.0/browser/themes/shared/notification-icons/screen.svg --- firefox-157.0-orig/browser/themes/shared/notification-icons/screen.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/notification-icons/screen.svg 2026-10-05 07:25:34 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/notification-icons/serial.svg firefox-157.0/browser/themes/shared/notification-icons/serial.svg --- firefox-157.0-orig/browser/themes/shared/notification-icons/serial.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/notification-icons/serial.svg 2026-10-05 07:25:44 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/notification-icons/xr-blocked.svg firefox-157.0/browser/themes/shared/notification-icons/xr-blocked.svg --- firefox-157.0-orig/browser/themes/shared/notification-icons/xr-blocked.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/notification-icons/xr-blocked.svg 2026-10-05 07:25:37 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/notification-icons/xr.svg firefox-157.0/browser/themes/shared/notification-icons/xr.svg --- firefox-157.0-orig/browser/themes/shared/notification-icons/xr.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/notification-icons/xr.svg 2026-10-05 07:25:42 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/places/folder-smart.svg firefox-157.0/browser/themes/shared/places/folder-smart.svg --- firefox-157.0-orig/browser/themes/shared/places/folder-smart.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/places/folder-smart.svg 2026-10-05 07:25:53 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/places/tag.svg firefox-157.0/browser/themes/shared/places/tag.svg --- firefox-157.0-orig/browser/themes/shared/places/tag.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/places/tag.svg 2026-10-05 07:25:52 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/preferences/preferences.css firefox-157.0/browser/themes/shared/preferences/preferences.css --- firefox-157.0-orig/browser/themes/shared/preferences/preferences.css 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/preferences/preferences.css 2026-10-05 06:55:57 +0900 @@ -1676,13 +1676,6 @@ .containers-identity-item { --box-icon-start-fill: var(--identity-icon-color); --box-icon-size: var(--icon-size-xlarge); - - @media -moz-pref("browser.nova.enabled") { - --box-icon-start-fill: var(--identity-fill-color); - --box-icon-padding: round(up, var(--space-small), 0.5px); - --box-icon-border-radius: var(--border-radius-circle); - --box-icon-background: var(--identity-fill-tint); - } } #site-containers-list { diff -urN firefox-157.0-orig/browser/themes/shared/privatebrowsing/aboutPrivateBrowsing.css firefox-157.0/browser/themes/shared/privatebrowsing/aboutPrivateBrowsing.css --- firefox-157.0-orig/browser/themes/shared/privatebrowsing/aboutPrivateBrowsing.css 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/themes/shared/privatebrowsing/aboutPrivateBrowsing.css 2026-10-05 06:55:15 +0900 @@ -462,154 +462,3 @@ .nova-subheader { display: none; } - -/* stylelint-disable-next-line media-query-no-invalid */ -@media -moz-pref("browser.nova.enabled") { - @media not (prefers-contrast) { - html.private { - /* Re-assert the token default to override the legacy - `--background-color-canvas: #25003e` set on `html.private` above. */ - --background-color-canvas: light-dark(var(--color-gray-0), var(--color-gray-90)); - background: var(--background-color-canvas); - color: var(--color-white); - /* Reset the legacy `--link-color: white` set on `html.private` above - back to the Nova design-system link tokens (accent primary). */ - --link-color: var(--color-accent-primary); - --link-color-hover: var(--color-accent-primary-hover); - --link-color-active: var(--color-accent-primary-active); - } - - html.private body::before { - content: ""; - position: fixed; - inset: 0; - background: url("chrome://browser/skin/privatebrowsing/fox-tail.svg") no-repeat bottom right / cover; - pointer-events: none; - z-index: -1; - } - - /* The fox-tail is a directional decoration; mirror it in RTL so the - sweep points toward the inline-start corner. */ - html.private:dir(rtl) body::before { - transform: scaleX(-1); - } - } - - html.private .container { - /* Fill body height so the info section can be pinned to the bottom of - the viewport via `margin-block-start: auto`. */ - display: flex; - flex-direction: column; - align-items: center; - flex: 1; - width: 100%; - } - - .logo-and-wordmark { - margin-block: clamp(32px, 10vh, 120px) var(--space-medium); - } - - .logo-and-wordmark .wordmark { - display: none; - } - - .logo { - background: url("chrome://browser/skin/privatebrowsing/pbm-logo.svg") no-repeat center center; - background-size: var(--icon-size-xxlarge); - height: var(--icon-size-xxlarge); - width: var(--icon-size-xxlarge); - } - - .nova-tagline { - display: block; - text-align: center; - margin-block: 0 var(--space-small); - } - - .nova-subheader { - display: block; - text-align: start; - margin-block: 0 var(--space-xxlarge); - max-width: 31em; - } - - content-search-handoff-ui { - /* Reset the legacy glass icon back to the component default, which shows - the current search engine's icon. */ - --content-search-handoff-ui-engine-icon: var(--newtab-search-icon); - - @media not (prefers-contrast) { - --content-search-handoff-ui-background-color: var(--color-violet-desaturated-70); - /* Reset the legacy 3px PBM border back to the standard field border */ - --content-search-handoff-ui-border-width: var(--border-width); - --content-search-handoff-ui-unfocused-border-color: var(--color-violet-desaturated-50); - --content-search-handoff-ui-fakefocus-border-color: var(--color-accent-primary); - --content-search-handoff-ui-fakefocus-box-shadow-inner: var(--color-accent-primary); - --content-search-handoff-ui-fakefocus-box-shadow-outer: color-mix(in srgb, var(--color-accent-primary) 30%, transparent); - } - } - - html.private .info-border { - margin-block-start: auto; - margin-block-end: 0; - padding-block: var(--space-xxlarge) 0; - padding-inline: 0; - - @media not (prefers-contrast) { - background: transparent; - box-shadow: none; - } - } - - html.private .info { - background: none; - border: none; - padding: 0; - text-align: center; - - @media not (prefers-contrast) { - background-color: transparent; - box-shadow: none; - color: var(--text-color-deemphasized); - } - - /* Drop the body's default block margin so the 12px gap to the link is - owned solely by the link's `margin-block-start` below. The link is - `inline-block`, so its margin would not otherwise collapse with the - body's. */ - #info-body { - margin-block-end: 0; - } - - #private-browsing-myths { - display: inline-block; - margin-block-start: var(--space-medium); - } - } - - /* `:link` to outweigh the base `a:link { color: inherit }` rule. */ - #private-browsing-myths:link, - #nova-promo-link:link { - @media not (prefers-contrast) { - color: var(--link-color); - - &:hover { - color: var(--link-color-hover); - } - - &:active { - color: var(--link-color-active); - } - } - } - - .nova-promo-wrapper { - display: flex; - width: 100%; - margin-block-start: var(--space-xxlarge); - } - - #nova-promo { - flex: 1; - } -} diff -urN firefox-157.0-orig/browser/themes/shared/sidebar.css firefox-157.0/browser/themes/shared/sidebar.css --- firefox-157.0-orig/browser/themes/shared/sidebar.css 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/themes/shared/sidebar.css 2026-10-05 06:58:48 +0900 @@ -84,12 +84,9 @@ position: relative; z-index: var(--browser-area-z-index-sidebar-splitter); --splitter-width: 4px; - @media (-moz-overlay-scrollbars) and (not -moz-pref("browser.nova.enabled")) { + @media (-moz-overlay-scrollbars) { --splitter-width: 2px; } - @media -moz-pref("browser.nova.enabled") { - border-radius: var(--border-radius-large); - } min-width: 1px; width: var(--splitter-width); @@ -129,11 +126,6 @@ /* Adjust to better align with the bottom of the sidebar-box */ margin-block-end: var(--space-small); } - - @media -moz-pref("browser.nova.enabled") { - width: var(--splitter-width); - border-inline: none; - } } #sidebar-launcher-splitter { @@ -147,14 +139,6 @@ } } - @media -moz-pref("browser.nova.enabled") { - margin-inline: calc(-1 * var(--splitter-width)) 0; - - #sidebar-container[sidebar-positionend] + & { - margin-inline: 0 calc(-1 * var(--splitter-width)); - } - } - @media not -moz-pref("sidebar.verticalTabs") { display: none; } @@ -293,19 +277,6 @@ --sidebar-launcher-button-padding-inline: 7px; } } - - @media -moz-pref("browser.nova.enabled") and (not -moz-pref("sidebar.verticalTabs")) { - --sidebar-launcher-button-padding-inline: 4px; - } - - /* The launcher buttons share a column with the vertical tab strip, so they - * take the same inline margin the tabs do. That keeps the collapsed sidebar - * at the fixed width tabs.css pins the strip to. */ - @media -moz-pref("browser.nova.enabled") and -moz-pref("sidebar.verticalTabs") { - &:not([uidensity="touch"]) { - --sidebar-launcher-button-padding-inline: var(--tab-inner-inline-margin); - } - } } /* Dividers between sections of the sidebar launcher (below the pinned tabs and @@ -334,12 +305,6 @@ * browser-shared.css. */ --sidebar-launcher-surface-color: var(--toolbox-background-color); - @media -moz-pref("browser.nova.enabled") and (not (-moz-native-theme)) { - :root:not([lwtheme]) & { - --sidebar-launcher-surface-color: var(--toolbar-background-color); - } - } - background-color: var(--sidebar-launcher-surface-color); position: relative; inset: 0; @@ -371,10 +336,8 @@ } :root[lwtheme] & { - @media not -moz-pref("browser.nova.enabled") { border-radius: unset; border-inline: unset; - } } &[sidebar-positionend] { @@ -391,7 +354,6 @@ The element next to it can be the sidebar box or the tabbox, depending on whether the sidebar box is expanded */ #tabbrowser-tabbox { - @media not -moz-pref("browser.nova.enabled") { &:not([sidebar-positionend]) { &:not([sidebar-panel-open]) { margin-inline-start: 0; @@ -413,36 +375,9 @@ margin-inline-end: var(--sidebar-launcher-collapsed-width); } } - } - - /* Only compensate while the launcher is out of flow. When it's collapsed it - * takes up its own width and gap in #browser, so adding the margin here as - * well would count the launcher twice. */ - @media -moz-pref("browser.nova.enabled") { - &[sidebar-launcher-expanded]:not([sidebar-panel-open]), - &[sidebar-ongoing-animations]:not([sidebar-launcher-expanded], [sidebar-panel-open]) { - &:not([sidebar-positionend]) { - margin-inline-start: var(--sidebar-launcher-collapsed-width); - } - &[sidebar-positionend] { - margin-inline-end: var(--sidebar-launcher-collapsed-width); - } - } - } - } - - /* - * If we're in fullscreen and the sidebar is closed, there should be no - * margins around #tabbrowser-tabbox. - */ - @media -moz-pref("browser.nova.enabled") { - &[fullscreenNavToolboxHidden] #tabbrowser-tabbox:not([sidebar-panel-open]) { - margin-inline: 0; - } } #sidebar-box { - @media not -moz-pref("browser.nova.enabled") { &:not([sidebar-positionend]) { &[sidebar-panel-open] { margin-inline-start: 0; @@ -464,19 +399,6 @@ margin-inline-end: var(--sidebar-launcher-collapsed-width); } } - } - - @media -moz-pref("browser.nova.enabled") { - &[sidebar-launcher-expanded][sidebar-panel-open], - &[sidebar-ongoing-animations][sidebar-panel-open]:not([sidebar-launcher-expanded]) { - &:not([sidebar-positionend]) { - margin-inline-start: var(--sidebar-launcher-collapsed-width); - } - &[sidebar-positionend] { - margin-inline-end: var(--sidebar-launcher-collapsed-width); - } - } - } } } @@ -492,78 +414,6 @@ } } -@media -moz-pref("browser.nova.enabled") { - /* A lwtheme that doesn't specify sidebar_border falls back to the translucent - * --card-border-color, and the line that draws takes on whatever surface sits - * beneath it. The content area backs its border with - * --tabpanel-background-color, so resolving against that here and painting - * the result opaquely puts the sidebar's separators on the same line - * .browserContainer draws. The percentages mirror --card-border-color. A - * theme that does specify sidebar_border sets this inline on the root, which - * still wins over this. */ - :root[lwtheme] { - --sidebar-border-color: light-dark( - color-mix(in srgb, currentColor 10%, var(--tabpanel-background-color)), - color-mix(in srgb, currentColor 6%, var(--tabpanel-background-color)) - ); - } - - #sidebar-box { - --sidebar-box-start-start-radius: var(--border-radius-medium); - --sidebar-box-start-end-radius: var(--border-radius-medium); - - background-color: var(--sidebar-background-color); - color: var(--sidebar-text-color); - padding-block-end: 0; - border: var(--border-width) solid var(--chrome-content-separator-color); - border-block-end: none; - - :root[lwtheme] & { - border-color: var(--sidebar-border-color); - } - - /* Only the edge facing the content area survives once the launcher is - * gone: the other one then meets the window. Fullscreen collapses the - * launcher along with the rest of the chrome, so it counts as gone there - * too. */ - #sidebar-container[hidden] ~ &:not([sidebar-positionend]), - :root[fullscreenNavToolboxHidden] &:not([sidebar-positionend]) { - --sidebar-box-start-start-radius: 0; - border-inline-start: none; - } - - #sidebar-container[hidden] ~ &[sidebar-positionend], - :root[fullscreenNavToolboxHidden] &[sidebar-positionend] { - --sidebar-box-start-end-radius: 0; - border-inline-end: none; - } - - /* Fullscreen slides the toolbox off-screen (and DOM fullscreen hides the - * chrome outright), so the block-start edge then meets the screen and the - * corners on it have nothing left to round away from. The edge facing the - * content area stays: the panel itself remains visible in fullscreen. */ - :root:is([inDOMFullscreen], [fullscreenNavToolboxHidden]) & { - --sidebar-box-start-start-radius: 0; - --sidebar-box-start-end-radius: 0; - border-block-start: none; - } - } - - /* The box needs the radius for its border, the browser for the surface it - * paints. */ - #sidebar-box, - #sidebar-box #sidebar { - border-start-start-radius: var(--sidebar-box-start-start-radius); - border-start-end-radius: var(--sidebar-box-start-end-radius); - } - - #sidebar { - border-radius: 0; - box-shadow: none; - outline: none; - } -} - /* History Menu */ #sidebar-history-clear, #sidebar-history-sort-by-heading { diff -urN firefox-157.0-orig/browser/themes/shared/smartbar.css firefox-157.0/browser/themes/shared/smartbar.css --- firefox-157.0-orig/browser/themes/shared/smartbar.css 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/smartbar.css 2026-10-05 07:17:48 +0900 @@ -203,12 +203,6 @@ .smartbar > .urlbar-background { border-radius: var(--border-radius-large); - /* TODO: Bug 2033070 - Nova tokens were implemented as the default value for the custom properties, and the fallbacks (and lint exceptions) will need to be removed after launch */ - @media -moz-pref("browser.nova.enabled") { - /* stylelint-disable-next-line stylelint-plugin-mozilla/use-design-tokens */ - border-radius: 24px; - } - @media not (forced-colors) { background-color: var(--smartbar-inactive-background-color); border: var(--smartbar-border-style-gradient) transparent; @@ -298,12 +292,10 @@ } /* Results */ -@media not -moz-pref("browser.nova.enabled") { .smartbar .urlbarView-results { padding-block: var(--space-medium); padding-inline: var(--space-large); } -} /* Button container */ .smartbar-button-container { @@ -327,33 +319,3 @@ .smartbar-context-chips-header { position: relative; } - -@media -moz-pref("browser.nova.enabled") { - .smartbar { - @media not (forced-colors) { - --urlbarview-background-color-hover: light-dark( - color-mix(in srgb, var(--color-violet-desaturated-40) 25%, transparent), - color-mix(in srgb, var(--color-violet-30) 20%, transparent) - ); - --urlbarview-background-color-selected: light-dark( - color-mix(in srgb, var(--color-violet-desaturated-40) 38%, transparent), - color-mix(in srgb, var(--color-violet-30) 40%, transparent) - ); - --link-color: var(--color-accent-primary); - } - } - - .smartbar > .urlbarView { - /* The view's max-height budgets the padding, so keep it inside the box. */ - box-sizing: border-box; - padding: calc(var(--space-medium) - var(--urlbarView-row-gutter)) var(--space-large); - } - - .urlbarView-row { - cursor: pointer; - - &:before { - cursor: none; - } - } -} diff -urN firefox-157.0-orig/browser/themes/shared/smartwindowGroupTabs.css firefox-157.0/browser/themes/shared/smartwindowGroupTabs.css --- firefox-157.0-orig/browser/themes/shared/smartwindowGroupTabs.css 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/smartwindowGroupTabs.css 2026-10-05 07:20:22 +0900 @@ -154,11 +154,6 @@ /* stylelint-disable stylelint-plugin-mozilla/use-design-tokens */ fill: light-dark(var(--tab-group-color), var(--tab-group-color-invert)); stroke: light-dark(var(--tab-group-color), var(--tab-group-color-invert)); - - @media -moz-pref("browser.nova.enabled") { - fill: var(--tab-group-background-color); - stroke: var(--tab-group-background-color); - } /* stylelint-enable stylelint-plugin-mozilla/use-design-tokens */ } diff -urN firefox-157.0-orig/browser/themes/shared/tabbrowser/content-area.css firefox-157.0/browser/themes/shared/tabbrowser/content-area.css --- firefox-157.0-orig/browser/themes/shared/tabbrowser/content-area.css 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/themes/shared/tabbrowser/content-area.css 2026-10-05 07:08:55 +0900 @@ -14,108 +14,6 @@ } &[privatebrowsingmode="temporary"] { --tabpanel-background-color: linear-gradient(45deg, #722291 0%, #45278d 50%, #393473 100%) !important; - - @media -moz-pref("browser.nova.enabled") { - /* Override the legacy purple gradient so the content-area backdrop behind - the matches the nova start page instead of flashing purple - before content paints. This must mirror the --background-color-canvas - set on html.private in aboutPrivateBrowsing.css; keep the two in sync. - Bug 2049373 / Bug 2049985. */ - --tabpanel-background-color: light-dark(var(--color-gray-0), var(--color-gray-90)) !important; - } - } -} - -@media -moz-pref("browser.nova.enabled") { - #navigator-toolbox { - will-change: background-color; - transition: background-color var(--inactive-window-transition); - overflow: clip; - } - - #browser { - display: flex; - box-sizing: border-box; - } - - #tabbrowser-tabbox { - flex: 1; - box-sizing: border-box; - } - - /* Match the .browserContainer of any tab panel that is not a split-view - * panel. This covers the initial state, the state after split-view is fully - * dissolved, and the suspended state — where #tabbrowser-tabpanels still - * has [splitview] (because suspended split-view panels remain in the - * tabbox) but the currently-selected tab is a non-split-view one. Without - * this, the visible tab would keep the split-view panel decoration until - * split-view is fully dissolved. */ - #tabbrowser-tabpanels > :not(.split-view-panel) .browserContainer { - --content-area-start-radius: var(--border-radius-medium); - - outline: none; - box-shadow: none; - border-block-start: var(--border-width) solid var(--chrome-content-separator-color); - - /* Fullscreen slides the toolbox off-screen (and DOM fullscreen hides the - * chrome outright), so the block-start edge then meets the screen and the - * corners on it have nothing left to round away from. */ - :root:is([inDOMFullscreen], [fullscreenNavToolboxHidden]) & { - --content-area-start-radius: 0; - - border-block-start: none; - } - - /* A .browserContainer edge is only separated and rounded when it faces chrome. - * SidebarController.setPosition updates the order of all of #browser's - * (flex) children according to the sidebar.position_start pref. - * The AI sidebar always docks opposite the browser sidebar. */ - :root:not([inDOMFullscreen]) #tabbrowser-tabbox:not([sidebar-positionend]):is([sidebar-shown], [sidebar-panel-open]) &, - :root:not([inDOMFullscreen]) #tabbrowser-tabbox[sidebar-positionend][ai-window-open] & { - border-inline-start: var(--border-width) solid var(--chrome-content-separator-color); - border-start-start-radius: var(--content-area-start-radius); - } - - :root:not([inDOMFullscreen]) #tabbrowser-tabbox:is([sidebar-positionend]:is([sidebar-shown], [sidebar-panel-open]), [ai-window-open]) & { - border-inline-end: var(--border-width) solid var(--chrome-content-separator-color); - border-start-end-radius: var(--content-area-start-radius); - } - } - - /* Splitter between split-view panels. The active panel's 2px focus outline - * extends into the splitter margin on the active panel's side, so we widen - * that side's margin to 3px (2px outline + 1px clear) and keep the other - * side at 1px. See the [splitview-selected-column] rules below for the - * asymmetric overrides. */ - #tabbrowser-tabpanels[splitview] .split-view-splitter { - background-color: transparent; - border: none; - border-radius: var(--border-radius-large); - min-width: auto; - min-height: auto; - width: 4px; - margin-inline: 1px; - transition: background-color 0.5s ease-in-out; - - &:hover { - background-color: var(--focus-outline-color); - } - - :root[uidensity="compact"] & { - width: 2px; - } - } - - /* When column-0 is selected, its right outline extends into the splitter's - * inline-start margin: widen that side to 3px (2px outline + 1px clear). */ - :root[splitview-selected-column="0"] #tabbrowser-tabpanels[splitview] .split-view-splitter { - margin-inline-start: 3px; - } - - /* When column-1 is selected, its left outline extends into the splitter's - * inline-end margin: widen that side to 3px (2px outline + 1px clear). */ - :root[splitview-selected-column="1"] #tabbrowser-tabpanels[splitview] .split-view-splitter { - margin-inline-end: 3px; } } @@ -127,7 +25,7 @@ border-bottom-color: var(--toolbar-background-color); } - @media -moz-pref("sidebar.verticalTabs") or -moz-pref("browser.nova.enabled") { + @media -moz-pref("sidebar.verticalTabs") { border-bottom-style: none; } } @@ -317,7 +215,6 @@ @media -moz-pref("sidebar.revamp") { overflow: clip; - @media not -moz-pref("browser.nova.enabled") { :root:not([inDOMFullscreen]) #tabbrowser-tabbox[sidebar-shown] & { @media -moz-pref("sidebar.position_start") { border-start-start-radius: var(--border-radius-medium); @@ -331,7 +228,6 @@ border-start-start-radius: var(--border-radius-medium); border-start-end-radius: var(--border-radius-medium); } - } } } @@ -489,30 +385,6 @@ } } -@media -moz-pref("browser.nova.enabled") { - /* Match the corner radius and separator border of unsplit panels. */ - #tabbrowser-tabpanels[splitview] .split-view-panel > .browserContainer { - border-radius: var(--border-radius-medium); - } - - /* Skip the outline on the active panel so its focus outline can sit flush - * against the content without a visible gap. We use outline not border to - * avoid changing the dimensions of the non-selected panel's content box. */ - #tabbrowser-tabpanels[splitview] .split-view-panel:not(.deck-selected) > .browserContainer { - outline: var(--border-width) solid var(--chrome-content-separator-color); - outline-offset: calc(-1 * var(--border-width)); - } - - /* In split view the notification box is inside the panel's browserContainer. - * So we move the border to the bottom to face the web content. */ - #tabbrowser-tabpanels[splitview] .split-view-panel > .browserContainer > .notificationbox-stack > notification-message { - margin: 0; - border-block-start: none; - border-block-end: var(--border-width) solid var(--chrome-content-separator-color); - --info-bar-background-color: var(--toolbar-background-color); - } -} - /* Split view */ split-view-footer { @@ -723,10 +595,6 @@ --button-size-icon: 34px; --button-border-radius: 7px; margin: 1px; - - @media -moz-pref("browser.nova.enabled") { - --button-border-radius: var(--border-radius-xlarge); - } } #ask-chat-shortcuts { @@ -915,7 +783,6 @@ } /* Radius the backdrop so it doesnt occlude the radiused .browserContainer below it */ -@media not -moz-pref("browser.nova.enabled") { :root:not([inDOMFullscreen]) #tabbrowser-tabbox[sidebar-shown] .browserSidebarContainer:not(.responsive-mode) .dialogOverlay[topmost="true"] { border-start-end-radius: var(--border-radius-medium); @@ -924,7 +791,6 @@ border-start-end-radius: 0; } } -} .dialogOverlay[topmost="true"], #window-modal-dialog::backdrop { diff -urN firefox-157.0-orig/browser/themes/shared/tabbrowser/tab-audio-blocked-circle-12.svg firefox-157.0/browser/themes/shared/tabbrowser/tab-audio-blocked-circle-12.svg --- firefox-157.0-orig/browser/themes/shared/tabbrowser/tab-audio-blocked-circle-12.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/tabbrowser/tab-audio-blocked-circle-12.svg 2026-10-05 07:07:31 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/tabbrowser/tab-audio-blocked-small.svg firefox-157.0/browser/themes/shared/tabbrowser/tab-audio-blocked-small.svg --- firefox-157.0-orig/browser/themes/shared/tabbrowser/tab-audio-blocked-small.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/tabbrowser/tab-audio-blocked-small.svg 2026-10-05 06:58:53 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/tabbrowser/tab-audio-muted-small.svg firefox-157.0/browser/themes/shared/tabbrowser/tab-audio-muted-small.svg --- firefox-157.0-orig/browser/themes/shared/tabbrowser/tab-audio-muted-small.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/tabbrowser/tab-audio-muted-small.svg 2026-10-05 06:58:50 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/tabbrowser/tab-audio-playing-small.svg firefox-157.0/browser/themes/shared/tabbrowser/tab-audio-playing-small.svg --- firefox-157.0-orig/browser/themes/shared/tabbrowser/tab-audio-playing-small.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/tabbrowser/tab-audio-playing-small.svg 2026-10-05 06:58:52 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/tabbrowser/tab-group-chicklet.svg firefox-157.0/browser/themes/shared/tabbrowser/tab-group-chicklet.svg --- firefox-157.0-orig/browser/themes/shared/tabbrowser/tab-group-chicklet.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/tabbrowser/tab-group-chicklet.svg 2026-10-05 07:09:59 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/tabbrowser/tab-groups-list.css firefox-157.0/browser/themes/shared/tabbrowser/tab-groups-list.css --- firefox-157.0-orig/browser/themes/shared/tabbrowser/tab-groups-list.css 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/tabbrowser/tab-groups-list.css 2026-10-05 07:16:00 +0900 @@ -61,12 +61,6 @@ fill: light-dark(var(--tab-group-color), var(--tab-group-color-invert)); /* stylelint-disable-next-line stylelint-plugin-mozilla/use-design-tokens */ stroke: light-dark(var(--tab-group-color), var(--tab-group-color-invert)); - @media -moz-pref("browser.nova.enabled") { - /* stylelint-disable-next-line stylelint-plugin-mozilla/use-design-tokens */ - fill: var(--tab-group-background-color); - /* stylelint-disable-next-line stylelint-plugin-mozilla/use-design-tokens */ - stroke: var(--tab-group-background-color); - } &.tab-group-icon-closed { fill: transparent; diff -urN firefox-157.0-orig/browser/themes/shared/tabbrowser/tab-groups.svg firefox-157.0/browser/themes/shared/tabbrowser/tab-groups.svg --- firefox-157.0-orig/browser/themes/shared/tabbrowser/tab-groups.svg 2026-09-24 19:45:35 +0900 +++ firefox-157.0/browser/themes/shared/tabbrowser/tab-groups.svg 2026-10-05 06:58:54 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/tabbrowser/tab-hover-preview.css firefox-157.0/browser/themes/shared/tabbrowser/tab-hover-preview.css --- firefox-157.0-orig/browser/themes/shared/tabbrowser/tab-hover-preview.css 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/themes/shared/tabbrowser/tab-hover-preview.css 2026-10-05 07:09:52 +0900 @@ -6,11 +6,6 @@ --panel-width: 280px; --panel-padding: 0; - @media -moz-pref("browser.nova.enabled") { - --panel-padding: 0 var(--space-small) var(--space-small); - --panel-border-radius: var(--border-radius-large); - } - @media not -moz-pref("browser.tabs.notes.enabled") { pointer-events: none; @@ -70,12 +65,6 @@ &[hidden] { display: none; } - - @media -moz-pref("browser.nova.enabled") { - padding: var(--space-xxsmall) var(--space-small); - border-radius: var(--border-radius-circle); - background-color: var(--identity-fill-tint); - } } .tab-preview-container-icon { @@ -87,12 +76,6 @@ background-size: contain; background-repeat: no-repeat; background-position: center center; - - /* Non-nova shows name + icon; nova shows icon + name, matching the URL bar. */ - @media -moz-pref("browser.nova.enabled") { - order: 1; - fill: var(--identity-fill-color); - } } .tab-preview-container-label { @@ -100,11 +83,6 @@ overflow: hidden; white-space: nowrap; text-overflow: ellipsis; - - @media -moz-pref("browser.nova.enabled") { - order: 2; - color: var(--identity-fill-color); - } } .tab-preview-thumbnail-container { @@ -278,12 +256,4 @@ & toolbarbutton.active-tab { font-weight: var(--font-weight-semibold); } - - @media -moz-pref("browser.nova.enabled") { - --panel-padding: var(--space-small); - - .group-preview-button { - border: 1px solid var(--button-border-color-ghost); - } - } } diff -urN firefox-157.0-orig/browser/themes/shared/tabbrowser/tab.tokens.css firefox-157.0/browser/themes/shared/tabbrowser/tab.tokens.css --- firefox-157.0-orig/browser/themes/shared/tabbrowser/tab.tokens.css 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/themes/shared/tabbrowser/tab.tokens.css 2026-10-05 07:24:29 +0900 @@ -5,7 +5,7 @@ /* DO NOT EDIT this file directly, instead modify tab.tokens.json * and run `mach buildtokens` to see your changes. */ -@layer tokens-foundation, tokens-browser-theme, tokens-foundation-brand, tokens-foundation-nova, tokens-browser-theme-nova, tokens-foundation-brand-nova, tokens-prefers-contrast, tokens-prefers-contrast-nova, tokens-forced-colors, tokens-forced-colors-nova; +@layer tokens-foundation, tokens-browser-theme, tokens-foundation-brand, tokens-prefers-contrast, tokens-forced-colors; :root, :host { @@ -110,64 +110,6 @@ --tab-text-color-selected: SelectedItemText; } } - - @media -moz-pref("browser.nova.enabled") { - @layer tokens-foundation-nova { - --tab-background-color: transparent; - --tab-background-color-hover: color-mix(in srgb, currentColor 17%, transparent); - --tab-background-color-selected: var(--toolbar-background-color); - --tab-border-color: transparent; - --tab-border-color-hover: transparent; - --tab-border-color-accent: linear-gradient(96deg, var(--tab-border-color-selected-leading) 20.68%, var(--tab-border-color-selected-trailing) 79.34%); - --tab-border-color-selected-leading: var(--color-violet-30); - --tab-border-color-selected-trailing: var(--color-orange-30); - --tab-box-shadow-selected: none; - --tab-close-button-background-color: var(--button-background-color-ghost); - --tab-close-button-background-color-hover: var(--button-background-color-ghost-hover); - --tab-close-button-background-color-active: var(--button-background-color-ghost-active); - --tab-close-button-text-color: var(--button-text-color-ghost); - --tab-close-button-text-color-hover: var(--button-text-color-ghost-hover); - --tab-close-button-text-color-active: var(--button-text-color-ghost-active); - --tab-group-blue: light-dark(var(--color-blue-50), var(--color-blue-30)); - --tab-group-blue-hover: light-dark(var(--color-blue-60), var(--color-blue-40)); - --tab-group-blue-text: light-dark(var(--color-white), var(--color-blue-90)); - --tab-group-cyan: light-dark(var(--color-cyan-50), var(--color-cyan-30)); - --tab-group-cyan-hover: light-dark(var(--color-cyan-60), var(--color-cyan-40)); - --tab-group-cyan-text: light-dark(var(--color-white), var(--color-cyan-90)); - --tab-group-green: light-dark(var(--color-green-50), var(--color-green-30)); - --tab-group-green-hover: light-dark(var(--color-green-60), var(--color-green-40)); - --tab-group-green-text: light-dark(var(--color-white), var(--color-green-90)); - --tab-group-orange: light-dark(var(--color-orange-50), var(--color-orange-30)); - --tab-group-orange-hover: light-dark(var(--color-orange-60), var(--color-orange-40)); - --tab-group-orange-text: light-dark(var(--color-white), var(--color-orange-90)); - --tab-group-pink: light-dark(var(--color-pink-50), var(--color-pink-30)); - --tab-group-pink-hover: light-dark(var(--color-pink-60), var(--color-pink-40)); - --tab-group-pink-text: light-dark(var(--color-white), var(--color-pink-90)); - --tab-group-purple: light-dark(var(--color-purple-50), var(--color-purple-30)); - --tab-group-purple-hover: light-dark(var(--color-purple-60), var(--color-purple-40)); - --tab-group-purple-text: light-dark(var(--color-white), var(--color-purple-90)); - --tab-group-red: light-dark(var(--color-red-50), var(--color-red-30)); - --tab-group-red-hover: light-dark(var(--color-red-60), var(--color-red-40)); - --tab-group-red-text: light-dark(var(--color-white), var(--color-red-90)); - --tab-group-yellow: light-dark(var(--color-yellow-50), var(--color-yellow-30)); - --tab-group-yellow-hover: light-dark(var(--color-yellow-60), var(--color-yellow-40)); - --tab-group-yellow-text: light-dark(var(--color-white), var(--color-yellow-90)); - --tab-loading-fill: var(--color-accent-primary); - --tab-margin-block: 6px; - --tab-outline-offset: -1px; - --tab-text-color-selected: var(--toolbar-text-color); - } - - @layer tokens-forced-colors-nova { - @media (forced-colors) { - --tab-background-color-selected: var(--button-background-color-selected); - --tab-border-color: var(--button-border-color); - --tab-border-color-hover: var(--button-border-color-hover); - --tab-border-color-selected-leading: var(--tab-border-color-selected); - --tab-border-color-selected-trailing: var(--tab-border-color-selected); - } - } - } } :root:is([theme-in-app], :not([lwtheme])), @@ -179,21 +121,4 @@ --tab-text-color-selected: light-dark(rgb(21, 20, 26), var(--color-white)); } } - - @media -moz-pref("browser.nova.enabled") { - @layer tokens-browser-theme-nova { - @media not ((forced-colors) or (-moz-native-theme)) { - --tab-background-color: var(--button-background-color); - --tab-background-color-hover: var(--toolbarbutton-background-color-hover); - --tab-background-color-selected: var(--background-color-box); - --tab-close-button-background-color: var(--toolbarbutton-background-color); - --tab-close-button-background-color-hover: var(--toolbarbutton-background-color-hover); - --tab-close-button-background-color-active: var(--toolbarbutton-background-color-active); - --tab-close-button-text-color: var(--tab-text-color); - --tab-close-button-text-color-hover: var(--tab-text-color); - --tab-close-button-text-color-active: var(--tab-text-color); - --tab-text-color-selected: var(--toolbox-text-color); - } - } - } } diff -urN firefox-157.0-orig/browser/themes/shared/tabbrowser/tabs.css firefox-157.0/browser/themes/shared/tabbrowser/tabs.css --- firefox-157.0-orig/browser/themes/shared/tabbrowser/tabs.css 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/tabbrowser/tabs.css 2026-10-05 07:07:20 +0900 @@ -28,7 +28,6 @@ --tab-box-shadow-selected: var(--box-shadow-level-1); } - @media not -moz-pref("browser.nova.enabled") { --tab-min-height: 36px; --tab-group-label-size: 24px; --tab-box-shadow-selected: var(--box-shadow-level-1); @@ -40,7 +39,6 @@ &[uidensity="touch"] { --tab-group-label-size: 27px; } - } --tab-group-label-container-size: var(--tab-group-label-size); @@ -77,43 +75,6 @@ --tab-vertical-scrollbar-color: color-mix(in srgb, currentColor 26%, transparent) transparent; } - @media -moz-pref("browser.nova.enabled") { - --tab-group-label-padding: 8px; - - &[uidensity="compact"] { - --tab-margin-block: 4px; - } - } - - /* Sizing and positioning of the container tab line. */ - @media -moz-pref("browser.nova.enabled") { - --tab-context-line-block-offset: 3px; - --tab-context-line-inline-offset: calc(var(--tab-inline-padding) + 2px); - - /* We need a different block offset for split-view because there's less - * vertical space available there */ - --tab-context-line-split-view-block-offset: 1px; - - &[uidensity="compact"] { - --tab-context-line-block-offset: 1px; - --tab-context-line-split-view-block-offset: 0px; - } - - @media -moz-pref("sidebar.verticalTabs") { - --tab-context-line-block-offset: 3px; - --tab-context-line-inline-offset: var(--tab-inline-padding); - - --tab-context-line-split-view-block-offset: 3px; - - &[uidensity="compact"] { - --tab-context-line-inline-offset: calc(var(--tab-inline-padding) + 1px); - --tab-context-line-block-offset: 2px; - --tab-context-line-split-view-block-offset: 1px; - } - } - } - - @media not -moz-pref("browser.nova.enabled") { --tab-group-blue: light-dark(var(--color-blue-70), var(--color-blue-20)); --tab-group-blue-invert: light-dark(var(--color-blue-0), var(--color-blue-70)); --tab-group-blue-pale: var(--color-blue-0); @@ -141,7 +102,6 @@ --tab-group-gray: light-dark(#5e6a77, #99a6b4); --tab-group-gray-invert: light-dark(#f2f9ff, #5e6a77); --tab-group-gray-pale: #f2f9ff; - } --tab-group-label-text-dark: var(--color-gray-100); /* 5px of padding-block are adding to .tabbrowser-tab */ @@ -156,21 +116,6 @@ --tab-inner-inline-margin: 7px; } } - - /* Hold the collapsed strip at 50px in normal and compact density, so the - * scrollbar has room next to the tab backgrounds instead of being drawn - * over them. Touch density keeps its natural, wider strip. */ - @media -moz-pref("browser.nova.enabled") { - /* 32px tab background + 2 * 9px. */ - &:not([uidensity="touch"]) { - --tab-inner-inline-margin: 9px; - } - - /* 28px tab background + 2 * 11px. */ - &[uidensity="compact"] { - --tab-inner-inline-margin: 11px; - } - } } #tabbrowser-tabs { @@ -217,14 +162,6 @@ &[orient="vertical"] { --tab-group-label-highlight-radius: 4px; - - @media -moz-pref("browser.nova.enabled") { - /* The hover highlight fills a full tab-height row and the tab group - * label is inset within it. */ - --tab-group-label-hover-inset: 2px; - --tab-group-label-container-size: var(--tab-min-height); - --tab-group-label-size: calc(var(--tab-group-label-container-size) - 2 * var(--tab-group-label-hover-inset)); - } } } @@ -662,11 +599,6 @@ inset-inline-end: -7px; z-index: 1; /* Overlay tab title */ - @media -moz-pref("browser.nova.enabled") { - top: 7px; - box-shadow: var(--box-shadow-level-1); - } - #tabbrowser-tabs[orient="vertical"] & { top: 7px; } @@ -732,11 +664,6 @@ @media (forced-colors) { color: var(--button-text-color-ghost-hover); } - - /* stylelint-disable-next-line max-nesting-depth */ - @media -moz-pref("browser.nova.enabled") { - border-color: var(--button-border-color-hover); - } } &:hover:active { @@ -745,11 +672,6 @@ @media (forced-colors) { color: var(--button-text-color-ghost-active); } - - /* stylelint-disable-next-line max-nesting-depth */ - @media -moz-pref("browser.nova.enabled") { - border-color: var(--button-border-color-active); - } } } } @@ -824,11 +746,6 @@ @media (forced-colors) { color: var(--button-background-color-ghost); } - - /* stylelint-disable-next-line max-nesting-depth */ - @media -moz-pref("browser.nova.enabled") { - border-color: var(--button-border-color-hover); - } } &:hover:active { @@ -838,11 +755,6 @@ @media (forced-colors) { color: var(--button-background-color-ghost-active); } - - /* stylelint-disable-next-line max-nesting-depth */ - @media -moz-pref("browser.nova.enabled") { - border-color: var(--button-border-color-active); - } } } } @@ -931,9 +843,7 @@ --button-min-height-small: var(--tab-content-button-size); --button-border-radius: var(--tab-border-radius); - @media not -moz-pref("browser.nova.enabled") { --button-border-radius: var(--border-radius-small); - } @media not -moz-pref("sidebar.visibility", "expand-on-hover") { /* We need these rules to apply at all times when the sidebar.visibility @@ -1029,12 +939,10 @@ * the button has a visible outline shown */ @media not (forced-colors) { #tabbrowser-tabs[orient="horizontal"] { - @media not -moz-pref("browser.nova.enabled") { .tabbrowser-tab:not([labelendaligned], [tab-note], :hover) > .tab-stack > .tab-content > .tab-close-button { padding-inline-start: 0; width: 18px; } - } .tabbrowser-tab[visuallyselected]:not([labelendaligned]):hover, &:not([closebuttons="activetab"]) .tabbrowser-tab:not([visuallyselected], [labelendaligned]):hover { @@ -1065,21 +973,6 @@ box-shadow: var(--tab-box-shadow-selected); } - @media -moz-pref("browser.nova.enabled") { - border: 1px solid transparent; - background-clip: border-box; - - /* The below lines are required for dark, light, and - system themes to achieve the gradient border appearance */ - @media not ((prefers-contrast) or (-moz-native-theme)) { - :root[theme-in-app] &:is([selected]:not([multiselected])) { - background: - var(--tab-border-color-accent) border-box border-area, - var(--tab-background-color-selected) padding-box; - } - } - } - &[multiselected] { outline-color: var(--focus-outline-color); @@ -1149,21 +1042,12 @@ background-color: light-dark(var(--dragover-tab-group-color-pale), var(--dragover-tab-group-color)); color: light-dark(var(--dragover-tab-group-color), var(--dragover-tab-group-color-pale)); outline-color: light-dark(var(--dragover-tab-group-color), var(--dragover-tab-group-color-pale)); - - @media -moz-pref("browser.nova.enabled") { - background-color: var(--dragover-tab-group-color-invert); - color: currentColor; - outline-color: var(--dragover-tab-group-color); - outline-width: 2px; - } } &:is([selected], [multiselected]) { - @media not -moz-pref("browser.nova.enabled") { outline-color: var(--dragover-tab-group-color); outline-width: 2px; outline-offset: -2px; - } } } } @@ -1178,7 +1062,6 @@ /* Container stroke indicator. Colors come from the --identity-* custom properties set by the container color classes in usercontext.css. */ -@media not -moz-pref("browser.nova.enabled") { .tabbrowser-tab[usercontextid] > .tab-stack > .tab-background > .tab-context-line { background-color: var(--identity-icon-color); height: 2px; @@ -1192,38 +1075,6 @@ margin: calc(var(--tab-border-radius) / 2) 0; } } -} - -@media -moz-pref("browser.nova.enabled") { - .tabbrowser-tab[usercontextid] > .tab-stack > .tab-background > .tab-context-line { - height: 0; - /* border-block guarantees it's snapped to device pixels */ - border-block: 1px solid transparent; - background: var(--identity-stroke-color) border-box border-box; - border-radius: var(--border-radius-xsmall); - margin-block-start: var(--tab-context-line-block-offset); - width: calc(100% - 2 * var(--tab-context-line-inline-offset)); - margin-inline-start: var(--tab-context-line-inline-offset); - - /* With expand on hover, size of the stroke is always the collapsed size */ - :root[sidebar-expand-on-hover] & { - width: calc(var(--tab-collapsed-background-width) - 2 * var(--tab-context-line-inline-offset)); - } - } - - :is(#tabbrowser-tabs[orient="horizontal"], :root:not([sidebar-expand-on-hover]) #tabbrowser-tabs[orient="vertical"][expanded]) - .tabbrowser-tab[usercontextid]:not([visuallyselected], [multiselected], [pinned]) - > .tab-stack - > .tab-background - > .tab-context-line { - background-color: transparent; - background-image: linear-gradient(to left, transparent, var(--identity-stroke-color) var(--tab-label-mask-size)); - - &:-moz-locale-dir(rtl) { - background-image: linear-gradient(to right, transparent, var(--identity-stroke-color) var(--tab-label-mask-size)); - } - } -} /* Pinned tabs */ @@ -1416,19 +1267,11 @@ .tab-group-line { inset-block-end: calc(var(--tab-group-line-toolbar-border-distance) - var(--tab-margin-block) - var(--split-view-padding-block)); - @media not -moz-pref("browser.nova.enabled") { inset-inline-start: calc(var(--space-small) * -2); - } - @media -moz-pref("browser.nova.enabled") { - inset-inline-end: calc(-1 * var(--tab-overflow-clip-margin) - var(--split-view-tab-padding-inline)); - } } &[last-tab-or-split-view] .tabbrowser-tab:last-child .tab-group-line { inset-inline-end: calc(var(--tab-border-radius) / 2); - @media -moz-pref("browser.nova.enabled") { - inset-inline-end: calc(-1 * var(--tab-overflow-clip-margin)); - } } /* Small-ish subtree, but probably should be removed */ @@ -1528,13 +1371,6 @@ background-color: light-dark(var(--dragover-tab-group-color-pale), var(--dragover-tab-group-color)); color: light-dark(var(--dragover-tab-group-color), var(--dragover-tab-group-color-pale)); outline-color: light-dark(var(--dragover-tab-group-color), var(--dragover-tab-group-color-pale)); - - @media -moz-pref("browser.nova.enabled") { - background-color: var(--dragover-tab-group-color-invert); - color: currentColor; - outline-color: var(--dragover-tab-group-color); - outline-width: 2px; - } } .tabbrowser-tab { @@ -1683,10 +1519,6 @@ @container vertical-tabs-container (max-width: 210px) { grid-template-columns: 1fr; - @media -moz-pref("browser.nova.enabled") { - border-radius: var(--border-radius-large); - } - &:not([hasactivetab]) .tabbrowser-tab { &:first-child { border-block-end: 1px solid var(--toolbarbutton-icon-fill); @@ -1704,10 +1536,6 @@ :root[sidebar-expand-on-hover] #tabbrowser-tabs[orient="vertical"][expanded] tab-split-view-wrapper { grid-template-columns: 1fr; - @media -moz-pref("browser.nova.enabled") { - border-radius: var(--border-radius-large); - } - &:not([hasactivetab]) .tabbrowser-tab { &:first-child { border-block-end: 1px solid var(--toolbarbutton-icon-fill); @@ -1916,9 +1744,6 @@ inset-inline-end: calc(var(--tab-border-radius) / 2); border-start-end-radius: calc(var(--tab-group-line-thickness) / 2); border-end-end-radius: calc(var(--tab-group-line-thickness) / 2); - @media -moz-pref("browser.nova.enabled") { - inset-inline-end: calc(-1 * var(--tab-overflow-clip-margin)); - } } } @@ -1968,9 +1793,6 @@ display: contents; --tab-group-line-color: var(--tab-group-color); - @media -moz-pref("browser.nova.enabled") { - --tab-group-line-color: var(--tab-group-background-color); - } #tabbrowser-tabs[orient="horizontal"] &[movingtabgroup][collapsed] > .tabbrowser-tab[visuallyselected], #tabbrowser-tabs[orient="horizontal"] &[collapsed] > .tabbrowser-tab:not([visuallyselected], [multiselected]) { @@ -1989,9 +1811,7 @@ } &[collapsed] { - @media not -moz-pref("browser.nova.enabled") { --tab-group-line-color: light-dark(var(--tab-group-color), var(--tab-group-color-pale)); - } /* Override xul.css, we're using the collapsed attribute for our own purposes */ visibility: inherit; } @@ -2061,14 +1881,6 @@ tab-group[collapsed][hasactivetab] > & { padding-block-end: var(--space-small); } - - @media -moz-pref("browser.nova.enabled") { - margin-block-start: calc(var(--tab-margin-block) + var(--tab-padding-block-start)); - - tab-group[collapsed]:not([hasactivetab]) > & { - margin-block-end: calc(var(--tab-margin-block) + var(--tab-padding-block-end)); - } - } } #tabbrowser-tabs[orient="horizontal"] tab-group:not([collapsed]) > &::after, @@ -2103,10 +1915,6 @@ #tabbrowser-tabs[orient="horizontal"] & { padding-inline-end: 3px; margin-inline-end: 3px; - - @media -moz-pref("browser.nova.enabled") { - padding-inline-start: var(--space-xsmall); - } } #tabbrowser-tabs[orient="vertical"] & { @@ -2151,19 +1959,6 @@ #tabbrowser-tabs[orient="vertical"]:not([expanded]) & { margin-inline-start: calc(var(--tab-inner-inline-margin) + (var(--tab-min-height) - var(--tab-group-counter-size)) / 2); } - - @media -moz-pref("browser.nova.enabled") { - text-align: center; - color: var(--tab-group-background-color); - padding: var(--space-xsmall); - background-color: color-mix(in srgb, var(--tab-group-background-color) 10%, transparent); - height: var(--tab-group-counter-size); - min-width: var(--tab-group-counter-size); - border-radius: var(--border-radius-circle); - text-overflow: ellipsis; - white-space: nowrap; - line-height: calc(var(--tab-group-counter-size) - 2 * var(--space-xsmall)); - } } .tab-group-label-hover-highlight { @@ -2172,31 +1967,17 @@ * spread radius, make sure that these values vary together in order to add * up to --tab-border-radius. */ - @media not -moz-pref("browser.nova.enabled") { border-radius: calc(var(--tab-border-radius) - var(--tab-group-label-highlight-radius)); #tabbrowser-tabs[orient="horizontal"] & { padding-block: 4px; } - } } #tabbrowser-tabs[orient="vertical"][expanded] & { margin-inline-end: var(--space-medium); } - /* Echo the shape of .tab-group-label, including its sharper bottom start - * corner. - */ - @media -moz-pref("browser.nova.enabled") { - #tabbrowser-tabs[orient="vertical"] & { - block-size: var(--tab-group-label-container-size); - padding-inline: var(--tab-group-label-hover-inset); - border-radius: calc(var(--tab-group-label-container-size) / 2); - border-end-start-radius: calc(var(--tab-group-label-size) / 8 + var(--tab-group-label-hover-inset)); - } - } - #tabbrowser-tabs[orient="vertical"]:not([expanded]) & { /* * Keep tab group label square in collapsed sidebar centered without @@ -2206,28 +1987,12 @@ * transition. */ margin-inline: calc(var(--tab-inner-inline-margin) + (var(--tab-collapsed-background-width) - var(--tab-group-label-size)) / 2); - - @media -moz-pref("browser.nova.enabled") { - margin-inline: var(--tab-inner-inline-margin); - } } tab-group[collapsed]:not([movingtabgroup]) &:hover, tab-group[previewpanelactive] & { - @media not -moz-pref("browser.nova.enabled") { background-color: var(--tab-background-color-hover); box-shadow: 0 0 0 var(--tab-group-label-highlight-radius) var(--tab-background-color-hover); - } - - @media -moz-pref("browser.nova.enabled") { - #tabbrowser-tabs[orient="vertical"][expanded] & { - background-color: var(--tab-background-color-hover); - } - - .tab-group-label { - background-color: var(--tab-group-background-color-hover); - } - } } } @@ -2253,19 +2018,6 @@ background-color: var(--tab-group-color); margin: auto 0; - @media -moz-pref("browser.nova.enabled") { - line-height: var(--tab-group-label-size); - min-width: var(--tab-group-label-size); - color: var(--tab-group-text-color); - background-color: var(--tab-group-background-color); - border-radius: calc(var(--tab-group-label-size) / 2); - border-end-start-radius: calc(var(--tab-group-label-size) / 8); - - &:hover { - background-color: var(--tab-group-background-color-hover); - } - } - /* Animations for hovering a tab(s) over a collapsed tab group. Indicates to * the user that they can drop the tab(s) into the tab group. */ @@ -2273,9 +2025,6 @@ &[dragover-groupTarget] { box-shadow: color-mix(in oklab, var(--tab-group-color) 30%, transparent) 0 0 0 var(--tab-group-label-highlight-thickness); - @media -moz-pref("browser.nova.enabled") { - box-shadow: none; - } } tab-group[collapsed] > .tab-group-label-container & { @@ -2283,18 +2032,6 @@ color: light-dark(var(--tab-group-color), var(--tab-group-color-pale)); outline: 1px solid light-dark(var(--tab-group-color), var(--tab-group-color-pale)); outline-offset: -1px; - @media -moz-pref("browser.nova.enabled") { - color: var(--tab-group-text-color); - background-color: var(--tab-group-background-color); - outline: none; - - &[dragover-groupTarget] { - box-shadow: none; - color: var(--tab-group-text-color-invert); - background-color: var(--tab-group-color-invert); - outline: 2px solid var(--tab-group-background-color); - } - } } #tabbrowser-tabs[tablist-has-focus] &.tablist-keyboard-focus { @@ -2332,53 +2069,6 @@ --panel-padding: 0; font: menu; - @media -moz-pref("browser.nova.enabled") { - --panel-padding: var(--space-large) var(--space-small) 0; - --input-text-background-color: var(--background-color-box); - --panel-separator-padding: 0; - --panel-menuitem-padding-block: var(--space-xsmall); - --panel-width: 24em; - - > .panel-header { - justify-content: start; - text-align: start; - min-height: 0; - padding-block: var(--space-xsmall) var(--space-medium); - } - - /* Clip the header in the edit modal for a11y. */ - &:not(.tab-group-editor-mode-create) > .panel-header { - position: absolute; - overflow: hidden; - clip-path: inset(50%); - width: 0; - height: 0; - min-height: 0; - pointer-events: none; - } - - /* Hide all toolbarseparators except the tab group suggestions one. - * Remove this rule and the toolbarseparators post-Nova (Bug 2056954). */ - toolbarseparator:not(#tab-group-suggestions-separator) { - display: none; - } - - /* Clip the name label in the edit modal for a11y. */ - &:not(.tab-group-editor-mode-create) > .tab-group-editor-name > label { - position: absolute; - overflow: hidden; - clip-path: inset(50%); - width: 0; - height: 0; - pointer-events: none; - } - - .panel-footer { - margin-block-start: var(--space-small); - margin-inline: var(--panel-menuitem-margin-inline); - } - } - &.tab-group-editor-panel-expanded { --panel-width: 25em; } @@ -2393,9 +2083,7 @@ flex-direction: column; margin: var(--panel-menuitem-margin); - @media not -moz-pref("browser.nova.enabled") { padding-top: var(--panel-menuitem-padding-block); - } > label { margin-inline: 0; @@ -2412,10 +2100,6 @@ justify-content: space-between; margin: var(--panel-menuitem-margin); padding-block: var(--panel-menuitem-padding-block); - - @media -moz-pref("browser.nova.enabled") { - padding-block: 0 var(--space-large); - } } input[name="tab-group-color"] { @@ -2438,12 +2122,6 @@ border-radius: var(--border-radius-medium); background-clip: content-box; background-color: var(--tabgroup-swatch-color); - @media -moz-pref("browser.nova.enabled") { - width: 20px; - height: 20px; - background-color: var(--tabgroup-swatch-color); - border-radius: var(--border-radius-circle); - } input:checked + & { border-color: var(--focus-outline-color); @@ -2569,10 +2247,6 @@ z-index: 1; margin-block: 0 -16px; - - @media -moz-pref("browser.nova.enabled") { - background-image: linear-gradient(to top, transparent, var(--toolbox-background-color)); - } } /* Flip the fade at the bottom */ @@ -2805,9 +2479,6 @@ background-repeat: no-repeat; margin-inline: var(--tab-inner-inline-margin); min-height: 2px; - @media -moz-pref("browser.nova.enabled") { - min-height: 4px; - } #pinned-tabs-container:empty + & { display: none; @@ -2896,10 +2567,8 @@ .tab-background { margin-inline: var(--tab-inner-inline-margin); - @media not -moz-pref("browser.nova.enabled") { /* Needed to flip the direction of the tab-context-line. */ flex-direction: row-reverse; - } } &:not([expanded]) { @@ -2956,14 +2625,6 @@ color: var(--tab-close-button-text-color); } - /* Nova: 16px button with a 12px icon box, matching .tab-icon-overlay. */ - @media -moz-pref("browser.nova.enabled") { - width: var(--icon-size); - height: var(--icon-size); - padding: 2px; - box-shadow: var(--box-shadow-level-1); - } - &:-moz-window-inactive { background-image: image(var(--close-button-extra-background)), image(var(--tab-background-color-selected)), image(var(--toolbox-background-color-inactive)); @@ -3063,17 +2724,6 @@ outline-color: var(--tab-border-color-selected); color: var(--tab-text-color-selected); color-scheme: var(--tab-selected-color-scheme); - - /* The below lines are required for dark, light, and - system themes to achieve the gradient border appearance */ - @media -moz-pref("browser.nova.enabled") and (not ((prefers-contrast) or (-moz-native-theme))) { - :root[theme-in-app] & { - border: 1px solid transparent; - background: - var(--tab-border-color-accent) border-box border-area, - var(--tab-background-color-selected) padding-box; - } - } } :root:not([privatebrowsingmode]) :is(toolbarbutton, toolbarpaletteitem), @@ -3222,31 +2872,6 @@ background: var(--identity-tab-color); width: 2px; } - - /* Show the container icon in a round tinted background at the trailing - edge (next to the close button). */ - @media -moz-pref("browser.nova.enabled") { - /* Reserve room so the cropped label ends before the indicator. */ - padding-inline-end: calc(24px + var(--space-small)); - - &::before { - inset: 50% var(--space-xsmall) auto auto; - transform: translateY(-50%); - box-sizing: content-box; - width: 16px; - height: 16px; - padding: var(--space-xsmall); - border-radius: var(--border-radius-circle); - background-color: var(--identity-fill-tint); - background-image: var(--identity-icon); - background-origin: content-box; - background-repeat: no-repeat; - background-position: center; - background-size: 16px; - -moz-context-properties: fill; - fill: var(--identity-fill-color); - } - } } } } @@ -3279,13 +2904,11 @@ .all-tabs-close-button { list-style-image: url(chrome://global/skin/icons/close.svg); - @media not -moz-pref("browser.nova.enabled") { list-style-image: url(resource://content-accessible/close-12.svg); > .toolbarbutton-icon { margin-inline: 2px !important; /* override panelUI-shared.css */ } - } } .tab-throbber-tabslist { @@ -3354,10 +2977,6 @@ --menuitem-icon-fill: light-dark(var(--tab-group-color), var(--tab-group-color-invert)); -moz-context-properties: fill, stroke; stroke: light-dark(var(--tab-group-color), var(--tab-group-color-invert)); - @media -moz-pref("browser.nova.enabled") { - --menuitem-icon-fill: var(--tab-group-background-color); - stroke: var(--tab-group-background-color); - } > .toolbarbutton-icon { fill: var(--menuitem-icon-fill); @@ -3366,18 +2985,11 @@ &.tab-group-icon-collapsed { --menuitem-icon-fill: light-dark(var(--tab-group-color-pale), var(--tab-group-color)); stroke: light-dark(var(--tab-group-color), var(--tab-group-color-pale)); - @media -moz-pref("browser.nova.enabled") { - --menuitem-icon-fill: var(--tab-group-background-color); - stroke: var(--tab-group-background-color); - } } &.tab-group-icon-closed { --menuitem-icon-fill: transparent; stroke: light-dark(var(--tab-group-color), var(--tab-group-color-invert)); - @media -moz-pref("browser.nova.enabled") { - stroke: var(--tab-group-background-color); - } } } @@ -3425,9 +3037,6 @@ color: var(--color-accent-primary); width: auto; padding: 0; - @media -moz-pref("browser.nova.enabled") { - padding-block-start: var(--space-medium); - } &:hover { --button-border-color-ghost-hover: var(--border-color-selected); @@ -3462,9 +3071,6 @@ #tab-group-suggestions-container, #tab-group-suggestions-optin-container { margin: var(--panel-menuitem-margin); - @media -moz-pref("browser.nova.enabled") { - margin-block-start: var(--space-medium); - } } .tab-group-suggestions-loading-header, diff -urN firefox-157.0-orig/browser/themes/shared/update-badge.svg firefox-157.0/browser/themes/shared/update-badge.svg --- firefox-157.0-orig/browser/themes/shared/update-badge.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/update-badge.svg 2026-10-05 06:50:59 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/urlbar/dynamic-results.css firefox-157.0/browser/themes/shared/urlbar/dynamic-results.css --- firefox-157.0-orig/browser/themes/shared/urlbar/dynamic-results.css 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/urlbar/dynamic-results.css 2026-10-05 07:23:27 +0900 @@ -169,9 +169,7 @@ content: "•"; margin: 0 0.6em; opacity: 0.6; - @media not -moz-pref("browser.nova.enabled") { content: "\2014"; - } } } diff -urN firefox-157.0-orig/browser/themes/shared/urlbar/icons/sports-american-football.svg firefox-157.0/browser/themes/shared/urlbar/icons/sports-american-football.svg --- firefox-157.0-orig/browser/themes/shared/urlbar/icons/sports-american-football.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/urlbar/icons/sports-american-football.svg 2026-10-05 07:24:53 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/urlbar/icons/sports-baseball.svg firefox-157.0/browser/themes/shared/urlbar/icons/sports-baseball.svg --- firefox-157.0-orig/browser/themes/shared/urlbar/icons/sports-baseball.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/urlbar/icons/sports-baseball.svg 2026-10-05 07:24:59 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/urlbar/icons/sports-basketball.svg firefox-157.0/browser/themes/shared/urlbar/icons/sports-basketball.svg --- firefox-157.0-orig/browser/themes/shared/urlbar/icons/sports-basketball.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/urlbar/icons/sports-basketball.svg 2026-10-05 07:24:58 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/urlbar/icons/sports-cricket.svg firefox-157.0/browser/themes/shared/urlbar/icons/sports-cricket.svg --- firefox-157.0-orig/browser/themes/shared/urlbar/icons/sports-cricket.svg 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/urlbar/icons/sports-cricket.svg 2026-10-05 07:24:55 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/urlbar/icons/sports-golf.svg firefox-157.0/browser/themes/shared/urlbar/icons/sports-golf.svg --- firefox-157.0-orig/browser/themes/shared/urlbar/icons/sports-golf.svg 2026-09-24 19:45:35 +0900 +++ firefox-157.0/browser/themes/shared/urlbar/icons/sports-golf.svg 2026-10-05 07:24:54 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/urlbar/icons/sports-hockey.svg firefox-157.0/browser/themes/shared/urlbar/icons/sports-hockey.svg --- firefox-157.0-orig/browser/themes/shared/urlbar/icons/sports-hockey.svg 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/themes/shared/urlbar/icons/sports-hockey.svg 2026-10-05 07:24:56 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/urlbar/icons/sports-racing.svg firefox-157.0/browser/themes/shared/urlbar/icons/sports-racing.svg --- firefox-157.0-orig/browser/themes/shared/urlbar/icons/sports-racing.svg 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/themes/shared/urlbar/icons/sports-racing.svg 2026-10-05 07:25:00 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/urlbar/icons/sports-soccer.svg firefox-157.0/browser/themes/shared/urlbar/icons/sports-soccer.svg --- firefox-157.0-orig/browser/themes/shared/urlbar/icons/sports-soccer.svg 2026-09-24 19:45:33 +0900 +++ firefox-157.0/browser/themes/shared/urlbar/icons/sports-soccer.svg 2026-10-05 07:24:57 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/browser/themes/shared/urlbar/urlbar.tokens.css firefox-157.0/browser/themes/shared/urlbar/urlbar.tokens.css --- firefox-157.0-orig/browser/themes/shared/urlbar/urlbar.tokens.css 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/urlbar/urlbar.tokens.css 2026-10-05 07:24:37 +0900 @@ -5,7 +5,7 @@ /* DO NOT EDIT this file directly, instead modify urlbar.tokens.json * and run `mach buildtokens` to see your changes. */ -@layer tokens-foundation, tokens-browser-theme, tokens-foundation-brand, tokens-foundation-nova, tokens-browser-theme-nova, tokens-foundation-brand-nova, tokens-prefers-contrast, tokens-prefers-contrast-nova, tokens-forced-colors, tokens-forced-colors-nova; +@layer tokens-foundation, tokens-browser-theme, tokens-foundation-brand, tokens-prefers-contrast, tokens-forced-colors; :root, :host { @@ -30,23 +30,6 @@ --urlbar-icon-fill-opacity: 1; } } - - @media -moz-pref("browser.nova.enabled") { - @layer tokens-foundation-nova { - --urlbar-border-radius: var(--popup-border-radius); - --urlbar-box-background-color-focus: var(--urlbar-box-background-color); - --urlbar-box-background-color: color-mix(in srgb, currentColor 16%, transparent); - --urlbar-box-background-color-hover: color-mix(in srgb, currentColor 22%, transparent); - --urlbar-box-background-color-active: color-mix(in srgb, currentColor 30%, transparent); - --urlbar-icon-fill-opacity: 0.9; - } - - @layer tokens-prefers-contrast-nova { - @media (prefers-contrast) { - --urlbar-icon-fill-opacity: 1; - } - } - } } :root:is([theme-in-app], :not([lwtheme])), @@ -57,15 +40,4 @@ --urlbar-icon-fill-opacity: 0.72; } } - - @media -moz-pref("browser.nova.enabled") { - @layer tokens-browser-theme-nova { - @media not ((forced-colors) or (-moz-native-theme)) { - --urlbar-box-background-color: var(--urlbarview-background-color-hover); - --urlbar-box-background-color-hover: var(--urlbarview-background-color-selected); - --urlbar-box-background-color-active: light-dark(rgba(117, 102, 159, 0.6), rgba(176, 163, 210, 0.6)); - --urlbar-icon-fill-opacity: light-dark(0.7, 0.95); - } - } - } } diff -urN firefox-157.0-orig/browser/themes/shared/urlbar/urlbarview.tokens.css firefox-157.0/browser/themes/shared/urlbar/urlbarview.tokens.css --- firefox-157.0-orig/browser/themes/shared/urlbar/urlbarview.tokens.css 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/urlbar/urlbarview.tokens.css 2026-10-05 07:24:49 +0900 @@ -5,7 +5,7 @@ /* DO NOT EDIT this file directly, instead modify urlbarview.tokens.json * and run `mach buildtokens` to see your changes. */ -@layer tokens-foundation, tokens-browser-theme, tokens-foundation-brand, tokens-foundation-nova, tokens-browser-theme-nova, tokens-foundation-brand-nova, tokens-prefers-contrast, tokens-prefers-contrast-nova, tokens-forced-colors, tokens-forced-colors-nova; +@layer tokens-foundation, tokens-browser-theme, tokens-foundation-brand, tokens-prefers-contrast, tokens-forced-colors; :root, :host { @@ -35,27 +35,6 @@ --urlbarview-text-color-secondary: currentColor; } } - - @media -moz-pref("browser.nova.enabled") { - @layer tokens-foundation-nova { - --urlbarview-action-button-background-color: var(--urlbar-box-background-color); - --urlbarview-action-button-background-color-hover: var(--urlbar-box-background-color-hover); - --urlbarview-background-color-hover: var(--background-color-dimmed); - --urlbarview-background-color-selected: SelectedItem; - --urlbarview-border-radius: var(--urlbar-border-radius); - --urlbarview-separator-color: color-mix(in srgb, currentColor 14%, transparent); - --urlbarview-text-color-action: LinkText; - --urlbarview-text-color-secondary: color-mix(in srgb, currentColor 73%, transparent); - --urlbarview-text-color-selected: SelectedItemText; - } - - @layer tokens-forced-colors-nova { - @media (forced-colors) { - --urlbarview-separator-color: #ffffff; - --urlbarview-text-color-secondary: #ffffff; - } - } - } } :root:is([theme-in-app], :not([lwtheme])), @@ -70,17 +49,4 @@ --urlbarview-text-color-selected: light-dark(rgb(21, 20, 26), rgb(251, 251, 254)); } } - - @media -moz-pref("browser.nova.enabled") { - @layer tokens-browser-theme-nova { - @media not ((forced-colors) or (-moz-native-theme)) { - --urlbarview-background-color-hover: var(--toolbarbutton-background-color-hover); - --urlbarview-background-color-selected: var(--toolbarbutton-background-color-active); - --urlbarview-separator-color: light-dark(var(--color-gray-20), var(--color-gray-60)); - --urlbarview-text-color-action: var(--toolbar-field-text-color-focus); - --urlbarview-text-color-secondary: light-dark(#3e315f, #e7e1f8); - --urlbarview-text-color-selected: var(--toolbar-field-text-color-focus); - } - } - } } diff -urN firefox-157.0-orig/browser/themes/shared/urlbar/variables.css firefox-157.0/browser/themes/shared/urlbar/variables.css --- firefox-157.0-orig/browser/themes/shared/urlbar/variables.css 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/urlbar/variables.css 2026-10-05 07:23:19 +0900 @@ -14,12 +14,10 @@ --urlbar-height: max(32px, 1.4em); /* stylelint-disable-next-line media-query-no-invalid */ - @media not -moz-pref("browser.nova.enabled") { /* This should be used for icons and chiclets inside the input field, as well as result rows. It makes the gap around them more uniform when they are close to the field edges. */ --urlbar-inner-border-radius: calc(var(--urlbar-border-radius) - 1px); - } /* XXX the uidensity attribute is currently not wired up to the * Smart Window document elements, which is needed for these @@ -30,9 +28,7 @@ &[uidensity="compact"] { --urlbar-height: max(28px, 1.4em); - @media not -moz-pref("browser.nova.enabled") { --urlbar-height: max(26px, 1.4em); - } } &[uidensity="touch"] { diff -urN firefox-157.0-orig/browser/themes/shared/urlbar/view.css firefox-157.0/browser/themes/shared/urlbar/view.css --- firefox-157.0-orig/browser/themes/shared/urlbar/view.css 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/urlbar/view.css 2026-10-05 07:25:12 +0900 @@ -2,6 +2,4 @@ * 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 url("chrome://browser/skin/urlbar/view-nova.css") -moz-pref("browser.nova.enabled"); - -@import url("chrome://browser/skin/urlbar/view-proton.css") not -moz-pref("browser.nova.enabled"); +@import url("chrome://browser/skin/urlbar/view-proton.css"); diff -urN firefox-157.0-orig/browser/themes/shared/urlbar.css firefox-157.0/browser/themes/shared/urlbar.css --- firefox-157.0-orig/browser/themes/shared/urlbar.css 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/urlbar.css 2026-10-05 07:22:37 +0900 @@ -45,12 +45,10 @@ the container's border box. */ --urlbar-container-padding-block: var(--urlbar-padding-block); - @media not -moz-pref("browser.nova.enabled") { --urlbar-basic-component-size: calc(var(--urlbar-height) - 2 * (var(--urlbar-input-container-border-width) + var(--urlbar-input-container-padding))); --urlbar-icon-padding: calc((var(--urlbar-height) - 2px /* border */ - 2px /* padding */ - 16px /* icon */) / 2); --urlbar-input-container-padding: round(up, 1px, env(hairline)); --urlbar-background-overhang-open: 0px; - } &[uidensity="compact"] { --urlbar-background-overhang-open: 0px; } @@ -95,21 +93,7 @@ --chrome-box-shadow: rgba(152, 113, 255, 0.15); } - @media not -moz-pref("browser.nova.enabled") { --chrome-box-shadow: rgba(0, 0, 0, 0.13); - } - - /* In high contrast mode, align the urlbar buttons (page actions, identity - block, go/clear buttons, result menu/action buttons) with the toolbar - buttons by borrowing the ghost-button hover/active colors. */ - @media -moz-pref("browser.nova.enabled") { - @media (prefers-contrast) { - --urlbar-box-background-color-hover: var(--button-background-color-ghost-hover); - --urlbar-box-background-color-active: var(--button-background-color-ghost-active); - --urlbar-box-text-color-hover: var(--button-text-color-ghost-hover); - --urlbar-box-text-color-active: var(--button-text-color-ghost-active); - } - } } /** @@ -154,7 +138,6 @@ --urlbar-background-border-open: var(--urlbar-input-container-border-width) solid var(--toolbar-field-border-color); } - @media not -moz-pref("browser.nova.enabled") { --urlbar-background-border: var(--urlbar-input-container-border-width) solid var(--toolbar-field-border-color); --urlbar-background-border-open: var(--urlbar-input-container-border-width) solid var(--panel-border-color); --urlbar-background-border-focused: var(--urlbar-background-border); @@ -170,7 +153,6 @@ --urlbar-input-growth-open-inline: var(--urlbar-margin-inline); --urlbar-input-growth-open-block: var(--urlbar-container-padding-block); --urlbar-searchmode-switcher-panel-list-min-width: auto; - } } toolbar[inactive="true"] .urlbar, @@ -325,7 +307,7 @@ } .urlbar[open] > & { - @media (not -moz-pref("browser.nova.enabled")) and (-moz-platform: macos) and (prefers-contrast) { + @media (-moz-platform: macos) and (prefers-contrast) { /* The "increase contrast" preference on macOS draws a 1px black line around panels, including the separate search bar. Since the Urlbar is not implemented as a panel, it does not get this outline. This outline rule @@ -381,7 +363,6 @@ outline-offset: calc(-1 * var(--urlbar-input-container-border-width-open)); } - @media not -moz-pref("browser.nova.enabled") { outline: none; padding-inline-end: 0; border: var(--urlbar-input-container-border); @@ -396,7 +377,6 @@ outline-color: var(--toolbar-field-border-color-focus); border-color: transparent; } - } } .urlbar-input, @@ -421,9 +401,7 @@ /* Proton's input container has a border on each block edge (the border is transparent, so invisible, but it still occupies layout space), so subtract it to keep the line box within the field's inner height. */ - @media not -moz-pref("browser.nova.enabled") { line-height: calc(var(--urlbar-height) - 2 * var(--urlbar-input-container-border-width)); - } } #urlbar-input { @@ -587,11 +565,9 @@ } } -@media not -moz-pref("browser.nova.enabled") { .urlbar-input-container { border: var(--urlbar-input-container-border); } -} :root[popup-window] #urlbar-container { /* Remove excess space between the address bar and the menu button in popups. */ @@ -1551,7 +1527,6 @@ /* The --icon-url variable allows setting an icon in JS. */ background-image: var(--icon-url, url("chrome://global/skin/icons/search-glass.svg")); /* stylelint-disable-next-line media-query-no-invalid */ - @media not -moz-pref("browser.nova.enabled") { /* With Nova, panel-list already has these styles by default; Proton needs adjustments to look like a proper menu. panel-item's Proton padding reserves the icon's room in rem, which falls short of the px-sized icon @@ -1560,7 +1535,6 @@ padding-inline-start: calc(var(--panel-menuitem-padding-inline) + var(--icon-size) + var(--space-small)); border-radius: var(--panel-menuitem-border-radius); margin: var(--panel-menuitem-margin); - } } > .searchmode-switcher-panel-search-settings-button::part(button) { diff -urN firefox-157.0-orig/browser/themes/shared/usercontext/container-editor.css firefox-157.0/browser/themes/shared/usercontext/container-editor.css --- firefox-157.0-orig/browser/themes/shared/usercontext/container-editor.css 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/shared/usercontext/container-editor.css 2026-10-05 06:51:36 +0900 @@ -77,17 +77,6 @@ fill: var(--icon-color); background-size: 16px; } - - @media -moz-pref("browser.nova.enabled") { - .color-swatches .userContext-icon { - background-image: none; - background-color: var(--identity-stroke-color); - border-radius: var(--border-radius-circle); - inline-size: var(--size-item-medium); - block-size: var(--size-item-medium); - margin: auto; - } - } } /* When the URL-bar container indicator is revealed solely to anchor the diff -urN firefox-157.0-orig/browser/themes/windows/browser.css firefox-157.0/browser/themes/windows/browser.css --- firefox-157.0-orig/browser/themes/windows/browser.css 2026-09-24 19:45:34 +0900 +++ firefox-157.0/browser/themes/windows/browser.css 2026-10-05 09:15:01 +0900 @@ -237,11 +237,9 @@ } } - @media not -moz-pref("browser.nova.enabled") { :not([focused]) > .urlbar-background { border-color: ThreeDShadow; } - } } /* Autocomplete */ diff -urN firefox-157.0-orig/devtools/client/aboutdebugging/src/components/shared/Message.css firefox-157.0/devtools/client/aboutdebugging/src/components/shared/Message.css --- firefox-157.0-orig/devtools/client/aboutdebugging/src/components/shared/Message.css 2026-09-24 19:45:34 +0900 +++ firefox-157.0/devtools/client/aboutdebugging/src/components/shared/Message.css 2026-10-05 08:05:12 +0900 @@ -39,10 +39,6 @@ padding: var(--base-unit); -moz-context-properties: fill; - @media -moz-pref("browser.nova.enabled") { - border-radius: var(--border-radius-large); - } - &:focus-visible { outline: var(--focus-outline); outline-offset: var(--focus-outline-offset); diff -urN firefox-157.0-orig/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_profiler_dialog.js firefox-157.0/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_profiler_dialog.js --- firefox-157.0-orig/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_profiler_dialog.js 2026-09-24 19:45:33 +0900 +++ firefox-157.0/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_profiler_dialog.js 2026-10-05 08:05:07 +0900 @@ -125,77 +125,6 @@ await removeTab(tab); }); -add_task(async function test_profiler_dialog_nova_design() { - await pushPref("browser.nova.enabled", true); - - const { disconnect, mocks } = await connectToLocalFirefox({ - runtimeId: RUNTIME_ID, - runtimeName: RUNTIME_NAME, - deviceName: DEVICE_NAME, - }); - const { document, tab } = await openAboutDebugging(); - - mocks.emitUSBUpdate(); - await connectToRuntime(DEVICE_NAME, document); - await waitForRuntimePage(RUNTIME_NAME, document); - - info("Open the profiler dialog with the Nova design system enabled"); - const contentDocument = await openProfilerDialogWithRealClient(document); - - const startButton = contentDocument.querySelector( - ".perf-photon-button-primary" - ); - const presetSelect = contentDocument.querySelector(".perf-presets-select"); - const contentWindow = contentDocument.defaultView; - - const novaOutline = contentWindow - .getComputedStyle(startButton) - .getPropertyValue("--theme-focus-outline"); - const novaButtonRadius = - contentWindow.getComputedStyle(startButton).borderTopLeftRadius; - const novaSelectRadius = - contentWindow.getComputedStyle(presetSelect).borderTopLeftRadius; - - info("Disable Nova"); - await pushPref("browser.nova.enabled", false); - - info("Wait until the panel restyles with Nova disabled"); - await waitUntil( - () => - contentWindow.getComputedStyle(startButton).borderTopLeftRadius !== - novaButtonRadius - ); - - const preNovaOutline = contentWindow - .getComputedStyle(startButton) - .getPropertyValue("--theme-focus-outline"); - const preNovaButtonRadius = - contentWindow.getComputedStyle(startButton).borderTopLeftRadius; - const preNovaSelectRadius = - contentWindow.getComputedStyle(presetSelect).borderTopLeftRadius; - - Assert.notEqual( - novaOutline, - preNovaOutline, - `The focus outline uses the Nova accent color when Nova is enabled.` - ); - - // The same elements get a larger radius with Nova enabled than without. - Assert.greater( - parseFloat(novaButtonRadius), - parseFloat(preNovaButtonRadius), - `The recording button is rounded by the Nova token.` - ); - Assert.greater( - parseFloat(novaSelectRadius), - parseFloat(preNovaSelectRadius), - `The preset select is rounded by the Nova token.` - ); - - await disconnect(document); - await removeTab(tab); -}); - function assertDialogVisible(doc) { ok(doc.querySelector(".qa-profiler-dialog"), "Dialog is displayed"); ok(doc.querySelector(".qa-profiler-dialog-mask"), "Dialog mask is displayed"); diff -urN firefox-157.0-orig/devtools/client/debugger/test/mochitest/browser_dbg-editor-horizontal-scroll.js firefox-157.0/devtools/client/debugger/test/mochitest/browser_dbg-editor-horizontal-scroll.js --- firefox-157.0-orig/devtools/client/debugger/test/mochitest/browser_dbg-editor-horizontal-scroll.js 2026-09-24 19:45:34 +0900 +++ firefox-157.0/devtools/client/debugger/test/mochitest/browser_dbg-editor-horizontal-scroll.js 2026-10-05 08:04:17 +0900 @@ -8,7 +8,7 @@ "use strict"; add_task(async function testHorizontalScrolling() { - const toolboxBorderWidth = Services.prefs.getBoolPref("browser.nova.enabled") + const toolboxBorderWidth = false ? 2 : 0; // Ensure having the default fixed height, as it can impact the number of displayed lines diff -urN firefox-157.0-orig/devtools/client/responsive/index.css firefox-157.0/devtools/client/responsive/index.css --- firefox-157.0-orig/devtools/client/responsive/index.css 2026-09-24 19:45:34 +0900 +++ firefox-157.0/devtools/client/responsive/index.css 2026-10-05 08:04:09 +0900 @@ -88,12 +88,6 @@ grid-template-columns: auto min-content; width: 100%; user-select: none; - - /* Add some inline padding in Nova so the close icon isn't clipped by - the browser container border radius */ - @media -moz-pref("browser.nova.enabled") { - padding-inline: 8px; - } } #toolbar :is(select, button):focus-visible { @@ -326,15 +320,6 @@ fill: var(--theme-icon-dimmed-color); } -@media -moz-pref("browser.nova.enabled") { - /* In Nova, remove the inline-end padding and margin so the close button aligns with - the ones in .notificationBox */ - #toolbar #exit-button { - margin-inline-end: 0; - padding-inline-end: 0; - } -} - /** * Viewport Dimension Input */ diff -urN firefox-157.0-orig/devtools/client/shared/test/browser_html_tooltip-05.js firefox-157.0/devtools/client/shared/test/browser_html_tooltip-05.js --- firefox-157.0-orig/devtools/client/shared/test/browser_html_tooltip-05.js 2026-09-24 19:45:35 +0900 +++ firefox-157.0/devtools/client/shared/test/browser_html_tooltip-05.js 2026-10-05 08:04:32 +0900 @@ -23,7 +23,7 @@ add_task(async function () { // Force the toolbox to be 200px tall and account for the toolbox border in Nova const toolboxHeight = - 200 + (Services.prefs.getBoolPref("browser.nova.enabled") ? 2 : 0); + 200 + (false ? 2 : 0); await pushPref("devtools.toolbox.footer.height", toolboxHeight); await addTab("about:blank"); const { doc } = await createHost("bottom", TEST_URI); diff -urN firefox-157.0-orig/devtools/client/shared/test/browser_html_tooltip_offset.js firefox-157.0/devtools/client/shared/test/browser_html_tooltip_offset.js --- firefox-157.0-orig/devtools/client/shared/test/browser_html_tooltip_offset.js 2026-09-24 19:45:34 +0900 +++ firefox-157.0/devtools/client/shared/test/browser_html_tooltip_offset.js 2026-10-05 08:04:47 +0900 @@ -18,7 +18,7 @@ add_task(async function () { // Force the toolbox to be 200px tall and account for the toolbox border in Nova const toolboxHeight = - 200 + (Services.prefs.getBoolPref("browser.nova.enabled") ? 2 : 0); + 200 + (false ? 2 : 0); await pushPref("devtools.toolbox.footer.height", toolboxHeight); const { doc } = await createHost("bottom", TEST_URI); diff -urN firefox-157.0-orig/devtools/client/shared/test/browser_html_tooltip_rtl.js firefox-157.0/devtools/client/shared/test/browser_html_tooltip_rtl.js --- firefox-157.0-orig/devtools/client/shared/test/browser_html_tooltip_rtl.js 2026-09-24 19:45:34 +0900 +++ firefox-157.0/devtools/client/shared/test/browser_html_tooltip_rtl.js 2026-10-05 08:04:57 +0900 @@ -161,7 +161,7 @@ panelRect.right, TOOLBOX_WIDTH - // In Nova, remove 2px to account for the toolbox border) - (Services.prefs.getBoolPref("browser.nova.enabled") ? 2 : 0), + (false ? 2 : 0), "Tooltip is aligned with right edge of toolbox" ); is( diff -urN firefox-157.0-orig/devtools/client/shared/test/browser_html_tooltip_variable-height.js firefox-157.0/devtools/client/shared/test/browser_html_tooltip_variable-height.js --- firefox-157.0-orig/devtools/client/shared/test/browser_html_tooltip_variable-height.js 2026-09-24 19:45:34 +0900 +++ firefox-157.0/devtools/client/shared/test/browser_html_tooltip_variable-height.js 2026-10-05 08:04:41 +0900 @@ -24,7 +24,7 @@ // Force the toolbox to be 400px tall (and account for the toolbox border in Nova) so // each box is 50px. const toolboxHeight = - 400 + (Services.prefs.getBoolPref("browser.nova.enabled") ? 2 : 0); + 400 + (false ? 2 : 0); await pushPref("devtools.toolbox.footer.height", toolboxHeight); await addTab("about:blank"); diff -urN firefox-157.0-orig/devtools/client/themes/devtools-browser.css firefox-157.0/devtools/client/themes/devtools-browser.css --- firefox-157.0-orig/devtools/client/themes/devtools-browser.css 2026-09-24 19:45:35 +0900 +++ firefox-157.0/devtools/client/themes/devtools-browser.css 2026-10-05 08:05:19 +0900 @@ -16,35 +16,6 @@ .devtools-toolbox-iframe { z-index: var(--browser-container-z-index-devtools-toolbox); - @media not -moz-pref("browser.nova.enabled") { /* borrowed from #sidebar */ outline: 0.5px solid var(--sidebar-border-color); - } -} - -@media -moz-pref("browser.nova.enabled") { - .devtools-toolbox-iframe { - --nova-thick-border-width: 2px; - --nova-border-color: var(--chrome-content-separator-color); - --nova-border-shorthand: var(--nova-thick-border-width) solid var(--nova-border-color); - - /* Docked to bottom: top border */ - &.bottom-host { - border-block-start: var(--nova-border-shorthand); - } - - /* Docked to right: left border */ - &.side-host.docked-right { - /* we don't want to use logical properties here, as when in RTL, the toolbox is still - docked to the right side , and we want to update the actual left border */ - border-left: var(--nova-border-shorthand); - } - - /* Docked to left: right border */ - &.side-host.docked-left { - /* we don't want to use logical properties here, as when in RTL, the toolbox is still - docked to the left side , and we want to update the actual right border */ - border-right: var(--nova-border-shorthand); - } - } } diff -urN firefox-157.0-orig/devtools/client/themes/perf.css firefox-157.0/devtools/client/themes/perf.css --- firefox-157.0-orig/devtools/client/themes/perf.css 2026-09-24 19:45:34 +0900 +++ firefox-157.0/devtools/client/themes/perf.css 2026-10-05 08:05:27 +0900 @@ -246,100 +246,3 @@ fill: currentColor; margin-top: 4px; } - -/* Nova design system styling for the profiler recording panel when it is - * embedded in about:debugging (the "devtools-remote" page context). */ -@media -moz-pref("browser.nova.enabled") { - .perf-devtools-remote { - --theme-focus-outline-color: var(--focus-outline-color); - --theme-focus-outline: var(--theme-focus-outline-size) solid var(--theme-focus-outline-color); - - color: var(--text-color); - - .perf-photon-button { - height: auto; - min-height: var(--button-min-height); - padding: var(--button-padding); - border: var(--button-border); - border-radius: var(--button-border-radius); - background-color: var(--button-background-color); - color: var(--button-text-color); - font-size: var(--button-font-size); - font-weight: var(--button-font-weight); - - &:hover:not([disabled]) { - background-color: var(--button-background-color-hover); - border-color: var(--button-border-color-hover); - color: var(--button-text-color-hover); - } - - &:hover:active:not([disabled]) { - background-color: var(--button-background-color-active); - border-color: var(--button-border-color-active); - color: var(--button-text-color-active); - } - } - - .perf-photon-button-primary { - background-color: var(--button-background-color-primary); - border-color: var(--button-border-color-primary); - color: var(--button-text-color-primary); - - &:hover:not([disabled]) { - background-color: var(--button-background-color-primary-hover); - border-color: var(--button-border-color-primary-hover); - color: var(--button-text-color-primary-hover); - } - - &:hover:active:not([disabled]) { - background-color: var(--button-background-color-primary-active); - border-color: var(--button-border-color-primary-active); - color: var(--button-text-color-primary-active); - } - - /* The trailing "open in new tab" icon should follow the button text color. */ - .perf-button-image { - fill: var(--button-text-color-primary); - } - } - - .perf-presets-select { - min-height: var(--button-min-height); - padding-block: var(--button-padding-block); - padding-inline: var(--button-padding-inline); - border: var(--border-width) solid var(--border-color-interactive); - border-radius: var(--button-border-radius); - background-color: var(--button-background-color); - color: var(--button-text-color); - background-position: right var(--space-small) center; - font-size: var(--font-size-root); - font-weight: var(--button-font-weight); - - &:dir(rtl) { - background-position-x: left var(--space-small); - } - - &:hover { - border-color: var(--border-color-interactive-hover); - background-color: var(--button-background-color-hover); - color: var(--button-text-color-hover); - } - } - - .perf-external-link { - color: var(--link-color); - - &:hover { - color: var(--link-color-hover); - } - - &:active { - color: var(--link-color-active); - } - } - - .perf-presets-hr { - border-top-color: var(--border-color-deemphasized); - } - } -} diff -urN firefox-157.0-orig/taskcluster/test_configs/variants.yml firefox-157.0/taskcluster/test_configs/variants.yml --- firefox-157.0-orig/taskcluster/test_configs/variants.yml 2026-09-24 19:45:43 +0900 +++ firefox-157.0/taskcluster/test_configs/variants.yml 2026-10-05 08:03:42 +0900 @@ -722,10 +722,6 @@ component: "Firefox::Theme" expiration: "2026-12-31" suffix: "no-nv" - merge: - mozharness: - extra-options: - - "--setpref=browser.nova.enabled=false" urlbar-ipc: description: "{description} with the urlbar actor message-passing path forced on" diff -urN firefox-157.0-orig/testing/mochitest/runtests.py firefox-157.0/testing/mochitest/runtests.py --- firefox-157.0-orig/testing/mochitest/runtests.py 2026-09-24 19:45:45 +0900 +++ firefox-157.0/testing/mochitest/runtests.py 2026-10-05 08:02:32 +0900 @@ -3780,7 +3780,7 @@ "http3": options.useHttp3Server, "http2": options.useHttp2Server, "inc_origin_init": os.environ.get("MOZ_ENABLE_INC_ORIGIN_INIT") == "1", - "nova": self.extraPrefs.get("browser.nova.enabled", True), + "nova": False, "sessionHistoryInParent": True, "socketprocess_e10s": self.extraPrefs.get("network.process.enabled", False), "socketprocess_networking": self.extraPrefs.get( diff -urN firefox-157.0-orig/testing/raptor/browsertime/support-scripts/speedometer3.py firefox-157.0/testing/raptor/browsertime/support-scripts/speedometer3.py --- firefox-157.0-orig/testing/raptor/browsertime/support-scripts/speedometer3.py 2026-09-24 19:45:43 +0900 +++ firefox-157.0/testing/raptor/browsertime/support-scripts/speedometer3.py 2026-10-05 08:02:53 +0900 @@ -14,15 +14,12 @@ class Speedometer3Support(BasePythonSupport): - no_nova = None + no_nova = True profiling = False def setup_test(self, test, args): super().setup_test(test, args) - if args.extra_prefs.get("browser.nova.enabled", True) is False: - self.no_nova = True - for profile_type, profile_enabled in [ ("etw_profile", args.etw_profile), ("samply_profile", args.samply_profile), diff -urN firefox-157.0-orig/testing/talos/talos/run_tests.py firefox-157.0/testing/talos/talos/run_tests.py --- firefox-157.0-orig/testing/talos/talos/run_tests.py 2026-09-24 19:45:45 +0900 +++ firefox-157.0/testing/talos/talos/run_tests.py 2026-10-05 08:03:06 +0900 @@ -256,8 +256,7 @@ if browser_config.get("fission", True): talos_results.add_extra_option("fission") - if browser_config["preferences"].get("browser.nova.enabled", True) is False: - talos_results.add_extra_option("no-nova") + talos_results.add_extra_option("no-nova") # differentiate webrender from non-webrender results if browser_config["preferences"].get("gfx.webrender.software", False): diff -urN firefox-157.0-orig/toolkit/components/contextualidentity/ContextualIdentityService.sys.mjs firefox-157.0/toolkit/components/contextualidentity/ContextualIdentityService.sys.mjs --- firefox-157.0-orig/toolkit/components/contextualidentity/ContextualIdentityService.sys.mjs 2026-09-24 19:45:54 +0900 +++ firefox-157.0/toolkit/components/contextualidentity/ContextualIdentityService.sys.mjs 2026-10-05 07:49:56 +0900 @@ -16,71 +16,55 @@ // user-context-icon-* labels // - enterprisepolicies/schemas/policies-schema.json: Containers.Default enums // Reordering only affects the swatch order and is local to this file. -// -// Each color carries two codes: `code` is the legacy value used when -// `browser.nova.enabled` is off, `codeNova` is the refreshed value used when it -// is on. getContainerColorCode() picks between them based on the pref. Under -// nova `codeNova` is the design-system `--color--40` token, matching the -// shade usercontext.css paints as the tab stroke (--identity-stroke-color). export const CONTAINER_COLORS = [ { name: "gray", code: "#7c7c7d", - codeNova: "#949297", l10nId: "user-context-color-gray", }, { name: "yellow", code: "#ffcb00", - codeNova: "#db820e", l10nId: "user-context-color-yellow", }, { name: "orange", code: "#ff9f00", - codeNova: "#f4682c", l10nId: "user-context-color-orange", }, { name: "red", code: "#ff613d", - codeNova: "#ed566e", l10nId: "user-context-color-red", }, { name: "pink", code: "#ff4bda", - codeNova: "#db54bf", l10nId: "user-context-color-pink", }, { name: "purple", code: "#af51f5", - codeNova: "#b864ee", l10nId: "user-context-color-purple", }, { name: "violet", code: "#764edd", - codeNova: "#9871ff", l10nId: "user-context-color-violet", }, { name: "blue", code: "#37adff", - codeNova: "#5a87fd", l10nId: "user-context-color-blue", }, { name: "cyan", code: "#00c79a", - codeNova: "#10a4ca", l10nId: "user-context-color-cyan", }, { name: "green", code: "#51cd00", - codeNova: "#11ae84", l10nId: "user-context-color-green", }, ]; @@ -831,9 +815,7 @@ if (!entry) { return null; } - return Services.prefs.getBoolPref("browser.nova.enabled", false) - ? entry.codeNova - : entry.code; + return entry.code; }, getContainerIconURL(icon) { diff -urN firefox-157.0-orig/toolkit/components/extensions/test/browser/browser_ext_management_themes.js firefox-157.0/toolkit/components/extensions/test/browser/browser_ext_management_themes.js --- firefox-157.0-orig/toolkit/components/extensions/test/browser/browser_ext_management_themes.js 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/components/extensions/test/browser/browser_ext_management_themes.js 2026-10-05 07:39:49 +0900 @@ -11,10 +11,7 @@ ); // // Nova being enabled changes some of the styling that is being tested here. -const novaEnabled = Services.prefs.getBoolPref( - "browser.nova.enabled", - true // If the pref isn't set to false assume Nova styles are enabled by default. -); +const novaEnabled = false; info(`Run with Nova browser styles ${novaEnabled ? "enabled" : "disabled"}`); diff -urN firefox-157.0-orig/toolkit/components/extensions/test/browser/browser_ext_themes_autocomplete_popup.js firefox-157.0/toolkit/components/extensions/test/browser/browser_ext_themes_autocomplete_popup.js --- firefox-157.0-orig/toolkit/components/extensions/test/browser/browser_ext_themes_autocomplete_popup.js 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/components/extensions/test/browser/browser_ext_themes_autocomplete_popup.js 2026-10-05 07:39:13 +0900 @@ -7,10 +7,7 @@ ); // Nova being enabled changes some of the styling that is being tested here. -let novaEnabled = Services.prefs.getBoolPref( - "browser.nova.enabled", - true // If the pref isn't set to false, assume Nova styles are enabled by default. -); +let novaEnabled = false; // This test checks whether applied WebExtension themes that attempt to change // popup properties are applied correctly to the autocomplete bar. diff -urN firefox-157.0-orig/toolkit/components/extensions/test/browser/browser_ext_themes_dynamic_updates.js firefox-157.0/toolkit/components/extensions/test/browser/browser_ext_themes_dynamic_updates.js --- firefox-157.0-orig/toolkit/components/extensions/test/browser/browser_ext_themes_dynamic_updates.js 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/components/extensions/test/browser/browser_ext_themes_dynamic_updates.js 2026-10-05 07:39:58 +0900 @@ -1,10 +1,7 @@ "use strict"; // Nova being enabled changes some of the styling that is being tested here. -const novaEnabled = Services.prefs.getBoolPref( - "browser.nova.enabled", - true // If the pref isn't set to false, assume Nova styles are enabled by default. -); +const novaEnabled = false; info(`Run with Nova browser styles ${novaEnabled ? "enabled" : "disabled"}`); diff -urN firefox-157.0-orig/toolkit/components/extensions/test/browser/browser_ext_themes_multiple_backgrounds.js firefox-157.0/toolkit/components/extensions/test/browser/browser_ext_themes_multiple_backgrounds.js --- firefox-157.0-orig/toolkit/components/extensions/test/browser/browser_ext_themes_multiple_backgrounds.js 2026-09-24 19:45:54 +0900 +++ firefox-157.0/toolkit/components/extensions/test/browser/browser_ext_themes_multiple_backgrounds.js 2026-10-05 07:40:36 +0900 @@ -1,10 +1,7 @@ "use strict"; // Nova being enabled changes some of the styling that is being tested here. -const novaEnabled = Services.prefs.getBoolPref( - "browser.nova.enabled", - true // If the pref isn't set to false, assume Nova styles are enabled by default. -); +const novaEnabled = false; info(`Run with Nova browser styles ${novaEnabled ? "enabled" : "disabled"}`); diff -urN firefox-157.0-orig/toolkit/components/extensions/test/browser/browser_ext_themes_pbm.js firefox-157.0/toolkit/components/extensions/test/browser/browser_ext_themes_pbm.js --- firefox-157.0-orig/toolkit/components/extensions/test/browser/browser_ext_themes_pbm.js 2026-09-24 19:45:54 +0900 +++ firefox-157.0/toolkit/components/extensions/test/browser/browser_ext_themes_pbm.js 2026-10-05 07:40:18 +0900 @@ -14,7 +14,7 @@ const LIGHT_THEME_ID = "firefox-compact-light@mozilla.org"; const DARK_THEME_ID = "firefox-compact-dark@mozilla.org"; -const NOVA_ENABLED = Services.prefs.getBoolPref("browser.nova.enabled", false); +const NOVA_ENABLED = false; // This tests opens many chrome windows which is slow on debug builds. requestLongerTimeout(2); diff -urN firefox-157.0-orig/toolkit/components/extensions/test/browser/browser_ext_themes_private_nova.js firefox-157.0/toolkit/components/extensions/test/browser/browser_ext_themes_private_nova.js --- firefox-157.0-orig/toolkit/components/extensions/test/browser/browser_ext_themes_private_nova.js 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/components/extensions/test/browser/browser_ext_themes_private_nova.js 1970-01-01 09:00:00 +0900 @@ -1,165 +0,0 @@ -"use strict"; - -/** - * Tests that private browsing windows substitute the built-in private-window - * theme when Nova is enabled and the active user theme is the default or an - * in-App built-in. Third-party and non-inApp themes (e.g. alpenglow) - * are left unchanged. - */ - -const { BuiltInThemes } = ChromeUtils.importESModule( - "resource:///modules/BuiltInThemes.sys.mjs" -); - -const DEFAULT_THEME_ID = "default-theme@mozilla.org"; -const LIGHT_THEME_ID = "firefox-compact-light@mozilla.org"; -const DARK_THEME_ID = "firefox-compact-dark@mozilla.org"; -const ALPENGLOW_THEME_ID = "firefox-alpenglow@mozilla.org"; -const PRIVATE_THEME_ID = "firefox-privatewindow@mozilla.org"; - -async function checkWindowTheme(win, { effectiveThemeId, expectInApp }) { - let root = win.document.documentElement; - await TestUtils.waitForCondition( - () => root.getAttribute("theme-effective-id") === effectiveThemeId, - `Waiting for theme-effective-id to be ${effectiveThemeId}` - ); - Assert.equal( - root.getAttribute("theme-effective-id"), - effectiveThemeId, - "Window should apply the expected theme." - ); - Assert.equal( - root.hasAttribute("theme-in-app"), - expectInApp, - `theme-in-app attribute should${expectInApp ? "" : " not"} be set.` - ); -} - -/** - * Open a normal and a private window, assert their effective theme, then clean - * up. - * - * @param {object} options - * @param {string} options.normalThemeId - Expected effective theme id in a - * normal browsing window. - * @param {string} options.privateThemeId - Expected effective theme id in a - * private browsing window. - * @param {boolean} options.expectInApp - Expected theme-in-app attribute state - * (the same for both windows in every case we test). - */ -async function testNormalAndPrivate({ - normalThemeId, - privateThemeId, - expectInApp, -}) { - await checkWindowTheme(window, { - effectiveThemeId: normalThemeId, - expectInApp, - }); - - await checkWindowTheme(privateWin, { - effectiveThemeId: privateThemeId, - expectInApp, - }); -} - -let privateWin = null; - -add_setup(async function () { - await SpecialPowers.pushPrefEnv({ - set: [["browser.nova.enabled", true]], - }); - // Ensure the built-in themes are initialized. - await BuiltInThemes.ensureBuiltInThemes(); - - // Switching to a theme and back reaches a consistent themeData state, so the - // default-theme case below sees fully-populated theme data. See the matching - // note in browser_ext_themes_pbm.js. - let lightTheme = await AddonManager.getAddonByID(LIGHT_THEME_ID); - await lightTheme.enable(); - await lightTheme.disable(); - - privateWin = await BrowserTestUtils.openNewBrowserWindow({ - private: true, - }); - - registerCleanupFunction(async () => { - await BrowserTestUtils.closeWindow(privateWin); - }); -}); - -// Default theme: private windows substitute the private-window theme; both -// windows are considered in-app. -add_task(async function test_default_theme() { - await testNormalAndPrivate({ - normalThemeId: DEFAULT_THEME_ID, - privateThemeId: PRIVATE_THEME_ID, - expectInApp: true, - }); -}); - -// Dark built-in (inApp): gets the new theme in private windows -add_task(async function test_dark_theme() { - let darkTheme = await AddonManager.getAddonByID(DARK_THEME_ID); - await darkTheme.enable(); - - await testNormalAndPrivate({ - normalThemeId: DARK_THEME_ID, - privateThemeId: PRIVATE_THEME_ID, - expectInApp: true, - }); - - await darkTheme.disable(); -}); - -// Light built-in (inApp): get the new theme in private windows -add_task(async function test_light_theme() { - let lightTheme = await AddonManager.getAddonByID(LIGHT_THEME_ID); - await lightTheme.enable(); - - await testNormalAndPrivate({ - normalThemeId: LIGHT_THEME_ID, - privateThemeId: PRIVATE_THEME_ID, - expectInApp: true, - }); - - await lightTheme.disable(); -}); - -// Alpenglow (built-in, but not inApp): no substitution in private windows, and -// theme-in-app is not set in either window. -add_task(async function test_alpenglow_theme() { - let alpenglowTheme = await AddonManager.getAddonByID(ALPENGLOW_THEME_ID); - await alpenglowTheme.enable(); - - await testNormalAndPrivate({ - normalThemeId: ALPENGLOW_THEME_ID, - privateThemeId: ALPENGLOW_THEME_ID, - expectInApp: false, - }); - - await alpenglowTheme.disable(); -}); - -// With browser.theme.dark-private-windows disabled, private windows should not -// substitute the private-window theme even with the default theme and Nova -// enabled. theme-in-app still reflects the user's (default) theme. -add_task(async function test_dark_private_windows_disabled() { - await SpecialPowers.pushPrefEnv({ - set: [["browser.theme.dark-private-windows", false]], - }); - - // The pref is read per-update with no observer, so open a fresh private - // window to pick up the disabled state at construction. - let privateWinNoSub = await BrowserTestUtils.openNewBrowserWindow({ - private: true, - }); - - await checkWindowTheme(privateWinNoSub, { - effectiveThemeId: DEFAULT_THEME_ID, - expectInApp: true, - }); - - await BrowserTestUtils.closeWindow(privateWinNoSub); - await SpecialPowers.popPrefEnv(); -}); diff -urN firefox-157.0-orig/toolkit/components/extensions/test/browser/browser_ext_themes_separators.js firefox-157.0/toolkit/components/extensions/test/browser/browser_ext_themes_separators.js --- firefox-157.0-orig/toolkit/components/extensions/test/browser/browser_ext_themes_separators.js 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/components/extensions/test/browser/browser_ext_themes_separators.js 2026-10-05 07:40:26 +0900 @@ -1,10 +1,7 @@ "use strict"; // Nova being enabled changes some of the styling that is being tested here. -const novaEnabled = Services.prefs.getBoolPref( - "browser.nova.enabled", - true // If the pref isn't set to false, assume Nova styles are enabled by default. -); +const novaEnabled = false; info(`Run with Nova browser styles ${novaEnabled ? "enabled" : "disabled"}`); diff -urN firefox-157.0-orig/toolkit/components/extensions/test/browser/browser_ext_themes_sidebars.js firefox-157.0/toolkit/components/extensions/test/browser/browser_ext_themes_sidebars.js --- firefox-157.0-orig/toolkit/components/extensions/test/browser/browser_ext_themes_sidebars.js 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/components/extensions/test/browser/browser_ext_themes_sidebars.js 2026-10-05 07:39:27 +0900 @@ -1,10 +1,7 @@ "use strict"; // Nova being enabled changes some of the styling that is being tested here. -const novaEnabled = Services.prefs.getBoolPref( - "browser.nova.enabled", - true // If the pref isn't set to false assume Nova styles are enabled by default. -); +const novaEnabled = false; info(`Run with Nova browser styles ${novaEnabled ? "enabled" : "disabled"}`); diff -urN firefox-157.0-orig/toolkit/components/extensions/test/browser/browser_ext_themes_toolbar_fields_focus.js firefox-157.0/toolkit/components/extensions/test/browser/browser_ext_themes_toolbar_fields_focus.js --- firefox-157.0-orig/toolkit/components/extensions/test/browser/browser_ext_themes_toolbar_fields_focus.js 2026-09-24 19:45:54 +0900 +++ firefox-157.0/toolkit/components/extensions/test/browser/browser_ext_themes_toolbar_fields_focus.js 2026-10-05 07:39:41 +0900 @@ -50,7 +50,7 @@ "Text Color is changed" ); Assert.equal( - Services.prefs.getBoolPref("browser.nova.enabled", false) + false ? style.borderColor : style.outlineColor, `rgb(${hexToRGB(TOOLBAR_FOCUS_BORDER).join(", ")})`, diff -urN firefox-157.0-orig/toolkit/components/extensions/test/xpcshell/test_ext_contextual_identities.js firefox-157.0/toolkit/components/extensions/test/xpcshell/test_ext_contextual_identities.js --- firefox-157.0-orig/toolkit/components/extensions/test/xpcshell/test_ext_contextual_identities.js 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/components/extensions/test/xpcshell/test_ext_contextual_identities.js 2026-10-05 07:38:47 +0900 @@ -53,9 +53,6 @@ }); add_task(async function test_contextualIdentities_supported_colors_and_icons() { - // Pin the pref so the expected color codes below are deterministic. - Services.prefs.setBoolPref("browser.nova.enabled", false); - // The API must expose exactly the palette the service considers supported, // in the same order, so it can't silently drift from the source of truth. const expectedColors = ContextualIdentityService.containerColors.map( @@ -156,8 +153,6 @@ await extension.startup(); await extension.awaitFinish("contextualIdentities_supported"); await extension.unload(); - - Services.prefs.clearUserPref("browser.nova.enabled"); }); add_task(async function test_contextualIdentity_events() { @@ -1034,21 +1029,7 @@ }); add_task(async function test_contextualIdentity_color_aliases_api() { - Services.prefs.setBoolPref("browser.nova.enabled", false); - async function background() { - function setNova(value) { - return new Promise(resolve => { - browser.test.onMessage.addListener(function listener(msg) { - if (msg === "nova-updated") { - browser.test.onMessage.removeListener(listener); - resolve(); - } - }); - browser.test.sendMessage("set-nova", value); - }); - } - let cyan = await browser.contextualIdentities.create({ name: "alias-cyan", color: "turquoise", @@ -1073,16 +1054,6 @@ }); browser.test.assertEq("gray", gray.color, "toolbar is returned as gray"); - await setNova(true); - - cyan = await browser.contextualIdentities.get(cyan.cookieStoreId); - browser.test.assertEq("cyan", cyan.color, "name stays cyan with nova on"); - browser.test.assertEq( - "#10a4ca", - cyan.colorCode, - "nova on: the same container returns the refreshed code" - ); - await browser.contextualIdentities.remove(cyan.cookieStoreId); await browser.contextualIdentities.remove(gray.cookieStoreId); @@ -1098,14 +1069,7 @@ }, }); - extension.onMessage("set-nova", value => { - Services.prefs.setBoolPref("browser.nova.enabled", value); - extension.sendMessage("nova-updated"); - }); - await extension.startup(); await extension.awaitFinish("color-aliases"); await extension.unload(); - - Services.prefs.clearUserPref("browser.nova.enabled"); }); diff -urN firefox-157.0-orig/toolkit/components/nimbus/FeatureManifest.yaml firefox-157.0/toolkit/components/nimbus/FeatureManifest.yaml --- firefox-157.0-orig/toolkit/components/nimbus/FeatureManifest.yaml 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/components/nimbus/FeatureManifest.yaml 2026-10-05 07:48:42 +0900 @@ -418,14 +418,6 @@ picks. If the user's query matches an AMP suggestion and the query is at least this many characters long, the suggestion will be shown as a top pick. Set to zero to disable. - quickSuggestAmpTopPickUseNovaIconSize: - type: boolean - setPref: - branch: default - pref: browser.urlbar.quicksuggest.ampTopPickUseNovaIconSize - description: >- - Whether or not use the Nova icon size for AMP suggestion. - Otherwise, use standard rich-suggestion size. quickSuggestContextualOptInEnabled: type: boolean setPref: @@ -6271,15 +6263,3 @@ branch: default pref: dom.editcontext.enabled description: Whether the EditContext API is enabled. - -nova: - description: Nova UI - owner: dtownsend@mozilla.com - hasExposure: false - variables: - enabled: - type: boolean - setPref: - branch: default - pref: browser.nova.enabled - description: Whether Nova is enabled. diff -urN firefox-157.0-orig/toolkit/components/pdfjs/PdfJsDefaultPrefs.js firefox-157.0/toolkit/components/pdfjs/PdfJsDefaultPrefs.js --- firefox-157.0-orig/toolkit/components/pdfjs/PdfJsDefaultPrefs.js 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/components/pdfjs/PdfJsDefaultPrefs.js 2026-10-05 07:42:02 +0900 @@ -40,7 +40,6 @@ pref("pdfjs.enableMerge", false); pref("pdfjs.enableNewAltTextWhenAddingImage", true); pref("pdfjs.enableNewBadge", true); -pref("pdfjs.enableNova", true); pref("pdfjs.enableOptimizedPartialRendering", false); pref("pdfjs.enablePermissions", false); pref("pdfjs.enablePrintAutoRotate", true); diff -urN firefox-157.0-orig/toolkit/components/pdfjs/content/web/viewer.css firefox-157.0/toolkit/components/pdfjs/content/web/viewer.css --- firefox-157.0-orig/toolkit/components/pdfjs/content/web/viewer.css 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/components/pdfjs/content/web/viewer.css 2026-10-05 07:47:01 +0900 @@ -12,9 +12,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -@import url(chrome://global/skin/design-system/tokens-brand.css) -moz-pref( - "pdfjs.enableNova" - ); :root{ --button-primary-bg-color:var( @@ -75,12 +72,6 @@ --button-disabled-opacity:0.6; --hover-filter:brightness(1.4); } - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - --hover-filter:none; - --button-disabled-opacity:var(--button-opacity-disabled); - --button-secondary-hover-border-color:var(--button-border-color-hover); - --button-secondary-active-border-color:var(--button-border-color-active); - } @media screen and (forced-colors: active){ --button-primary-bg-color:var( @@ -264,9 +255,6 @@ --button-background-color, light-dark(rgb(21 20 26 / 0.07), rgb(251 251 254 / 0.07)) ); - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - --message-bar-close-button-border-radius:var(--button-border-radius); - } @media screen and (forced-colors: active){ --message-bar-close-button-color:var(--button-text-color, ButtonText); @@ -385,11 +373,6 @@ rgb(0 0 0 / 0.08), rgb(255 255 255 / 0.08) ); - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - --message-bar-icon-color:var(--icon-color-information); - --message-bar-bg-color:var(--background-color-box); - --message-bar-border-color:var(--border-color-deemphasized); - } @media screen and (forced-colors: active){ --message-bar-icon-color:CanvasText; @@ -440,11 +423,6 @@ --input-text-bg-color:light-dark(white, #42414d); --input-text-fg-color:var(--text-primary-color); - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - --dialog-border-color:var(--border-color-deemphasized); - --dialog-shadow:var(--box-shadow-level-3); - --separator-color:var(--border-color-deemphasized); - } @media screen and (forced-colors: active){ --dialog-bg-color:var(--background-color-canvas, Canvas); @@ -1895,10 +1873,6 @@ --button-signature-border:none; --button-signature-hover-bg:light-dark(#e0e0e6, #52525e); --button-signature-hover-color:var(--button-signature-color); - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - --button-signature-hover-bg:var(--button-background-color-hover); - --button-signature-active-bg:var(--button-background-color-active); - } @media screen and (forced-colors: active){ --signature-bg:HighlightText; @@ -2237,9 +2211,6 @@ margin:0; background-color:var(--thickness-bg); border-radius:4px 4px 0 0; - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - border-radius:var(--border-radius-small) var(--border-radius-small) 0 0; - } border-inline:var(--thickness-border); border-top:var(--thickness-border); pointer-events:auto; @@ -2481,9 +2452,6 @@ button{ border:var(--button-signature-border); border-radius:4px; - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - border-radius:var(--border-radius-small); - } background-color:var(--button-signature-bg); color:var(--button-signature-color); @@ -2526,9 +2494,6 @@ justify-content:flex-start; outline:none; border-radius:4px; - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - border-radius:var(--border-radius-small); - } box-sizing:border-box; font:message-box; position:relative; @@ -2550,9 +2515,6 @@ box-sizing:border-box; border:none; border-radius:4px; - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - border-radius:var(--border-radius-small); - } > path{ stroke:var(--button-signature-color); @@ -2572,9 +2534,6 @@ &:is(:hover, :active) > svg{ border-radius:4px 0 0 4px; - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - border-radius:var(--border-radius-small) 0 0 var(--border-radius-small); - } background-color:var(--signature-hover-bg); } @@ -2631,9 +2590,6 @@ box-sizing:border-box; border-radius:8px; - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - border-radius:var(--border-radius-medium); - } } #commentManagerDialog{ @@ -2867,22 +2823,6 @@ --button-comment-border:none; --button-comment-hover-bg:light-dark(#e0e0e6, #52525e); --button-comment-hover-color:var(--button-comment-color); - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - --comment-date-fg-color:color-mix( - in srgb, - var(--comment-fg-color) 69%, - transparent - ); - --comment-bg-color:var(--background-color-box-info); - --comment-border-color:var(--border-color-deemphasized); - --comment-count-bg-color:var(--background-color-information); - --comment-indicator-active-fg-color:var(--color-accent-primary-active); - --comment-indicator-focus-fg-color:var(--icon-color); - - --button-comment-color:var(--toolbarbutton-icon-fill); - --button-comment-active-bg:var(--toolbarbutton-background-color-active); - --button-comment-hover-bg:var(--toolbarbutton-background-color-hover); - } @media screen and (forced-colors: active){ --comment-date-fg-color:CanvasText; @@ -2952,9 +2892,6 @@ font-style:normal; font-weight:400; line-height:normal; - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - border-radius:var(--border-radius-small); - } } } @@ -3005,14 +2942,6 @@ height:0; overflow:hidden; } - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - border-radius:var(--button-border-radius); - - &:focus-visible{ - outline:var(--focus-outline); - outline-offset:var(--focus-outline-offset); - } - } } } @@ -3041,10 +2970,6 @@ border-radius:8px; border:0.5px solid var(--comment-border-color); background-color:var(--comment-bg-color); - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - border-radius:var(--border-radius-medium); - border-width:1px; - } &:not(.noComments){ &:hover{ @@ -3559,17 +3484,6 @@ --alt-text-warning-color:light-dark(#0090ed, #80ebff); --alt-text-hover-done-color:var(--alt-text-done-color); --alt-text-hover-warning-color:var(--alt-text-warning-color); - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - --editor-toolbar-bg-color:var(--background-color-box); - --editor-toolbar-fg-color:var(--toolbarbutton-icon-fill); - --editor-toolbar-border-color:var(--border-color-deemphasized); - --editor-toolbar-hover-bg-color:var( - --toolbarbutton-background-color-hover - ); - --editor-toolbar-shadow:var(--box-shadow-level-2); - --editor-toolbar-height:var(--size-item-large); - --alt-text-warning-color:var(--icon-color-information); - } @media screen and (forced-colors: active){ --editor-toolbar-bg-color:var(--button-background-color, ButtonFace); @@ -3620,10 +3534,6 @@ border:1px solid var(--editor-toolbar-border-color); box-shadow:var(--editor-toolbar-shadow); - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - border-radius:var(--panel-border-radius); - } - &.hidden{ display:none; } @@ -3717,11 +3627,6 @@ border-radius:2px; outline:2px solid var(--editor-toolbar-focus-outline-color); } - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - &:is(:hover, :focus-visible){ - border-radius:var(--button-border-radius); - } - } } .altText{ @@ -3800,13 +3705,6 @@ ); --alt-text-tooltip-border:var(--border-color-interactive, #8f8f9d); --alt-text-tooltip-shadow:0 2px 6px 0 light-dark(rgb(58 57 68 / 0.2), #15141a); - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - --alt-text-tooltip-bg:var(--background-color-box); - --alt-text-tooltip-border:var(--border-color-deemphasized); - --alt-text-tooltip-shadow:var(--box-shadow-level-2); - - border-radius:var(--border-radius-xsmall); - } @media screen and (forced-colors: active){ --alt-text-tooltip-bg:Canvas; @@ -3933,11 +3831,6 @@ --no-alt-text-badge-border-color:light-dark(#f0f0f4, #52525e); --no-alt-text-badge-bg-color:light-dark(#cfcfd8, #fbfbfe); --no-alt-text-badge-fg-color:light-dark(#5b5b66, #15141a); - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - --no-alt-text-badge-border-color:var(--border-color-deemphasized); - --no-alt-text-badge-bg-color:var(--background-color-box); - --no-alt-text-badge-fg-color:var(--icon-color); - } @media screen and (forced-colors: active){ --no-alt-text-badge-border-color:ButtonText; @@ -3961,10 +3854,6 @@ border:1px solid var(--no-alt-text-badge-border-color); background:var(--no-alt-text-badge-bg-color); - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - border-radius:var(--border-radius-xsmall); - } - &::before{ content:""; display:inline-block; @@ -4226,9 +4115,6 @@ --new-alt-text-spinner-icon:url(images/altText_spinner.svg); --preview-image-bg-color:light-dark(#f0f0f4, #2b2a33); --preview-image-border:none; - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - --preview-image-bg-color:var(--background-color-box-info); - } @media screen and (forced-colors: active){ --preview-image-bg-color:ButtonFace; @@ -4412,10 +4298,6 @@ ); --selected-outline-color:light-dark(#0060df, #aaf2ff); --swatch-border-color:light-dark(#cfcfd8, #52525e); - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - --selected-outline-color:var(--color-accent-primary); - --swatch-border-color:var(--border-color-deemphasized); - } @media screen and (forced-colors: active){ --hover-outline-color:Highlight; @@ -4440,11 +4322,6 @@ .basicColorPicker{ width:28px; - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - width:auto; - aspect-ratio:1; - padding:var(--space-small); - } &::-moz-color-swatch{ border-radius:100%; @@ -4545,10 +4422,6 @@ &:has(.dropdown:not(.hidden)){ background-color:var(--editor-toolbar-hover-bg-color); - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - background-color:var(--toolbarbutton-background-color-active); - border-radius:var(--button-border-radius); - } &::after{ scale:-1; @@ -4596,25 +4469,6 @@ outline:2px solid var(--hover-outline-color); } } - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - flex-direction:row; - gap:var(--space-small); - padding:var(--space-small); - width:max-content; - inset-inline-start:50%; - translate:calc(-50% * var(--dir-factor)); - border-radius:var(--border-radius-medium); - - button{ - width:auto; - flex:0 0 auto; - - > .swatch{ - width:var(--size-item-medium); - height:var(--size-item-medium); - } - } - } } } } @@ -4846,18 +4700,6 @@ ); --menuitem-hover-background-blend-mode:normal; --disabled-opacity:0.62; - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - --menuitem-gap:var(--space-small); - --menuitem-border-radius:var(--panel-menuitem-border-radius); - --menu-box-shadow:var(--box-shadow-level-2); - --menu-border-color:var(--border-color-deemphasized); - --menuitem-hover-bg:var(--button-background-color-menu-hover); - --menuitem-text-hover-fg:var(--button-text-color-menu-hover); - --menuitem-active-bg:var(--button-background-color-menu-active); - --menuitem-text-active-fg:var(--button-text-color-menu-active); - --menuitem-focus-border-color:transparent; - --disabled-opacity:var(--button-opacity-disabled); - } @media screen and (forced-colors: active){ --menu-bg:var(--background-color-box, Canvas); @@ -4896,10 +4738,6 @@ border-radius:6px; border:1px solid var(--menu-border-color); backdrop-filter:var(--menu-backdrop-filter); - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - padding:var(--space-small) 0; - border-radius:var(--panel-border-radius); - } &.withMark{ --menu-mark-icon-size:16px; @@ -4981,10 +4819,6 @@ background-color:var(--menuitem-focus-bg); outline:2px solid var(--menuitem-focus-outline-color); outline-offset:2px; - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - outline:var(--focus-outline); - outline-offset:var(--focus-outline-inset); - } } } @@ -5015,30 +4849,6 @@ font-weight:510; line-height:normal; } - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - height:auto; - min-height:var(--size-item-large); - width:auto; - margin:var(--panel-menuitem-margin); - padding:var(--panel-menuitem-padding); - - &.selected::after{ - inset-inline-start:var(--panel-menuitem-padding-inline); - } - - > span{ - padding-inline-start:0; - } - } - } - - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - &.withMark > button{ - padding-inline-start:calc( - var(--panel-menuitem-padding-inline) + var(--menu-mark-icon-size) + - var(--menuitem-gap) - ); - } } } @@ -5056,15 +4866,6 @@ ); --treeitem-expanded-icon:url(images/treeitem-expanded.svg); --treeitem-collapsed-icon:url(images/treeitem-collapsed.svg); - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - --treeitem-color:var(--text-color); - --treeitem-bg-color:var(--toolbarbutton-background-color-hover); - --treeitem-hover-color:var(--text-color); - --treeitem-selected-color:var(--text-color); - --treeitem-selected-bg-color:var(--toolbarbutton-background-color-active); - - padding-inline:var(--panel-menuitem-margin-inline); - } &.withNesting{ .treeItemToggler{ @@ -5104,9 +4905,6 @@ background-clip:padding-box; border-radius:2px; color:var(--treeitem-hover-color); - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - border-radius:var(--panel-menuitem-border-radius); - } } } @@ -5147,13 +4945,6 @@ user-select:none; white-space:normal; cursor:default; - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - box-sizing:border-box; - min-width:100%; - padding-block:var(--space-xsmall); - padding-inline:var(--space-small); - border-radius:var(--panel-menuitem-border-radius); - } &:hover{ background-color:var(--treeitem-bg-color); @@ -5161,9 +4952,6 @@ border-radius:2px; color:var(--treeitem-hover-color); - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - border-radius:var(--panel-menuitem-border-radius); - } } } @@ -5290,28 +5078,6 @@ --image-dragging-shadow:0 0 0 var(--image-border-width) var(--image-current-border-color); --multiple-dragging-indicator-bg:var(--indicator-color); --multiple-dragging-text-color:light-dark(#fbfbfe, #15141a); - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - --sidebar-bg-color:var(--background-color-box); - --sidebar-backdrop-filter:none; - --header-bg:var(--background-color-box); - --status-undo-bg:color-mix( - in srgb, - var(--color-accent-primary) 8%, - transparent - ); - --status-warning-bg:var(--background-color-box-info); - --indicator-warning-color:var(--icon-color-critical); - --image-border-color:var(--border-color-deemphasized); - --image-hover-border-color:var(--border-color-interactive); - --image-page-number-bg:var(--background-color-box-info); - --image-current-page-number-fg:var(--button-text-color-primary); - --image-dragging-placeholder-bg:color-mix( - in srgb, - var(--color-accent-primary) 8%, - transparent - ); - --multiple-dragging-bg:var(--background-color-box); - } @media screen and (forced-colors: active){ --views-text-color:var(--text-color, CanvasText); @@ -5424,14 +5190,6 @@ } } } - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - padding-block-start:0; - - #viewsManagerHeader{ - border-start-start-radius:var(--panel-border-radius); - border-start-end-radius:var(--panel-border-radius); - } - } #viewsManagerHeader{ display:flex; @@ -5852,10 +5610,6 @@ min-height:24px; padding:4px 16px; - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - border-radius:var(--button-border-radius); - } - font:menu; font-size:13px; font-style:normal; @@ -5898,9 +5652,6 @@ &:not(.isDragging) > .thumbnailImageContainer::after{ content:attr(page-number); border-radius:8px; - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - border-radius:var(--border-radius-circle); - } border:1px solid var(--image-page-number-border-color); background-color:var(--image-page-number-bg); color:var(--image-page-number-fg); @@ -5952,9 +5703,6 @@ outline:var(--image-outline); user-select:none; position:relative; - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - border-radius:var(--border-radius-medium); - } img{ width:100%; @@ -5965,9 +5713,6 @@ user-select:none; pointer-events:none; - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - border-radius:var(--border-radius-medium); - } } &.missingThumbnailImage{ @@ -6081,22 +5826,12 @@ box-sizing:content-box; outline:none; user-select:none; - - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - border-radius:var(--border-radius-medium); - } } &::after{ content:attr(data-multiple-count); border-radius:calc(8px * var(--thumbnail-dragging-scale)); - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - border-radius:calc( - var(--border-radius-medium) * - var(--thumbnail-dragging-scale) - ); - } background-color:var(--multiple-dragging-indicator-bg); color:var(--multiple-dragging-text-color); position:absolute; @@ -6128,18 +5863,10 @@ rgb(0 0 0 / 0.9), rgb(255 255 255 / 0.9) ); - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - --attachment-color:var(--text-color); - --attachment-hover-color:var(--text-color); - --attachment-bg-color:var(--toolbarbutton-background-color-hover); - } > ul{ list-style-type:none; padding:0; - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - padding-inline:var(--panel-menuitem-margin-inline); - } > li > a{ text-decoration:none; @@ -6163,17 +5890,6 @@ border-radius:2px; color:var(--attachment-hover-color); } - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - box-sizing:border-box; - min-width:100%; - padding-block:var(--space-xsmall); - padding-inline:var(--space-small); - - &, - &:hover{ - border-radius:var(--panel-menuitem-border-radius); - } - } } } } @@ -6199,11 +5915,6 @@ --color-accent-primary, light-dark(#0062fa, #00cadb) ); - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - --sidebar-border-color:var(--border-color-deemphasized); - --sidebar-box-shadow:var(--box-shadow-level-2); - --sidebar-border-radius:var(--panel-border-radius); - } @media screen and (forced-colors: active){ --sidebar-bg-color:var(--background-color-box, Canvas); @@ -6247,10 +5958,6 @@ background-color:var(--resizer-hover-bg-color); outline:none; } - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - border-inline-width:0; - border-radius:var(--border-radius-large); - } } &.resizing{ @@ -6284,11 +5991,6 @@ --new-badge-bg:light-dark(#070, #37b847); --new-badge-color:light-dark(#fff, #15141a); --new-badge-border-color:light-dark(#fbfbfe / 40%, #15141a / 40%); - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - --new-badge-bg:var(--background-color-success); - --new-badge-color:var(--text-color); - --new-badge-border-color:transparent; - } @media screen and (forced-colors: active){ --pdfViewer-padding-bottom:9px; @@ -6312,10 +6014,6 @@ border:1px solid var(--new-badge-border-color); padding-inline:4px; - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - border-radius:var(--border-radius-circle); - padding-inline:var(--space-small); - } margin-inline:4px; font:menu; font-size:12px; @@ -6522,22 +6220,6 @@ --icon-color-success, light-dark(rgb(29 142 61), rgb(106 210 126)) ); - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - --sig-card-border:var(--border-color-deemphasized); - --sig-card-nested-bg:var(--background-color-box-info); - --sig-row-color:var(--text-color); - --sig-detail-color:var(--text-color-deemphasized); - --sig-divider-color:var(--border-color-deemphasized); - --sig-summary-hover-color:var(--link-color-hover); - --sig-link-hover-bg:var(--button-background-color-ghost-hover); - --sig-banner-verified-bg:var(--background-color-box-info); - --sig-banner-warn-bg:var(--background-color-box-info); - --sig-banner-error-bg:var(--background-color-box-info); - --sig-banner-verified-color:var(--text-color); - --sig-banner-warn-color:var(--text-color); - --sig-banner-error-color:var(--text-color); - --sig-icon-default:var(--text-color-deemphasized); - } @media screen and (forced-colors: active){ --sig-card-border:ButtonBorder; @@ -6642,9 +6324,6 @@ font-size:12.5px; line-height:1.35; border-inline-start:3px solid currentcolor; - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - border-radius:var(--border-radius-medium); - } &.verified{ background:var(--sig-banner-verified-bg); @@ -6681,9 +6360,6 @@ flex-direction:column; gap:3px; background:var(--sig-card-bg); - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - border-radius:var(--border-radius-medium); - } .signer{ font-weight:600; @@ -6766,10 +6442,6 @@ padding:2px 4px; border-radius:4px; white-space:nowrap; - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - padding-inline:var(--space-small); - border-radius:var(--button-border-radius); - } &:hover{ background:var(--sig-link-hover-bg); @@ -6778,11 +6450,6 @@ &:focus-visible{ outline:2px solid var(--sig-link-color); outline-offset:1px; - - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - outline:var(--focus-outline); - outline-offset:var(--focus-outline-offset); - } } } @@ -6791,9 +6458,6 @@ border-top:1px dashed var(--sig-divider-color); padding-top:4px; font-size:12px; - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - border-top-style:solid; - } > summary{ cursor:pointer; @@ -6842,9 +6506,6 @@ padding:6px 8px; background:var(--sig-card-nested-bg); gap:2px; - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - border-radius:var(--border-radius-small); - } } .subSignatures .signer, @@ -6958,54 +6619,6 @@ --secondaryToolbarButton-documentProperties-icon:url(images/secondaryToolbarButton-documentProperties.svg); --editorParams-stampAddImage-icon:url(images/toolbarButton-zoomIn.svg); --comment-edit-button-icon:url(images/comment-editButton.svg); - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - font-size:var(--font-size-root); - - --toolbarButton-menuArrowNova-icon:url(images/toolbarButton-menuArrowNova.svg); - - --toolbar-height:40px; - --toolbar-horizontal-padding:6px; - --toolbar-vertical-padding:4px; - - --toolbar-icon-opacity:1; - --doorhanger-icon-opacity:1; - - --main-color:var(--text-color); - --body-bg-color:light-dark(var(--color-gray-15), var(--color-gray-85)); - --progressBar-color:var(--color-accent-primary); - --progressBar-bg-color:var(--background-color-box-info); - --progressBar-blend-color:color-mix( - in srgb, - var(--color-accent-primary) 40%, - var(--background-color-box) - ); - --toolbar-icon-bg-color:var(--toolbarbutton-icon-fill); - --toolbar-icon-hover-bg-color:var(--toolbarbutton-icon-fill); - - --sidebar-narrow-bg-color:color-mix( - in srgb, - var(--background-color-canvas) 90%, - transparent - ); - --sidebar-toolbar-bg-color:var(--toolbar-background-color); - --toolbar-bg-color:var(--toolbar-background-color); - --toolbar-border-color:var(--border-color-deemphasized); - --toggled-btn-color:var(--toolbarbutton-icon-fill); - --toggled-btn-bg-color:var(--toolbarbutton-background-color-active); - --toggled-hover-active-btn-color:var( - --toolbarbutton-background-color-active - ); - --dropdown-btn-bg-color:var(--button-background-color); - --dropdown-btn-border:1px solid var(--button-border-color); - --separator-color:var(--border-color-deemphasized); - --field-color:var(--text-color); - --field-bg-color:var(--background-color-box); - --field-border-color:var(--border-color-interactive); - --doorhanger-bg-color:var(--background-color-box); - --doorhanger-border-color:var(--border-color-deemphasized); - --doorhanger-hover-color:var(--text-color); - --doorhanger-separator-color:var(--border-color-deemphasized); - } } :root:dir(rtl){ @@ -7057,15 +6670,9 @@ html{ &[data-toolbar-density="compact"]{ --toolbar-height:30px; - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - --toolbar-height:32px; - } } &[data-toolbar-density="touch"]{ --toolbar-height:44px; - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - --toolbar-height:48px; - } } } @@ -7259,16 +6866,6 @@ &::after{ border-width:var(--doorhanger-height); } - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - border-radius:var(--panel-border-radius); - border:1px solid var(--doorhanger-border-color); - box-shadow:var(--box-shadow-level-2); - - &::after, - &::before{ - display:none; - } - } } .doorHangerRight{ @@ -7282,9 +6879,6 @@ border-bottom-color:var(--doorhanger-bg-color); inset-inline-end:1px; } - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - inset-inline-end:0; - } } .doorHanger{ @@ -7298,10 +6892,6 @@ border-bottom-color:var(--toolbar-bg-color); inset-inline-start:1px; } - - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - inset-inline-start:0; - } } .splitToolbarButtonSeparator{ @@ -7390,10 +6980,6 @@ height:9px; width:9px; border-radius:50%; - - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - background-color:var(--color-accent-attention); - } } .verticalToolbarSeparator{ @@ -7454,19 +7040,6 @@ &:focus{ border-color:#0a84ff; } - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - border-radius:var(--border-radius-small); - padding:var(--space-xsmall) var(--space-small); - - &:focus{ - border-color:var(--field-border-color); - } - - &:focus-visible{ - outline:var(--focus-outline); - outline-offset:var(--focus-outline-inset); - } - } } #pageNumber{ @@ -7566,25 +7139,6 @@ dialog :link{ color:rgb(255 255 255); } -@media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - dialog:not(.dialog){ - padding:var(--space-large); - font-size:var(--font-size-small); - line-height:150%; - border-spacing:var(--space-xsmall); - background-color:var(--background-color-canvas); - border:1px solid var(--border-color); - box-shadow:var(--box-shadow-level-3); - - .separator{ - margin-block:var(--space-small); - } - - :link{ - color:var(--link-color); - } - } -} #passwordDialog{ text-align:center; @@ -7739,24 +7293,6 @@ height:auto; } } - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - border-radius:var(--button-border-radius); - - &:focus-visible{ - outline:var(--focus-outline); - outline-offset:var(--focus-outline-inset); - } - - &.toggled:hover:focus-visible{ - --toggled-hover-btn-outline:var(--focus-outline); - } - - &.labeled{ - border-radius:var(--panel-menuitem-border-radius); - gap:var(--space-small); - padding-inline-start:var(--space-small); - } - } } .toolbarButtonWithContainer{ @@ -7773,10 +7309,6 @@ .menu{ padding-block:5px; - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - padding-block:var(--space-small); - padding-inline:var(--space-small); - } } .menuContainer{ @@ -7830,11 +7362,6 @@ padding-inline:10px; padding-block:10px; - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - padding-inline:var(--space-medium); - padding-block:var(--space-medium); - } - > .editorParamsSetter{ min-height:26px; display:flex; @@ -7866,19 +7393,6 @@ &::-moz-range-thumb{ background-color:white; } - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - &::-moz-range-progress{ - background-color:var(--color-accent-primary); - } - - &::-moz-range-track{ - background-color:var(--border-color-interactive); - } - - &::-moz-range-thumb{ - background-color:var(--color-accent-primary); - } - } } } } @@ -7990,12 +7504,6 @@ box-sizing:border-box; flex-wrap:wrap; justify-content:flex-start; - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - --input-horizontal-padding:var(--space-medium); - - border-radius:var(--border-radius-medium); - padding-inline:var(--space-small); - } > *{ height:var(--toolbar-height); @@ -8029,13 +7537,6 @@ &[data-status="notFound"]{ background-color:rgb(255 102 102); - - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - background-color:var(--background-color-critical); - } - } - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - border-radius:var(--input-search-border-radius); } } } @@ -8052,10 +7553,6 @@ background-color:rgb(217 217 217); color:rgb(82 82 82); padding-block:4px; - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - background-color:var(--background-color-box-info); - color:var(--text-color-deemphasized); - } &:empty{ display:none; @@ -8167,10 +7664,6 @@ padding-inline:4px; margin:2px; border-radius:2px; - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - padding-inline:var(--space-small); - border-radius:var(--button-border-radius); - } color:var(--main-color); font-size:12px; @@ -8198,10 +7691,6 @@ justify-content:space-between; gap:1px; box-sizing:border-box; - - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - gap:var(--space-xxsmall); - } } .dropdownToolbarButton{ @@ -8273,73 +7762,10 @@ &:is(:hover, :focus-visible, :active)::after{ background-color:var(--toolbar-icon-hover-bg-color); } - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - overflow:hidden; - border:var(--button-border); - border-radius:var(--button-border-radius); - background-color:var(--button-background-color); - color:var(--button-text-color); - - &:is(:hover, :has(> select:open)){ - border-color:var(--border-color-interactive-hover); - background-color:var(--button-background-color-hover); - color:var(--button-text-color-hover); - } - - &:has(> select:focus-visible){ - outline:var(--focus-outline); - outline-offset:var(--focus-outline-offset); - } - - > select{ - height:auto; - min-height:var(--button-min-height); - border-radius:inherit; - padding-block:var(--button-padding-block); - padding-inline:var(--button-padding-inline) calc( - var(--button-padding-inline) + var(--icon-size) + var(--space-small) - ); - font-size:var(--font-size-root); - font-weight:var(--button-font-weight); - color:inherit; - background-color:var(--background-color-box); - - > option{ - color:var(--text-color); - font-weight:var(--font-weight); - } - - &:is(:hover, :focus-visible){ - background-color:var(--background-color-box); - color:inherit; - } - - &:focus-visible{ - outline:none; - } - } - - &:is(:hover, :has(> select:open)) > select{ - background-image:linear-gradient( - var(--button-background-color-hover), - var(--button-background-color-hover) - ); - } - - &::after, - &:is(:hover, :focus-visible, :active)::after{ - inset-inline-end:var(--button-padding-inline); - background-color:currentColor; - mask-image:var(--toolbarButton-menuArrowNova-icon); - } - } } #toolbarContainer{ --menuitem-height:calc(var(--toolbar-height) - 6px); - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - --menuitem-height:var(--size-item-large); - } width:100%; height:var(--toolbar-height); @@ -8372,9 +7798,6 @@ #toolbarViewerLeft{ margin-inline-start:8px; - @media -moz-pref("pdfjs.enableNova") and -moz-pref("browser.nova.enabled"){ - margin-inline-start:0; - } #numPages.toolbarLabel{ padding-inline-start:3px; diff -urN firefox-157.0-orig/toolkit/components/satchel/megalist/content/megalist.css firefox-157.0/toolkit/components/satchel/megalist/content/megalist.css --- firefox-157.0-orig/toolkit/components/satchel/megalist/content/megalist.css 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/components/satchel/megalist/content/megalist.css 2026-10-05 07:41:08 +0900 @@ -29,12 +29,6 @@ margin-block: var(--space-small); } -@media -moz-pref("browser.nova.enabled") { - .empty-state-card { - --card-padding: var(--space-medium); - } -} - .passwords-list { display: flex; flex-direction: column; diff -urN firefox-157.0-orig/toolkit/content/tests/chrome/chrome-nova.toml firefox-157.0/toolkit/content/tests/chrome/chrome-nova.toml --- firefox-157.0-orig/toolkit/content/tests/chrome/chrome-nova.toml 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/content/tests/chrome/chrome-nova.toml 1970-01-01 09:00:00 +0900 @@ -1,383 +0,0 @@ -[DEFAULT] -dupe-manifest = true -support-files = [ - "../widgets/popup_shared.js", - "../widgets/tree_shared.js", - "RegisterUnregisterChrome.js", - "bug263683_window.xhtml", - "bug304188_window.xhtml", - "bug331215_window.xhtml", - "bug360437_window.xhtml", - "bug366992_window.xhtml", - "bug409624_window.xhtml", - "bug429723_window.xhtml", - "bug624329_window.xhtml", - "dialog_button.xhtml", - "dialog_dialogfocus.xhtml", - "dialog_dialogfocus2.xhtml", - "file_empty.xhtml", - "file_edit_contextmenu.xhtml", - "file_about_networking_wsh.py", - "file_autocomplete_with_composition.js", - "file_editor_with_autocomplete.js", - "findbar_entireword_window.xhtml", - "findbar_events_window.xhtml", - "findbar_window.xhtml", - "frame_popup_anchor.xhtml", - "frame_subframe_origin_subframe1.xhtml", - "frame_subframe_origin_subframe2.xhtml", - "popup_trigger.js", - "sample_entireword_latin1.html", - "window_browser_drop.xhtml", - "window_keys.xhtml", - "window_largemenu.xhtml", - "window_panel.xhtml", - "window_panel_anchoradjust.xhtml", - "window_popup_anchor.xhtml", - "window_popup_anchoratrect.xhtml", - "window_popup_attribute.xhtml", - "window_popup_button.xhtml", - "window_popup_preventdefault_chrome.xhtml", - "window_preferences.xhtml", - "window_preferences2.xhtml", - "window_preferences3.xhtml", - "window_preferences_commandretarget.xhtml", - "window_preferences_disabled.xhtml", - "window_screenPosSize.xhtml", - "window_showcaret.xhtml", - "window_subframe_origin.xhtml", - "window_tooltip.xhtml", - "xul_selectcontrol.js", -] -prefs = [ - "gfx.font_rendering.fallback.async=false", - "browser.nova.enabled=true", -] - -["test_about_networking.html"] - -["test_arrowpanel.xhtml"] -skip-if = [ - "os == 'mac' && os_version == '14.70' && arch == 'x86_64'", # Bug 1929437 - "os == 'mac' && os_version == '15.30' && arch == 'aarch64'", # Bug 2023967 - "os == 'win' && os_version == '10.2009' && arch == 'x86_64'", # Bug 1727507 - "os == 'win' && os_version == '11.26100' && arch == 'x86'", # Bug 1797751 - "os == 'win' && os_version == '11.26200' && arch == 'x86'", # Bug 1797751 - "os == 'win' && os_version == '11.26100' && arch == 'x86_64'", # Bug 1797751 - "os == 'win' && os_version == '11.26200' && arch == 'x86_64'", # Bug 1797751 -] - -["test_autocomplete2.xhtml"] - -["test_autocomplete3.xhtml"] - -["test_autocomplete4.xhtml"] - -["test_autocomplete5.xhtml"] - -["test_autocomplete_emphasis.xhtml"] - -["test_autocomplete_mac_caret.xhtml"] -run-if = [ - "os == 'mac'", -] - -["test_autocomplete_placehold_last_complete.xhtml"] - -["test_autocomplete_with_composition_on_input.html"] -skip-if = [ - "os == 'mac' && os_version == '14.70' && arch == 'x86_64'", # Bug 1929437 -] - -["test_browser_drop.xhtml"] - -["test_bug263683.xhtml"] - -["test_bug304188.xhtml"] -skip-if = [ - "os == 'linux' && os_version == '24.04' && arch == 'x86_64' && display == 'x11' && debug", # Bug 1957808 - "os == 'mac' && os_version == '14.70' && arch == 'x86_64' && opt", # Bug 1957808 -] - -["test_bug331215.xhtml"] -skip-if = [ - "os == 'linux' && os_version == '24.04' && arch == 'x86_64' && display == 'x11'", # Bug 1582327 - "os == 'mac' && os_version == '14.70' && arch == 'x86_64' && opt", # Bug 1339326 #Bug 1582327 -] - -["test_bug360220.xhtml"] - -["test_bug360437.xhtml"] -skip-if = [ - "os == 'linux' && os_version == '24.04' && arch == 'x86_64' && display == 'x11'", # Bug 1784826 -] - -["test_bug365773.xhtml"] - -["test_bug366992.xhtml"] - -["test_bug382990.xhtml"] - -["test_bug409624.xhtml"] - -["test_bug418874.xhtml"] - -["test_bug429723.xhtml"] - -["test_bug451540.xhtml"] -support-files = ["bug451540_window.xhtml"] - -["test_bug457632.xhtml"] - -["test_bug460942.xhtml"] - -["test_bug471776.xhtml"] - -["test_bug509732.xhtml"] - -["test_bug557987.xhtml"] - -["test_bug562554.xhtml"] - -["test_bug624329.xhtml"] -skip-if = [ - "os == 'linux' && os_version == '24.04' && arch == 'x86_64' && display == 'x11'", # Bug 1600194 -] - -["test_bug792324.xhtml"] - -["test_button.xhtml"] - -["test_checkbox.xhtml"] - -["test_closemenu_attribute.xhtml"] - -["test_contextmenu_list.xhtml"] - -["test_contextmenu_rtl.xhtml"] - -["test_cursorsnap.xhtml"] -disabled = true -#skip-if = os != 'win' -support-files = [ - "window_cursorsnap_dialog.xhtml", - "window_cursorsnap_wizard.xhtml", -] - -["test_custom_element_base.xhtml"] - -["test_custom_element_delay_connection.xhtml"] - -["test_custom_element_parts.html"] - -["test_deck.xhtml"] - -["test_dialog_button.xhtml"] - -["test_dialogfocus.xhtml"] - -["test_edit_contextmenu.html"] - -["test_editor_for_input_with_autocomplete.html"] - -["test_findbar.xhtml"] -skip-if = [ - "os == 'mac' && os_version == '14.70' && arch == 'x86_64' && opt", # Bug 1929437 -] - -["test_findbar_entireword.xhtml"] - -["test_findbar_events.xhtml"] - -["test_frames.xhtml"] - -["test_hiddenitems.xhtml"] - -["test_hiddenpaging.xhtml"] - -["test_keys.xhtml"] - -["test_labelcontrol.xhtml"] - -["test_largemenu.html"] - -["test_maximized_persist.xhtml"] -support-files = [ - "window_maximized_persist.xhtml", - "file_maximized_persist.js", -] -skip-if = [ - "os == 'linux' && os_version == '24.04' && arch == 'x86_64' && display == 'x11'", # Bug 1968560 -] - -["test_maximized_persist_with_no_titlebar.xhtml"] -support-files = [ - "window_maximized_persist_with_no_titlebar.xhtml", - "file_maximized_persist.js", -] -skip-if = [ - "os == 'linux' && os_version == '24.04' && arch == 'x86_64' && display == 'x11'", # Bug 1968560 -] - -["test_menu.xhtml"] - -["test_menu_activateitem.xhtml"] - -["test_menu_hide.xhtml"] - -["test_menu_mouse_menuactive.xhtml"] - -["test_menu_withcapture.xhtml"] - -["test_menuchecks.xhtml"] - -["test_menuitem_blink.xhtml"] - -["test_menuitem_commands.xhtml"] - -["test_menulist.xhtml"] -skip-if = [ - "os == 'mac' && os_version == '15.30' && arch == 'aarch64'", # Bug 2034604 -] - -["test_menulist_in_popup.xhtml"] - -["test_menulist_initial_selection.xhtml"] - -["test_menulist_initial_selection_with_connected_callback.xhtml"] - -["test_menulist_keynav.xhtml"] - -["test_menulist_null_value.xhtml"] - -["test_menulist_paging.xhtml"] - -["test_menulist_position.xhtml"] - -["test_mousescroll.xhtml"] - -["test_mozinputbox_dictionary.xhtml"] - -["test_named_deck.html"] - -["test_navigate_persist.html"] -support-files = ["window_navigate_persist.html"] - -["test_notificationbox.xhtml"] - -["test_panel.xhtml"] -skip-if = [ - "os == 'mac' && os_version == '14.70' && arch == 'x86_64'", # Bug 1929437 - "os == 'mac' && os_version == '15.30' && arch == 'aarch64'", # Bug 2023967 -] - -["test_panel_anchoradjust.xhtml"] - -# test_panel_focus.xhtml won't work if the Full Keyboard Access preference is set to -# textboxes and lists only, so skip this test on Mac - -["test_panel_focus.xhtml"] -support-files = "window_panel_focus.xhtml" - -["test_panel_hover_menu.xhtml"] - -["test_panel_open.xhtml"] - -["test_panelfrommenu.xhtml"] - -["test_popup_anchor.xhtml"] - -["test_popup_anchoratrect.xhtml"] - -["test_popup_attribute.xhtml"] - -["test_popup_button.xhtml"] - -["test_popup_coords.xhtml"] - -["test_popup_keys.xhtml"] - -["test_popup_moveToAnchor.xhtml"] - -["test_popup_preventdefault.xhtml"] - -["test_popup_preventdefault_chrome.xhtml"] - -["test_popup_recreate.xhtml"] - -["test_popup_scaled.xhtml"] - -["test_popup_tree.xhtml"] - -["test_popup_triggerEvent.xhtml"] - -["test_popuphidden.xhtml"] - -["test_popupincontent.xhtml"] -skip-if = [ - "os == 'win' && standalone", # Bug 2026600 -] - -["test_popupremoving.xhtml"] - -["test_position.xhtml"] - -["test_preferences.xhtml"] - -["test_preferencesBindings_async_setting.html"] - -["test_preferencesBindings_setting.html"] - -["test_preferencesBindings_setting_setup_teardown.html"] - -["test_preferences_beforeaccept.xhtml"] -support-files = ["window_preferences_beforeaccept.xhtml"] - -["test_preferences_onsyncfrompreference.xhtml"] -support-files = ["window_preferences_onsyncfrompreference.xhtml"] - -["test_props.xhtml"] - -["test_radio.xhtml"] - -["test_richlistbox.xhtml"] - -["test_screenPersistence.xhtml"] - -["test_scroll_offsets.html"] - -["test_showcaret.xhtml"] - -["test_subframe_origin.xhtml"] - -["test_tabbox.xhtml"] - -["test_tabindex.xhtml"] - -["test_tooltip.xhtml"] -skip-if = [ - "os == 'mac' && os_version == '14.70' && arch == 'x86_64'", # Bug 1929437 - "os == 'mac' && os_version == '15.30' && arch == 'aarch64'", # Bug 2030058 -] - -["test_tooltip_noautohide.xhtml"] -skip-if = [ - "os == 'mac' && os_version == '15.30' && arch == 'aarch64'", # Bug 2030058 -] - -["test_tree.xhtml"] - -["test_tree_hier.xhtml"] - -["test_tree_scroll.xhtml"] -support-files = [ - "!/gfx/layers/apz/test/mochitest/apz_test_utils.js", - "!/gfx/layers/apz/test/mochitest/apz_test_native_event_utils.js", -] - -["test_tree_single.xhtml"] - -["test_tree_view.xhtml"] - -["test_window_intrinsic_size.xhtml"] -support-files = ["window_intrinsic_size.xhtml"] diff -urN firefox-157.0-orig/toolkit/content/tests/chrome/chrome.toml firefox-157.0/toolkit/content/tests/chrome/chrome.toml --- firefox-157.0-orig/toolkit/content/tests/chrome/chrome.toml 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/content/tests/chrome/chrome.toml 2026-10-05 07:50:03 +0900 @@ -51,7 +51,6 @@ ] prefs = [ "gfx.font_rendering.fallback.async=false", - "browser.nova.enabled=false", ] ["test_about_networking.html"] diff -urN firefox-157.0-orig/toolkit/content/tests/moz.build firefox-157.0/toolkit/content/tests/moz.build --- firefox-157.0-orig/toolkit/content/tests/moz.build 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/content/tests/moz.build 2026-10-05 07:50:48 +0900 @@ -11,9 +11,7 @@ ] MOCHITEST_CHROME_MANIFESTS += [ - "chrome/chrome-nova.toml", "chrome/chrome.toml", - "widgets/chrome-nova.toml", "widgets/chrome.toml", ] diff -urN firefox-157.0-orig/toolkit/content/tests/widgets/chrome-nova.toml firefox-157.0/toolkit/content/tests/widgets/chrome-nova.toml --- firefox-157.0-orig/toolkit/content/tests/widgets/chrome-nova.toml 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/content/tests/widgets/chrome-nova.toml 1970-01-01 09:00:00 +0900 @@ -1,164 +0,0 @@ -[DEFAULT] -dupe-manifest = true -support-files = [ - "tree_shared.js", - "popup_shared.js", - "window_label_checkbox.xhtml", - "window_menubar.xhtml", - "seek_with_sound.webm", - "lit-test-helpers.js", -] -prefs = [ - "app.support.baseURL='https://support.mozilla.org/'", - "browser.nova.enabled=true", -] - -["test_contextmenu_menugroup.xhtml"] -skip-if = [ - "debug && standalone", # Bug 2026600 -] - -["test_contextmenu_nested.xhtml"] - -["test_editor_currentURI.xhtml"] - -["test_label_checkbox.xhtml"] - -["test_menubar.xhtml"] -skip-if = [ - "os == 'mac' && os_version == '14.70' && arch == 'x86_64'", # Bug 1933983 - "os == 'mac' && os_version == '15.30' && arch == 'aarch64'", # Bug 2023967 -] - -["test_moz_badge.html"] - -["test_moz_base_input_element.html"] - -["test_moz_box_button.html"] - -["test_moz_box_group.html"] - -["test_moz_box_item.html"] - -["test_moz_box_link.html"] - -["test_moz_breadcrumb.html"] - -["test_moz_breadcrumb_group.html"] - -["test_moz_button.html"] - -["test_moz_button_group.html"] - -["test_moz_card.html"] - -["test_moz_checkbox.html"] - -["test_moz_fieldset.html"] - -["test_moz_five_star.html"] - -["test_moz_input_color.html"] - -["test_moz_input_elems_in_form.html"] - -["test_moz_input_email.html"] - -["test_moz_input_folder.html"] - -["test_moz_input_number.html"] - -["test_moz_input_password.html"] - -["test_moz_input_search.html"] - -["test_moz_input_tel.html"] - -["test_moz_input_text.html"] - -["test_moz_input_url.html"] - -["test_moz_label.html"] - -["test_moz_lit_element.html"] - -["test_moz_message_bar.html"] - -["test_moz_page_header.html"] - -["test_moz_page_nav.html"] - -["test_moz_promo.html"] - -["test_moz_radio.html"] - -["test_moz_radio_group.html"] - -["test_moz_reorderable_list.html"] - -["test_moz_select.html"] -skip-if = [ - "os == 'linux' && os_version == '24.04' && arch == 'x86_64' && display == 'x11'", # Bug 1997197 - "os == 'win' && os_version == '10.2009' && arch == 'x86_64' && debug", # Bug 1997197 - "os == 'win' && os_version == '11.26100' && arch == 'x86' && debug", # Bug 1997197 - "os == 'win' && os_version == '11.26100' && arch == 'x86_64' && debug", # Bug 1997197 - "os == 'win' && os_version == '11.26200' && arch == 'x86' && debug", # Bug 1997197 - "os == 'win' && os_version == '11.26200' && arch == 'x86_64' && debug", # Bug 1997197 -] - -["test_moz_select_panel.html"] - -["test_moz_support_link.html"] - -["test_moz_textarea.html"] - -["test_moz_toggle.html"] - -["test_moz_visual_picker.html"] -support-files = [ - "../../../../accessible/tests/mochitest/common.js", - "../../../../accessible/tests/mochitest/name.js", -] - -["test_panel_item_accesskey.html"] - -["test_panel_item_badge.html"] - -["test_panel_item_checkbox.html"] - -["test_panel_item_disabled.html"] - -["test_panel_item_mouseup_click.html"] - -["test_panel_list_accessibility.html"] - -["test_panel_list_anchoring.html"] - -["test_panel_list_contextmenu.html"] - -["test_panel_list_in_xul_panel.html"] - -["test_panel_list_min_width_from_anchor.html"] - -["test_panel_list_popover.html"] - -["test_popupanchor.xhtml"] -skip-if = [ - "os == 'win' && standalone", # Bug 2026600 -] - -["test_popupreflows.xhtml"] - -["test_segmented_control.html"] - -["test_theme_picker.html"] - -["test_tree_column_reorder.xhtml"] - -["test_videocontrols_focus.html"] -support-files = [ - "head.js", - "video.webm", -] - -["test_videocontrols_onclickplay.html"] diff -urN firefox-157.0-orig/toolkit/content/tests/widgets/chrome.toml firefox-157.0/toolkit/content/tests/widgets/chrome.toml --- firefox-157.0-orig/toolkit/content/tests/widgets/chrome.toml 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/content/tests/widgets/chrome.toml 2026-10-05 07:51:16 +0900 @@ -10,7 +10,6 @@ ] prefs = [ "app.support.baseURL='https://support.mozilla.org/'", - "browser.nova.enabled=false", ] ["test_contextmenu_menugroup.xhtml"] diff -urN firefox-157.0-orig/toolkit/content/widgets/infobar.css firefox-157.0/toolkit/content/widgets/infobar.css --- firefox-157.0-orig/toolkit/content/widgets/infobar.css 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/content/widgets/infobar.css 2026-10-05 07:53:33 +0900 @@ -66,36 +66,6 @@ } } -@media -moz-pref("browser.nova.enabled") { - :host(.infobar) { - --info-bar-background-color: transparent; - --info-bar-box-shadow: none; - --message-bar-icon-container-padding: 0px; - --message-bar-icon-container-margin-block-start: calc(var(--space-small) + var(--border-width)); - - border-width: 0; - border-radius: 0; - border-block-start: var(--border-width) solid var(--info-bar-border-color); - - .icon-container { - background-color: transparent; - align-self: flex-start; - } - } - - @media (prefers-contrast) { - :host([message-bar-type="infobar"]:last-of-type) { - border-end-start-radius: var(--border-radius-medium); - border-end-end-radius: var(--border-radius-medium); - overflow-y: clip; - } - } - - :host(.infobar)::before { - display: none; - } -} - :host([message-bar-type="infobar"]:first-of-type) { margin-block-start: var(--info-bar-margin-block-start); } diff -urN firefox-157.0-orig/toolkit/content/widgets/moz-badge/moz-badge.tokens.css firefox-157.0/toolkit/content/widgets/moz-badge/moz-badge.tokens.css --- firefox-157.0-orig/toolkit/content/widgets/moz-badge/moz-badge.tokens.css 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/content/widgets/moz-badge/moz-badge.tokens.css 2026-10-05 07:53:27 +0900 @@ -5,7 +5,7 @@ /* DO NOT EDIT this file directly, instead modify moz-badge.tokens.json * and run `mach buildtokens` to see your changes. */ -@layer tokens-foundation, tokens-browser-theme, tokens-foundation-brand, tokens-foundation-nova, tokens-browser-theme-nova, tokens-foundation-brand-nova, tokens-prefers-contrast, tokens-prefers-contrast-nova, tokens-forced-colors, tokens-forced-colors-nova; +@layer tokens-foundation, tokens-browser-theme, tokens-foundation-brand, tokens-prefers-contrast, tokens-forced-colors; :root, :host { @@ -32,23 +32,4 @@ --badge-text-color-filled: AccentColorText; } } - - @media -moz-pref("browser.nova.enabled") { - @layer tokens-foundation-nova { - --badge-background-color-filled: light-dark(var(--color-green-50), var(--color-green-20)); - --badge-border-color: light-dark(rgba(21, 20, 26, 0.4), rgba(251, 251, 254, 0.4)); - --badge-border-radius: var(--border-radius-circle); - --badge-padding-block: 1px; - --badge-padding-inline: calc(var(--space-xsmall) + var(--space-xxsmall)); - --badge-text-color: var(--text-color); - --badge-text-color-filled: var(--button-text-color-primary); - } - - @layer tokens-forced-colors-nova { - @media (forced-colors) { - --badge-background-color-filled: AccentColor; - --badge-border-color: CanvasText; - } - } - } } diff -urN firefox-157.0-orig/toolkit/content/widgets/moz-input-color/moz-input-color.tokens.css firefox-157.0/toolkit/content/widgets/moz-input-color/moz-input-color.tokens.css --- firefox-157.0-orig/toolkit/content/widgets/moz-input-color/moz-input-color.tokens.css 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/content/widgets/moz-input-color/moz-input-color.tokens.css 2026-10-05 07:54:09 +0900 @@ -5,7 +5,7 @@ /* DO NOT EDIT this file directly, instead modify moz-input-color.tokens.json * and run `mach buildtokens` to see your changes. */ -@layer tokens-foundation, tokens-browser-theme, tokens-foundation-brand, tokens-foundation-nova, tokens-browser-theme-nova, tokens-foundation-brand-nova, tokens-prefers-contrast, tokens-prefers-contrast-nova, tokens-forced-colors, tokens-forced-colors-nova; +@layer tokens-foundation, tokens-browser-theme, tokens-foundation-brand, tokens-prefers-contrast, tokens-forced-colors; :root, :host { @@ -27,19 +27,4 @@ --input-color-text-color-hover: var(--button-text-color-hover); --input-color-text-color-active: var(--button-text-color-active); } - - @media -moz-pref("browser.nova.enabled") { - @layer tokens-foundation-nova { - --input-color-background-color: var(--button-background-color); - --input-color-background-color-hover: var(--button-background-color-hover); - --input-color-background-color-active: light-dark(var(--button-background-color-active), var(--color-violet-desaturated-60)); - --input-color-space-padding-inline: var(--space-small); - } - - @layer tokens-forced-colors-nova { - @media (forced-colors) { - --input-color-background-color-active: var(--button-background-color-active); - } - } - } } diff -urN firefox-157.0-orig/toolkit/content/widgets/moz-message-bar/moz-message-bar.tokens.css firefox-157.0/toolkit/content/widgets/moz-message-bar/moz-message-bar.tokens.css --- firefox-157.0-orig/toolkit/content/widgets/moz-message-bar/moz-message-bar.tokens.css 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/content/widgets/moz-message-bar/moz-message-bar.tokens.css 2026-10-05 07:53:04 +0900 @@ -5,7 +5,7 @@ /* DO NOT EDIT this file directly, instead modify moz-message-bar.tokens.json * and run `mach buildtokens` to see your changes. */ -@layer tokens-foundation, tokens-browser-theme, tokens-foundation-brand, tokens-foundation-nova, tokens-browser-theme-nova, tokens-foundation-brand-nova, tokens-prefers-contrast, tokens-prefers-contrast-nova, tokens-forced-colors, tokens-forced-colors-nova; +@layer tokens-foundation, tokens-browser-theme, tokens-foundation-brand, tokens-prefers-contrast, tokens-forced-colors; :root, :host { @@ -50,28 +50,4 @@ --message-bar-border-color: var(--border-color); } } - - @media -moz-pref("browser.nova.enabled") { - @layer tokens-foundation-nova { - --message-bar-background-color: var(--background-color-box); - --message-bar-background-color-critical: var(--message-bar-background-color); - --message-bar-background-color-success: var(--message-bar-background-color); - --message-bar-background-color-warning: var(--message-bar-background-color); - --message-bar-container-padding-inline: 8px; - --message-bar-icon-container-border: 1px solid var(--message-bar-icon-container-border-color); - --message-bar-icon-container-border-color: transparent; - --message-bar-icon-container-height: var(--message-bar-icon-size); - --message-bar-icon-container-margin-block-start: 0px; - --message-bar-icon-container-margin-block-start-offset: 0px; - --message-bar-icon-container-padding: var(--space-small); - --message-bar-icon-container-padding-offset: 1px; - --message-bar-text-container-padding-block: 0; - } - - @layer tokens-forced-colors-nova { - @media (forced-colors) { - --message-bar-icon-container-border-color: var(--message-bar-icon-color); - } - } - } } diff -urN firefox-157.0-orig/toolkit/content/widgets/moz-page-nav/moz-page-nav.tokens.css firefox-157.0/toolkit/content/widgets/moz-page-nav/moz-page-nav.tokens.css --- firefox-157.0-orig/toolkit/content/widgets/moz-page-nav/moz-page-nav.tokens.css 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/content/widgets/moz-page-nav/moz-page-nav.tokens.css 2026-10-05 07:54:21 +0900 @@ -5,7 +5,7 @@ /* DO NOT EDIT this file directly, instead modify moz-page-nav.tokens.json * and run `mach buildtokens` to see your changes. */ -@layer tokens-foundation, tokens-browser-theme, tokens-foundation-brand, tokens-foundation-nova, tokens-browser-theme-nova, tokens-foundation-brand-nova, tokens-prefers-contrast, tokens-prefers-contrast-nova, tokens-forced-colors, tokens-forced-colors-nova; +@layer tokens-foundation, tokens-browser-theme, tokens-foundation-brand, tokens-prefers-contrast, tokens-forced-colors; :root, :host { @@ -37,29 +37,4 @@ --page-nav-margin-block-start: var(--page-space-block-start); --page-nav-margin-inline-start: 40px; } - - @media -moz-pref("browser.nova.enabled") { - @layer tokens-foundation-nova { - --page-nav-button-background-color-hover: var(--button-background-color-hover); - --page-nav-button-background-color-active: var(--button-background-color-active); - --page-nav-button-background-color-selected: var(--color-accent-primary); - --page-nav-button-border-color: var(--border-color-transparent); - --page-nav-button-border-radius: var(--border-radius-circle); - --page-nav-button-border-radius-focused: var(--border-radius-circle); - --page-nav-button-indicator-background-color: transparent; - --page-nav-button-indicator-width: 0; - --page-nav-button-padding: var(--space-medium); - --page-nav-button-padding-small: var(--space-medium); - --page-nav-button-text-color-selected: var(--button-text-color-primary); - --page-nav-focus-outline-offset: var(--focus-outline-offset); - --page-nav-focus-padding: calc(var(--focus-outline-offset) + var(--focus-outline-width)); - --page-nav-hr-background-color: var(--border-color-deemphasized); - } - - @layer tokens-forced-colors-nova { - @media (forced-colors) { - --page-nav-button-border-color: ButtonText; - } - } - } } diff -urN firefox-157.0-orig/toolkit/content/widgets/moz-promo/moz-promo.tokens.css firefox-157.0/toolkit/content/widgets/moz-promo/moz-promo.tokens.css --- firefox-157.0-orig/toolkit/content/widgets/moz-promo/moz-promo.tokens.css 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/content/widgets/moz-promo/moz-promo.tokens.css 2026-10-05 07:51:31 +0900 @@ -5,7 +5,7 @@ /* DO NOT EDIT this file directly, instead modify moz-promo.tokens.json * and run `mach buildtokens` to see your changes. */ -@layer tokens-foundation, tokens-browser-theme, tokens-foundation-brand, tokens-foundation-nova, tokens-browser-theme-nova, tokens-foundation-brand-nova, tokens-prefers-contrast, tokens-prefers-contrast-nova, tokens-forced-colors, tokens-forced-colors-nova; +@layer tokens-foundation, tokens-browser-theme, tokens-foundation-brand, tokens-prefers-contrast, tokens-forced-colors; :root, :host { @@ -32,20 +32,4 @@ --promo-border-color: var(--border-color); } } - - @media -moz-pref("browser.nova.enabled") { - @layer tokens-foundation-nova { - --promo-background-color: var(--background-color-box-info); - --promo-background-color-vibrant: light-dark(var(--color-violet-desaturated-10), var(--color-violet-desaturated-70)); - --promo-border-color: color-mix(in lch, currentColor 12%, transparent); - --promo-border-color-vibrant: var(--promo-border-color); - } - - @layer tokens-forced-colors-nova { - @media (forced-colors) { - --promo-background-color-vibrant: Canvas; - --promo-border-color: CanvasText; - } - } - } } diff -urN firefox-157.0-orig/toolkit/content/widgets/moz-select/moz-select.tokens.css firefox-157.0/toolkit/content/widgets/moz-select/moz-select.tokens.css --- firefox-157.0-orig/toolkit/content/widgets/moz-select/moz-select.tokens.css 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/content/widgets/moz-select/moz-select.tokens.css 2026-10-05 07:53:14 +0900 @@ -5,7 +5,7 @@ /* DO NOT EDIT this file directly, instead modify moz-select.tokens.json * and run `mach buildtokens` to see your changes. */ -@layer tokens-foundation, tokens-browser-theme, tokens-foundation-brand, tokens-foundation-nova, tokens-browser-theme-nova, tokens-foundation-brand-nova, tokens-prefers-contrast, tokens-prefers-contrast-nova, tokens-forced-colors, tokens-forced-colors-nova; +@layer tokens-foundation, tokens-browser-theme, tokens-foundation-brand, tokens-prefers-contrast, tokens-forced-colors; :root, :host { @@ -35,18 +35,4 @@ --select-text-color-hover: var(--button-text-color-hover); --select-text-color-disabled: var(--button-text-color-disabled); } - - @media -moz-pref("browser.nova.enabled") { - @layer tokens-foundation-nova { - --select-border-color: var(--border-color-interactive); - --select-border-color-hover: var(--border-color-interactive-hover); - --select-border-color-disabled: var(--border-color-interactive-disabled); - --select-font-size: var(--font-size-root); - --select-font-size-small: var(--font-size-small); - --select-min-height-small: var(--button-min-height-small); - --select-padding-block: var(--button-padding-block); - --select-space-inline: var(--button-padding-inline); - --select-space-inline-small: var(--space-medium); - } - } } diff -urN firefox-157.0-orig/toolkit/content/widgets/moz-toggle/moz-toggle.tokens.css firefox-157.0/toolkit/content/widgets/moz-toggle/moz-toggle.tokens.css --- firefox-157.0-orig/toolkit/content/widgets/moz-toggle/moz-toggle.tokens.css 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/content/widgets/moz-toggle/moz-toggle.tokens.css 2026-10-05 07:54:32 +0900 @@ -5,7 +5,7 @@ /* DO NOT EDIT this file directly, instead modify moz-toggle.tokens.json * and run `mach buildtokens` to see your changes. */ -@layer tokens-foundation, tokens-browser-theme, tokens-foundation-brand, tokens-foundation-nova, tokens-browser-theme-nova, tokens-foundation-brand-nova, tokens-prefers-contrast, tokens-prefers-contrast-nova, tokens-forced-colors, tokens-forced-colors-nova; +@layer tokens-foundation, tokens-browser-theme, tokens-foundation-brand, tokens-prefers-contrast, tokens-forced-colors; :root, :host { @@ -52,19 +52,4 @@ --toggle-dot-background-color-on-pressed: var(--button-background-color); } } - - @media -moz-pref("browser.nova.enabled") { - @layer tokens-foundation-nova { - --toggle-background-color-pressed: var(--button-background-color-primary); - --toggle-background-color-pressed-hover: var(--button-background-color-primary-hover); - --toggle-background-color-pressed-active: var(--button-background-color-primary-active); - --toggle-border-color: var(--border-color-interactive); - --toggle-border-color-hover: var(--border-color-interactive-hover); - --toggle-border-color-active: var(--border-color-interactive-active); - --toggle-dot-background-color: var(--toggle-border-color); - --toggle-dot-background-color-hover: var(--toggle-border-color-hover); - --toggle-dot-background-color-active: var(--toggle-border-color-active); - --toggle-dot-background-color-on-pressed: var(--background-color-box); - } - } } diff -urN firefox-157.0-orig/toolkit/content/widgets/panel-list/panel-item.tokens.css firefox-157.0/toolkit/content/widgets/panel-list/panel-item.tokens.css --- firefox-157.0-orig/toolkit/content/widgets/panel-list/panel-item.tokens.css 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/content/widgets/panel-list/panel-item.tokens.css 2026-10-05 07:52:48 +0900 @@ -5,7 +5,7 @@ /* DO NOT EDIT this file directly, instead modify panel-item.tokens.json * and run `mach buildtokens` to see your changes. */ -@layer tokens-foundation, tokens-browser-theme, tokens-foundation-brand, tokens-foundation-nova, tokens-browser-theme-nova, tokens-foundation-brand-nova, tokens-prefers-contrast, tokens-prefers-contrast-nova, tokens-forced-colors, tokens-forced-colors-nova; +@layer tokens-foundation, tokens-browser-theme, tokens-foundation-brand, tokens-prefers-contrast, tokens-forced-colors; :root, :host { @@ -19,16 +19,4 @@ --panel-item-button-padding-inline-start-offset: 0px; --panel-item-fill: currentColor; } - - @media -moz-pref("browser.nova.enabled") { - @layer tokens-foundation-nova { - --panel-item-badge-inset-block-start: var(--space-xsmall); - --panel-item-badge-inset-inline-start: calc(var(--panel-menuitem-padding-inline) + var(--icon-size)); - --panel-item-button-border-radius: var(--panel-menuitem-border-radius); - --panel-item-button-margin: var(--panel-menuitem-margin); - --panel-item-button-padding: var(--panel-menuitem-padding); - --panel-item-button-padding-inline-start: calc(var(--panel-menuitem-padding-inline) + var(--icon-size)); - --panel-item-button-padding-inline-start-offset: var(--space-small); - } - } } diff -urN firefox-157.0-orig/toolkit/content/widgets/panel-list/panel-list.tokens.css firefox-157.0/toolkit/content/widgets/panel-list/panel-list.tokens.css --- firefox-157.0-orig/toolkit/content/widgets/panel-list/panel-list.tokens.css 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/content/widgets/panel-list/panel-list.tokens.css 2026-10-05 07:52:33 +0900 @@ -5,7 +5,7 @@ /* DO NOT EDIT this file directly, instead modify panel-list.tokens.json * and run `mach buildtokens` to see your changes. */ -@layer tokens-foundation, tokens-browser-theme, tokens-foundation-brand, tokens-foundation-nova, tokens-browser-theme-nova, tokens-foundation-brand-nova, tokens-prefers-contrast, tokens-prefers-contrast-nova, tokens-forced-colors, tokens-forced-colors-nova; +@layer tokens-foundation, tokens-browser-theme, tokens-foundation-brand, tokens-prefers-contrast, tokens-forced-colors; :root, :host { @@ -16,11 +16,4 @@ --panel-list-box-shadow: var(--popup-box-shadow); --panel-list-text-color: var(--text-color); } - - @media -moz-pref("browser.nova.enabled") { - @layer tokens-foundation-nova { - --panel-list-border-color: var(--panel-border-color); - --panel-list-box-shadow: var(--panel-box-shadow); - } - } } diff -urN firefox-157.0-orig/toolkit/modules/LightweightThemeConsumer.sys.mjs firefox-157.0/toolkit/modules/LightweightThemeConsumer.sys.mjs --- firefox-157.0-orig/toolkit/modules/LightweightThemeConsumer.sys.mjs 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/modules/LightweightThemeConsumer.sys.mjs 2026-10-05 07:34:13 +0900 @@ -240,14 +240,6 @@ XPCOMUtils.defineLazyPreferenceGetter( this, - "BROWSER_NOVA_ENABLED", - "browser.nova.enabled", - false, - () => this._update(this._lastData) - ); - - XPCOMUtils.defineLazyPreferenceGetter( - this, "_toolbarTheme", "browser.theme.toolbar-theme", 2, @@ -345,7 +337,7 @@ !!lazy.BuiltInThemeConfig.get(themeId)?.inApp; if (this._isAIWindow) { - const useNova = this.BROWSER_NOVA_ENABLED; + const useNova = false; const cachedData = useNova ? manager.aiNovaThemeData : manager.aiThemeData; @@ -365,7 +357,7 @@ } } else if ( shouldMakePrivateWindowDark && - this.BROWSER_NOVA_ENABLED && + false && isDefaultOrInApp ) { // When in a private window, with nova enabled and any of the in-app themes active, diff -urN firefox-157.0-orig/toolkit/modules/RemotePageAccessManager.sys.mjs firefox-157.0/toolkit/modules/RemotePageAccessManager.sys.mjs --- firefox-157.0-orig/toolkit/modules/RemotePageAccessManager.sys.mjs 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/modules/RemotePageAccessManager.sys.mjs 2026-10-05 07:32:10 +0900 @@ -179,7 +179,6 @@ RPMRemoveMessageListener: ["*"], RPMGetFormatURLPref: ["app.support.baseURL"], RPMIsWindowPrivate: ["*"], - RPMGetBoolPref: ["browser.nova.enabled"], }, "about:deleteprofile": { RPMSendQuery: ["Profiles:GetDeleteProfileContent"], diff -urN firefox-157.0-orig/toolkit/mozapps/extensions/content/aboutaddons-utils.mjs firefox-157.0/toolkit/mozapps/extensions/content/aboutaddons-utils.mjs --- firefox-157.0-orig/toolkit/mozapps/extensions/content/aboutaddons-utils.mjs 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/mozapps/extensions/content/aboutaddons-utils.mjs 2026-10-05 07:36:17 +0900 @@ -48,13 +48,6 @@ false ); -XPCOMUtils.defineLazyPreferenceGetter( - lazy, - "BROWSER_NOVA_ENABLED", - "browser.nova.enabled", - false -); - export const UPDATES_RECENT_TIMESPAN = 2 * 24 * 3600000; // 2 days (in milliseconds) export const HTML_NS = "http://www.w3.org/1999/xhtml"; @@ -102,7 +95,7 @@ } export function isBrowserNovaEnabled() { - return lazy.BROWSER_NOVA_ENABLED; + return false; } export function getBrowserElement() { @@ -750,7 +743,7 @@ switch (addon.id) { case "default-theme@mozilla.org": return { - url: lazy.BROWSER_NOVA_ENABLED + url: false ? DEFAULT_THEME_PREVIEW_NOVA_URL : DEFAULT_THEME_PREVIEW_URL, colorScheme: getThemesModeColorScheme(), @@ -760,7 +753,7 @@ // TODO: When removing this branch, also remove // browser/themes/addons/{light,dark}/preview.svg, which would become // unused. - if (lazy.BROWSER_NOVA_ENABLED) { + if (false) { const colorScheme = addon.id == "firefox-compact-light@mozilla.org" ? "light" : "dark"; return { diff -urN firefox-157.0-orig/toolkit/mozapps/extensions/content/aboutaddons.css firefox-157.0/toolkit/mozapps/extensions/content/aboutaddons.css --- firefox-157.0-orig/toolkit/mozapps/extensions/content/aboutaddons.css 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/mozapps/extensions/content/aboutaddons.css 2026-10-05 08:00:41 +0900 @@ -161,18 +161,14 @@ addon-page-header[current-view="list"][type="theme"] & { display: block; - @media not -moz-pref("browser.nova.enabled") { display: none; - } } } aboutaddons-themes-picker { display: block; - @media not -moz-pref("browser.nova.enabled") { display: none; - } } /* Hide addon-card description in themes list view */ @@ -840,26 +836,3 @@ background-color: var(--color-accent-primary); } } - -@media -moz-pref("browser.nova.enabled") { - [is="recommended-footer"] > .amo-link-container, - [is="recommended-extensions-footer"] > .amo-link-container, - [is="recommended-themes-footer"] > .amo-link-container, - [is="recommended-themes-footer"] > .theme-recommendation, - #empty-addons-message { - display: none; - } - - addon-list:not([type="extension"]) #empty-addons-promo { - display: none; - } - - [is="recommended-themes-footer"] > addons-promo { - /* themes cards in the themes listview have a card-wide theme preview - * instead of a left aligned icon as the extensions cards in the - * extensions listview, and so we set the addons-promo inline text - * padding variable to 0 to align the addons-promo text with the theme - * name in the theme cards right above it. */ - --addons-promo-text-padding-inline: 0; - } -} diff -urN firefox-157.0-orig/toolkit/mozapps/extensions/content/components/addons-promo.css firefox-157.0/toolkit/mozapps/extensions/content/components/addons-promo.css --- firefox-157.0-orig/toolkit/mozapps/extensions/content/components/addons-promo.css 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/mozapps/extensions/content/components/addons-promo.css 2026-10-05 08:00:27 +0900 @@ -13,11 +13,9 @@ font-size: var(--font-size-small); } -@media not -moz-pref("browser.nova.enabled") { :host { display: none; } -} moz-card { --card-padding: var(--addons-promo-padding); diff -urN firefox-157.0-orig/toolkit/mozapps/extensions/internal/ThemesBundledLocalization.sys.mjs firefox-157.0/toolkit/mozapps/extensions/internal/ThemesBundledLocalization.sys.mjs --- firefox-157.0-orig/toolkit/mozapps/extensions/internal/ThemesBundledLocalization.sys.mjs 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/mozapps/extensions/internal/ThemesBundledLocalization.sys.mjs 2026-10-05 08:01:24 +0900 @@ -6,7 +6,6 @@ import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs"; const DEFAULT_THEME_ID = "default-theme@mozilla.org"; -const PREF_NOVA_ENABLED = "browser.nova.enabled"; const lazy = XPCOMUtils.declareLazy({ l10n: () => @@ -15,8 +14,8 @@ ["browser/appExtensionFields.ftl", "branding/brand.ftl"], true ), - novaEnabled: { pref: PREF_NOVA_ENABLED, default: false }, }); +lazy.novaEnabled = false; // Every built-in and Curated AMO-hosted Nova theme id with bundled Fluent // localization. diff -urN firefox-157.0-orig/toolkit/mozapps/extensions/test/browser/browser.toml firefox-157.0/toolkit/mozapps/extensions/test/browser/browser.toml --- firefox-157.0-orig/toolkit/mozapps/extensions/test/browser/browser.toml 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/mozapps/extensions/test/browser/browser.toml 2026-10-05 07:59:56 +0900 @@ -141,8 +141,6 @@ ["browser_html_themes_mode.js"] -["browser_html_themes_picker.js"] - ["browser_html_updates.js"] https_first_disabled = true diff -urN firefox-157.0-orig/toolkit/mozapps/extensions/test/browser/browser_html_linux_theme_colors_checkbox.js firefox-157.0/toolkit/mozapps/extensions/test/browser/browser_html_linux_theme_colors_checkbox.js --- firefox-157.0-orig/toolkit/mozapps/extensions/test/browser/browser_html_linux_theme_colors_checkbox.js 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/mozapps/extensions/test/browser/browser_html_linux_theme_colors_checkbox.js 2026-10-05 07:58:32 +0900 @@ -15,7 +15,6 @@ AddonTestUtils.initMochitest(this); const PREF_NATIVE_THEME = "browser.theme.native-theme"; -const PREF_NOVA_ENABLED = "browser.nova.enabled"; const DEFAULT_THEME_ID = "default-theme@mozilla.org"; const OTHER_THEME_ID = "other-theme@mozilla.org"; @@ -59,8 +58,6 @@ return; } - await SpecialPowers.pushPrefEnv({ set: [[PREF_NOVA_ENABLED, false]] }); - const win = await loadInitialView("theme"); const checkbox = getNativeThemeCheckbox(win); Assert.ok( @@ -70,239 +67,4 @@ await closeView(win); await SpecialPowers.popPrefEnv(); -}); - -add_task(async function test_checkbox_hidden_when_os_is_not_linux() { - if (IS_OS_LINUX) { - info("SKIPPED. This test is only meant to run on non-Linux platforms"); - return; - } - - await SpecialPowers.pushPrefEnv({ set: [[PREF_NOVA_ENABLED, true]] }); - - const win = await loadInitialView("theme"); - const checkbox = getNativeThemeCheckbox(win); - Assert.ok( - checkbox, - "native-theme-colors-checkbox element is present on the default theme card" - ); - Assert.ok( - !BrowserTestUtils.isVisible(checkbox), - "native-theme-colors-checkbox should be hidden when the OS is not Linux" - ); - - await closeView(win); - await SpecialPowers.popPrefEnv(); -}); - -add_task(async function test_checkbox_not_hidden_on_linux() { - if (!IS_OS_LINUX) { - info("SKIPPED. This test is only meant to run on Linux"); - return; - } - - await SpecialPowers.pushPrefEnv({ - set: [ - [PREF_NOVA_ENABLED, true], - // Set a non-default starting value (it defaults to true on Linux/GTK). - [PREF_NATIVE_THEME, false], - ], - }); - - const defaultAddon = await AddonManager.getAddonByID(DEFAULT_THEME_ID); - Assert.ok(defaultAddon.isActive, "default theme is active at test start"); - - const win = await loadInitialView("theme"); - const checkbox = getNativeThemeCheckbox(win); - Assert.ok( - checkbox, - "native-theme-colors-checkbox element is present on the default theme card" - ); - - await checkbox.updateComplete; - Assert.ok( - getMozCheckbox(checkbox), - "checkbox content is rendered in the default theme card when the theme is enabled" - ); - Assert.ok( - BrowserTestUtils.isVisible(checkbox), - "native-theme-colors-checkbox should be visible when nova is enabled" - ); - - const otherTheme = await installOtherTheme(); - const defaultDisabled = AddonTestUtils.promiseAddonEvent( - "onDisabled", - addon => addon.id === DEFAULT_THEME_ID - ); - await otherTheme.enable(); - await defaultDisabled; - await checkbox.updateComplete; - - Assert.ok( - !BrowserTestUtils.isVisible( - getAddonCard(win, otherTheme.id).querySelector( - "native-theme-colors-checkbox" - ) - ), - "native-theme-colors-checkbox should not be visible on the non-default theme cards" - ); - - Assert.ok( - getMozCheckbox(checkbox), - "checkbox content is rendered in the default theme card when the theme is disabled" - ); - Assert.ok( - BrowserTestUtils.isVisible(checkbox), - "native-theme-colors-checkbox should still be visible" - ); - - const defaultEnabled = AddonTestUtils.promiseAddonEvent( - "onEnabled", - addon => addon.id === DEFAULT_THEME_ID - ); - await defaultAddon.enable(); - await defaultEnabled; - await checkbox.updateComplete; - Assert.ok( - getMozCheckbox(checkbox), - "checkbox content is still rendered as expected when the default theme is reactivated" - ); - Assert.ok( - BrowserTestUtils.isVisible(checkbox), - "native-theme-colors-checkbox should still be visible" - ); - - // Explicitly verify that on a theme addon-card moved without `hidden` attribute - // being changed, the native-theme-colors-checkbox webcomponent is still internally - // observing the pref and updating the checkbox accordingly. - Assert.ok( - !checkbox.checked, - "checkbox.checked should still be false, matching the initial pref value" - ); - // Mock the pref being set externally (e.g. from a different about:addons tab). - Services.prefs.setBoolPref(PREF_NATIVE_THEME, true); - await checkbox.updateComplete; - Assert.ok( - checkbox.checked, - "checkbox.checked reacted to pref change after the card being reordered in the list" - ); - Assert.ok( - getMozCheckbox(checkbox).checked, - "moz-checkbox should reflect the pref change too" - ); - - await otherTheme.uninstall(); - await closeView(win); - await SpecialPowers.popPrefEnv(); -}); - -add_task(async function test_checkbox_pref_changes() { - if (!IS_OS_LINUX) { - info("SKIPPED. This test is only meant to run on Linux"); - return; - } - - await SpecialPowers.pushPrefEnv({ - set: [ - [PREF_NOVA_ENABLED, true], - [PREF_NATIVE_THEME, false], - ], - }); - - const win = await loadInitialView("theme"); - const checkbox = getNativeThemeCheckbox(win); - await checkbox.updateComplete; - - Assert.ok( - !checkbox.checked, - "checkbox.checked is false when the pref is false" - ); - Assert.ok( - !getMozCheckbox(checkbox).checked, - "moz-checkbox is unchecked when the pref is false" - ); - - await SpecialPowers.pushPrefEnv({ set: [[PREF_NATIVE_THEME, true]] }); - await checkbox.updateComplete; - Assert.ok( - checkbox.checked, - "checkbox.checked updates to true when the pref changes to true" - ); - await SpecialPowers.popPrefEnv(); - await checkbox.updateComplete; - Assert.ok( - !checkbox.checked, - "checkbox.checked reverts to false once the pref set is popped" - ); - - const mozCheckbox = getMozCheckbox(checkbox); - await mozCheckbox.updateComplete; - const input = mozCheckbox.shadowRoot.querySelector("#input"); - - input.click(); - Assert.ok( - Services.prefs.getBoolPref(PREF_NATIVE_THEME), - "clicking the checkbox sets the pref to true" - ); - - input.click(); - Assert.ok( - !Services.prefs.getBoolPref(PREF_NATIVE_THEME), - "clicking the checkbox again sets the pref back to false" - ); - - await closeView(win); - await SpecialPowers.popPrefEnv(); -}); - -add_task(async function test_checkbox_change_telemetry() { - if (!IS_OS_LINUX) { - info("SKIPPED. This test is only meant to run on Linux"); - return; - } - - await SpecialPowers.pushPrefEnv({ - set: [ - [PREF_NOVA_ENABLED, true], - [PREF_NATIVE_THEME, false], - ], - }); - - const win = await loadInitialView("theme"); - const checkbox = getNativeThemeCheckbox(win); - await checkbox.updateComplete; - - const mozCheckbox = getMozCheckbox(checkbox); - await mozCheckbox.updateComplete; - const input = mozCheckbox.shadowRoot.querySelector("#input"); - - for (const expectedChecked of [true, false]) { - Services.fog.testResetFOG(); - input.click(); - - const events = Glean.themePicker.change.testGetValue(); - Assert.equal( - events?.length, - 1, - `theme_picker.change is recorded once for native_theme=${expectedChecked}` - ); - Assert.deepEqual( - { - source: events[0].extra.source, - layout: events[0].extra.layout, - property: events[0].extra.property, - native_theme: events[0].extra.native_theme, - }, - { - source: "about:addons", - layout: "full", - property: "nativeTheme", - native_theme: String(expectedChecked), - }, - "theme_picker.change event got the expected extra properties" - ); - } - - await closeView(win); - await SpecialPowers.popPrefEnv(); }); diff -urN firefox-157.0-orig/toolkit/mozapps/extensions/test/browser/browser_html_list_view.js firefox-157.0/toolkit/mozapps/extensions/test/browser/browser_html_list_view.js --- firefox-157.0-orig/toolkit/mozapps/extensions/test/browser/browser_html_list_view.js 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/mozapps/extensions/test/browser/browser_html_list_view.js 2026-10-05 07:58:57 +0900 @@ -1104,7 +1104,7 @@ } // Message should now be displayed - if (Services.prefs.getBoolPref("browser.nova.enabled")) { + if (false) { switch (test.type) { case "extension": is_element_visible( @@ -1150,48 +1150,3 @@ await closeView(win); } }); - -add_task(async function testEmptyPromoButtonUtmContent() { - await SpecialPowers.pushPrefEnv({ - set: [ - ["browser.nova.enabled", true], - ["extensions.getAddons.link.url", AMO_TEST_URL], - ], - }); - - let win = await loadInitialView("extension"); - let doc = win.document; - let enabledSection = getSection(doc, "extension-enabled-section"); - let disabledSection = getSection(doc, "extension-disabled-section"); - - // Simulate empty list so the promo is shown. - while (enabledSection.firstChild) { - enabledSection.firstChild.remove(); - } - while (disabledSection.firstChild) { - disabledSection.firstChild.remove(); - } - - const emptyStatePromo = doc.querySelector("#empty-addons-promo"); - is_element_visible(emptyStatePromo, "Empty state promo is visible"); - - let promoButton = emptyStatePromo.querySelector("moz-button"); - ok(promoButton, "Found the promo button"); - - let tabbrowser = win.windowRoot.window.gBrowser; - let tabPromise = BrowserTestUtils.waitForNewTab(tabbrowser, url => - url.startsWith(AMO_TEST_URL) - ); - promoButton.click(); - let tab = await tabPromise; - let tabUrl = new URL(tab.linkedBrowser.currentURI.spec); - Assert.deepEqual( - tabUrl.searchParams.getAll("utm_content"), - "find-more-promo-empty-list", - 'empty promo button utm_content is "find-more-promo-empty-list"' - ); - BrowserTestUtils.removeTab(tab); - - await closeView(win); - await SpecialPowers.popPrefEnv(); -}); diff -urN firefox-157.0-orig/toolkit/mozapps/extensions/test/browser/browser_html_list_view_recommendations.js firefox-157.0/toolkit/mozapps/extensions/test/browser/browser_html_list_view_recommendations.js --- firefox-157.0-orig/toolkit/mozapps/extensions/test/browser/browser_html_list_view_recommendations.js 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/mozapps/extensions/test/browser/browser_html_list_view_recommendations.js 2026-10-05 07:55:02 +0900 @@ -93,7 +93,7 @@ throw new Error(`Unexpected type ${type}`); } - if (Services.prefs.getBoolPref("browser.nova.enabled")) { + if (false) { // An addons-promo element is expected to be shown in both // the extensions and themes list view. is_element_visible(footerPromo, "The promo card is shown"); @@ -124,7 +124,7 @@ } if ( - Services.prefs.getBoolPref("browser.nova.enabled") || + false || !showThemeRecommendationFooter ) { ok( @@ -374,7 +374,7 @@ // Extension list: Nova promo button vs legacy AMO button. { let win = await loadInitialView("extension"); - if (Services.prefs.getBoolPref("browser.nova.enabled")) { + if (false) { await clickAndCheckUtm( win, 'footer moz-button[action="open-amo"]', @@ -395,7 +395,7 @@ { let win = await loadInitialView("theme"); let tabUrl; - if (Services.prefs.getBoolPref("browser.nova.enabled")) { + if (false) { tabUrl = await clickAndCheckUtm( win, 'footer moz-button[action="open-amo"]', diff -urN firefox-157.0-orig/toolkit/mozapps/extensions/test/browser/browser_html_themes_mode.js firefox-157.0/toolkit/mozapps/extensions/test/browser/browser_html_themes_mode.js --- firefox-157.0-orig/toolkit/mozapps/extensions/test/browser/browser_html_themes_mode.js 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/mozapps/extensions/test/browser/browser_html_themes_mode.js 2026-10-05 07:56:03 +0900 @@ -5,7 +5,6 @@ // Verifies the aboutaddons-themes-mode component behaviour in about:addons. -const PREF_NOVA_ENABLED = "browser.nova.enabled"; const PREF_SYSTEM_USES_DARK = "ui.systemUsesDarkTheme"; const getThemesMode = doc => doc.querySelector("aboutaddons-themes-mode"); @@ -15,7 +14,6 @@ }); add_task(async function test_themes_mode_hidden_when_nova_disabled() { - await SpecialPowers.pushPrefEnv({ set: [[PREF_NOVA_ENABLED, false]] }); const win = await loadInitialView("theme"); Assert.ok( !BrowserTestUtils.isVisible(getThemesMode(win.document)), @@ -24,206 +22,3 @@ await closeView(win); await SpecialPowers.popPrefEnv(); }); - -add_task(async function test_themes_mode_visibility() { - await SpecialPowers.pushPrefEnv({ set: [[PREF_NOVA_ENABLED, true]] }); - - for (const [type, expectedVisible] of [ - ["extension", false], - ["locale", false], - ["plugin", false], - ["mlmodel", false], - ["dictionary", false], - ["sitepermission", false], - ["theme", true], - ]) { - const win = await loadInitialView(type); - Assert.equal( - BrowserTestUtils.isVisible(getThemesMode(win.document)), - expectedVisible, - `themes-mode should be ${expectedVisible ? "visible" : "hidden"} on ${type} list view` - ); - await closeView(win); - } - - await SpecialPowers.popPrefEnv(); -}); - -add_task(async function test_themes_mode_initial_value() { - Services.prefs.clearUserPref(PREF_SYSTEM_USES_DARK); - - for (const [darkPrefValue, expectedValue] of [ - [null, "device"], - [0, "light"], - [1, "dark"], - ]) { - const set = [[PREF_NOVA_ENABLED, true]]; - if (darkPrefValue !== null) { - set.push([PREF_SYSTEM_USES_DARK, darkPrefValue]); - } - await SpecialPowers.pushPrefEnv({ set }); - const win = await loadInitialView("theme"); - const themesMode = getThemesMode(win.document); - await themesMode.updateComplete; - Assert.equal( - themesMode.value, - expectedValue, - `Initial value should be '${expectedValue}'` - ); - await closeView(win); - await SpecialPowers.popPrefEnv(); - } -}); - -add_task(async function test_themes_mode_pref_binding() { - await SpecialPowers.pushPrefEnv({ - set: [ - [PREF_NOVA_ENABLED, true], - [PREF_SYSTEM_USES_DARK, 0 /* light */], - ], - }); - const win = await loadInitialView("theme"); - const themesMode = getThemesMode(win.document); - await themesMode.updateComplete; - - Assert.equal( - themesMode.value, - "light", - "Initial themes mode value should be 'light' on pref set to 0" - ); - - await SpecialPowers.pushPrefEnv({ - set: [[PREF_SYSTEM_USES_DARK, 2 /* device */]], - }); - await themesMode.updateComplete; - Assert.equal( - themesMode.value, - "device", - "Value should update to 'device' after pref set to 2" - ); - - await SpecialPowers.pushPrefEnv({ - set: [[PREF_SYSTEM_USES_DARK, 1 /* dark */]], - }); - await themesMode.updateComplete; - Assert.equal( - themesMode.value, - "dark", - "Value should update to 'dark' after pref set to 1" - ); - - await SpecialPowers.popPrefEnv(); - await SpecialPowers.popPrefEnv(); - - const getButton = value => - themesMode.shadowRoot - .querySelector("moz-segmented-control") - .querySelector(`[value="${value}"]`); - - getButton("light").click(); - Assert.equal( - Services.prefs.getIntPref(PREF_SYSTEM_USES_DARK, -1), - 0, - "Clicking 'light' should set pref to 0" - ); - - getButton("dark").click(); - Assert.equal( - Services.prefs.getIntPref(PREF_SYSTEM_USES_DARK, -1), - 1, - "Clicking 'dark' should set pref to 1" - ); - - getButton("device").click(); - Assert.ok( - !Services.prefs.prefHasUserValue(PREF_SYSTEM_USES_DARK), - "Clicking 'device' should clear the pref user value" - ); - - await closeView(win); - await SpecialPowers.popPrefEnv(); -}); - -add_task(async function test_themes_mode_change_telemetry() { - await SpecialPowers.pushPrefEnv({ - set: [ - [PREF_NOVA_ENABLED, true], - [PREF_SYSTEM_USES_DARK, 0 /* light */], - ], - }); - const win = await loadInitialView("theme"); - const themesMode = getThemesMode(win.document); - await themesMode.updateComplete; - - const getButton = value => - themesMode.shadowRoot - .querySelector("moz-segmented-control") - .querySelector(`[value="${value}"]`); - - for (const appearance of ["device", "dark", "light"]) { - Services.fog.testResetFOG(); - getButton(appearance).click(); - - const events = Glean.themePicker.change.testGetValue(); - Assert.equal( - events?.length, - 1, - `theme_picker.change is recorded once for appearance=${appearance}` - ); - Assert.deepEqual( - { - source: events[0].extra.source, - layout: events[0].extra.layout, - property: events[0].extra.property, - appearance: events[0].extra.appearance, - }, - { - source: "about:addons", - layout: "full", - property: "appearance", - appearance, - }, - "theme_picker.change event got the expected extra properties" - ); - } - - // Check that clicking light again doesn't record a change - Services.fog.testResetFOG(); - getButton("light").click(); - - const events = Glean.themePicker.change.testGetValue(); - Assert.ok(!events, "No theme_picker.change when no change"); - - await closeView(win); - await SpecialPowers.popPrefEnv(); -}); - -add_task(async function test_themes_mode_a11y_label() { - await SpecialPowers.pushPrefEnv({ - set: [ - [PREF_NOVA_ENABLED, true], - [PREF_SYSTEM_USES_DARK, 0 /* light */], - ], - }); - const win = await loadInitialView("theme"); - const themesMode = getThemesMode(win.document); - await themesMode.updateComplete; - - const segmentedControl = themesMode.shadowRoot.querySelector( - "moz-segmented-control" - ); - Assert.equal( - segmentedControl.getAttribute("data-l10n-id"), - "themes-mode", - "aboutaddons-themes-mode segmented control should have the expected data-l10n-id" - ); - await segmentedControl.updateComplete; - await win.document.l10n.translateFragment(segmentedControl); - Assert.ok( - segmentedControl.getAttribute("aria-label"), - "aboutaddons-themes-mode segmented control should have an associated aria-label" - ); - - await closeView(win); - await SpecialPowers.popPrefEnv(); -}); diff -urN firefox-157.0-orig/toolkit/mozapps/extensions/test/browser/browser_html_themes_picker.js firefox-157.0/toolkit/mozapps/extensions/test/browser/browser_html_themes_picker.js --- firefox-157.0-orig/toolkit/mozapps/extensions/test/browser/browser_html_themes_picker.js 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/mozapps/extensions/test/browser/browser_html_themes_picker.js 1970-01-01 09:00:00 +0900 @@ -1,1011 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - https://creativecommons.org/publicdomain/zero/1.0/ */ - -"use strict"; - -// Verifies the aboutaddons-themes-picker component behaviour in about:addons. - -const { AddonTestUtils } = ChromeUtils.importESModule( - "resource://testing-common/AddonTestUtils.sys.mjs" -); - -const { getThemesList } = ChromeUtils.importESModule( - "moz-src:///browser/themes/ThemesList.sys.mjs" -); - -const { getL10nIdForThemeProp, themeIdPrefix } = ChromeUtils.importESModule( - "resource://gre/modules/addons/ThemesBundledLocalization.sys.mjs" -); - -AddonTestUtils.initMochitest(this); - -const PREF_NOVA_ENABLED = "browser.nova.enabled"; -const PREF_NOVA_THEMES_PICKER = "browser.aboutaddons.novaThemesPickerEnabled"; -const PREF_ACTIVE_THEME_ID = "extensions.activeThemeID"; -const PREF_SYSTEM_USES_DARK_THEME = "ui.systemUsesDarkTheme"; -// Website Appearance setting exposed in about:preferences, which only -// overrides prefers-color-scheme for content documents and must not -// affect the (chrome-only) theme preview color scheme. -const PREF_CONTENT_COLOR_SCHEME_OVERRIDE = - "layout.css.prefers-color-scheme.content-override"; - -const DEFAULT_THEME_ID = "default-theme@mozilla.org"; -const LIGHT_THEME_ID = "firefox-compact-light@mozilla.org"; -const DARK_THEME_ID = "firefox-compact-dark@mozilla.org"; -const NOVA_SUN_ID = "nova-sun@mozilla.org"; -const DEFAULT_THEME_ID_PREFIX = "default-theme"; -const NOVA_SUN_ID_PREFIX = "nova-sun"; - -const DEFAULT_THEME_PREVIEW_URL = - "chrome://mozapps/content/extensions/default-theme/preview.svg"; -const DEFAULT_THEME_PREVIEW_NOVA_URL = - "chrome://mozapps/content/extensions/default-theme/preview-nova.svg"; - -let ALL_THEME_IDS; - -add_setup(async function () { - const themesListManager = await getThemesList({ - installSource: "about:addons", - }); - ALL_THEME_IDS = themesListManager - .getThemesInfo() - .map(themeInfo => themeInfo.id); -}); - -const getThemesPicker = doc => doc.querySelector("aboutaddons-themes-picker"); - -function getThemeCard(picker, idPrefix) { - return [...picker.themeCards].find(card => card.dataset.theme === idPrefix); -} - -function getThemeButton(card) { - return card.querySelector(".theme-card-footer moz-button"); -} - -async function getThemePreviewImage(card) { - const themePreview = card.querySelector("theme-preview"); - await themePreview.updateComplete; - return card.querySelector(".card-heading-image"); -} - -async function getThemePreviewSrc(card) { - return (await getThemePreviewImage(card))?.src; -} - -async function waitForThemesPickerReady(picker) { - await TestUtils.waitForCondition( - () => picker.themeCards.length, - "Waiting for the themes picker to finish loading its theme list" - ); - await picker.updateComplete; -} - -function createNovaThemeXPI(themeId, themeName) { - const mockNovaThemeXPI = AddonTestUtils.createTempWebExtensionFile({ - manifest: { - name: themeName, - version: "1.0", - theme: {}, - browser_specific_settings: { gecko: { id: themeId } }, - }, - }); - // Make sure to uninstall the mock nova theme if still installed when this - // test file is exiting. - registerCleanupFunction(async function cleanupInstalledMockNovaTheme() { - const mockNovaTheme = await AddonManager.getAddonByID(themeId); - await mockNovaTheme?.uninstall(); - }); - return mockNovaThemeXPI; -} - -// Mocks the AddonRepository "get addons" endpoint so that -// ThemesList.updateThemeState's install-via-AddonRepository path (used by -// the picker's Install button) resolves to a local XPI instead of the real -// AMO service. Omit `xpi` to simulate a broken/unreachable theme download -// instead (the resolved XPI url will 404). -function setupAddonRepoServer(themeId, themeName, xpi) { - const server = AddonTestUtils.createHttpServer({ hosts: ["example.com"] }); - if (xpi) { - server.registerFile("/theme.xpi", xpi); - } - AddonTestUtils.registerJSON(server, "/addons.json", { - page_size: 1, - page_count: 1, - count: 1, - next: null, - previous: null, - results: [ - { - guid: themeId, - name: themeName, - type: "statictheme", - current_version: { - version: "1.0", - // eslint-disable-next-line sdl/no-insecure-url - files: [{ platform: "all", url: "http://example.com/theme.xpi" }], - }, - }, - ], - }); - - Services.prefs.setCharPref( - "extensions.getAddons.get.url", - // eslint-disable-next-line sdl/no-insecure-url - "http://example.com/addons.json" - ); - - function cleanupAddonRepoServer() { - Services.prefs.clearUserPref("extensions.getAddons.get.url"); - } - registerCleanupFunction(cleanupAddonRepoServer); - return cleanupAddonRepoServer; -} - -// Verifies that the Nova themes picker can be opt-ed out through -// the "browser.aboutaddons.novaThemesPickerEnabled" pref independently -// from Nova (in case other apps built on top of Gecko, e.g. Thunderbird, -// would like to adopt Nova restyle without inheriting the Nova themes -// picker). -add_task(async function test_picker_hidden_when_pref_disabled() { - await SpecialPowers.pushPrefEnv({ - set: [ - [PREF_NOVA_ENABLED, true], - [PREF_NOVA_THEMES_PICKER, false], - ], - }); - - const win = await loadInitialView("theme"); - const picker = getThemesPicker(win.document); - Assert.ok(picker, "aboutaddons-themes-picker element exists in the DOM"); - await picker.updateComplete; - Assert.ok( - !picker.pickerCard, - "Themes grid should not be rendered when novaThemesPickerEnabled is false" - ); - - await closeView(win); - await SpecialPowers.popPrefEnv(); -}); - -// Verifies that on builds where Nova isn't enabled yet the Nova themes picker -// stays hidden, and the default theme falls back to its non-Nova preview -// image in the regular themes list. -add_task(async function test_picker_hidden_when_nova_disabled() { - await SpecialPowers.pushPrefEnv({ - set: [ - [PREF_NOVA_ENABLED, false], - [PREF_NOVA_THEMES_PICKER, true], - ], - }); - - const win = await loadInitialView("theme"); - const picker = getThemesPicker(win.document); - Assert.ok( - !BrowserTestUtils.isVisible(picker), - "Themes grid should be hidden when browser.nova.enabled is false" - ); - - const defaultAddonCard = getAddonCard(win, DEFAULT_THEME_ID); - Assert.equal( - await getThemePreviewSrc(defaultAddonCard), - DEFAULT_THEME_PREVIEW_URL, - "default theme uses the non-Nova preview image when browser.nova.enabled is false" - ); - - await closeView(win); - await SpecialPowers.popPrefEnv(); -}); - -// Verifies that all the Nova themes are shown in the Nova Themes grid -// moz-card, they are all localized as expected, and the theme preview -// svg images bundled into the Firefox build are being used for all -// the AMO-hosted Nova themes shown in the grid. -add_task(async function test_picker_renders_all_known_themes() { - await SpecialPowers.pushPrefEnv({ - set: [ - [PREF_NOVA_ENABLED, true], - [PREF_NOVA_THEMES_PICKER, true], - ], - }); - - // Make sure the default theme is the active theme. - const defaultAddon = await AddonManager.getAddonByID(DEFAULT_THEME_ID); - await defaultAddon.enable(); - - const win = await loadInitialView("theme"); - const picker = getThemesPicker(win.document); - await waitForThemesPickerReady(picker); - - // Expand the grid to see every theme card. The expand/collapse - // behaviour is covered by test_picker_show_more_show_less below. - picker.expandToggle.click(); - await picker.updateComplete; - - for (const themeId of ALL_THEME_IDS) { - const idPrefix = themeIdPrefix(themeId); - const card = getThemeCard(picker, idPrefix); - Assert.ok(card, `theme card for "${idPrefix}" is rendered`); - Assert.equal( - card.querySelector(".theme-name").getAttribute("data-l10n-id"), - getL10nIdForThemeProp(themeId, "name"), - `"${idPrefix}" card has the expected name l10n-id` - ); - - const expectedPreviewSrc = - themeId === DEFAULT_THEME_ID - ? DEFAULT_THEME_PREVIEW_NOVA_URL - : `resource://extra-themes-previews/${themeId}-preview.svg`; - Assert.equal( - await getThemePreviewSrc(card), - expectedPreviewSrc, - `"${idPrefix}" card shows the expected bundled preview image` - ); - } - Assert.equal( - picker.themeCards.length, - ALL_THEME_IDS.length, - "Expect no unexpected Nova theme cards" - ); - - // The default theme is currently active: its preview image in the picker - // grid should be the exact same image shown on its addon-card in the - // regular themes list. - const defaultPickerCard = getThemeCard(picker, DEFAULT_THEME_ID_PREFIX); - const defaultAddonCard = AboutAddonsTestUtils.getAddonCard( - win, - DEFAULT_THEME_ID - ); - Assert.equal( - await getThemePreviewSrc(defaultPickerCard), - await getThemePreviewSrc(defaultAddonCard), - "addon-card should be using the same preview image as the themes picker card" - ); - - await closeView(win); - await SpecialPowers.popPrefEnv(); -}); - -// Verifies that the built-in Light and Dark themes reuse the default theme -// Nova preview image, forced to the matching color scheme, when Nova is -// enabled, and keep their own preview images otherwise. -add_task(async function test_light_dark_themes_preview() { - for (const novaEnabled of [true, false]) { - await SpecialPowers.pushPrefEnv({ - set: [ - [PREF_NOVA_ENABLED, novaEnabled], - [PREF_NOVA_THEMES_PICKER, true], - ], - }); - - const win = await loadInitialView("theme"); - - for (const [themeId, colorScheme] of [ - [LIGHT_THEME_ID, "light"], - [DARK_THEME_ID, "dark"], - ]) { - const img = await getThemePreviewImage(getAddonCard(win, themeId)); - Assert.equal( - img.src, - novaEnabled - ? DEFAULT_THEME_PREVIEW_NOVA_URL - : `resource://builtin-themes/${colorScheme}/preview.svg`, - `${themeId} uses the expected preview image (nova enabled: ${novaEnabled})` - ); - Assert.equal( - img.style.colorScheme, - novaEnabled ? colorScheme : "", - `${themeId} preview image has the expected forced color scheme (nova enabled: ${novaEnabled})` - ); - } - - await closeView(win); - await SpecialPowers.popPrefEnv(); - } -}); - -// Verifies that for the default theme and the curated AMO hosted extra Nova themes -// their theme preview SVGs color scheme are: -// - being forced to match the aboutaddons-themes-mode selector -// - falling back to the current OS dark/light color scheme when the appearance -// mode is set to "device" -// - are not affected by the "Website Appearance" setting from about:settings -// (or the underlying layout.css.prefers-color-scheme.content-override pref). -add_task(async function test_default_and_extra_themes_preview_color_scheme() { - await SpecialPowers.pushPrefEnv({ - set: [ - [PREF_NOVA_ENABLED, true], - [PREF_NOVA_THEMES_PICKER, true], - ], - }); - - const win = await loadInitialView("theme"); - const picker = getThemesPicker(win.document); - await waitForThemesPickerReady(picker); - - const systemDarkThemeQuery = win.matchMedia("(-moz-system-dark-theme)"); - - for (const [prefValue, expectedColorScheme] of [ - [0, "light"], - [1, "dark"], - [undefined, systemDarkThemeQuery.matches ? "dark" : "light"], - ]) { - // If the color scheme we expect is the same as the color scheme already active - // then we expect no "change" event to be emitted by the -moz-system-dark-theme - // media query after we set or clear the ui.systemUsesDarkTheme about:config pref. - const expectedSystemDarkMatch = expectedColorScheme === "dark"; - const promiseMediaQueryChangeEvent = - systemDarkThemeQuery.matches === expectedSystemDarkMatch - ? Promise.resolve() - : new Promise(resolve => { - info("Wait for matchMedia -moz-system-dark-theme change event"); - systemDarkThemeQuery.addEventListener("change", resolve, { - once: true, - }); - }); - - await SpecialPowers.pushPrefEnv( - prefValue === undefined - ? { clear: [[PREF_SYSTEM_USES_DARK_THEME]] } - : { set: [[PREF_SYSTEM_USES_DARK_THEME, prefValue]] } - ); - - // ui.systemUsesDarkTheme changes propagate to -moz-system-dark-theme - // asynchronously. - await promiseMediaQueryChangeEvent; - - // Force the opposite color scheme for content documents' "Website Appearance" - // (about:preferences), to explicitly verify the theme preview is not - // affected by it. - await SpecialPowers.pushPrefEnv({ - set: [ - [ - PREF_CONTENT_COLOR_SCHEME_OVERRIDE, - expectedColorScheme == "dark" ? 1 : 0, - ], - ], - }); - - const defaultThemeImg = await getThemePreviewImage( - getAddonCard(win, DEFAULT_THEME_ID) - ); - Assert.equal( - defaultThemeImg.src, - DEFAULT_THEME_PREVIEW_NOVA_URL, - "default-theme keeps using the Nova preview image" - ); - Assert.equal( - defaultThemeImg.style.colorScheme, - expectedColorScheme, - `default-theme preview has the expected forced color scheme (pref: ${prefValue})` - ); - - const novaSunImg = await getThemePreviewImage( - getThemeCard(picker, NOVA_SUN_ID_PREFIX) - ); - Assert.equal( - novaSunImg.src, - "resource://extra-themes-previews/nova-sun@mozilla.org-preview.svg", - "nova-sun keeps using its own bundled preview image" - ); - Assert.equal( - novaSunImg.style.colorScheme, - expectedColorScheme, - `nova-sun preview has the expected forced color scheme (pref: ${prefValue})` - ); - - await SpecialPowers.popPrefEnv(); - await SpecialPowers.popPrefEnv(); - } - - await closeView(win); - await SpecialPowers.popPrefEnv(); -}); - -// Verifies that the Nova themes picker can be expanded and collapsed as -// expected. -add_task(async function test_picker_show_more_show_less() { - await SpecialPowers.pushPrefEnv({ - set: [ - [PREF_NOVA_ENABLED, true], - [PREF_NOVA_THEMES_PICKER, true], - ], - }); - - const win = await loadInitialView("theme"); - const picker = getThemesPicker(win.document); - await waitForThemesPickerReady(picker); - - Assert.equal( - picker.visibleRows, - 3, - "Expect the themes picker grid to have 3 visible rows in collapsed mode" - ); - const expectedCollapsedCount = picker.visibleRows * 2; - Assert.equal( - picker.themeCards.length, - expectedCollapsedCount, - `only the first ${expectedCollapsedCount} theme cards are shown initially` - ); - - Assert.ok( - BrowserTestUtils.isVisible(picker.expandToggle), - "'Show More'/'Show Less' toggle button is shown" - ); - Assert.equal( - picker.expandToggle.getAttribute("data-l10n-id"), - "aboutaddons-themes-picker-see-more", - "While collapsed, toggle button should show the 'Show More' localized string" - ); - - picker.expandToggle.click(); - await picker.updateComplete; - - Assert.equal( - picker.themeCards.length, - ALL_THEME_IDS.length, - "All theme cards are shown after expanding" - ); - Assert.equal( - picker.expandToggle.getAttribute("data-l10n-id"), - "aboutaddons-themes-picker-see-less", - "While expanded, toggle button should show the 'Show Less' localized string" - ); - - picker.expandToggle.click(); - await picker.updateComplete; - - Assert.equal( - picker.themeCards.length, - expectedCollapsedCount, - "Themes picker collapses back to the initial theme card count" - ); - - await closeView(win); - await SpecialPowers.popPrefEnv(); -}); - -// Verifies that the default theme card in the Nova themes grid -// has the Disable button hidden when the default theme is active -// (because the default theme can only be disabled by enabling -// a different theme). -add_task(async function test_picker_default_theme_button_state() { - await SpecialPowers.pushPrefEnv({ - set: [ - [PREF_NOVA_ENABLED, true], - [PREF_NOVA_THEMES_PICKER, true], - ], - }); - - // Make sure the default theme has been enabled. - const defaultAddon = await AddonManager.getAddonByID(DEFAULT_THEME_ID); - await defaultAddon.enable(); - - const win = await loadInitialView("theme"); - const picker = getThemesPicker(win.document); - await waitForThemesPickerReady(picker); - - const defaultCard = getThemeCard(picker, DEFAULT_THEME_ID_PREFIX); - Assert.ok( - getThemeButton(defaultCard).hidden, - "the default theme button is hidden while it is active" - ); - - let promiseActiveThemePrefChanged = TestUtils.waitForPrefChange( - PREF_ACTIVE_THEME_ID, - value => value === NOVA_SUN_ID - ); - - // Mock the theme XPI for one of the non-builtIn Nova theme. - const xpi = createNovaThemeXPI(NOVA_SUN_ID, "Nova Sun"); - const sunAddon = await AddonManager.installTemporaryAddon(xpi); - await sunAddon.enable(); - - info("Waiting for extensions.activeThemeID to be set to the expected theme"); - await promiseActiveThemePrefChanged; - await picker.updateComplete; - - Assert.ok( - !getThemeButton(defaultCard).hidden, - "Expect default theme button to become visible" - ); - Assert.equal( - getThemeButton(defaultCard).getAttribute("data-l10n-id"), - "aboutaddons-themes-picker-enable-button", - "default theme shows an Enable button once inactive" - ); - - const activeNovaThemeAddonCard = AboutAddonsTestUtils.getAddonCard( - win, - NOVA_SUN_ID - ); - - Assert.equal( - await getThemePreviewSrc(activeNovaThemeAddonCard), - `resource://extra-themes-previews/${NOVA_SUN_ID}-preview.svg`, - `addon-card should shows the expected bundled preview image` - ); - - await sunAddon.uninstall(); - await closeView(win); - await SpecialPowers.popPrefEnv(); -}); - -// Verifies that for the Nova themes hosted on AMO the theme card -// button is localized as "Install" when the theme is not installed -// yet, and once it is installed the same button is localized as -// "Enable" and "Disable" based on the currently active theme. -add_task(async function test_picker_amo_hosted_themes_button() { - await SpecialPowers.pushPrefEnv({ - set: [ - [PREF_NOVA_ENABLED, true], - [PREF_NOVA_THEMES_PICKER, true], - ], - }); - - Assert.ok( - !(await AddonManager.getAddonByID(NOVA_SUN_ID)), - "nova-sun is not installed at the start of this test" - ); - - // Nova AMO hosted theme not installed yet. - { - const win = await loadInitialView("theme"); - const picker = getThemesPicker(win.document); - await waitForThemesPickerReady(picker); - - const sunCard = getThemeCard(picker, NOVA_SUN_ID_PREFIX); - Assert.equal( - getThemeButton(sunCard).getAttribute("data-l10n-id"), - "aboutaddons-themes-picker-install-button", - "not-yet-installed AMO-hosted theme shows an Install button" - ); - - await closeView(win); - } - - const xpi = createNovaThemeXPI(NOVA_SUN_ID, "Nova Sun"); - const sunAddon = await AddonManager.installTemporaryAddon(xpi); - await sunAddon.disable(); - - // Nova AMO hosted theme already installed. - { - const win = await loadInitialView("theme"); - const picker = getThemesPicker(win.document); - await waitForThemesPickerReady(picker); - - const sunCard = getThemeCard(picker, NOVA_SUN_ID_PREFIX); - Assert.equal( - getThemeButton(sunCard).getAttribute("data-l10n-id"), - "aboutaddons-themes-picker-enable-button", - "Installed but inactive theme expected to show an Enable button" - ); - - let promiseActiveThemePrefChanged = TestUtils.waitForPrefChange( - PREF_ACTIVE_THEME_ID, - value => value === NOVA_SUN_ID - ); - - await sunAddon.enable(); - - info( - "Waiting for extensions.activeThemeID to be set to the expected theme" - ); - await promiseActiveThemePrefChanged; - await picker.updateComplete; - - Assert.equal( - getThemeButton(sunCard).getAttribute("data-l10n-id"), - "aboutaddons-themes-picker-disable-button", - "Theme card expected to show a Disable button" - ); - - await sunAddon.uninstall(); - await closeView(win); - } - await SpecialPowers.popPrefEnv(); -}); - -// Verifies that when the "Enable/Disable" button is clicked, the currently -// active theme is changing as expected. -add_task(async function test_picker_button_click_updates_active_theme() { - await SpecialPowers.pushPrefEnv({ - set: [ - [PREF_NOVA_ENABLED, true], - [PREF_NOVA_THEMES_PICKER, true], - ], - }); - - const xpi = createNovaThemeXPI(NOVA_SUN_ID, "Nova Sun"); - const sunAddon = await AddonManager.installTemporaryAddon(xpi); - await sunAddon.disable(); - - const win = await loadInitialView("theme"); - const picker = getThemesPicker(win.document); - await waitForThemesPickerReady(picker); - - const sunCard = getThemeCard(picker, NOVA_SUN_ID_PREFIX); - const defaultCard = getThemeCard(picker, DEFAULT_THEME_ID_PREFIX); - - await Services.fog.testFlushAllChildren(); - Services.fog.testResetFOG(); - - let promiseActiveThemePrefChanged = TestUtils.waitForPrefChange( - PREF_ACTIVE_THEME_ID, - value => value === NOVA_SUN_ID - ); - - getThemeButton(sunCard).click(); - - info( - "Waiting for extensions.activeThemeID to be updated after clicking Enable" - ); - await promiseActiveThemePrefChanged; - - await picker.updateComplete; - await Services.fog.testFlushAllChildren(); - const events = Glean.themePicker.change.testGetValue(); - Assert.equal(events?.length, 1, "theme_picker.change is recorded once"); - Assert.equal(events[0].extra.property, "theme", "property is theme"); - Assert.equal(events[0].extra.layout, "full", "layout is full"); - - Assert.equal( - getThemeButton(sunCard).getAttribute("data-l10n-id"), - "aboutaddons-themes-picker-disable-button", - "Theme card expected to show a Disable button" - ); - - promiseActiveThemePrefChanged = TestUtils.waitForPrefChange( - PREF_ACTIVE_THEME_ID, - value => value === DEFAULT_THEME_ID - ); - - getThemeButton(sunCard).click(); - - info( - "Waiting for extensions.activeThemeID to be updated after clicking Disable" - ); - await promiseActiveThemePrefChanged; - - await picker.updateComplete; - Assert.equal( - getThemeButton(sunCard).getAttribute("data-l10n-id"), - "aboutaddons-themes-picker-enable-button", - "Theme card expected to show an Enable button after being disabled" - ); - Assert.equal( - getThemeButton(defaultCard).hidden, - true, - "The default theme button should be hidden" - ); - - await sunAddon.uninstall(); - await closeView(win); - await SpecialPowers.popPrefEnv(); -}); - -// Verifies that the "Install" button download and actives the Nova themes -// hosted on AMO. -add_task(async function test_picker_install_button_downloads_and_activates() { - await SpecialPowers.pushPrefEnv({ - set: [ - [PREF_NOVA_ENABLED, true], - [PREF_NOVA_THEMES_PICKER, true], - ], - }); - - const xpi = createNovaThemeXPI(NOVA_SUN_ID, "Nova Sun"); - const cleanupAddonRepoServer = setupAddonRepoServer( - NOVA_SUN_ID, - "Nova Sun", - xpi - ); - - const win = await loadInitialView("theme"); - const picker = getThemesPicker(win.document); - await waitForThemesPickerReady(picker); - - // Sanity check. - const sunCard = getThemeCard(picker, NOVA_SUN_ID_PREFIX); - Assert.equal( - getThemeButton(sunCard).getAttribute("data-l10n-id"), - "aboutaddons-themes-picker-install-button", - "nova-sun theme should not be installed yet" - ); - - let promiseActiveThemePrefChanged = TestUtils.waitForPrefChange( - PREF_ACTIVE_THEME_ID, - value => value === NOVA_SUN_ID - ); - - getThemeButton(sunCard).click(); - await promiseActiveThemePrefChanged; - - await picker.updateComplete; - - Assert.equal( - getThemeButton(sunCard).getAttribute("data-l10n-id"), - "aboutaddons-themes-picker-disable-button", - "Theme card expected to show a Disable button" - ); - - const sunAddon = await AddonManager.getAddonByID(NOVA_SUN_ID); - Assert.equal( - sunAddon?.isActive, - true, - "nova-sun theme expected to be installed and activated" - ); - - await sunAddon.uninstall(); - cleanupAddonRepoServer(); - await closeView(win); - await SpecialPowers.popPrefEnv(); -}); - -// Verifies that the themes picker shows a dismissable error message bar -// when a Nova theme fails to download/install (Bug 2054548), and that the -// bar is cleared again on dismiss. -add_task(async function test_picker_shows_error_on_install_failure() { - await SpecialPowers.pushPrefEnv({ - set: [ - [PREF_NOVA_ENABLED, true], - [PREF_NOVA_THEMES_PICKER, true], - ], - }); - - // No xpi passed: the resolved XPI url 404s, simulating a broken download. - const cleanupAddonRepoServer = setupAddonRepoServer(NOVA_SUN_ID, "Nova Sun"); - - const win = await loadInitialView("theme"); - const picker = getThemesPicker(win.document); - await waitForThemesPickerReady(picker); - - Assert.ok( - !picker.errorBar, - "no error message bar shown before attempting to install" - ); - - const sunCard = getThemeCard(picker, NOVA_SUN_ID_PREFIX); - getThemeButton(sunCard).click(); - - info("Waiting for the error message bar to be shown"); - await TestUtils.waitForCondition(() => picker.errorBar); - await picker.updateComplete; - - Assert.equal( - picker.errorBar.getAttribute("data-l10n-id"), - "aboutaddons-themes-picker-error-message", - "error message bar shows the expected l10n id" - ); - Assert.equal( - getThemeButton(sunCard).getAttribute("data-l10n-id"), - "aboutaddons-themes-picker-install-button", - "theme card still shows the Install button after a failed install" - ); - - picker.errorBar.dismiss(); - await picker.updateComplete; - Assert.ok(!picker.errorBar, "error message bar is dismissed"); - - cleanupAddonRepoServer(); - await closeView(win); - await SpecialPowers.popPrefEnv(); -}); - -// Verifies that the theme picker is updating also when the themes -// are being updated externally (e.g. from a different about:addons -// tab). -add_task(async function test_picker_reflects_external_addon_install() { - await SpecialPowers.pushPrefEnv({ - set: [ - [PREF_NOVA_ENABLED, true], - [PREF_NOVA_THEMES_PICKER, true], - ], - }); - - const win = await loadInitialView("theme"); - const picker = getThemesPicker(win.document); - await waitForThemesPickerReady(picker); - - // Sanity check. - const sunCard = getThemeCard(picker, NOVA_SUN_ID_PREFIX); - Assert.equal( - getThemeButton(sunCard).getAttribute("data-l10n-id"), - "aboutaddons-themes-picker-install-button", - "nova-sun starts out not installed" - ); - - let promiseActiveThemePrefChanged = TestUtils.waitForPrefChange( - PREF_ACTIVE_THEME_ID, - value => value === NOVA_SUN_ID - ); - - // Install directly through AddonManager, bypassing the picker's own - // Install button, to verify the theme picker UI is reacting to the - // AddonManager events. - const xpi = createNovaThemeXPI(NOVA_SUN_ID, "Nova Sun"); - const sunAddon = await AddonManager.installTemporaryAddon(xpi); - - info("Waiting for the currently active theme to have been changed"); - await promiseActiveThemePrefChanged; - - Assert.equal( - getThemeButton(sunCard).getAttribute("data-l10n-id"), - "aboutaddons-themes-picker-disable-button", - "Expect the related picker theme card button to have been updated accordingly" - ); - - await sunAddon.uninstall(); - await closeView(win); - await SpecialPowers.popPrefEnv(); -}); - -// The theme preview box is not a whole number of device pixels tall, so -// painting snaps it and an SVG used as an image is laid out at the snapped -// size. A preview that relies on the default preserveAspectRatio is therefore -// letterboxed by a varying amount and appears to jiggle while scrolling, see -// bug 2059917. Guard against a new preview reintroducing that. -add_task(async function test_theme_preview_svgs_ignore_aspect_ratio() { - const themesListManager = await getThemesList({ - installSource: "about:addons", - }); - - const AMO_HOSTED_THEME_IDS = ALL_THEME_IDS.filter( - id => id !== DEFAULT_THEME_ID - ); - - const BUILTIN_THEMES_PREVIEW_URLS = [ - DEFAULT_THEME_PREVIEW_URL, - DEFAULT_THEME_PREVIEW_NOVA_URL, - "resource://builtin-themes/dark/preview.svg", - "resource://builtin-themes/light/preview.svg", - "resource://builtin-themes/alpenglow/preview.svg", - ]; - - const previewUrls = [...BUILTIN_THEMES_PREVIEW_URLS]; - - // Sanity check AMO curated theme preview urls. - for (const amoCuratedThemeId of AMO_HOSTED_THEME_IDS) { - const amoCuratedThemePreviewUrl = - themesListManager.getThemePreviewURL(amoCuratedThemeId); - Assert.ok( - amoCuratedThemePreviewUrl?.startsWith("resource://"), - `Expect bundled theme preview for AMO hosted "${amoCuratedThemeId}" to be a resource:// url ("${amoCuratedThemePreviewUrl}")` - ); - previewUrls.push(amoCuratedThemePreviewUrl); - } - - const EXPECTED_THEME_PREVIEWS_URLS_COUNT = - BUILTIN_THEMES_PREVIEW_URLS.length + AMO_HOSTED_THEME_IDS.length; - - Assert.equal( - previewUrls.length, - EXPECTED_THEME_PREVIEWS_URLS_COUNT, - "Got theme preview URLs for all built-in themes and curated AMO-hosted themes" - ); - - for (const url of previewUrls) { - const response = await fetch(url); - Assert.ok( - response.ok, - `Expect ${url} to be available as bundled in the omnijar` - ); - const svgRoot = new DOMParser().parseFromString( - await response.text(), - "image/svg+xml" - ).documentElement; - - Assert.equal( - svgRoot.getAttribute("preserveAspectRatio"), - "none", - `Expect ${url} to set preserveAspectRatio="none"` - ); - // preserveAspectRatio only has an effect when a viewBox maps the drawing - // onto the viewport, and without one the preview is cropped to the snapped - // size instead of being scaled to it. - Assert.equal( - svgRoot.getAttribute("viewBox"), - "0 0 680 92", - `Expect ${url} to declare a viewBox set to the expected value` - ); - // Sanity and consistency checks (to make sure that all SVG images for the bundled - // theme previews have the width and height properties set consistently with - // the viewBox attribute). - Assert.ok( - svgRoot.hasAttribute("width"), - `Expect ${url} to declare an explicit width` - ); - Assert.ok( - svgRoot.hasAttribute("height"), - `Expect ${url} to declare an explicit height` - ); - Assert.equal( - svgRoot.getAttribute("viewBox"), - `0 0 ${svgRoot.getAttribute("width")} ${svgRoot.getAttribute("height")}` - ); - } -}); - -// Verifies that opening the Nova themes picker records a theme_picker.shown -// event, and that navigating away and back to the Themes view records it -// again. -add_task(async function test_picker_shown_recorded_on_each_theme_view_load() { - await SpecialPowers.pushPrefEnv({ - set: [ - [PREF_NOVA_ENABLED, true], - [PREF_NOVA_THEMES_PICKER, true], - ], - }); - - Services.fog.testResetFOG(); - - const win = await loadInitialView("extension"); - - // Sanity check: until the theme view is loaded, the theme_picker.shown - // event should not have been recorded yet. - let events = Glean.themePicker.shown.testGetValue(); - Assert.equal(events, undefined, "theme_picker.shown is NOT recorded yet"); - - await switchView(win, "theme"); - let picker = getThemesPicker(win.document); - await waitForThemesPickerReady(picker); - - events = Glean.themePicker.shown.testGetValue(); - Assert.equal(events?.length, 1, "theme_picker.shown is recorded once"); - Assert.deepEqual( - { - source: events[0].extra.source, - layout: events[0].extra.layout, - }, - { source: "about:addons", layout: "full" }, - "theme_picker.shown event has the expected source and layout" - ); - - await switchView(win, "extension"); - await switchView(win, "theme"); - picker = getThemesPicker(win.document); - await waitForThemesPickerReady(picker); - - events = Glean.themePicker.shown.testGetValue(); - Assert.equal( - events?.length, - 2, - "theme_picker.shown is recorded again when navigating back to the theme view" - ); - Assert.deepEqual( - { - source: events[1].extra.source, - layout: events[1].extra.layout, - }, - { source: "about:addons", layout: "full" }, - "second theme_picker.shown event has the expected source and layout" - ); - - await closeView(win); - await SpecialPowers.popPrefEnv(); -}); - -// Verifies that theme_picker.shown is not recorded when the Nova themes -// picker doesn't render any visible content. -add_task(async function test_picker_shown_not_recorded_when_pref_disabled() { - await SpecialPowers.pushPrefEnv({ - set: [ - [PREF_NOVA_ENABLED, true], - [PREF_NOVA_THEMES_PICKER, false], - ], - }); - - Services.fog.testResetFOG(); - - const win = await loadInitialView("theme"); - const picker = getThemesPicker(win.document); - await picker.updateComplete; - - Assert.equal( - Glean.themePicker.shown.testGetValue(), - undefined, - "theme_picker.shown is not recorded when the picker isn't shown" - ); - - await closeView(win); - await SpecialPowers.popPrefEnv(); -}); diff -urN firefox-157.0-orig/toolkit/mozapps/extensions/test/browser/browser_verify_l10n_strings.js firefox-157.0/toolkit/mozapps/extensions/test/browser/browser_verify_l10n_strings.js --- firefox-157.0-orig/toolkit/mozapps/extensions/test/browser/browser_verify_l10n_strings.js 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/mozapps/extensions/test/browser/browser_verify_l10n_strings.js 2026-10-05 07:59:18 +0900 @@ -7,7 +7,6 @@ "resource://gre/modules/addons/ThemesBundledLocalization.sys.mjs" ); -const PREF_NOVA_ENABLED = "browser.nova.enabled"; const DEFAULT_THEME_ID = "default-theme@mozilla.org"; add_task(async function test_ensure_builtin_themes_are_localized() { @@ -56,16 +55,9 @@ ); } - for (let novaEnabled of [true, false]) { - info(`Run with Nova ${novaEnabled ? "enabled" : "disabled"}`); - await SpecialPowers.pushPrefEnv({ - set: [[PREF_NOVA_ENABLED, novaEnabled]], - }); for (let standardTheme of standardBuiltInThemes) { testLocalizedThemeWrapperProperty(standardTheme); } - await SpecialPowers.popPrefEnv(); - } }); // Verifies every curated AMO-hosted theme names' fluent localizations are diff -urN firefox-157.0-orig/toolkit/themes/osx/global/icons/search-textbox.svg firefox-157.0/toolkit/themes/osx/global/icons/search-textbox.svg --- firefox-157.0-orig/toolkit/themes/osx/global/icons/search-textbox.svg 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/osx/global/icons/search-textbox.svg 2026-10-05 08:01:33 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/design-system/config/helpers/general/override-identifiers.mjs firefox-157.0/toolkit/themes/shared/design-system/config/helpers/general/override-identifiers.mjs --- firefox-157.0-orig/toolkit/themes/shared/design-system/config/helpers/general/override-identifiers.mjs 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/shared/design-system/config/helpers/general/override-identifiers.mjs 1970-01-01 09:00:00 +0900 @@ -1,10 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -export const OVERRIDE_IDENTIFIERS = [ - { - id: "nova", - pref: "browser.nova.enabled", - }, -]; diff -urN firefox-157.0-orig/toolkit/themes/shared/design-system/dist/tokens-brand.css firefox-157.0/toolkit/themes/shared/design-system/dist/tokens-brand.css --- firefox-157.0-orig/toolkit/themes/shared/design-system/dist/tokens-brand.css 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/shared/design-system/dist/tokens-brand.css 2026-10-05 06:40:03 +0900 @@ -65,35 +65,4 @@ --button-text-color-ghost-disabled: var(--button-text-color-disabled); } } - - @media -moz-pref("browser.nova.enabled") { - @layer tokens-foundation-brand-nova { - /** background-color **/ - --background-color-box: light-dark(var(--color-white), var(--color-gray-70)); - --background-color-box-info: light-dark(var(--color-gray-15), var(--color-gray-65)); - --background-color-canvas: light-dark(var(--color-gray-05), var(--color-gray-85)); - - /** border **/ - --border-color: light-dark(var(--color-gray-30), var(--color-gray-40)); - --border-color-deemphasized: light-dark(var(--color-gray-20), var(--color-gray-50)); - - /** button **/ - --button-text-color-ghost-disabled: var(--button-text-color-ghost); - - /** table **/ - /* TODO Bug 1821203 - Gray use needs to be consolidated */ - --table-row-background-color-alternate: light-dark(var(--color-gray-20), var(--color-gray-65)); - - /** text-color **/ - --text-color-accent-primary-selected: light-dark(var(--color-white), var(--color-gray-55)); - } - - @layer tokens-forced-colors-nova { - @media (forced-colors) { - /** button **/ - --button-text-color-ghost: ButtonText; - --button-text-color-ghost-disabled: GrayText; - } - } - } } diff -urN firefox-157.0-orig/toolkit/themes/shared/design-system/dist/tokens-platform.css firefox-157.0/toolkit/themes/shared/design-system/dist/tokens-platform.css --- firefox-157.0-orig/toolkit/themes/shared/design-system/dist/tokens-platform.css 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/themes/shared/design-system/dist/tokens-platform.css 2026-10-05 06:39:44 +0900 @@ -99,70 +99,6 @@ --toolbox-text-color: -moz-headerbartext; --toolbox-text-color-inactive: -moz-headerbarinactivetext; } - - @media -moz-pref("browser.nova.enabled") { - @layer tokens-foundation-nova { - /** button **/ - --button-background-color-hover: color-mix(in srgb, AccentColor 20%, transparent); - --button-background-color-active: color-mix(in srgb, AccentColor 30%, transparent); - --button-background-color-ghost: transparent; - --button-background-color-ghost-hover: color-mix(in srgb, currentColor 17%, transparent); - --button-background-color-ghost-active: color-mix(in srgb, currentColor 30%, transparent); - --button-text-color: currentColor; - --button-text-color-menu-selected: currentColor; - --button-text-color-primary: AccentColorText; - - /** color **/ - --color-accent-attention: AccentColor; - --color-accent-primary: AccentColor; - --color-accent-primary-hover: color-mix(in srgb, black 10%, var(--color-accent-primary)); - --color-accent-primary-active: color-mix(in srgb, black 20%, var(--color-accent-primary)); - --color-accent-primary-selected: SelectedItem; - - /** info-bar **/ - --info-bar-border-color: var(--border-color-deemphasized); - - /** input **/ - --input-text-background-color: Field; - - /** panel **/ - --panel-background-color: Field; - --panel-border-color: var(--border-color-deemphasized); - --panel-text-color: FieldText; - - /** popup **/ - --popup-border-color: var(--border-color-deemphasized); - - /** sidebar **/ - --sidebar-border-color: -moz-sidebarborder; - - /** text-color **/ - --text-color: currentColor; - --text-color-accent-primary-selected: SelectedItemText; - - /** toolbar **/ - --toolbar-background-color: color-mix(in srgb, -moz-dialog 85%, var(--color-white)); - --toolbar-field-background-color: light-dark(rgba(0, 0, 0, 0.05), var(--color-black-alpha-30)); - --toolbar-field-background-color-focus: Field; - --toolbar-field-border-color: var(--border-color-transparent); - --toolbar-field-border-color-focus: color-mix(in srgb, var(--focus-outline-color) 50%, transparent); - --toolbar-field-text-color: inherit; - --toolbar-field-text-color-focus: FieldText; - - /** toolbarbutton **/ - --toolbarbutton-background-color-hover: var(--button-background-color-ghost-hover); - --toolbarbutton-background-color-active: var(--button-background-color-ghost-active); - --toolbarbutton-icon-fill: currentColor; - --toolbarbutton-icon-fill-attention: AccentColor; - - /** toolbox **/ - --toolbox-background-color: -moz-headerbar; - --toolbox-background-color-inactive: -moz-headerbarinactive; - /* This gradient is only used for Nova */ - --toolbox-background-gradient: image(transparent); - --toolbox-text-color: -moz-headerbartext; - } - } } :root:is([theme-in-app], :not([lwtheme])), @@ -237,73 +173,4 @@ --toolbox-text-color-inactive: var(--toolbox-text-color); } } - - @media -moz-pref("browser.nova.enabled") { - @layer tokens-browser-theme-nova { - @media not ((forced-colors) or (-moz-native-theme)) { - /** button **/ - --button-background-color-hover: light-dark(var(--color-violet-desaturated-20), var(--color-violet-desaturated-50)); - --button-background-color-active: light-dark(var(--color-violet-desaturated-30), var(--color-violet-desaturated-40)); - --button-background-color-ghost: var(--button-background-color); - --button-background-color-ghost-hover: var(--button-background-color-hover); - --button-background-color-ghost-active: var(--button-background-color-active); - --button-text-color: light-dark(var(--color-violet-90), var(--color-gray-0)); - --button-text-color-menu-selected: light-dark(var(--button-text-color-ghost-selected), var(--button-text-color-selected)); - --button-text-color-primary: light-dark(var(--color-white), var(--color-gray-70)); - - /** color **/ - --color-accent-attention: light-dark(var(--color-green-40), var(--color-green-30)); - --color-accent-primary: light-dark(var(--color-violet-50), var(--color-violet-30)); - --color-accent-primary-hover: light-dark(var(--color-violet-60), var(--color-violet-20)); - --color-accent-primary-active: light-dark(var(--color-violet-70), var(--color-violet-10)); - --color-accent-primary-selected: var(--button-background-color-primary-active); - - /** info-bar **/ - --info-bar-border-color: light-dark(var(--color-violet-desaturated-20), var(--color-gray-60)); - - /** input **/ - --input-text-background-color: var(--background-color-box); - - /** panel **/ - --panel-background-color: var(--popup-background-color); - --panel-border-color: var(--popup-border-color); - --panel-text-color: var(--text-color); - - /** popup **/ - --popup-border-color: var(--border-color-deemphasized); - - /** sidebar **/ - --sidebar-border-color: var(--chrome-content-separator-color); - - /** text-color **/ - --text-color: light-dark(var(--color-violet-desaturated-90), var(--color-violet-desaturated-0)); - - /** toolbar **/ - --toolbar-background-color: light-dark(rgba(255, 255, 255, 0.4), rgba(0, 0, 0, 0.2)); - --toolbar-field-background-color: var(--toolbar-background-color); - --toolbar-field-background-color-focus: var(--background-color-box); - --toolbar-field-border-color: light-dark(var(--color-gray-20), var(--color-gray-60)); - --toolbar-field-border-color-focus: var(--focus-outline-color); - --toolbar-field-text-color: light-dark(var(--color-violet-desaturated-70), var(--color-violet-desaturated-10)); - --toolbar-field-text-color-focus: var(--toolbar-field-text-color); - - /** toolbarbutton **/ - --toolbarbutton-background-color-hover: light-dark(rgba(117, 102, 159, 0.25), rgba(182, 170, 217, 0.25)); - --toolbarbutton-background-color-active: light-dark(rgba(117, 102, 159, 0.4), rgba(182, 170, 217, 0.4)); - --toolbarbutton-icon-fill: light-dark(var(--color-violet-desaturated-50), var(--color-violet-desaturated-10)); - --toolbarbutton-icon-fill-attention: var(--color-accent-primary); - - /** toolbox **/ - --toolbox-background-color: light-dark(var(--color-white), var(--color-gray-70)); - --toolbox-background-color-inactive: transparent; - /* This gradient is only used for Nova */ - --toolbox-background-gradient: linear-gradient( - 96deg, - color-mix(var(--toolbox-background-color-gradient-leading) 50%, transparent) 39.84%, - color-mix(var(--toolbox-background-color-gradient-trailing) 50%, transparent) 101.72% - ); - --toolbox-text-color: var(--text-color); - } - } - } } diff -urN firefox-157.0-orig/toolkit/themes/shared/design-system/dist/tokens-shared.css firefox-157.0/toolkit/themes/shared/design-system/dist/tokens-shared.css --- firefox-157.0-orig/toolkit/themes/shared/design-system/dist/tokens-shared.css 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/themes/shared/design-system/dist/tokens-shared.css 2026-10-05 06:40:54 +0900 @@ -5,7 +5,7 @@ /* DO NOT EDIT this file directly, instead modify the relevant *.tokens.json file * and run `mach buildtokens` to see your changes. */ -@layer tokens-foundation, tokens-browser-theme, tokens-foundation-brand, tokens-foundation-nova, tokens-browser-theme-nova, tokens-foundation-brand-nova, tokens-prefers-contrast, tokens-prefers-contrast-nova, tokens-forced-colors, tokens-forced-colors-nova; +@layer tokens-foundation, tokens-browser-theme, tokens-foundation-brand, tokens-prefers-contrast, tokens-forced-colors; :root, :host(.anonymous-content-host) { @@ -745,420 +745,4 @@ --toolbarbutton-outline-color-selected: SelectedItem; } } - - @media -moz-pref("browser.nova.enabled") { - @layer tokens-foundation-nova { - /** background-color **/ - --background-color-critical: light-dark(var(--color-red-10), var(--color-red-70)); - --background-color-information: light-dark(var(--color-violet-10), var(--color-violet-70)); - --background-color-success: light-dark(var(--color-green-10), var(--color-green-70)); - --background-color-warning: light-dark(var(--color-yellow-10), var(--color-yellow-70)); - - /** border **/ - --border-color-error: light-dark(var(--color-red-50), var(--color-red-20)); - --border-color-interactive-hover: light-dark(var(--color-gray-50), var(--color-gray-20)); - --border-color-interactive-active: light-dark(var(--color-gray-50), var(--color-gray-15)); - --border-color-interactive-disabled: light-dark(var(--color-gray-25), var(--color-gray-55)); - --border-color-interactive: light-dark(var(--color-gray-45), var(--color-gray-40)); - --border-radius-xsmall: 4px; - --border-radius-small: 8px; - --border-radius-medium: 12px; - --border-radius-xlarge: 24px; - - /** box-shadow **/ - --box-shadow-color-darker-layer-1: light-dark(rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0.2)); - --box-shadow-color-darker-layer-2: light-dark(rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.4)); - --box-shadow-color-lighter-layer-1: light-dark(rgba(0, 0, 0, 0.02), rgba(0, 0, 0, 0.06)); - --box-shadow-color-lighter-layer-2: light-dark(rgba(0, 0, 0, 0.04), rgba(0, 0, 0, 0.12)); - - /** button **/ - --button-background-color-disabled: var(--button-background-color); - /* TODO Bug 1821203 - Gray use needs to be consolidated */ - --button-background-color: transparent; - --button-background-color-hover: light-dark(var(--color-violet-desaturated-20), var(--color-violet-desaturated-50)); - --button-background-color-active: light-dark(var(--color-violet-desaturated-30), var(--color-violet-desaturated-40)); - --button-background-color-destructive: light-dark(var(--color-red-50), var(--color-red-30)); - --button-background-color-destructive-hover: light-dark(var(--color-red-60), var(--color-red-20)); - --button-background-color-destructive-active: light-dark(var(--color-red-70), var(--color-red-10)); - --button-background-color-ghost: var(--button-background-color); - --button-background-color-ghost-hover: var(--button-background-color-hover); - --button-background-color-ghost-active: var(--button-background-color-active); - --button-background-color-ghost-selected: var(--button-background-color-selected); - --button-background-color-menu: var(--button-background-color-ghost); - --button-background-color-muted: light-dark(var(--color-gray-20), var(--color-gray-55)); - --button-background-color-muted-hover: light-dark(var(--color-gray-30), var(--color-gray-45)); - --button-background-color-muted-active: light-dark(var(--color-gray-40), var(--color-gray-35)); - --button-background-color-muted-disabled: var(--button-background-color-muted); - --button-background-color-muted-selected: var(--button-background-color-muted-active); - --button-background-color-primary: var(--color-accent-primary); - --button-background-color-primary-hover: var(--color-accent-primary-hover); - --button-background-color-primary-active: var(--color-accent-primary-active); - --button-background-color-primary-disabled: light-dark(var(--color-violet-desaturated-50), var(--color-violet-desaturated-40)); - --button-background-color-selected: var(--button-background-color-active); - --button-border-color: var(--color-accent-primary); - --button-border-color-destructive: var(--button-border-color-ghost); - --button-border-color-destructive-selected: var(--button-border-color-destructive); - --button-border-color-ghost: transparent; - --button-border-color-ghost-hover: var(--button-border-color-ghost); - --button-border-color-ghost-active: var(--button-border-color-ghost); - --button-border-color-ghost-disabled: var(--button-border-color-ghost); - --button-border-color-ghost-selected: var(--button-border-color-ghost); - --button-border-color-muted: var(--button-border-color-ghost); - --button-border-color-muted-hover: var(--button-border-color-muted); - --button-border-color-muted-active: var(--button-border-color-muted); - --button-border-color-muted-disabled: var(--button-border-color-muted); - --button-border-color-muted-selected: var(--button-border-color-muted); - --button-border-color-primary: var(--button-border-color-ghost); - --button-border-color-primary-selected: var(--button-border-color-primary); - --button-border-color-selected: var(--button-border-color); - --button-border-radius: var(--border-radius-xlarge); - --button-border-width-split: 0; - --button-gap-split: 0; - --button-padding-inline-small: var(--space-medium); - --button-split-separator-background-color: var(--button-border-color); - --button-text-color: light-dark(var(--color-violet-90), var(--color-gray-0)); - --button-text-color-destructive: light-dark(var(--color-white), var(--button-text-color-primary)); - --button-text-color-destructive-disabled: var(--button-text-color-destructive); - --button-text-color-destructive-selected: light-dark(var(--button-text-color-destructive), var(--button-text-color-destructive-active)); - --button-text-color-ghost-hover: var(--button-text-color-ghost); - --button-text-color-ghost-active: var(--button-text-color-ghost); - --button-text-color-menu-hover: light-dark(var(--button-text-color-ghost-hover), var(--button-text-color-hover)); - --button-text-color-menu-active: light-dark(var(--button-text-color-ghost-active), var(--button-text-color-active)); - --button-text-color-menu-disabled: light-dark(var(--button-text-color-ghost-disabled), var(--button-text-color-disabled)); - --button-text-color-menu-selected: light-dark(var(--button-text-color-ghost-selected), var(--button-text-color-selected)); - --button-text-color-muted: var(--button-text-color); - --button-text-color-muted-hover: var(--button-text-color-muted); - --button-text-color-muted-active: var(--button-text-color-muted); - --button-text-color-muted-disabled: var(--button-text-color-muted); - --button-text-color-muted-selected: var(--button-text-color-muted-active); - --button-text-color-primary: light-dark(var(--color-white), var(--color-gray-70)); - --button-text-color-primary-active: var(--button-text-color-primary); - --button-text-color-selected: var(--button-text-color); - - /** card **/ - --card-gap: var(--space-medium); - --card-header-background-color: var(--button-background-color); - --card-header-border-color: transparent; - - /** color **/ - --color-accent-attention: light-dark(var(--color-green-40), var(--color-green-30)); - --color-accent-primary: light-dark(var(--color-violet-50), var(--color-violet-30)); - --color-accent-primary-hover: light-dark(var(--color-violet-60), var(--color-violet-20)); - --color-accent-primary-active: light-dark(var(--color-violet-70), var(--color-violet-10)); - --color-accent-primary-selected: var(--button-background-color-primary-active); - --color-blue-0: #ecf3f8; - --color-blue-10: #c5eafe; - --color-blue-20: #a2d3ff; - --color-blue-30: #7bb2ff; - --color-blue-40: #5a87fd; - --color-blue-50: #455fe7; - --color-blue-60: #3246b0; - --color-blue-70: #23327b; - --color-blue-80: #17214c; - --color-blue-90: #111524; - --color-cyan-0: #ebf4f5; - --color-cyan-10: #c3eef8; - --color-cyan-20: #8fddf0; - --color-cyan-30: #4cc4e1; - --color-cyan-40: #10a4ca; - --color-cyan-50: #0a809f; - --color-cyan-60: #066077; - --color-cyan-70: #034554; - --color-cyan-80: #002d38; - --color-cyan-90: #011c23; - --color-gray-0: #fcfbff; - --color-gray-05: #f7f6fb; - --color-gray-10: #efedf2; - --color-gray-15: #e3e2e7; - --color-gray-20: #d6d5da; - --color-gray-25: #c7c6cb; - --color-gray-30: #b7b6ba; - --color-gray-35: #a6a4a9; - --color-gray-40: #949297; - --color-gray-45: #817f84; - --color-gray-50: #67666a; - --color-gray-55: #515054; - --color-gray-60: #3f3e42; - --color-gray-65: #312f33; - --color-gray-70: #252428; - --color-gray-75: #1d1b1f; - --color-gray-80: #171519; - --color-gray-85: #131215; - --color-gray-90: #121114; - --color-green-0: #ecf4f1; - --color-green-10: #c4f1e0; - --color-green-20: #90e3c6; - --color-green-30: #4acca6; - --color-green-40: #11ae84; - --color-green-50: #008865; - --color-green-60: #06674b; - --color-green-70: #004933; - --color-green-80: #003020; - --color-green-90: #001e12; - --color-orange-0: #f8f0ec; - --color-orange-10: #ffdbc5; - --color-orange-20: #febd99; - --color-orange-30: #ff9565; - --color-orange-40: #f4682c; - --color-orange-50: #cd4208; - --color-orange-60: #9c2c05; - --color-orange-70: #701c07; - --color-orange-80: #461209; - --color-orange-90: #250e0b; - --color-pink-0: #f7eff3; - --color-pink-10: #ffd5ee; - --color-pink-20: #ffb0e2; - --color-pink-30: #f585d3; - --color-pink-40: #db54bf; - --color-pink-50: #b32e9f; - --color-pink-60: #882078; - --color-pink-70: #5f1854; - --color-pink-80: #3c1334; - --color-pink-90: #1e111b; - --color-purple-0: #faebff; - --color-purple-10: #f6d7ff; - --color-purple-20: #e8b7ff; - --color-purple-30: #d490ff; - --color-purple-40: #b864ee; - --color-purple-50: #9540c8; - --color-purple-60: #702e98; - --color-purple-70: #4f216b; - --color-purple-80: #311842; - --color-purple-90: #1a1220; - --color-red-0: #fcf2f3; - --color-red-10: #ffd9df; - --color-red-20: #ffb6bf; - --color-red-30: #ff8998; - --color-red-40: #ed566e; - --color-red-50: #c52d4f; - --color-red-60: #961e3d; - --color-red-70: #69172d; - --color-red-80: #42121f; - --color-red-90: #211014; - --color-violet-0: #f5ecff; - --color-violet-10: #eaddff; - --color-violet-20: #d4c1ff; - --color-violet-30: #b89cff; - --color-violet-40: #9871ff; - --color-violet-50: #764edd; - --color-violet-60: #5939a8; - --color-violet-70: #3e2976; - --color-violet-80: #271c48; - --color-violet-90: #161423; - --color-violet-desaturated-0: #f2f0f8; - --color-violet-desaturated-10: #e7e1f8; - --color-violet-desaturated-20: #d2c8ec; - --color-violet-desaturated-30: #b6aad9; - --color-violet-desaturated-40: #9687c0; - --color-violet-desaturated-50: #75669f; - --color-violet-desaturated-60: #584a7d; - --color-violet-desaturated-70: #3e315f; - --color-violet-desaturated-80: #281d44; - --color-violet-desaturated-90: #180e30; - --color-yellow-0: #f9f5e6; - --color-yellow-10: #fde8b5; - --color-yellow-20: #fbcc77; - --color-yellow-30: #f3a81e; - --color-yellow-40: #db820e; - --color-yellow-50: #b26100; - --color-yellow-60: #854800; - --color-yellow-70: #5f3100; - --color-yellow-80: #3e1d00; - --color-yellow-90: #270f00; - - /** icon **/ - --icon-color: var(--text-color); - --icon-color-accent-primary-desaturated: light-dark(var(--color-violet-desaturated-60), var(--color-violet-desaturated-40)); - --icon-color-critical: light-dark(var(--color-red-50), var(--color-red-20)); - --icon-color-information: light-dark(var(--color-violet-50), var(--color-violet-20)); - --icon-color-success: light-dark(var(--color-green-50), var(--color-green-20)); - --icon-color-warning: light-dark(var(--color-yellow-50), var(--color-yellow-20)); - --icon-size-xsmall: var(--size-item-xsmall); - --icon-size-small: var(--size-item-small); - --icon-size-large: var(--size-item-medium); - --icon-size-xlarge: var(--size-item-large); - - /** info-bar **/ - --info-bar-border-color: light-dark(var(--color-violet-desaturated-20), var(--color-gray-60)); - --info-bar-margin-block-end: 0; - - /** input **/ - --input-search-border-radius: var(--border-radius-circle); - --input-search-icon-size: var(--icon-size-small); - --input-text-background-color: var(--background-color-box); - --input-text-background-color-disabled: var(--button-background-color-ghost-disabled); - - /** page **/ - --page-main-content-width: 664px; - - /** panel **/ - --panel-background-color: var(--popup-background-color); - --panel-border-color: var(--popup-border-color); - --panel-border-radius: var(--popup-border-radius); - --panel-menuitem-border-radius: var(--border-radius-large); - --panel-text-color: var(--text-color); - - /** popup **/ - --popup-border-color: var(--border-color-deemphasized); - --popup-border-radius: var(--border-radius-xlarge); - - /** sidebar **/ - --sidebar-border-color: var(--chrome-content-separator-color); - - /** text-color **/ - --text-color: light-dark(var(--color-violet-desaturated-90), var(--color-violet-desaturated-0)); - --text-color-error: light-dark(var(--color-red-50), var(--color-red-20)); - - /** toolbar **/ - --toolbar-background-color: light-dark(rgba(255, 255, 255, 0.4), rgba(0, 0, 0, 0.2)); - --toolbar-field-background-color: var(--toolbar-background-color); - --toolbar-field-background-color-focus: var(--background-color-box); - --toolbar-field-border-color: light-dark(var(--color-gray-20), var(--color-gray-60)); - --toolbar-field-border-color-focus: var(--focus-outline-color); - --toolbar-field-text-color: light-dark(var(--color-violet-desaturated-70), var(--color-violet-desaturated-10)); - --toolbar-field-text-color-focus: var(--toolbar-field-text-color); - --toolbar-padding-inline: 6px; - - /** toolbarbutton **/ - --toolbarbutton-background-color-hover: light-dark(rgba(117, 102, 159, 0.25), rgba(182, 170, 217, 0.25)); - --toolbarbutton-background-color-active: light-dark(rgba(117, 102, 159, 0.4), rgba(182, 170, 217, 0.4)); - --toolbarbutton-icon-fill: light-dark(var(--color-violet-desaturated-50), var(--color-violet-desaturated-10)); - --toolbarbutton-icon-fill-attention: var(--color-accent-primary); - --toolbarbutton-opacity-disabled: 0.4; - --toolbarbutton-outline-color: transparent; - --toolbarbutton-outline-color-selected: var(--toolbarbutton-outline-color-active); - --toolbarbutton-outline-offset: -1px; - - /** toolbox **/ - --toolbox-background-color: light-dark(var(--color-white), var(--color-gray-70)); - --toolbox-background-color-gradient-leading: light-dark(var(--color-violet-10), var(--color-violet-desaturated-70)); - --toolbox-background-color-gradient-trailing: light-dark(var(--color-orange-10), var(--color-orange-70)); - --toolbox-background-color-inactive: transparent; - /* This gradient is only used for Nova */ - --toolbox-background-gradient: linear-gradient( - 96deg, - color-mix(var(--toolbox-background-color-gradient-leading) 50%, transparent) 39.84%, - color-mix(var(--toolbox-background-color-gradient-trailing) 50%, transparent) 101.72% - ); - --toolbox-text-color: var(--text-color); - /* Figma aliases this to toolbox/text/color so designers see a real color, but CSS must use currentColor: the tab inherits --lwt-text-color under an lwtheme and --toolbox-text-color-inactive in a background window, neither of which --toolbox-text-color tracks. Listed in figma-import.mjs's FIGMA_IGNORES so the alias doesn't overwrite this. */ - --toolbox-text-color-current: var(--toolbox-text-color); - } - - @layer tokens-prefers-contrast-nova { - @media (prefers-contrast) { - /** info-bar **/ - --info-bar-border-color: CanvasText; - - /** text-color **/ - --text-color: CanvasText; - --text-color-error: inherit; - - /** toolbar **/ - --toolbar-field-border-color-focus: var(--focus-outline-color); - } - } - - @layer tokens-forced-colors-nova { - @media (forced-colors) { - /** border **/ - --border-color-deemphasized: CanvasText; - --border-color-interactive-hover: SelectedItem; - --border-color-interactive-active: ButtonText; - --border-color-interactive-disabled: GrayText; - - /** box-shadow **/ - --box-shadow-color-darker-layer-1: transparent; - --box-shadow-color-darker-layer-2: transparent; - --box-shadow-color-lighter-layer-1: transparent; - --box-shadow-color-lighter-layer-2: transparent; - - /** button **/ - /* TODO Bug 1821203 - Gray use needs to be consolidated */ - --button-background-color: ButtonFace; - --button-background-color-hover: SelectedItemText; - --button-background-color-active: SelectedItemText; - --button-background-color-destructive: var(--button-background-color-primary); - --button-background-color-destructive-hover: var(--button-background-color-primary-hover); - --button-background-color-destructive-active: var(--button-background-color-primary-active); - --button-background-color-menu: var(--button-background-color); - --button-background-color-menu-hover: ButtonText; - --button-background-color-menu-active: ButtonText; - --button-background-color-muted: var(--button-background-color); - --button-background-color-muted-hover: var(--button-background-color-hover); - --button-background-color-muted-active: var(--button-background-color-active); - --button-background-color-muted-disabled: var(--button-background-color); - --button-background-color-muted-selected: var(--button-background-color-ghost-active); - --button-background-color-primary-disabled: GrayText; - --button-background-color-selected: SelectedItem; - --button-border-color-destructive: var(--button-border-color-primary); - --button-border-color-destructive-selected: var(--button-border-color-destructive-active); - --button-border-color-ghost: var(--button-border-color); - --button-border-color-ghost-hover: var(--button-border-color-hover); - --button-border-color-ghost-active: var(--button-border-color-active); - --button-border-color-ghost-disabled: var(--button-border-color-disabled); - --button-border-color-ghost-selected: var(--button-border-color-ghost-active); - --button-border-color-muted: var(--button-border-color); - --button-border-color-muted-hover: var(--button-border-color-hover); - --button-border-color-muted-active: var(--button-border-color-active); - --button-border-color-muted-disabled: var(--button-border-color-disabled); - --button-border-color-muted-selected: var(--button-border-color-ghost-active); - --button-border-color-primary: ButtonFace; - --button-border-color-primary-selected: var(--button-border-color-primary-active); - --button-border-color-selected: var(--button-border-color-active); - --button-text-color: ButtonText; - --button-text-color-destructive: var(--button-text-color-primary); - --button-text-color-destructive-disabled: var(--button-text-color-primary); - --button-text-color-destructive-selected: var(--button-text-color-destructive-active); - --button-text-color-ghost-hover: var(--button-text-color-ghost-active); - --button-text-color-menu-hover: ButtonFace; - --button-text-color-menu-active: ButtonFace; - --button-text-color-menu-disabled: var(--button-text-color-disabled); - --button-text-color-menu-selected: var(--button-text-color-primary-selected); - --button-text-color-muted: ButtonText; - --button-text-color-muted-hover: var(--button-text-color-ghost-active); - --button-text-color-muted-active: var(--button-text-color-active); - --button-text-color-muted-disabled: GrayText; - --button-text-color-muted-selected: var(--button-text-color-ghost-active); - --button-text-color-primary: ButtonFace; - --button-text-color-primary-active: var(--button-text-color-primary-hover); - --button-text-color-selected: SelectedItemText; - - /** card **/ - --card-header-border-color: var(--button-border-color); - - /** color **/ - --color-accent-attention: AccentColor; - --color-accent-primary: ButtonText; - --color-accent-primary-hover: SelectedItem; - --color-accent-primary-active: var(--color-accent-primary-hover); - --color-accent-primary-selected: SelectedItem; - - /** icon **/ - --icon-color-accent-primary-desaturated: CanvasText; - - /** text-color **/ - --text-color-accent-primary-selected: SelectedItemText; - - /** toolbar **/ - --toolbar-background-color: Canvas; - --toolbar-field-border-color: ButtonText; - --toolbar-field-text-color: var(--text-color); - - /** toolbarbutton **/ - --toolbarbutton-background-color-hover: var(--button-background-color-ghost-hover); - --toolbarbutton-background-color-active: var(--button-background-color-ghost-active); - --toolbarbutton-icon-fill: var(--button-text-color); - --toolbarbutton-outline-color: var(--button-border-color); - --toolbarbutton-outline-color-hover: var(--button-border-color-hover); - --toolbarbutton-outline-color-active: var(--button-border-color-active); - - /** toolbox **/ - --toolbox-background-color-gradient-leading: Canvas; - --toolbox-background-color-gradient-trailing: Canvas; - /* This gradient is only used for Nova */ - --toolbox-background-gradient: image(transparent); - } - } - } } diff -urN firefox-157.0-orig/toolkit/themes/shared/extensions/category-available.svg firefox-157.0/toolkit/themes/shared/extensions/category-available.svg --- firefox-157.0-orig/toolkit/themes/shared/extensions/category-available.svg 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/themes/shared/extensions/category-available.svg 2026-10-05 06:38:08 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/extensions/category-extensions.svg firefox-157.0/toolkit/themes/shared/extensions/category-extensions.svg --- firefox-157.0-orig/toolkit/themes/shared/extensions/category-extensions.svg 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/themes/shared/extensions/category-extensions.svg 2026-10-05 06:38:06 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/extensions/category-plugins.svg firefox-157.0/toolkit/themes/shared/extensions/category-plugins.svg --- firefox-157.0-orig/toolkit/themes/shared/extensions/category-plugins.svg 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/themes/shared/extensions/category-plugins.svg 2026-10-05 06:38:02 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/extensions/category-sitepermission.svg firefox-157.0/toolkit/themes/shared/extensions/category-sitepermission.svg --- firefox-157.0-orig/toolkit/themes/shared/extensions/category-sitepermission.svg 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/themes/shared/extensions/category-sitepermission.svg 2026-10-05 06:37:55 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/extensions/category-themes.svg firefox-157.0/toolkit/themes/shared/extensions/category-themes.svg --- firefox-157.0-orig/toolkit/themes/shared/extensions/category-themes.svg 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/shared/extensions/category-themes.svg 2026-10-05 06:38:04 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/extensions/extension.svg firefox-157.0/toolkit/themes/shared/extensions/extension.svg --- firefox-157.0-orig/toolkit/themes/shared/extensions/extension.svg 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/shared/extensions/extension.svg 2026-10-05 06:38:03 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/extensions/extensionGeneric.svg firefox-157.0/toolkit/themes/shared/extensions/extensionGeneric.svg --- firefox-157.0-orig/toolkit/themes/shared/extensions/extensionGeneric.svg 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/shared/extensions/extensionGeneric.svg 2026-10-05 06:38:07 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/findbar.css firefox-157.0/toolkit/themes/shared/findbar.css --- firefox-157.0-orig/toolkit/themes/shared/findbar.css 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/shared/findbar.css 2026-10-05 06:46:57 +0900 @@ -27,11 +27,9 @@ background-color: var(--toolbar-background-color); color: -moz-dialogtext; - @media not -moz-pref("browser.nova.enabled") { border-top-color: ThreeDShadow; background-color: -moz-dialog; --findbar-container-height: 28px; - } &:where([hidden]) { /* Override display:none to make the transition work. `!important` beats the @@ -93,8 +91,6 @@ width: 18em; box-sizing: border-box; - /* stylelint-disable-next-line media-query-no-invalid */ - @media not -moz-pref("browser.nova.enabled") { border-radius: var(--border-radius-small); border: 1px solid var(--input-border-color); min-height: auto; @@ -104,7 +100,6 @@ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.23); outline-color: var(--toolbar-field-border-color-focus); } - } &:focus { background-color: var(--toolbar-field-background-color-focus); @@ -145,11 +140,8 @@ border-radius: var(--border-radius-circle); padding: var(--space-xsmall) var(--space-small); - /* stylelint-disable-next-line media-query-no-invalid */ - @media not -moz-pref("browser.nova.enabled") { border-radius: var(--border-radius-small); padding: 4px 7px; - } @media (prefers-contrast) { border: var(--border-width) solid var(--toolbarbutton-outline-color); @@ -235,9 +227,6 @@ background-color: var(--toolbarbutton-background-color-active, rgba(190, 190, 190, 0.4)); } - /* stylelint-disable-next-line media-query-no-invalid */ - @media not -moz-pref("browser.nova.enabled") { border-radius: var(--border-radius-small); width: 24px; - } } diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/arrow-counterclockwise-16.svg firefox-157.0/toolkit/themes/shared/icons/arrow-counterclockwise-16.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/arrow-counterclockwise-16.svg 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/arrow-counterclockwise-16.svg 2026-10-05 06:44:41 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/arrow-down-12.svg firefox-157.0/toolkit/themes/shared/icons/arrow-down-12.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/arrow-down-12.svg 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/arrow-down-12.svg 2026-10-05 06:43:49 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/arrow-down.svg firefox-157.0/toolkit/themes/shared/icons/arrow-down.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/arrow-down.svg 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/arrow-down.svg 2026-10-05 06:44:52 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/arrow-left-12.svg firefox-157.0/toolkit/themes/shared/icons/arrow-left-12.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/arrow-left-12.svg 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/arrow-left-12.svg 2026-10-05 06:45:01 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/arrow-left.svg firefox-157.0/toolkit/themes/shared/icons/arrow-left.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/arrow-left.svg 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/arrow-left.svg 2026-10-05 06:45:03 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/arrow-right-12.svg firefox-157.0/toolkit/themes/shared/icons/arrow-right-12.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/arrow-right-12.svg 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/arrow-right-12.svg 2026-10-05 06:44:44 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/arrow-right.svg firefox-157.0/toolkit/themes/shared/icons/arrow-right.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/arrow-right.svg 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/arrow-right.svg 2026-10-05 06:44:42 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/arrow-up-12.svg firefox-157.0/toolkit/themes/shared/icons/arrow-up-12.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/arrow-up-12.svg 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/arrow-up-12.svg 2026-10-05 06:44:39 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/arrow-up.svg firefox-157.0/toolkit/themes/shared/icons/arrow-up.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/arrow-up.svg 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/arrow-up.svg 2026-10-05 06:45:05 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/arrows-updown.svg firefox-157.0/toolkit/themes/shared/icons/arrows-updown.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/arrows-updown.svg 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/arrows-updown.svg 2026-10-05 06:44:57 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/block.svg firefox-157.0/toolkit/themes/shared/icons/block.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/block.svg 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/block.svg 2026-10-05 06:44:13 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/blocked.svg firefox-157.0/toolkit/themes/shared/icons/blocked.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/blocked.svg 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/blocked.svg 2026-10-05 06:44:10 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/check-filled.svg firefox-157.0/toolkit/themes/shared/icons/check-filled.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/check-filled.svg 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/check-filled.svg 2026-10-05 06:45:09 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/check.svg firefox-157.0/toolkit/themes/shared/icons/check.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/check.svg 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/check.svg 2026-10-05 06:44:12 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/chevron.svg firefox-157.0/toolkit/themes/shared/icons/chevron.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/chevron.svg 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/chevron.svg 2026-10-05 06:45:07 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/close-fill.svg firefox-157.0/toolkit/themes/shared/icons/close-fill.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/close-fill.svg 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/close-fill.svg 2026-10-05 06:44:51 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/close.svg firefox-157.0/toolkit/themes/shared/icons/close.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/close.svg 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/close.svg 2026-10-05 06:45:12 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/color-picker-20.svg firefox-157.0/toolkit/themes/shared/icons/color-picker-20.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/color-picker-20.svg 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/color-picker-20.svg 2026-10-05 06:44:02 +0900 @@ -5,13 +5,9 @@ - \ No newline at end of file + diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/cursor-arrow.svg firefox-157.0/toolkit/themes/shared/icons/cursor-arrow.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/cursor-arrow.svg 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/cursor-arrow.svg 2026-10-05 06:45:02 +0900 @@ -5,13 +5,9 @@ - \ No newline at end of file + diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/defaultFavicon.svg firefox-157.0/toolkit/themes/shared/icons/defaultFavicon.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/defaultFavicon.svg 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/defaultFavicon.svg 2026-10-05 06:45:11 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/delete.svg firefox-157.0/toolkit/themes/shared/icons/delete.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/delete.svg 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/delete.svg 2026-10-05 06:44:11 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/edit-copy.svg firefox-157.0/toolkit/themes/shared/icons/edit-copy.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/edit-copy.svg 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/edit-copy.svg 2026-10-05 06:43:56 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/edit-outline.svg firefox-157.0/toolkit/themes/shared/icons/edit-outline.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/edit-outline.svg 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/edit-outline.svg 2026-10-05 06:44:47 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/error.svg firefox-157.0/toolkit/themes/shared/icons/error.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/error.svg 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/error.svg 2026-10-05 06:44:05 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/eye-slash.svg firefox-157.0/toolkit/themes/shared/icons/eye-slash.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/eye-slash.svg 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/eye-slash.svg 2026-10-05 06:44:40 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/eye.svg firefox-157.0/toolkit/themes/shared/icons/eye.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/eye.svg 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/eye.svg 2026-10-05 06:44:45 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/folder.svg firefox-157.0/toolkit/themes/shared/icons/folder.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/folder.svg 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/folder.svg 2026-10-05 06:43:53 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/help.svg firefox-157.0/toolkit/themes/shared/icons/help.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/help.svg 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/help.svg 2026-10-05 06:43:55 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/highlights.svg firefox-157.0/toolkit/themes/shared/icons/highlights.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/highlights.svg 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/highlights.svg 2026-10-05 06:45:00 +0900 @@ -5,10 +5,6 @@ @@ -16,4 +12,4 @@ - \ No newline at end of file + diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/info-filled.svg firefox-157.0/toolkit/themes/shared/icons/info-filled.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/info-filled.svg 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/info-filled.svg 2026-10-05 06:44:03 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/info.svg firefox-157.0/toolkit/themes/shared/icons/info.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/info.svg 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/info.svg 2026-10-05 06:44:04 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/lightbulb.svg firefox-157.0/toolkit/themes/shared/icons/lightbulb.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/lightbulb.svg 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/lightbulb.svg 2026-10-05 06:43:57 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/local-host.svg firefox-157.0/toolkit/themes/shared/icons/local-host.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/local-host.svg 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/local-host.svg 2026-10-05 06:44:58 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/minus.svg firefox-157.0/toolkit/themes/shared/icons/minus.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/minus.svg 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/minus.svg 2026-10-05 06:43:54 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/more.svg firefox-157.0/toolkit/themes/shared/icons/more.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/more.svg 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/more.svg 2026-10-05 06:45:04 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/move-16.svg firefox-157.0/toolkit/themes/shared/icons/move-16.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/move-16.svg 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/move-16.svg 2026-10-05 06:44:07 +0900 @@ -5,13 +5,9 @@ - \ No newline at end of file + diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/newsfeed.svg firefox-157.0/toolkit/themes/shared/icons/newsfeed.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/newsfeed.svg 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/newsfeed.svg 2026-10-05 06:44:00 +0900 @@ -5,14 +5,10 @@ - \ No newline at end of file + diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/open-in-new.svg firefox-157.0/toolkit/themes/shared/icons/open-in-new.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/open-in-new.svg 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/open-in-new.svg 2026-10-05 06:44:53 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/page-landscape.svg firefox-157.0/toolkit/themes/shared/icons/page-landscape.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/page-landscape.svg 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/page-landscape.svg 2026-10-05 06:44:09 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/page-portrait.svg firefox-157.0/toolkit/themes/shared/icons/page-portrait.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/page-portrait.svg 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/page-portrait.svg 2026-10-05 06:43:47 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/plugin.svg firefox-157.0/toolkit/themes/shared/icons/plugin.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/plugin.svg 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/plugin.svg 2026-10-05 06:44:54 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/plus-20.svg firefox-157.0/toolkit/themes/shared/icons/plus-20.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/plus-20.svg 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/plus-20.svg 2026-10-05 06:44:50 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/plus.svg firefox-157.0/toolkit/themes/shared/icons/plus.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/plus.svg 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/plus.svg 2026-10-05 06:44:06 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/print.svg firefox-157.0/toolkit/themes/shared/icons/print.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/print.svg 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/print.svg 2026-10-05 06:44:38 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/reload.svg firefox-157.0/toolkit/themes/shared/icons/reload.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/reload.svg 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/reload.svg 2026-10-05 06:43:58 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/search-glass.svg firefox-157.0/toolkit/themes/shared/icons/search-glass.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/search-glass.svg 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/search-glass.svg 2026-10-05 06:44:35 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/security-broken.svg firefox-157.0/toolkit/themes/shared/icons/security-broken.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/security-broken.svg 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/security-broken.svg 2026-10-05 06:43:52 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/security-warning.svg firefox-157.0/toolkit/themes/shared/icons/security-warning.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/security-warning.svg 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/security-warning.svg 2026-10-05 06:44:49 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/security.svg firefox-157.0/toolkit/themes/shared/icons/security.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/security.svg 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/security.svg 2026-10-05 06:44:01 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/settings.svg firefox-157.0/toolkit/themes/shared/icons/settings.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/settings.svg 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/settings.svg 2026-10-05 06:44:56 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/swap-horizontal-20.svg firefox-157.0/toolkit/themes/shared/icons/swap-horizontal-20.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/swap-horizontal-20.svg 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/swap-horizontal-20.svg 2026-10-05 06:45:06 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/tab-notes-12.svg firefox-157.0/toolkit/themes/shared/icons/tab-notes-12.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/tab-notes-12.svg 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/tab-notes-12.svg 2026-10-05 06:44:43 +0900 @@ -5,13 +5,9 @@ - \ No newline at end of file + diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/tab-notes.svg firefox-157.0/toolkit/themes/shared/icons/tab-notes.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/tab-notes.svg 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/tab-notes.svg 2026-10-05 06:43:46 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/thumbs-down-20.svg firefox-157.0/toolkit/themes/shared/icons/thumbs-down-20.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/thumbs-down-20.svg 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/thumbs-down-20.svg 2026-10-05 06:45:10 +0900 @@ -5,13 +5,9 @@ - \ No newline at end of file + diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/thumbs-up-20.svg firefox-157.0/toolkit/themes/shared/icons/thumbs-up-20.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/thumbs-up-20.svg 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/thumbs-up-20.svg 2026-10-05 06:45:08 +0900 @@ -5,13 +5,9 @@ - \ No newline at end of file + diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/trending.svg firefox-157.0/toolkit/themes/shared/icons/trending.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/trending.svg 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/trending.svg 2026-10-05 06:43:59 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/trophy.svg firefox-157.0/toolkit/themes/shared/icons/trophy.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/trophy.svg 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/trophy.svg 2026-10-05 06:44:48 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/update-icon.svg firefox-157.0/toolkit/themes/shared/icons/update-icon.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/update-icon.svg 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/update-icon.svg 2026-10-05 06:44:29 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/icons/warning.svg firefox-157.0/toolkit/themes/shared/icons/warning.svg --- firefox-157.0-orig/toolkit/themes/shared/icons/warning.svg 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/shared/icons/warning.svg 2026-10-05 06:44:46 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/media/audio-muted.svg firefox-157.0/toolkit/themes/shared/media/audio-muted.svg --- firefox-157.0-orig/toolkit/themes/shared/media/audio-muted.svg 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/shared/media/audio-muted.svg 2026-10-05 06:43:45 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/media/audio.svg firefox-157.0/toolkit/themes/shared/media/audio.svg --- firefox-157.0-orig/toolkit/themes/shared/media/audio.svg 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/shared/media/audio.svg 2026-10-05 06:43:42 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/media/closed-caption-settings-button.svg firefox-157.0/toolkit/themes/shared/media/closed-caption-settings-button.svg --- firefox-157.0-orig/toolkit/themes/shared/media/closed-caption-settings-button.svg 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/shared/media/closed-caption-settings-button.svg 2026-10-05 06:43:44 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/media/pause-fill.svg firefox-157.0/toolkit/themes/shared/media/pause-fill.svg --- firefox-157.0-orig/toolkit/themes/shared/media/pause-fill.svg 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/shared/media/pause-fill.svg 2026-10-05 06:43:41 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/media/picture-in-picture-closed.svg firefox-157.0/toolkit/themes/shared/media/picture-in-picture-closed.svg --- firefox-157.0-orig/toolkit/themes/shared/media/picture-in-picture-closed.svg 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/shared/media/picture-in-picture-closed.svg 2026-10-05 06:43:38 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/media/picture-in-picture-open.svg firefox-157.0/toolkit/themes/shared/media/picture-in-picture-open.svg --- firefox-157.0-orig/toolkit/themes/shared/media/picture-in-picture-open.svg 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/shared/media/picture-in-picture-open.svg 2026-10-05 06:43:43 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/media/play-fill.svg firefox-157.0/toolkit/themes/shared/media/play-fill.svg --- firefox-157.0-orig/toolkit/themes/shared/media/play-fill.svg 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/shared/media/play-fill.svg 2026-10-05 06:43:40 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/narrate/skip-backward-20.svg firefox-157.0/toolkit/themes/shared/narrate/skip-backward-20.svg --- firefox-157.0-orig/toolkit/themes/shared/narrate/skip-backward-20.svg 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/shared/narrate/skip-backward-20.svg 2026-10-05 06:38:09 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/narrate/skip-forward-20.svg firefox-157.0/toolkit/themes/shared/narrate/skip-forward-20.svg --- firefox-157.0-orig/toolkit/themes/shared/narrate/skip-forward-20.svg 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/themes/shared/narrate/skip-forward-20.svg 2026-10-05 06:38:10 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/reader/align-center-20.svg firefox-157.0/toolkit/themes/shared/reader/align-center-20.svg --- firefox-157.0-orig/toolkit/themes/shared/reader/align-center-20.svg 2026-09-24 19:45:56 +0900 +++ firefox-157.0/toolkit/themes/shared/reader/align-center-20.svg 2026-10-05 06:43:31 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/reader/align-left-20.svg firefox-157.0/toolkit/themes/shared/reader/align-left-20.svg --- firefox-157.0-orig/toolkit/themes/shared/reader/align-left-20.svg 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/themes/shared/reader/align-left-20.svg 2026-10-05 06:43:37 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/reader/align-right-20.svg firefox-157.0/toolkit/themes/shared/reader/align-right-20.svg --- firefox-157.0-orig/toolkit/themes/shared/reader/align-right-20.svg 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/themes/shared/reader/align-right-20.svg 2026-10-05 06:43:32 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/reader/character-spacing-20.svg firefox-157.0/toolkit/themes/shared/reader/character-spacing-20.svg --- firefox-157.0-orig/toolkit/themes/shared/reader/character-spacing-20.svg 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/themes/shared/reader/character-spacing-20.svg 2026-10-05 06:43:34 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/reader/content-width-20.svg firefox-157.0/toolkit/themes/shared/reader/content-width-20.svg --- firefox-157.0-orig/toolkit/themes/shared/reader/content-width-20.svg 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/themes/shared/reader/content-width-20.svg 2026-10-05 06:43:26 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/reader/line-spacing-20.svg firefox-157.0/toolkit/themes/shared/reader/line-spacing-20.svg --- firefox-157.0-orig/toolkit/themes/shared/reader/line-spacing-20.svg 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/themes/shared/reader/line-spacing-20.svg 2026-10-05 06:43:23 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/shared/reader/word-spacing-20.svg firefox-157.0/toolkit/themes/shared/reader/word-spacing-20.svg --- firefox-157.0-orig/toolkit/themes/shared/reader/word-spacing-20.svg 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/themes/shared/reader/word-spacing-20.svg 2026-10-05 06:43:35 +0900 @@ -5,10 +5,6 @@ diff -urN firefox-157.0-orig/toolkit/themes/windows/global/icons/menu-check.svg firefox-157.0/toolkit/themes/windows/global/icons/menu-check.svg --- firefox-157.0-orig/toolkit/themes/windows/global/icons/menu-check.svg 2026-09-24 19:45:55 +0900 +++ firefox-157.0/toolkit/themes/windows/global/icons/menu-check.svg 2026-10-05 08:02:14 +0900 @@ -5,10 +5,6 @@