Fix permissions changes not being supported on some browsers (#1513)
This commit is contained in:
parent
b1f96a7ca7
commit
63de9273b3
@ -180,9 +180,11 @@ class Backend {
|
||||
const onMessage = this._onMessageWrapper.bind(this);
|
||||
chrome.runtime.onMessage.addListener(onMessage);
|
||||
|
||||
const onPermissionsChanged = this._onWebExtensionEventWrapper(this._onPermissionsChanged.bind(this));
|
||||
chrome.permissions.onAdded.addListener(onPermissionsChanged);
|
||||
chrome.permissions.onRemoved.addListener(onPermissionsChanged);
|
||||
if (this._canObservePermissionsChanges()) {
|
||||
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));
|
||||
}
|
||||
@ -2095,7 +2097,12 @@ class Backend {
|
||||
this._updateBadge();
|
||||
}
|
||||
|
||||
_canObservePermissionsChanges() {
|
||||
return isObject(chrome.permissions) && isObject(chrome.permissions.onAdded) && isObject(chrome.permissions.onRemoved);
|
||||
}
|
||||
|
||||
_hasRequiredPermissionsForSettings(options) {
|
||||
if (!this._canObservePermissionsChanges()) { return true; }
|
||||
return this._permissions === null || this._permissionsUtil.hasRequiredPermissionsForOptions(this._permissions, options);
|
||||
}
|
||||
|
||||
|
@ -51,8 +51,10 @@ class SettingsController extends EventDispatcher {
|
||||
|
||||
prepare() {
|
||||
yomichan.on('optionsUpdated', this._onOptionsUpdated.bind(this));
|
||||
chrome.permissions.onAdded.addListener(this._onPermissionsChanged.bind(this));
|
||||
chrome.permissions.onRemoved.addListener(this._onPermissionsChanged.bind(this));
|
||||
if (this._canObservePermissionsChanges()) {
|
||||
chrome.permissions.onAdded.addListener(this._onPermissionsChanged.bind(this));
|
||||
chrome.permissions.onRemoved.addListener(this._onPermissionsChanged.bind(this));
|
||||
}
|
||||
}
|
||||
|
||||
async refresh() {
|
||||
@ -206,4 +208,8 @@ class SettingsController extends EventDispatcher {
|
||||
const permissions = await this._permissionsUtil.getAllPermissions();
|
||||
this.trigger(event, {permissions});
|
||||
}
|
||||
|
||||
_canObservePermissionsChanges() {
|
||||
return isObject(chrome.permissions) && isObject(chrome.permissions.onAdded) && isObject(chrome.permissions.onRemoved);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user