Skip to content

Commit d04f06f

Browse files
committed
Separate classes for Tab and TabGroup
1 parent 3ea26c1 commit d04f06f

16 files changed

Lines changed: 1089 additions & 975 deletions

webextensions/background/api-tabs-listener.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ import * as TreeBehavior from '/common/tree-behavior.js';
4242
import * as TSTAPI from '/common/tst-api.js';
4343

4444
import MetricsData from '/common/MetricsData.js';
45-
import { Tab } from '/common/TreeItem.js';
45+
import { Tab, TabGroup } from '/common/TreeItem.js';
4646
import Window from '/common/Window.js';
4747

4848
import * as Tree from './tree.js';
@@ -1304,7 +1304,7 @@ async function onGroupCreated(group) {
13041304
if (!win) {
13051305
throw new Error('tabGroups.onCreated is called before the owner window is tracked');
13061306
}
1307-
win.tabGroups.set(group.id, Tab.initNativeTabGroup(group));
1307+
win.tabGroups.set(group.id, TabGroup.init(group));
13081308

13091309
SidebarConnection.sendMessage({
13101310
type: Constants.kCOMMAND_NOTIFY_TAB_GROUP_CREATED,

webextensions/background/background.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ import * as UniqueId from '/common/unique-id.js';
2828
import '/common/bookmark.js'; // we need to load this once in the background page to register the global listener
2929

3030
import MetricsData from '/common/MetricsData.js';
31-
import { Tab } from '/common/TreeItem.js';
31+
import { Tab, TabGroup } from '/common/TreeItem.js';
3232
import Window from '/common/Window.js';
3333

3434
import * as ApiTabsListener from './api-tabs-listener.js';
@@ -302,7 +302,7 @@ async function rebuildAll(windows) {
302302
await MetricsData.addAsync(`rebuildAll: tabs in window ${win.id}`, async () => {
303303
let trackedWindow = TabsStore.windows.get(win.id);
304304
if (!trackedWindow)
305-
trackedWindow = Window.init(win.id, win.tabGroups.map(Tab.initNativeTabGroup));
305+
trackedWindow = Window.init(win.id, win.tabGroups.map(TabGroup.init));
306306

307307
for (const tab of win.tabs) {
308308
Tab.track(tab);
@@ -328,7 +328,7 @@ async function rebuildAll(windows) {
328328
}
329329
try {
330330
log(`build tabs for ${win.id} from scratch`);
331-
Window.init(win.id, win.tabGroups.map(Tab.initNativeTabGroup));
331+
Window.init(win.id, win.tabGroups.map(TabGroup.init));
332332
const promises = [];
333333
for (let tab of win.tabs) {
334334
tab = Tab.get(tab.id);

webextensions/background/commands.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import * as TabsStore from '/common/tabs-store.js';
2525
import * as TreeBehavior from '/common/tree-behavior.js';
2626
import * as TSTAPI from '/common/tst-api.js';
2727

28-
import { Tab } from '/common/TreeItem.js';
28+
import { Tab, TreeItem } from '/common/TreeItem.js';
2929

3030
import * as TabsGroup from './tabs-group.js';
3131
import * as TabsMove from './tabs-move.js';
@@ -994,7 +994,7 @@ export async function restoreTabs(count) {
994994
await TabsInternalOperation.setTabActive(activeTab);
995995
}
996996

997-
return Tab.sort(restoredTabs);
997+
return TreeItem.sort(restoredTabs);
998998
}
999999

10001000

@@ -1062,12 +1062,12 @@ export async function reopenInContainer(sourceTabOrTabs, cookieStoreId, options
10621062
export async function addTabsToNativeTabGroup(tabs, groupId) {
10631063
return browser.tabs.group({
10641064
groupId,
1065-
tabIds: tabs.map(tab => tab.id),
1065+
tabIds: tabs.map(tab => tab?.id || tab),
10661066
});
10671067
}
10681068

10691069
export async function removeTabsFromNativeTabGroup(tabs) {
1070-
return browser.tabs.ungroup(tabs.map(tab => tab.id));
1070+
return browser.tabs.ungroup(tabs.map(tab => tab?.id || tab));
10711071
}
10721072

10731073

webextensions/background/handle-misc.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import * as TabsUpdate from '/common/tabs-update.js';
2626
import * as TreeBehavior from '/common/tree-behavior.js';
2727
import * as TSTAPI from '/common/tst-api.js';
2828

29-
import { Tab } from '/common/TreeItem.js';
29+
import { Tab, TreeItem } from '/common/TreeItem.js';
3030

3131
import * as Background from './background.js';
3232
import * as Commands from './commands.js';
@@ -1137,11 +1137,11 @@ function onMessageExternal(message, sender) {
11371137
})();
11381138

11391139
case TSTAPI.kREGISTER_AUTO_STICKY_STATES:
1140-
Tab.registerAutoStickyState(sender.id, message.state || message.states);
1140+
TreeItem.registerAutoStickyState(sender.id, message.state || message.states);
11411141
break;
11421142

11431143
case TSTAPI.kUNREGISTER_AUTO_STICKY_STATES:
1144-
Tab.unregisterAutoStickyState(sender.id, message.state || message.states);
1144+
TreeItem.unregisterAutoStickyState(sender.id, message.state || message.states);
11451145
break;
11461146
}
11471147
}

webextensions/background/handle-tab-bunches.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import * as Permissions from '/common/permissions.js';
2121
import * as TabsStore from '/common/tabs-store.js';
2222
import * as TSTAPI from '/common/tst-api.js';
2323

24-
import { Tab } from '/common/TreeItem.js';
24+
import { Tab, TreeItem } from '/common/TreeItem.js';
2525

2626
import * as TabsGroup from './tabs-group.js';
2727
import * as TabsOpen from './tabs-open.js';
@@ -180,7 +180,7 @@ async function tryGroupTabBunches() {
180180
if (fromPinned.length > 0 &&
181181
(configs.autoGroupNewTabsFromPinned ||
182182
configs.autoGroupNewTabsFromFirefoxView)) {
183-
const newRootTabs = Tab.collectRootTabs(Tab.sort(fromPinned));
183+
const newRootTabs = Tab.collectRootTabs(TreeItem.sort(fromPinned));
184184
if (newRootTabs.length > 0) {
185185
await tryGroupTabBunchesFromPinnedOpener(newRootTabs);
186186
}
@@ -190,7 +190,7 @@ async function tryGroupTabBunches() {
190190
// sources won't be mixed.
191191
const openedFromBookmarkFolder = fromOthers.length > 0 && await detectBookmarkFolderFromTabs(fromOthers, tabReferences.length);
192192
log(' => tryGroupTabBunches:openedFromBookmarkFolder: ', !!openedFromBookmarkFolder);
193-
const newRootTabs = Tab.collectRootTabs(Tab.sort(openedFromBookmarkFolder ? openedFromBookmarkFolder.tabs : fromOthers));
193+
const newRootTabs = Tab.collectRootTabs(TreeItem.sort(openedFromBookmarkFolder ? openedFromBookmarkFolder.tabs : fromOthers));
194194
log(' newRootTabs: ', newRootTabs);
195195
if (newRootTabs.length > 1 &&
196196
!openedFromBookmarkFolder && // we should ignore tabs from bookmark folder: they should be handled by tryHandlTabBunchesFromBookmarks
@@ -442,7 +442,7 @@ async function tryHandlTabBunchesFromBookmarks() {
442442
}
443443
}
444444

445-
const newRootTabs = Tab.collectRootTabs(Tab.sort(openedFromBookmarkFolder.tabs));
445+
const newRootTabs = Tab.collectRootTabs(TreeItem.sort(openedFromBookmarkFolder.tabs));
446446
if (newRootTabs.length > 1 &&
447447
configs.autoGroupNewTabsFromBookmarks &&
448448
tabReferences.every(tabReference => !tabReference.shouldNotGrouped)) {

webextensions/background/handle-tree-changes.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import * as Constants from '/common/constants.js';
1313
import * as TabsStore from '/common/tabs-store.js';
1414
import * as TreeBehavior from '/common/tree-behavior.js';
1515

16-
import { Tab } from '/common/TreeItem.js';
16+
import { Tab, TreeItem } from '/common/TreeItem.js';
1717

1818
import * as Background from './background.js';
1919
import * as BackgroundCache from './background-cache.js';
@@ -32,7 +32,7 @@ function reserveDetachHiddenTab(tab) {
3232
clearTimeout(reserveDetachHiddenTab.reserved);
3333
reserveDetachHiddenTab.reserved = setTimeout(async () => {
3434
delete reserveDetachHiddenTab.reserved;
35-
const tabs = new Set(Tab.sort(Array.from(reserveDetachHiddenTab.tabs)));
35+
const tabs = new Set(TreeItem.sort(Array.from(reserveDetachHiddenTab.tabs)));
3636
reserveDetachHiddenTab.tabs.clear();
3737
log('try to detach hidden tabs: ', tabs);
3838
for (const tab of tabs) {
@@ -94,7 +94,7 @@ function reserveAttachShownTab(tab) {
9494
clearTimeout(reserveAttachShownTab.reserved);
9595
reserveAttachShownTab.reserved = setTimeout(async () => {
9696
delete reserveAttachShownTab.reserved;
97-
const tabs = new Set(Tab.sort(Array.from(reserveAttachShownTab.tabs)));
97+
const tabs = new Set(TreeItem.sort(Array.from(reserveAttachShownTab.tabs)));
9898
reserveAttachShownTab.tabs.clear();
9999
log('try to attach shown tabs: ', tabs);
100100
for (const tab of tabs) {

webextensions/background/tab-context-menu.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import * as TabsStore from '/common/tabs-store.js';
2222
import * as TreeBehavior from '/common/tree-behavior.js';
2323
import * as TSTAPI from '/common/tst-api.js';
2424

25-
import { Tab } from '/common/TreeItem.js';
25+
import { Tab, TabGroup, TreeItem } from '/common/TreeItem.js';
2626

2727
import * as Commands from './commands.js';
2828
import * as TabsOpen from './tabs-open.js';
@@ -458,9 +458,9 @@ function updateNativeTabGroups(contextTab) {
458458
}
459459

460460
function getEffectiveTabGroups(windowId) {
461-
return Tab.sort(
461+
return TreeItem.sort(
462462
[...TabsStore.windows.get(windowId).tabGroups.values()]
463-
.filter(group => !!Tab.getFirstNativeGroupMemberTab({ windowId, groupId: group.id }))
463+
.filter(group => !!TabGroup.getFirstMemberTab({ windowId, groupId: group.id }))
464464
);
465465
}
466466

webextensions/background/tree.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ import * as TSTAPI from '/common/tst-api.js';
4848
import * as UserOperationBlocker from '/common/user-operation-blocker.js';
4949

5050
import MetricsData from '/common/MetricsData.js';
51-
import { Tab } from '/common/TreeItem.js';
51+
import { Tab, TabGroup, TreeItem } from '/common/TreeItem.js';
5252
import Window from '/common/Window.js';
5353

5454
import * as TabsMove from './tabs-move.js';
@@ -2201,9 +2201,9 @@ maintainTreeForNativeTabGroup() does that too.
22012201
async function maintainTreeForNativeTabGroup({ windowId, groupId }) {
22022202
const win = TabsStore.windows.get(windowId);
22032203

2204-
const members = Tab.getNativeGroupMemberTabs({ windowId, groupId });
2204+
const members = TabGroup.getMemberTabs({ windowId, groupId });
22052205
const rootTabs = Tab.collectRootTabs(members);
2206-
const wholeTree = [...new Set(Tab.sort([...members.map(tab => tab.$TST.rootTab), ...getWholeTree(rootTabs)]))];
2206+
const wholeTree = [...new Set(TreeItem.sort([...members.map(tab => tab.$TST.rootTab), ...getWholeTree(rootTabs)]))];
22072207
if (members.length == wholeTree.length) {
22082208
return;
22092209
}

0 commit comments

Comments
 (0)