/* 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 lazy = {}; ChromeUtils.defineESModuleGetters(lazy, { AsyncShutdown: "resource://gre/modules/AsyncShutdown.sys.mjs", TabsStore: "moz-src:///toolkit/components/uniffi-bindgen-gecko-js/components/generated/RustTabs.sys.mjs", }); var storePromise = null; export async function getTabsStore() { if (storePromise == null) { const path = PathUtils.join(PathUtils.profileDir, "synced-tabs.db"); storePromise = lazy.TabsStore.init(path); lazy.AsyncShutdown.profileBeforeChange.addBlocker( "TabsStore: shutdown", async function blocker() { try { let store = await storePromise; await store.closeConnection(); storePromise = null; } finally { lazy.AsyncShutdown.profileBeforeChange.removeBlocker(blocker); } } ); } return await storePromise; } export async function getRemoteCommandStore() { const store = await getTabsStore(); // creating a new remote command store is cheap (but not free, so maybe we should cache this in the future?) return await store.newRemoteCommandStore(); } export { RemoteCommand, PendingCommand, } from "moz-src:///toolkit/components/uniffi-bindgen-gecko-js/components/generated/RustTabs.sys.mjs";