michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0:

michael@0: michael@0:
michael@0: 
michael@0: michael@0: michael@0: "); michael@0: document.documentElement.appendChild(gFrame); michael@0: }, michael@0: function testInheritFromCurrent_system(cb) { michael@0: loadListener(gFrame, function () { michael@0: is(window.inheritedSystem, undefined, "load in type=content iframe shouldn't inherit system principal from current document"); michael@0: cb(); michael@0: }, true); michael@0: gFrame.setAttribute("src", "data:text/html,"); michael@0: }, michael@0: function testInheritFromCreated(cb) { michael@0: // Open a new chrome window with a type="content" iframe, so that it has no michael@0: // same-type parent. michael@0: // Load a javascript: URI in it to ensure that GetInheritedPrincipal will michael@0: // force creation of a content viewer. michael@0: let xulWinURL = 'data:application/vnd.mozilla.xul+xml,' + michael@0: ''; michael@0: let newWin = window.openDialog(xulWinURL, "chrome_window", "chrome"); michael@0: loadListener(newWin, function () { michael@0: let frame = newWin.document.createElement("iframe"); michael@0: frame.setAttribute("type", "content"); michael@0: frame.setAttribute("src", "javascript:'1';"); michael@0: loadListener(frame, function () { michael@0: is(frame.contentWindow.document.body.textContent, "1", "content viewer was created"); michael@0: SimpleTest.executeSoon(function () { michael@0: newWin.close(); michael@0: cb(); michael@0: }) michael@0: }); michael@0: newWin.document.documentElement.appendChild(frame); michael@0: }); michael@0: } michael@0: ]; michael@0: michael@0: addLoadEvent(function onLoad() { michael@0: ok(Components.stack, "this test must be run with the system principal"); michael@0: SimpleTest.executeSoon(nextTest); michael@0: }); michael@0: michael@0: function loadListener(target, func) { michael@0: target.addEventListener("load", function lis() { michael@0: target.removeEventListener("load", lis, true); michael@0: func(); michael@0: }, true); michael@0: } michael@0: michael@0: function nextTest() { michael@0: if (tests.length) { michael@0: let test = tests.shift(); michael@0: SimpleTest.executeSoon(function () { michael@0: info("running " + test.name); michael@0: test(nextTest); michael@0: }); michael@0: } else michael@0: SimpleTest.executeSoon(SimpleTest.finish); michael@0: } michael@0: michael@0: ]]> michael@0: michael@0: michael@0: