Request persistent storage on Firefox (#1480)
This commit is contained in:
parent
b0bc7dc08f
commit
3fe825cf30
@ -183,6 +183,8 @@ class Backend {
|
||||
const onPermissionsChanged = this._onWebExtensionEventWrapper(this._onPermissionsChanged.bind(this));
|
||||
chrome.permissions.onAdded.addListener(onPermissionsChanged);
|
||||
chrome.permissions.onRemoved.addListener(onPermissionsChanged);
|
||||
|
||||
chrome.runtime.onInstalled.addListener(this._onInstalled.bind(this));
|
||||
}
|
||||
|
||||
async _prepareInternal() {
|
||||
@ -372,6 +374,11 @@ class Backend {
|
||||
this._checkPermissions();
|
||||
}
|
||||
|
||||
_onInstalled({reason}) {
|
||||
if (reason !== 'install') { return; }
|
||||
this._requestPersistentStorage();
|
||||
}
|
||||
|
||||
// Message handlers
|
||||
|
||||
_onApiRequestBackendReadySignal(_params, sender) {
|
||||
@ -2103,4 +2110,25 @@ class Backend {
|
||||
_hasRequiredPermissionsForSettings(options) {
|
||||
return this._permissions === null || this._permissionsUtil.hasRequiredPermissionsForOptions(this._permissions, options);
|
||||
}
|
||||
|
||||
async _requestPersistentStorage() {
|
||||
try {
|
||||
if (await navigator.storage.persisted()) { return; }
|
||||
|
||||
// Only request this permission for Firefox versions >= 77.
|
||||
// https://bugzilla.mozilla.org/show_bug.cgi?id=1630413
|
||||
const {vendor, version} = await browser.runtime.getBrowserInfo();
|
||||
if (vendor !== 'Mozilla') { return; }
|
||||
|
||||
const match = /^\d+/.exec(version);
|
||||
if (match === null) { return; }
|
||||
|
||||
const versionNumber = Number.parseInt(match[0]);
|
||||
if (!(Number.isFinite(versionNumber) && versionNumber >= 77)) { return; }
|
||||
|
||||
await navigator.storage.persist();
|
||||
} catch (e) {
|
||||
// NOP
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user