379379
380380 const wantsContext = checked . includes ( "ctx" ) ;
381381
382- let { siteMatch, contextMatch, perms } = ns . policy . get ( key , contextUrl ) ;
382+ let cookieStoreId = sender . tab && sender . tab . cookieStoreId ;
383+ let policy = ns . getPolicy ( cookieStoreId ) ;
384+ let { siteMatch, contextMatch, perms } = policy . get ( key , contextUrl ) ;
383385
384386 if ( ! perms . capabilities . has ( policyType ) ||
385387 ! contextMatch && wantsContext && ctxKey ) {
389391 const isDefault = perms === ns . policy . DEFAULT ;
390392 perms = perms . clone ( ) ;
391393 if ( isDefault ) perms . temp = wantsTemp ;
392- ns . policy . set ( key , perms ) ;
394+ policy . set ( key , perms ) ;
393395 if ( ctxKey && wantsContext ) {
394396 perms . contextual . set ( ctxKey , perms = perms . clone ( /* noContext = */ true ) ) ;
395397 }
396398 }
397399 perms . temp = wantsTemp ;
398400 perms . capabilities . add ( policyType ) ;
399401 await ns . savePolicy ( ) ;
402+ await ns . saveContextStore ( ) ;
400403 await RequestGuard . DNRPolicy ?. update ( ) ;
401404 }
402405 return { enable : key } ;
638641
639642 function intersectCapabilities ( policyMatch , request ) {
640643 if ( request . frameId !== 0 && ns . sync . cascadeRestrictions ) {
641- const { tabUrl, frameAncestors} = request ;
644+ const { tabUrl, frameAncestors, cookieStoreId } = request ;
642645 const topUrl = tabUrl ||
643646 frameAncestors && frameAncestors [ frameAncestors ?. length - 1 ] ?. url ||
644647 TabCache . get ( request . tabId ) ?. url ;
645648 if ( topUrl ) {
646- return ns . policy . cascadeRestrictions ( policyMatch , topUrl ) . capabilities ;
649+ const policy = ns . getPolicy ( cookieStoreId ) ;
650+ return policy . cascadeRestrictions ( policyMatch , topUrl ) . capabilities ;
647651 }
648652 }
649653 return policyMatch . perms . capabilities ;
708712
709713 function checkLANRequest ( request ) {
710714 if ( ! ns . isEnforced ( request . tabId ) ) return ALLOW ;
711- let { originUrl, url} = request ;
715+ let { originUrl, url, cookieStoreId} = request ;
716+ let policy = ns . getPolicy ( cookieStoreId ) ;
712717 if ( originUrl && ! Sites . isInternal ( originUrl ) && url . startsWith ( "http" ) &&
713- ! ns . policy . can ( originUrl , "lan" , ns . policyContext ( request ) ) ) {
718+ ! policy . can ( originUrl , "lan" , ns . policyContext ( request ) ) ) {
714719 // we want to block any request whose origin resolves to at least one external WAN IP
715720 // and whose destination resolves to at least one LAN IP
716721 const { proxyInfo} = request ; // see https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/proxy/ProxyInfo
745750
746751 normalizeRequest ( request ) ;
747752
748- let { tabId, type, url, originUrl} = request ;
753+ let { tabId, type, cookieStoreId , url, originUrl} = request ;
749754
750- const { policy} = ns
755+ const policy = ns . getPolicy ( cookieStoreId ) ;
751756
752757 let previous = recent . find ( request ) ;
753758 if ( previous ) {
907912 let promises = [ ] ;
908913
909914 pending . headersProcessed = true ;
910- let { url, documentUrl, tabId, responseHeaders, type} = request ;
915+ let { url, documentUrl, tabId, cookieStoreId , responseHeaders, type} = request ;
911916 let isMainFrame = type === "main_frame" ;
912917 try {
913918 let capabilities ;
914919 if ( ns . isEnforced ( tabId ) ) {
915- const { policy } = ns ;
920+ const policy = ns . getPolicy ( cookieStoreId ) ;
916921 const policyMatch = policy . get ( url , ns . policyContext ( request ) ) ;
917922 let { perms } = policyMatch ;
918923 if ( isMainFrame ) {
10081013 async function injectPolicyScript ( details ) {
10091014 await ns . initializing ;
10101015 if ( ns . local . debug ?. disablePolicyInjection ) return '' ; // DEV_ONLY
1011- const { url, tabId, frameId, type} = details ;
1016+ const { url, tabId, frameId, cookieStoreId , type} = details ;
10121017 const isTop = type == "main_frame" ;
10131018 const domPolicy = await ns . computeChildPolicy (
10141019 { url } ,
10151020 {
10161021 tab : { id : tabId , url : isTop ? url : null } ,
10171022 frameId : isTop ? 0 : frameId ,
1023+ cookieStoreId,
10181024 }
10191025 ) ;
10201026 domPolicy . navigationURL = url ;
11061112 } , filterDocs , [ "blocking" , "responseHeaders" ] ) ) . install ( ) ;
11071113 }
11081114 }
1109- }
1115+ }
0 commit comments