mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 804623 - Permission Prompt Helper needs more access context to enable/disable permissions. r=sicking
This commit is contained in:
parent
81b4a55b18
commit
deccc07486
@ -59,58 +59,43 @@ this.PermissionPromptHelper = {
|
|||||||
askPermission: function askPermission(aMessage, aCallbacks) {
|
askPermission: function askPermission(aMessage, aCallbacks) {
|
||||||
let msg = aMessage.json;
|
let msg = aMessage.json;
|
||||||
|
|
||||||
let access;
|
let access = msg.type;
|
||||||
if (PermissionsTable[msg.type].access) {
|
if (msg.access) {
|
||||||
access = "readwrite"; // XXXddahl: Not sure if this should be set to READWRITE
|
access = access + "-" + msg.access;
|
||||||
}
|
}
|
||||||
// Expand permission names.
|
|
||||||
let expandedPermNames = expandPermissions(msg.type, access);
|
|
||||||
let installedPermValues = [];
|
|
||||||
let uri = Services.io.newURI(msg.origin, null, null);
|
let uri = Services.io.newURI(msg.origin, null, null);
|
||||||
let principal =
|
let principal =
|
||||||
secMan.getAppCodebasePrincipal(uri, msg.appID, msg.browserFlag);
|
secMan.getAppCodebasePrincipal(uri, msg.appID, msg.browserFlag);
|
||||||
|
|
||||||
for (let idx in expandedPermNames) {
|
let permValue =
|
||||||
let access = msg.access ? expandedPermNames[idx] : msg.type;
|
permissionManager.testExactPermissionFromPrincipal(principal, access);
|
||||||
let permValue =
|
|
||||||
permissionManager.testExactPermissionFromPrincipal(principal, access);
|
if (permValue == Ci.nsIPermissionManager.DENY_ACTION ||
|
||||||
installedPermValues.push(permValue);
|
permValue == Ci.nsIPermissionManager.UNKNOWN_ACTION) {
|
||||||
|
aCallbacks.cancel();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: see bug 804623, We are preventing "read" operations
|
if (permValue == Ci.nsIPermissionManager.PROMPT_ACTION) {
|
||||||
// even if just "write" has been set to DENY_ACTION
|
// create a nsIContentPermissionRequest
|
||||||
for (let idx in installedPermValues) {
|
let request = {
|
||||||
// if any of the installedPermValues are deny, run aCallbacks.cancel
|
type: msg.type,
|
||||||
if (installedPermValues[idx] == Ci.nsIPermissionManager.DENY_ACTION ||
|
access: msg.access ? msg.access : "unused",
|
||||||
installedPermValues[idx] == Ci.nsIPermissionManager.UNKNOWN_ACTION) {
|
principal: principal,
|
||||||
aCallbacks.cancel();
|
QueryInterface: XPCOMUtils.generateQI([Ci.nsIContentPermissionRequest]),
|
||||||
return;
|
allow: aCallbacks.allow,
|
||||||
}
|
cancel: aCallbacks.cancel,
|
||||||
|
window: Services.wm.getMostRecentWindow("navigator:browser")
|
||||||
|
};
|
||||||
|
|
||||||
|
permissionPromptService.getPermission(request);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (let idx in installedPermValues) {
|
if (permValue == Ci.nsIPermissionManager.ALLOW_ACTION) {
|
||||||
if (installedPermValues[idx] == Ci.nsIPermissionManager.PROMPT_ACTION) {
|
aCallbacks.allow();
|
||||||
// create a nsIContentPermissionRequest
|
return;
|
||||||
let request = {
|
|
||||||
type: msg.type,
|
|
||||||
access: msg.access ? msg.access : "unused",
|
|
||||||
principal: principal,
|
|
||||||
QueryInterface: XPCOMUtils.generateQI([Ci.nsIContentPermissionRequest]),
|
|
||||||
allow: aCallbacks.allow,
|
|
||||||
cancel: aCallbacks.cancel,
|
|
||||||
window: Services.wm.getMostRecentWindow("navigator:browser")
|
|
||||||
};
|
|
||||||
|
|
||||||
permissionPromptService.getPermission(request);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (let idx in installedPermValues) {
|
|
||||||
if (installedPermValues[idx] == Ci.nsIPermissionManager.ALLOW_ACTION) {
|
|
||||||
aCallbacks.allow();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user