Skip to content

Commit 82e0f06

Browse files
committed
test: Added tests for split views inside folders, b=no-bug, c=tabs, folders, tests
1 parent d439cb8 commit 82e0f06

File tree

6 files changed

+56
-6
lines changed

6 files changed

+56
-6
lines changed

src/browser/components/tabbrowser/content/tabs-js.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
diff --git a/browser/components/tabbrowser/content/tabs.js b/browser/components/tabbrowser/content/tabs.js
2-
index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..bc971287bbd0d799700cdd8f25f1191422af1b92 100644
2+
index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..ddb0735916c1cd29f316b2e66a95c765a933362d 100644
33
--- a/browser/components/tabbrowser/content/tabs.js
44
+++ b/browser/components/tabbrowser/content/tabs.js
55
@@ -289,6 +289,7 @@
@@ -553,7 +553,7 @@ index 1fcebe3962398ff1b7cadef657ac8b68a80e720d..bc971287bbd0d799700cdd8f25f11914
553553
dragData.dropBefore = dropBefore;
554554
dragData.animDropElementIndex = newDropElementIndex;
555555
-
556-
+ gZenFolders.setFolderIndentation(draggedTab, dropElement);
556+
+ gZenFolders.setFolderIndentation(movingTabs, dropElement);
557557
// Shift background tabs to leave a gap where the dragged tab
558558
// would currently be dropped.
559559
for (let item of tabs) {

src/zen/folders/ZenFolders.mjs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,7 @@
318318
if (selectedItem) {
319319
group.setAttribute('has-active', 'true');
320320
selectedItem.setAttribute('folder-active', 'true');
321-
this.setFolderIndentation(selectedItem, group, /* for collapse = */ true);
321+
this.setFolderIndentation([selectedItem], group, /* for collapse = */ true);
322322
}
323323

324324
for (const item of itemsAfterSelected) {
@@ -874,10 +874,11 @@
874874
return [];
875875
}
876876

877-
setFolderIndentation(tab, group = undefined, forCollapse = true) {
877+
setFolderIndentation(tabs, group = undefined, forCollapse = true) {
878878
if (!gZenPinnedTabManager.expandedSidebarMode) {
879879
return;
880880
}
881+
const tab = tabs[0];
881882
let isTab = false;
882883
if (!group && tab?.group) {
883884
group = tab; // So we can set isTab later
@@ -897,7 +898,13 @@
897898
}
898899
const tabLevel = tabToAnimate?.group?.level || 0;
899900
const spacing = (level - tabLevel) * baseSpacing;
900-
tabToAnimate.style.setProperty('--zen-folder-indent', `${spacing}px`);
901+
for (const tab of tabs) {
902+
if (gBrowser.isTabGroupLabel(tab)) {
903+
tab.group.style.setProperty('--zen-folder-indent', `${spacing}px`);
904+
continue;
905+
}
906+
tab.style.setProperty('--zen-folder-indent', `${spacing}px`);
907+
}
901908
}
902909

903910
changeFolderUserIcon(group) {

src/zen/folders/zen-folders.css

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ tab-group[split-view-group] {
9494

9595
& > .tabbrowser-tab {
9696
--tab-hover-background-color: var(--zen-split-view-active-tab-bg);
97+
--zen-folder-indent: 0 !important;
9798
& .tab-background {
9899
background-color: var(--zen-split-view-active-tab-bg) !important;
99100
}

src/zen/tabs/ZenPinnedTabManager.mjs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -986,7 +986,8 @@
986986
event.target.closest('.zen-current-workspace-indicator') ||
987987
this._isGoingToPinnedTabs;
988988
const essentialTabsTarget = event.target.closest('.zen-essentials-container');
989-
const tabsTarget = event.target.closest('.zen-workspace-normal-tabs-section');
989+
const tabsTarget =
990+
event.target.closest('.zen-workspace-normal-tabs-section') || !this._isGoingToPinnedTabs;
990991

991992
// TODO: Solve the issue of adding a tab between two groups
992993
// Remove group labels from the moving tabs and replace it

src/zen/tests/split_view/browser.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,4 @@ support-files = [
1313
["browser_split_groups.js"]
1414
["browser_split_browser_duplication.js"]
1515
["browser_split_view_with_glance.js"]
16+
["browser_split_view_with_folders.js"]
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/* Any copyright is dedicated to the Public Domain.
2+
https://creativecommons.org/publicdomain/zero/1.0/ */
3+
4+
'use strict';
5+
6+
add_task(async function test_Split_View_Inside_Folder() {
7+
const [tab1, tab2] = await Promise.all([
8+
addTabTo(gBrowser, getUrlForNthTab(1)),
9+
addTabTo(gBrowser, getUrlForNthTab(2)),
10+
]);
11+
const pinEvent1 = BrowserTestUtils.waitForEvent(tab1, 'TabPinned');
12+
const pinEvent2 = BrowserTestUtils.waitForEvent(tab2, 'TabPinned');
13+
gBrowser.pinTab(tab1);
14+
gBrowser.pinTab(tab2);
15+
await Promise.all([pinEvent1, pinEvent2]);
16+
Assert.ok(
17+
gBrowser.tabs.length === 4, // empty + initial + 2 split tabs
18+
'There should be four tabs after pinning both tabs'
19+
);
20+
const folder = await gZenFolders.createFolder([tab1, tab2], {
21+
renameFolder: false,
22+
label: 'test',
23+
});
24+
Assert.equal(tab1.group, folder, 'The first pinned tab should be in the folder group');
25+
Assert.equal(tab2.group, folder, 'The second pinned tab should be in the folder group');
26+
await createSplitView([tab1, tab2], 'grid');
27+
ok(
28+
tab2.group === tab1.group,
29+
'The second pinned tab should be in the same split group after duplication'
30+
);
31+
ok(
32+
tab1.group.hasAttribute('split-view-group'),
33+
'The first pinned tab should be in a split group after duplication'
34+
);
35+
Assert.ok(tab1.group.pinned, 'The split group should be pinned after duplication of both tabs');
36+
Assert.equal(tab1.group.group, folder, 'The split group should be the folder after duplication');
37+
const removeEvent = BrowserTestUtils.waitForEvent(window, 'TabGroupRemoved');
38+
folder.delete();
39+
await removeEvent;
40+
});

0 commit comments

Comments
 (0)