mirror of
https://github.com/zen-browser/desktop.git
synced 2026-08-03 13:48:55 +00:00
feat: Start on new session restore, b=no-bug, c=no-component
This commit is contained in:
@@ -3,7 +3,8 @@
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
- name: browser.startup.page
|
||||
value: 3
|
||||
value: 0
|
||||
locked: true
|
||||
|
||||
- name: browser.sessionstore.restore_pinned_tabs_on_demand
|
||||
value: true
|
||||
|
||||
27
src/zen/sessionstore/ZenSessionFile.sys.mjs
Normal file
27
src/zen/sessionstore/ZenSessionFile.sys.mjs
Normal file
@@ -0,0 +1,27 @@
|
||||
// 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 FILE_NAME = 'zen-sessions.jsonlz4';
|
||||
|
||||
export class nsZenSessionFile {
|
||||
#path;
|
||||
|
||||
#windows;
|
||||
|
||||
constructor() {
|
||||
this.#path = PathUtils.join(profileDir, FILE_NAME);
|
||||
}
|
||||
|
||||
async read() {
|
||||
try {
|
||||
return await IOUtils.readJSON(this.#path, { compress: true });
|
||||
} catch (e) {
|
||||
return {};
|
||||
}
|
||||
}
|
||||
|
||||
async write(data) {
|
||||
await IOUtils.writeJSON(this.#path, data, { compress: true });
|
||||
}
|
||||
}
|
||||
50
src/zen/sessionstore/ZenSessionManager.sys.mjs
Normal file
50
src/zen/sessionstore/ZenSessionManager.sys.mjs
Normal file
@@ -0,0 +1,50 @@
|
||||
// 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/.
|
||||
|
||||
import {
|
||||
cancelIdleCallback,
|
||||
clearTimeout,
|
||||
requestIdleCallback,
|
||||
setTimeout,
|
||||
} from 'resource://gre/modules/Timer.sys.mjs';
|
||||
|
||||
const lazy = {};
|
||||
|
||||
ChromeUtils.defineESModuleGetters(lazy, {
|
||||
ZenSessionFile: 'resource://gre/modules/ZenSessionFile.sys.mjs',
|
||||
PrivateBrowsingUtils: 'resource://gre/modules/PrivateBrowsingUtils.sys.mjs',
|
||||
RunState: 'resource:///modules/sessionstore/RunState.sys.mjs',
|
||||
});
|
||||
|
||||
class nsZenSessionManager {
|
||||
#file;
|
||||
|
||||
constructor() {
|
||||
this.#file = null;
|
||||
}
|
||||
|
||||
get file() {
|
||||
if (!this.#file) {
|
||||
this.#file = lazy.ZenSessionFile;
|
||||
}
|
||||
return this.#file;
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves the current session state. Collects data and writes to disk.
|
||||
*
|
||||
* @param forceUpdateAllWindows (optional)
|
||||
* Forces us to recollect data for all windows and will bypass and
|
||||
* update the corresponding caches.
|
||||
*/
|
||||
saveState(forceUpdateAllWindows = false) {
|
||||
if (lazy.PrivateBrowsingUtils.permanentPrivateBrowsing) {
|
||||
// Don't save (or even collect) anything in permanent private
|
||||
// browsing mode
|
||||
return Promise.resolve();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export const ZenSessionStore = new nsZenSessionManager();
|
||||
35
src/zen/sessionstore/ZenSessionWindow.sys.mjs
Normal file
35
src/zen/sessionstore/ZenSessionWindow.sys.mjs
Normal file
@@ -0,0 +1,35 @@
|
||||
// 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 class ZenSessionWindow {
|
||||
#id;
|
||||
#selectedWorkspace;
|
||||
#selectedTab;
|
||||
|
||||
constructor(id) {
|
||||
this.#id = id;
|
||||
this.#selectedWorkspace = null;
|
||||
this.#selectedTab = null;
|
||||
}
|
||||
|
||||
get id() {
|
||||
return this.#id;
|
||||
}
|
||||
|
||||
get selectedWorkspace() {
|
||||
return this.#selectedWorkspace;
|
||||
}
|
||||
|
||||
set selectedWorkspace(workspace) {
|
||||
this.#selectedWorkspace = workspace;
|
||||
}
|
||||
|
||||
get selectedTab() {
|
||||
return this.#selectedTab;
|
||||
}
|
||||
|
||||
set selectedTab(tab) {
|
||||
this.#selectedTab = tab;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user