[MM-58158] Make sure closing the permissions dialog results in a Deny instead of an Allow (#3032)

This commit is contained in:
Devin Binnie 2024-05-08 15:00:44 -04:00 committed by GitHub
parent 8beeb93aee
commit 3cf7ec7451
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 10 additions and 10 deletions

View file

@ -145,7 +145,7 @@ describe('main/PermissionsManager', () => {
const permissionsManager = new PermissionsManager('anyfile.json');
permissionsManager.writeToFile = 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'});
expect(permissionsManager.json['http://anyurl.com'].media.allowed).toBe(true);
expect(permissionsManager.writeToFile).toHaveBeenCalled();
@ -156,7 +156,7 @@ describe('main/PermissionsManager', () => {
const permissionsManager = new PermissionsManager('anyfile.json');
permissionsManager.writeToFile = 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'});
expect(permissionsManager.json['http://anyurl.com'].media.allowed).toBe(false);
expect(permissionsManager.writeToFile).toHaveBeenCalled();
@ -167,7 +167,7 @@ describe('main/PermissionsManager', () => {
const permissionsManager = new PermissionsManager('anyfile.json');
permissionsManager.writeToFile = 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'});
expect(permissionsManager.json['http://anyurl.com'].media.allowed).toBe(false);
expect(permissionsManager.json['http://anyurl.com'].media.alwaysDeny).toBe(true);
@ -179,7 +179,7 @@ describe('main/PermissionsManager', () => {
const permissionsManager = new PermissionsManager('anyfile.json');
permissionsManager.writeToFile = jest.fn();
const cb = jest.fn();
dialog.showMessageBox.mockReturnValue(Promise.resolve({response: 0}));
dialog.showMessageBox.mockReturnValue(Promise.resolve({response: 2}));
await Promise.all([
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');
permissionsManager.writeToFile = 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'});
expect(dialog.showMessageBox).toHaveBeenCalled();
});
@ -208,7 +208,7 @@ describe('main/PermissionsManager', () => {
const permissionsManager = new PermissionsManager('anyfile.json');
permissionsManager.writeToFile = 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'});
expect(dialog.showMessageBox).toHaveBeenCalled();
});

View file

@ -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}),
type: 'question',
buttons: [
localizeMessage('label.allow', 'Allow'),
localizeMessage('label.deny', 'Deny'),
localizeMessage('label.denyPermanently', 'Deny Permanently'),
localizeMessage('label.allow', 'Allow'),
],
});
// Save their response
const newPermission = {
allowed: response === 0,
alwaysDeny: (response === 2) ? true : undefined,
allowed: response === 2,
alwaysDeny: (response === 1) ? true : undefined,
};
this.json[parsedURL.origin] = {
...this.json[parsedURL.origin],
@ -171,7 +171,7 @@ export class PermissionsManager extends JsonFileManager<Permissions> {
this.inflightPermissionChecks.delete(permissionKey);
if (response > 0) {
if (response < 2) {
return false;
}
}