Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Merge branch 'omp-jb51946' into 'master'
[embedlite-components] Add cookie handling to PermissionManager. Contributes to JB#51946

See merge request mer-core/embedlite-components!95
  • Loading branch information
rainemak committed Nov 17, 2020
2 parents 54b9000 + 4dd19a9 commit cd8b553
Showing 1 changed file with 24 additions and 0 deletions.
24 changes: 24 additions & 0 deletions jscomps/ContentPermissionManager.js
Expand Up @@ -4,6 +4,7 @@

/* Copyright (c) 2020 Open Mobile Platform LLC. */

const Cc = Components.classes;
const Ci = Components.interfaces;
const Cu = Components.utils;

Expand All @@ -28,11 +29,26 @@ function sendResult(topic, result) {
Services.obs.notifyObservers(null, topic, JSON.stringify(result));
}

function permissionToCookieAccess(permission) {
switch(permission) {
case Ci.nsIPermissionManager.ALLOW_ACTION:
return Ci.nsICookiePermission.ACCESS_ALLOW;
case Ci.nsIPermissionManager.DENY_ACTION:
return Ci.nsICookiePermission.ACCESS_DENY;
default:
return Ci.nsICookiePermission.ACCESS_DEFAULT;
}
}

ContentPermissionManager.prototype = {
classID: Components.ID("{86d354c6-81bc-4eb5-82c3-4c9859586165}"),

QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver]),

get cookiePermission() {
return Cc["@mozilla.org/cookie/permission;1"].getService(Ci.nsICookiePermission);
},

observe: function(aSubject, aTopic, aData) {
switch (aTopic) {
case "app-startup":
Expand Down Expand Up @@ -69,13 +85,21 @@ ContentPermissionManager.prototype = {
sendResult("embed:perms:all-for-uri", result);
break;
case "add":
if (data.type === "cookie") {
this.cookiePermission.setAccess(Services.io.newURI(data.uri, null, null),
permissionToCookieAccess(parseInt(data.permission)));
}
Services.perms.add(Services.io.newURI(data.uri, null, null),
data.type, parseInt(data.permission));
debug("set, uri: " + data.uri
+ ", type: " + data.type
+ ", permission: " + data.permission);
break;
case "remove":
if (data.type === "cookie") {
this.cookiePermission.setAccess(Services.io.newURI(data.uri, null, null),
Ci.nsICookiePermission.ACCESS_DEFAULT);
}
Services.perms.remove(Services.io.newURI(data.uri, null, null), data.type);
debug("remove type: " + data.type + ", for uri: " + data.uri);
break;
Expand Down

0 comments on commit cd8b553

Please sign in to comment.