Skip to content

Commit a5ebf61

Browse files
committed
Use correct policy for RequestGuard.blockedObjects
Fixes uses of ns.policy in RequestGuard and LifeCycle
1 parent cf84091 commit a5ebf61

File tree

2 files changed

+11
-5
lines changed

2 files changed

+11
-5
lines changed

src/bg/LifeCycle.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ var LifeCycle = (() => {
104104
let {url} = tab;
105105
let {cypherText, key, iv} = await encrypt(JSON.stringify({
106106
policy: ns.policy.dry(true),
107+
contextStore: ns.contextStore.dry(true),
107108
allSeen,
108109
unrestrictedTabs: [...ns.unrestrictedTabs]
109110
}));
@@ -188,14 +189,15 @@ var LifeCycle = (() => {
188189
iv
189190
}, key, cypherText
190191
);
191-
let {policy, allSeen, unrestrictedTabs} = JSON.parse(new TextDecoder().decode(encoded));
192+
let {policy, contextStore, allSeen, unrestrictedTabs} = JSON.parse(new TextDecoder().decode(encoded));
192193
if (!policy) {
193194
throw new error("Ephemeral policy not found in survival tab %s!", tabId);
194195
}
195196
ns.unrestrictedTabs = new Set(unrestrictedTabs);
196197
destroyIfNeeded();
197198
if (ns.initializing) await ns.initializing;
198199
ns.policy = new Policy(policy);
200+
ns.contextStore = new ContextStore(contextStore);
199201
await Promise.all(
200202
Object.entries(allSeen).map(
201203
async ([tabId, seen]) => {

src/bg/RequestGuard.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,9 @@ var RequestGuard = (() => {
247247
}
248248
let key = [siteKey, origin][ret.option || 0];
249249
if (!key) return;
250-
let {siteMatch, contextMatch, perms} = ns.policy.get(key, documentUrl);
250+
let cookieStoreId = sender.tab && sender.tab.cookieStoreId;
251+
let policy = ns.getPolicy(cookieStoreId);
252+
let {siteMatch, contextMatch, perms} = policy.get(key, documentUrl);
251253
let {capabilities} = perms;
252254
if (!capabilities.has(policyType)) {
253255
let temp = sender.tab.incognito; // we don't want to store in PBM
@@ -260,8 +262,9 @@ var RequestGuard = (() => {
260262
perms = new Permissions(new Set(capabilities), false, contextualSites);
261263
}
262264
*/
263-
ns.policy.set(key, perms);
265+
policy.set(key, perms);
264266
await ns.savePolicy();
267+
await ns.saveContextStore();
265268
}
266269
return {enable: key};
267270
},
@@ -335,7 +338,8 @@ var RequestGuard = (() => {
335338
};
336339

337340
function intersectCapabilities(perms, request) {
338-
let {frameId, frameAncestors, tabId} = request;
341+
let {frameId, frameAncestors, tabId, cookieStoreId} = request;
342+
let policy = ns.getPolicy(cookieStoreId);
339343
if (frameId !== 0 && ns.sync.cascadeRestrictions) {
340344
let topUrl = frameAncestors && frameAncestors.length
341345
&& frameAncestors[frameAncestors.length - 1].url;
@@ -344,7 +348,7 @@ var RequestGuard = (() => {
344348
if (tab) topUrl = tab.url;
345349
}
346350
if (topUrl) {
347-
return ns.policy.cascadeRestrictions(perms, topUrl).capabilities;
351+
return policy.cascadeRestrictions(perms, topUrl).capabilities;
348352
}
349353
}
350354
return perms.capabilities;

0 commit comments

Comments
 (0)