blob: 1f20f631dfe90fbdba9e2a66cdd86ee74a31486a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
// Forward iframe loaded event.
/* eslint-env mozilla/frame-script */
addEventListener(
"frames-loaded",
() => sendAsyncMessage("test:frames-loaded"),
true,
true
);
let requestObserver = {
observe(subject, topic) {
if (topic == "http-on-opening-request") {
// Get DOMWindow on all child docshells to force about:blank
// content viewers being created.
getChildDocShells().map(ds => {
ds
.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsILoadContext).associatedWindow;
});
}
},
QueryInterface: ChromeUtils.generateQI(["nsIObserver"]),
};
Services.obs.addObserver(requestObserver, "http-on-opening-request");
addEventListener("unload", e => {
if (e.target == this) {
Services.obs.removeObserver(requestObserver, "http-on-opening-request");
}
});
function getChildDocShells() {
return docShell.getAllDocShellsInSubtree(
Ci.nsIDocShellTreeItem.typeAll,
Ci.nsIDocShell.ENUMERATE_FORWARDS
);
}
|