process_error.xhtml (2219B)
1 <?xml version="1.0"?> 2 <?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?> 3 4 <window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" 5 orient="vertical"> 6 7 <browser id="thebrowser" type="content" remote="true" /> 8 <script type="application/javascript"><![CDATA[ 9 const {BrowserTestUtils} = ChromeUtils.importESModule( 10 "resource://testing-common/BrowserTestUtils.sys.mjs" 11 ); 12 13 const ok = window.arguments[0].ok; 14 const is = window.arguments[0].is; 15 const done = window.arguments[0].done; 16 const SimpleTest = window.arguments[0].SimpleTest; 17 18 // Parse test options. 19 const url = new URL(document.location); 20 const crashType = url.searchParams.get("crashType"); 21 22 // Allow the browser to get connected before using the messageManager to cause 23 // a crash: 24 addEventListener("DOMContentLoaded", () => { 25 let browser = document.getElementById('thebrowser'); 26 27 let observerPromise = new Promise(resolve => { 28 let crashObserver = (subject, topic) => { 29 is(topic, 'ipc:content-shutdown', 'Received correct observer topic.'); 30 ok(subject instanceof Ci.nsIPropertyBag2, 31 'Subject implements nsIPropertyBag2.'); 32 33 var dumpID; 34 if ('nsICrashReporter' in Ci) { 35 dumpID = subject.getPropertyAsAString('dumpID'); 36 ok(dumpID, "dumpID is present and not an empty string"); 37 } 38 39 Services.obs.removeObserver(crashObserver, 'ipc:content-shutdown'); 40 resolve(); 41 } 42 43 Services.obs.addObserver(crashObserver, 'ipc:content-shutdown'); 44 }); 45 46 let browsingContextId = browser.frameLoader.browsingContext.id; 47 48 let eventFiredPromise = BrowserTestUtils.waitForEvent(browser, "oop-browser-crashed"); 49 let eventPromise = eventFiredPromise.then(event => { 50 is(event.browsingContextId, browsingContextId, 51 "Expected the right browsing context id on the oop-browser-crashed event."); 52 }) 53 54 BrowserTestUtils.crashFrame(browser, true, false, /* Default browsing context */ null, { crashType }); 55 56 Promise.all([observerPromise, eventPromise]).then(done); 57 }); 58 ]]></script> 59 60 </window>