mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-28 03:17:31 +09:00
import FIREFOX_52_6_0esr_RELEASE from mozilla-esr52 hg repo
This commit is contained in:
commit
dcd9973243
150858 changed files with 23884658 additions and 0 deletions
68
extensions/cookie/test/unit/test_permmanager_cleardata.js
Normal file
68
extensions/cookie/test/unit/test_permmanager_cleardata.js
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
/* Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
|
||||
var pm;
|
||||
|
||||
// Create a principal based on the { origin, originAttributes }.
|
||||
function createPrincipal(aOrigin, aOriginAttributes)
|
||||
{
|
||||
return Services.scriptSecurityManager.createCodebasePrincipal(NetUtil.newURI(aOrigin), aOriginAttributes);
|
||||
}
|
||||
|
||||
// Return the data required by 'clear-origin-attributes-data' notification.
|
||||
function getData(aPattern)
|
||||
{
|
||||
return JSON.stringify(aPattern);
|
||||
}
|
||||
|
||||
// Use aEntries to create principals, add permissions to them and check that they have them.
|
||||
// Then, it is notifying 'clear-origin-attributes-data' with the given aData and check if the permissions
|
||||
// of principals[i] matches the permission in aResults[i].
|
||||
function test(aEntries, aData, aResults)
|
||||
{
|
||||
let principals = [];
|
||||
|
||||
for (entry of aEntries) {
|
||||
principals.push(createPrincipal(entry.origin, entry.originAttributes));
|
||||
}
|
||||
|
||||
for (principal of principals) {
|
||||
do_check_eq(pm.testPermissionFromPrincipal(principal, "test/clear-origin"), pm.UNKNOWN_ACTION);
|
||||
pm.addFromPrincipal(principal, "test/clear-origin", pm.ALLOW_ACTION, pm.EXPIRE_NEVER, 0);
|
||||
do_check_eq(pm.testPermissionFromPrincipal(principal, "test/clear-origin"), pm.ALLOW_ACTION);
|
||||
}
|
||||
|
||||
Services.obs.notifyObservers(null, 'clear-origin-attributes-data', aData);
|
||||
|
||||
var length = aEntries.length;
|
||||
for (let i=0; i<length; ++i) {
|
||||
do_check_eq(pm.testPermissionFromPrincipal(principals[i], 'test/clear-origin'), aResults[i]);
|
||||
|
||||
// Remove allowed actions.
|
||||
if (aResults[i] == pm.ALLOW_ACTION) {
|
||||
pm.removeFromPrincipal(principals[i], 'test/clear-origin');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function run_test()
|
||||
{
|
||||
do_get_profile();
|
||||
|
||||
pm = Cc["@mozilla.org/permissionmanager;1"]
|
||||
.getService(Ci.nsIPermissionManager);
|
||||
|
||||
let entries = [
|
||||
{ origin: 'http://example.com', originAttributes: { appId: 1 } },
|
||||
{ origin: 'http://example.com', originAttributes: { appId: 1, inIsolatedMozBrowser: true } },
|
||||
{ origin: 'http://example.com', originAttributes: {} },
|
||||
{ origin: 'http://example.com', originAttributes: { appId: 2 } },
|
||||
];
|
||||
|
||||
// In that case, all permissions from app 1 should be removed but not the other ones.
|
||||
test(entries, getData({appId: 1}), [ pm.UNKNOWN_ACTION, pm.UNKNOWN_ACTION, pm.ALLOW_ACTION, pm.ALLOW_ACTION ]);
|
||||
|
||||
// In that case, only the permissions of app 1 related to a browserElement should be removed.
|
||||
// All the other permissions should stay.
|
||||
test(entries, getData({appId: 1, inIsolatedMozBrowser: true}), [ pm.ALLOW_ACTION, pm.UNKNOWN_ACTION, pm.ALLOW_ACTION, pm.ALLOW_ACTION ]);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue