From b0e3606382742e7a08a7a108aad3a5bf6baa2330 Mon Sep 17 00:00:00 2001
From: atharva kamble <60008419+athkdev@users.noreply.github.com>
Date: Thu, 16 Oct 2025 18:24:12 -0400
Subject: [PATCH 1/2] tests: add unit tests for unloading workspaces, p=#10840
---
.../workspaces/browser_workspace_unload.js | 113 ++++++++++++++++++
1 file changed, 113 insertions(+)
create mode 100644 src/zen/tests/workspaces/browser_workspace_unload.js
diff --git a/src/zen/tests/workspaces/browser_workspace_unload.js b/src/zen/tests/workspaces/browser_workspace_unload.js
new file mode 100644
index 000000000..7f2c60f99
--- /dev/null
+++ b/src/zen/tests/workspaces/browser_workspace_unload.js
@@ -0,0 +1,113 @@
+/* Any copyright is dedicated to the Public Domain.
+ https://creativecommons.org/publicdomain/zero/1.0/ */
+
+'use strict';
+
+// verify that workspace unloading works
+add_task(async function test_UnloadWorkspace_WithMultipleTabs() {
+ const workspaceId = await gZenWorkspaces.createAndSaveWorkspace('Test Workspace 1');
+ const tabs = [];
+ for (let i = 0; i < 3; i++) {
+ const tab = await BrowserTestUtils.openNewForegroundTab(
+ window.gBrowser,
+ `data:text/html,
Workspace Tab ${i}`,
+ true,
+ { skipAnimation: true }
+ );
+ tab.setAttribute('zen-workspace-id', workspaceId);
+ tabs.push(tab);
+ }
+
+ for (const tab of tabs) {
+ ok(!tab.hasAttribute('pending'), 'Tab should not be pending before unload');
+ ok(tab.linkedPanel, 'Tab should have linked panel before unload');
+ }
+
+ await gZenWorkspaces.unloadWorkspace();
+
+ for (const tab of tabs) {
+ ok(tab.hasAttribute('pending'), 'Tab should be pending after unload');
+ ok(!tab.linkedPanel, 'Tab should not have linked panel after unload');
+ }
+
+ await gZenWorkspaces.removeWorkspace(workspaceId);
+});
+
+// verify that essential tabs are not unloaded
+add_task(async function test_UnloadWorkspace_WithEssentialTabs() {
+ const workspaceId = await gZenWorkspaces.createAndSaveWorkspace('Test Workspace 2');
+
+ const regularTab = await BrowserTestUtils.openNewForegroundTab(
+ window.gBrowser,
+ 'data:text/html,Hi! I am a Regular Tab',
+ true,
+ { skipAnimation: true }
+ );
+ regularTab.setAttribute('zen-workspace-id', workspaceId);
+
+ const essentialTab = await BrowserTestUtils.openNewForegroundTab(
+ window.gBrowser,
+ 'data:text/html,Hi! I am an Essential Tab',
+ true,
+ { skipAnimation: true }
+ );
+ essentialTab.setAttribute('zen-workspace-id', workspaceId);
+ essentialTab.setAttribute('zen-essential', 'true');
+
+ await gZenWorkspaces.unloadWorkspace();
+
+ ok(regularTab.hasAttribute('pending'), 'Regular tab should be unloaded');
+ ok(!regularTab.linkedPanel, 'Regular tab should not have linked panel');
+
+ ok(!essentialTab.hasAttribute('pending'), 'Essential tab should not be unloaded');
+ ok(essentialTab.linkedPanel, 'Essential tab should still have linked panel');
+
+ await gZenWorkspaces.removeWorkspace(workspaceId);
+});
+
+// only tabs from the targeted workspace should be unloaded
+add_task(async function test_UnloadWorkspace_TargetedWorkspaceIsolation() {
+ const inActiveWorkspaceId = await gZenWorkspaces.createAndSaveWorkspace(
+ 'Test In-Active Workspace'
+ );
+ const activeWorkspaceId = await gZenWorkspaces.createAndSaveWorkspace('Test Active Workspace');
+
+ const inActiveWorkspaceTabs = [];
+ for (let i = 0; i < 2; i++) {
+ const tab = await BrowserTestUtils.openNewForegroundTab(
+ window.gBrowser,
+ `data:text/html,In-Active Workspace Tab ${i}`,
+ true,
+ { skipAnimation: true }
+ );
+ tab.setAttribute('zen-workspace-id', inActiveWorkspaceId);
+ inActiveWorkspaceTabs.push(tab);
+ }
+
+ const activeWorkspaceTabs = [];
+ for (let i = 0; i < 2; i++) {
+ const tab = await BrowserTestUtils.openNewForegroundTab(
+ window.gBrowser,
+ `data:text/html,Active Workspace Tab ${i}`,
+ true,
+ { skipAnimation: true }
+ );
+ tab.setAttribute('zen-workspace-id', activeWorkspaceId);
+ activeWorkspaceTabs.push(tab);
+ }
+
+ await gZenWorkspaces.unloadWorkspace(); // this unloads the latest created workspace -> activeWorkspaceId
+
+ for (const tab of activeWorkspaceTabs) {
+ ok(tab.hasAttribute('pending'), 'Active workspace tab should be pending after unload');
+ ok(!tab.linkedPanel, 'Active workspace tab should not have linked panel after unload');
+ }
+
+ for (const tab of inActiveWorkspaceTabs) {
+ ok(!tab.hasAttribute('pending'), 'In-Active workspace tab should NOT be pending after unload');
+ ok(tab.linkedPanel, 'In-Active workspace tab should still have linked panel after unload');
+ }
+
+ await gZenWorkspaces.removeWorkspace(inActiveWorkspaceId);
+ await gZenWorkspaces.removeWorkspace(activeWorkspaceId);
+});
From e0358d784b71453d0d3e4c29917fb3317a48313b Mon Sep 17 00:00:00 2001
From: "mr. m" <91018726+mr-cheffy@users.noreply.github.com>
Date: Fri, 17 Oct 2025 11:53:37 +0200
Subject: [PATCH 2/2] feat: Start using native accent color for about pages,
p=#10847, c=common, tabs
---
src/zen/common/styles/zen-theme.css | 3 +--
src/zen/tabs/zen-tabs.css | 4 +---
src/zen/tabs/zen-tabs/vertical-tabs-topbar.inc.css | 3 +++
3 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/zen/common/styles/zen-theme.css b/src/zen/common/styles/zen-theme.css
index 859e08293..0baacf3c9 100644
--- a/src/zen/common/styles/zen-theme.css
+++ b/src/zen/common/styles/zen-theme.css
@@ -12,13 +12,12 @@
:root {
/* Default values */
--zen-border-radius: 7px;
- --zen-primary-color: #ffb787;
+ --zen-primary-color: AccentColor;
--zen-background-opacity: 1;
/* Branding */
--zen-branding-dark: #1d1d1d;
- --zen-branding-coral: #f76f53;
--zen-branding-paper: #ebebeb;
--zen-branding-bg: light-dark(var(--zen-branding-paper), var(--zen-branding-dark));
diff --git a/src/zen/tabs/zen-tabs.css b/src/zen/tabs/zen-tabs.css
index aa71f65a7..a195b4e44 100644
--- a/src/zen/tabs/zen-tabs.css
+++ b/src/zen/tabs/zen-tabs.css
@@ -36,9 +36,7 @@
* - Bookmarks toolbar is visible OR
* - The container is explicitly marked to hide controls (e.g., on Linux with reversed controls)
*/
- :root[zen-has-bookmarks] & {
-%include zen-tabs/vertical-tabs-topbar.inc.css
- }
+ :root[zen-has-bookmarks] &,
&[should-hide='true'] {
%include zen-tabs/vertical-tabs-topbar.inc.css
}
diff --git a/src/zen/tabs/zen-tabs/vertical-tabs-topbar.inc.css b/src/zen/tabs/zen-tabs/vertical-tabs-topbar.inc.css
index fede2685a..791d52044 100644
--- a/src/zen/tabs/zen-tabs/vertical-tabs-topbar.inc.css
+++ b/src/zen/tabs/zen-tabs/vertical-tabs-topbar.inc.css
@@ -3,6 +3,9 @@
* 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/.
*/
+
+--zen-toolbar-height: 34px;
+
height: var(--zen-toolbar-height);
z-index: 1;