no bug - Bumping Firefox l10n changesets r=release a=l10n-bump DONTBUILD CLOSED TREE
[gecko.git] / docshell / test / browser / Bug422543Child.sys.mjs
blob524ac33ffd3ce384ff847fdd7fe85b34de01aa21
1 class SHistoryListener {
2   constructor() {
3     this.retval = true;
4     this.last = "initial";
5   }
7   OnHistoryNewEntry(aNewURI) {
8     this.last = "newentry";
9   }
11   OnHistoryGotoIndex() {
12     this.last = "gotoindex";
13   }
15   OnHistoryPurge() {
16     this.last = "purge";
17   }
19   OnHistoryReload() {
20     this.last = "reload";
21     return this.retval;
22   }
24   OnHistoryReplaceEntry() {}
26 SHistoryListener.prototype.QueryInterface = ChromeUtils.generateQI([
27   "nsISHistoryListener",
28   "nsISupportsWeakReference",
29 ]);
31 let listeners;
33 export class Bug422543Child extends JSWindowActorChild {
34   constructor() {
35     super();
36   }
38   actorCreated() {
39     if (listeners) {
40       return;
41     }
43     this.shistory = this.docShell.nsIWebNavigation.sessionHistory;
44     listeners = [new SHistoryListener(), new SHistoryListener()];
46     for (let listener of listeners) {
47       this.shistory.legacySHistory.addSHistoryListener(listener);
48     }
49   }
51   cleanup() {
52     for (let listener of listeners) {
53       this.shistory.legacySHistory.removeSHistoryListener(listener);
54     }
55     this.shistory = null;
56     listeners = null;
57     return {};
58   }
60   getListenerStatus() {
61     return listeners.map(l => l.last);
62   }
64   resetListeners() {
65     for (let listener of listeners) {
66       listener.last = "initial";
67     }
69     return {};
70   }
72   notifyReload() {
73     let history = this.shistory.legacySHistory;
74     let rval = history.notifyOnHistoryReload();
75     return { rval };
76   }
78   setRetval({ num, val }) {
79     listeners[num].retval = val;
80     return {};
81   }
83   receiveMessage(msg) {
84     switch (msg.name) {
85       case "cleanup":
86         return this.cleanup();
87       case "getListenerStatus":
88         return this.getListenerStatus();
89       case "notifyReload":
90         return this.notifyReload();
91       case "resetListeners":
92         return this.resetListeners();
93       case "setRetval":
94         return this.setRetval(msg.data);
95     }
96     return null;
97   }