browser_json_refresh.js (3225B)
1 /* Any copyright is dedicated to the Public Domain. 2 * http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 "use strict"; 5 6 const TEST_JSON_FILE = "simple_json.json"; 7 8 add_task(async function () { 9 info("Test JSON refresh started"); 10 11 // generate file:// URI for JSON file and load in new tab 12 const dir = getChromeDir(getResolvedURI(gTestPath)); 13 dir.append(TEST_JSON_FILE); 14 dir.normalize(); 15 const uri = Services.io.newFileURI(dir); 16 const tab = await addJsonViewTab(uri.spec); 17 18 // perform sanity checks for URI and principals in loadInfo 19 await SpecialPowers.spawn( 20 tab.linkedBrowser, 21 [{ TEST_JSON_FILE }], 22 // eslint-disable-next-line no-shadow 23 async function ({ TEST_JSON_FILE }) { 24 const channel = content.docShell.currentDocumentChannel; 25 const channelURI = channel.URI.spec; 26 ok( 27 channelURI.startsWith("file://") && channelURI.includes(TEST_JSON_FILE), 28 "sanity: correct channel uri" 29 ); 30 const contentPolicyType = channel.loadInfo.externalContentPolicyType; 31 is( 32 contentPolicyType, 33 Ci.nsIContentPolicy.TYPE_DOCUMENT, 34 "sanity: correct contentPolicyType" 35 ); 36 37 const loadingPrincipal = channel.loadInfo.loadingPrincipal; 38 is(loadingPrincipal, null, "sanity: correct loadingPrincipal"); 39 const triggeringPrincipal = channel.loadInfo.triggeringPrincipal; 40 ok( 41 triggeringPrincipal.isSystemPrincipal, 42 "sanity: correct triggeringPrincipal" 43 ); 44 const principalToInherit = channel.loadInfo.principalToInherit; 45 ok( 46 principalToInherit.isNullPrincipal, 47 "sanity: correct principalToInherit" 48 ); 49 is( 50 content.document.nodePrincipal.origin, 51 "resource://devtools", 52 "sanity: correct doc.nodePrincipal" 53 ); 54 } 55 ); 56 57 // reload the tab 58 await reloadBrowser(); 59 60 // check principals in loadInfo are still correct 61 await SpecialPowers.spawn( 62 tab.linkedBrowser, 63 [{ TEST_JSON_FILE }], 64 // eslint-disable-next-line no-shadow 65 async function ({ TEST_JSON_FILE }) { 66 // eslint-disable-line 67 const channel = content.docShell.currentDocumentChannel; 68 const channelURI = channel.URI.spec; 69 ok( 70 channelURI.startsWith("file://") && channelURI.includes(TEST_JSON_FILE), 71 "reloaded: correct channel uri" 72 ); 73 const contentPolicyType = channel.loadInfo.externalContentPolicyType; 74 is( 75 contentPolicyType, 76 Ci.nsIContentPolicy.TYPE_DOCUMENT, 77 "reloaded: correct contentPolicyType" 78 ); 79 80 const loadingPrincipal = channel.loadInfo.loadingPrincipal; 81 is(loadingPrincipal, null, "reloaded: correct loadingPrincipal"); 82 const triggeringPrincipal = channel.loadInfo.triggeringPrincipal; 83 ok( 84 triggeringPrincipal.isSystemPrincipal, 85 "reloaded: correct triggeringPrincipal" 86 ); 87 const principalToInherit = channel.loadInfo.principalToInherit; 88 ok( 89 principalToInherit.isNullPrincipal, 90 "sanity: correct principalToInherit" 91 ); 92 is( 93 content.document.nodePrincipal.origin, 94 "resource://devtools", 95 "reloaded: correct doc.nodePrincipal" 96 ); 97 } 98 ); 99 });