477a00db1a
Testing / remote-protocol-compat (0.9.5) (push) Successful in 48s
Testing / remote-protocol-compat (0.9.3) (push) Successful in 47s
Build & Publish Package / publish (push) Successful in 46s
Package Extension / package-extension (push) Successful in 59s
Testing / test (push) Failing after 50s
- Add a neutral WebExtension API adapter that uses Firefox browser.* or Chromium chrome.* without mutating globals. - Switch extension runtime code to the adapter and add Firefox-specific typings for tabs, windows, tab groups, storage, scripting, and native messaging ports. - Fix Firefox temporary add-on instructions to load the packaged manifest with background.scripts instead of the Chromium service worker manifest. - Detect Firefox in clients.list via runtime.getBrowserInfo and keep Chromium user-agent fallback support. - Make navigate.open wait briefly for Firefox to replace initial about:blank with the requested URL. - Add JS coverage for API selection, clients.list browser detection, and Firefox navigate.open URL polling. - Bump package and extension version to 0.15.2.
45 lines
1.2 KiB
TypeScript
45 lines
1.2 KiB
TypeScript
import { webExtApi as api } from '../browser-api';
|
|
import { CommandGroup } from '../classes/CommandGroup';
|
|
import type { CommandEntry } from '../classes/CommandGroup';
|
|
|
|
export class ExtensionCommands extends CommandGroup {
|
|
readonly namespace = "extension";
|
|
readonly commands: Record<string, CommandEntry> = {
|
|
"extension.reload": () => {
|
|
setTimeout(() => api.runtime.reload(), 200);
|
|
return { reloading: true };
|
|
},
|
|
"extension.info": () => this.extensionInfo(),
|
|
"extension.capabilities": () => this.capabilities(),
|
|
};
|
|
|
|
private capabilities() {
|
|
return [
|
|
"extension.info",
|
|
"extension.capabilities",
|
|
"navigate.open.focus",
|
|
"navigate.open.background",
|
|
"tabs.close.tabIds",
|
|
"tabs.merge_windows.audibleAware",
|
|
"session.export",
|
|
"session.import",
|
|
"jobs.progress",
|
|
"jobs.cancel",
|
|
"content-dispatch.bundle",
|
|
];
|
|
}
|
|
|
|
private extensionInfo() {
|
|
const manifest = api.runtime.getManifest();
|
|
return {
|
|
id: api.runtime.id,
|
|
name: manifest.name,
|
|
version: manifest.version,
|
|
manifestVersion: manifest.manifest_version,
|
|
browser: navigator.userAgent,
|
|
platform: navigator.platform,
|
|
capabilities: this.capabilities(),
|
|
};
|
|
}
|
|
}
|