mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-10 21:28:04 +02:00
This is a partial fix, which prevents the test from simply timing out. It still fails, because this is a test of content session history listeners, which don't currently work as expected for cross-process navigations. Differential Revision: https://phabricator.services.mozilla.com/D51696 --HG-- rename : docshell/test/browser/file_bug422543_script.js => docshell/test/browser/Bug422543Child.jsm extra : moz-landing-system : lando
99 lines
1.9 KiB
JavaScript
99 lines
1.9 KiB
JavaScript
var EXPORTED_SYMBOLS = ["Bug422543Child"];
|
|
|
|
class SHistoryListener {
|
|
constructor() {
|
|
this.retval = true;
|
|
this.last = "initial";
|
|
}
|
|
|
|
OnHistoryNewEntry(aNewURI) {
|
|
this.last = "newentry";
|
|
}
|
|
|
|
OnHistoryGotoIndex() {
|
|
this.last = "gotoindex";
|
|
}
|
|
|
|
OnHistoryPurge() {
|
|
this.last = "purge";
|
|
}
|
|
|
|
OnHistoryReload() {
|
|
this.last = "reload";
|
|
return this.retval;
|
|
}
|
|
|
|
OnHistoryReplaceEntry() {}
|
|
}
|
|
SHistoryListener.prototype.QueryInterface = ChromeUtils.generateQI([
|
|
Ci.nsISHistoryListener,
|
|
Ci.nsISupportsWeakReference,
|
|
]);
|
|
|
|
let listeners;
|
|
|
|
class Bug422543Child extends JSWindowActorChild {
|
|
constructor() {
|
|
super();
|
|
}
|
|
|
|
actorCreated() {
|
|
if (listeners) {
|
|
return;
|
|
}
|
|
|
|
this.shistory = this.docShell.nsIWebNavigation.sessionHistory;
|
|
listeners = [new SHistoryListener(), new SHistoryListener()];
|
|
|
|
for (let listener of listeners) {
|
|
this.shistory.legacySHistory.addSHistoryListener(listener);
|
|
}
|
|
}
|
|
|
|
cleanup() {
|
|
for (let listener of listeners) {
|
|
this.shistory.legacySHistory.removeSHistoryListener(listener);
|
|
}
|
|
this.shistory = null;
|
|
return {};
|
|
}
|
|
|
|
getListenerStatus() {
|
|
return listeners.map(l => l.last);
|
|
}
|
|
|
|
resetListeners() {
|
|
for (let listener of listeners) {
|
|
listener.last = "initial";
|
|
}
|
|
|
|
return {};
|
|
}
|
|
|
|
notifyReload() {
|
|
let history = this.shistory.legacySHistory;
|
|
let rval = history.notifyOnHistoryReload();
|
|
return { rval };
|
|
}
|
|
|
|
setRetval({ num, val }) {
|
|
listeners[num].retval = val;
|
|
return {};
|
|
}
|
|
|
|
receiveMessage(msg) {
|
|
switch (msg.name) {
|
|
case "cleanup":
|
|
return this.cleanup();
|
|
case "getListenerStatus":
|
|
return this.getListenerStatus();
|
|
case "notifyReload":
|
|
return this.notifyReload();
|
|
case "resetListeners":
|
|
return this.resetListeners();
|
|
case "setRetval":
|
|
return this.setRetval(msg.data);
|
|
}
|
|
return null;
|
|
}
|
|
}
|