[MM-58158] Make sure closing the permissions dialog results in a Deny instead of an Allow (#3032) (#3033)
(cherry picked from commit 3cf7ec7451
)
Co-authored-by: Devin Binnie <52460000+devinbinnie@users.noreply.github.com>
This commit is contained in:
parent
a1f5430824
commit
dd4870f96f
|
@ -145,7 +145,7 @@ describe('main/PermissionsManager', () => {
|
||||||
const permissionsManager = new PermissionsManager('anyfile.json');
|
const permissionsManager = new PermissionsManager('anyfile.json');
|
||||||
permissionsManager.writeToFile = jest.fn();
|
permissionsManager.writeToFile = jest.fn();
|
||||||
const cb = jest.fn();
|
const cb = jest.fn();
|
||||||
dialog.showMessageBox.mockReturnValue(Promise.resolve({response: 0}));
|
dialog.showMessageBox.mockReturnValue(Promise.resolve({response: 2}));
|
||||||
await permissionsManager.handlePermissionRequest({id: 2}, 'media', cb, {securityOrigin: 'http://anyurl.com'});
|
await permissionsManager.handlePermissionRequest({id: 2}, 'media', cb, {securityOrigin: 'http://anyurl.com'});
|
||||||
expect(permissionsManager.json['http://anyurl.com'].media.allowed).toBe(true);
|
expect(permissionsManager.json['http://anyurl.com'].media.allowed).toBe(true);
|
||||||
expect(permissionsManager.writeToFile).toHaveBeenCalled();
|
expect(permissionsManager.writeToFile).toHaveBeenCalled();
|
||||||
|
@ -156,7 +156,7 @@ describe('main/PermissionsManager', () => {
|
||||||
const permissionsManager = new PermissionsManager('anyfile.json');
|
const permissionsManager = new PermissionsManager('anyfile.json');
|
||||||
permissionsManager.writeToFile = jest.fn();
|
permissionsManager.writeToFile = jest.fn();
|
||||||
const cb = jest.fn();
|
const cb = jest.fn();
|
||||||
dialog.showMessageBox.mockReturnValue(Promise.resolve({response: 1}));
|
dialog.showMessageBox.mockReturnValue(Promise.resolve({response: 0}));
|
||||||
await permissionsManager.handlePermissionRequest({id: 2}, 'media', cb, {securityOrigin: 'http://anyurl.com'});
|
await permissionsManager.handlePermissionRequest({id: 2}, 'media', cb, {securityOrigin: 'http://anyurl.com'});
|
||||||
expect(permissionsManager.json['http://anyurl.com'].media.allowed).toBe(false);
|
expect(permissionsManager.json['http://anyurl.com'].media.allowed).toBe(false);
|
||||||
expect(permissionsManager.writeToFile).toHaveBeenCalled();
|
expect(permissionsManager.writeToFile).toHaveBeenCalled();
|
||||||
|
@ -167,7 +167,7 @@ describe('main/PermissionsManager', () => {
|
||||||
const permissionsManager = new PermissionsManager('anyfile.json');
|
const permissionsManager = new PermissionsManager('anyfile.json');
|
||||||
permissionsManager.writeToFile = jest.fn();
|
permissionsManager.writeToFile = jest.fn();
|
||||||
const cb = jest.fn();
|
const cb = jest.fn();
|
||||||
dialog.showMessageBox.mockReturnValue(Promise.resolve({response: 2}));
|
dialog.showMessageBox.mockReturnValue(Promise.resolve({response: 1}));
|
||||||
await permissionsManager.handlePermissionRequest({id: 2}, 'media', cb, {securityOrigin: 'http://anyurl.com'});
|
await permissionsManager.handlePermissionRequest({id: 2}, 'media', cb, {securityOrigin: 'http://anyurl.com'});
|
||||||
expect(permissionsManager.json['http://anyurl.com'].media.allowed).toBe(false);
|
expect(permissionsManager.json['http://anyurl.com'].media.allowed).toBe(false);
|
||||||
expect(permissionsManager.json['http://anyurl.com'].media.alwaysDeny).toBe(true);
|
expect(permissionsManager.json['http://anyurl.com'].media.alwaysDeny).toBe(true);
|
||||||
|
@ -179,7 +179,7 @@ describe('main/PermissionsManager', () => {
|
||||||
const permissionsManager = new PermissionsManager('anyfile.json');
|
const permissionsManager = new PermissionsManager('anyfile.json');
|
||||||
permissionsManager.writeToFile = jest.fn();
|
permissionsManager.writeToFile = jest.fn();
|
||||||
const cb = jest.fn();
|
const cb = jest.fn();
|
||||||
dialog.showMessageBox.mockReturnValue(Promise.resolve({response: 0}));
|
dialog.showMessageBox.mockReturnValue(Promise.resolve({response: 2}));
|
||||||
await Promise.all([
|
await Promise.all([
|
||||||
permissionsManager.handlePermissionRequest({id: 2}, 'notifications', cb, {requestingUrl: 'http://anyurl.com'}),
|
permissionsManager.handlePermissionRequest({id: 2}, 'notifications', cb, {requestingUrl: 'http://anyurl.com'}),
|
||||||
permissionsManager.handlePermissionRequest({id: 2}, 'notifications', cb, {requestingUrl: 'http://anyurl.com'}),
|
permissionsManager.handlePermissionRequest({id: 2}, 'notifications', cb, {requestingUrl: 'http://anyurl.com'}),
|
||||||
|
@ -199,7 +199,7 @@ describe('main/PermissionsManager', () => {
|
||||||
const permissionsManager = new PermissionsManager('anyfile.json');
|
const permissionsManager = new PermissionsManager('anyfile.json');
|
||||||
permissionsManager.writeToFile = jest.fn();
|
permissionsManager.writeToFile = jest.fn();
|
||||||
const cb = jest.fn();
|
const cb = jest.fn();
|
||||||
dialog.showMessageBox.mockReturnValue(Promise.resolve({response: 0}));
|
dialog.showMessageBox.mockReturnValue(Promise.resolve({response: 2}));
|
||||||
await permissionsManager.handlePermissionRequest({id: 2}, 'media', cb, {securityOrigin: 'http://anyurl.com'});
|
await permissionsManager.handlePermissionRequest({id: 2}, 'media', cb, {securityOrigin: 'http://anyurl.com'});
|
||||||
expect(dialog.showMessageBox).toHaveBeenCalled();
|
expect(dialog.showMessageBox).toHaveBeenCalled();
|
||||||
});
|
});
|
||||||
|
@ -208,7 +208,7 @@ describe('main/PermissionsManager', () => {
|
||||||
const permissionsManager = new PermissionsManager('anyfile.json');
|
const permissionsManager = new PermissionsManager('anyfile.json');
|
||||||
permissionsManager.writeToFile = jest.fn();
|
permissionsManager.writeToFile = jest.fn();
|
||||||
const cb = jest.fn();
|
const cb = jest.fn();
|
||||||
dialog.showMessageBox.mockReturnValue(Promise.resolve({response: 0}));
|
dialog.showMessageBox.mockReturnValue(Promise.resolve({response: 2}));
|
||||||
await permissionsManager.handlePermissionRequest({id: 2}, 'openExternal', cb, {requestingUrl: 'http://anyurl.com', externalURL: 'ms-excel://differenturl.com'});
|
await permissionsManager.handlePermissionRequest({id: 2}, 'openExternal', cb, {requestingUrl: 'http://anyurl.com', externalURL: 'ms-excel://differenturl.com'});
|
||||||
expect(dialog.showMessageBox).toHaveBeenCalled();
|
expect(dialog.showMessageBox).toHaveBeenCalled();
|
||||||
});
|
});
|
||||||
|
|
|
@ -152,16 +152,16 @@ export class PermissionsManager extends JsonFileManager<Permissions> {
|
||||||
detail: localizeMessage(`main.permissionsManager.checkPermission.dialog.detail.${permission}`, 'Would you like to grant {appName} this permission?', {appName: app.name}),
|
detail: localizeMessage(`main.permissionsManager.checkPermission.dialog.detail.${permission}`, 'Would you like to grant {appName} this permission?', {appName: app.name}),
|
||||||
type: 'question',
|
type: 'question',
|
||||||
buttons: [
|
buttons: [
|
||||||
localizeMessage('label.allow', 'Allow'),
|
|
||||||
localizeMessage('label.deny', 'Deny'),
|
localizeMessage('label.deny', 'Deny'),
|
||||||
localizeMessage('label.denyPermanently', 'Deny Permanently'),
|
localizeMessage('label.denyPermanently', 'Deny Permanently'),
|
||||||
|
localizeMessage('label.allow', 'Allow'),
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
|
|
||||||
// Save their response
|
// Save their response
|
||||||
const newPermission = {
|
const newPermission = {
|
||||||
allowed: response === 0,
|
allowed: response === 2,
|
||||||
alwaysDeny: (response === 2) ? true : undefined,
|
alwaysDeny: (response === 1) ? true : undefined,
|
||||||
};
|
};
|
||||||
this.json[parsedURL.origin] = {
|
this.json[parsedURL.origin] = {
|
||||||
...this.json[parsedURL.origin],
|
...this.json[parsedURL.origin],
|
||||||
|
@ -171,7 +171,7 @@ export class PermissionsManager extends JsonFileManager<Permissions> {
|
||||||
|
|
||||||
this.inflightPermissionChecks.delete(permissionKey);
|
this.inflightPermissionChecks.delete(permissionKey);
|
||||||
|
|
||||||
if (response > 0) {
|
if (response < 2) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue