Bug 1603673 - Signal that we support web manifest processing in Fenix r=snorp,agi...
[gecko.git] / toolkit / actors / TestChild.jsm
blob09672a45dd1fca3ab69b1e57605e53a3cc4cfa0f
1 /* vim: set ts=2 sw=2 sts=2 et tw=80: */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3  * License, v. 2.0. If a copy of the MPL was not distributed with this
4  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 "use strict";
7 const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
9 var EXPORTED_SYMBOLS = ["TestChild"];
11 class TestChild extends JSWindowActorChild {
12   constructor() {
13     super();
14   }
16   receiveMessage(aMessage) {
17     switch (aMessage.name) {
18       case "toChild":
19         aMessage.data.toChild = true;
20         this.sendAsyncMessage("toParent", aMessage.data);
21         break;
22       case "asyncAdd":
23         let { a, b } = aMessage.data;
24         return new Promise(resolve => {
25           resolve({ result: a + b });
26         });
27       case "error":
28         return Promise.reject(new SyntaxError(aMessage.data.message));
29       case "exception":
30         return Promise.reject(
31           Components.Exception(aMessage.data.message, aMessage.data.result)
32         );
33       case "done":
34         this.done(aMessage.data);
35         break;
36     }
38     return undefined;
39   }
41   handleEvent(aEvent) {
42     this.sendAsyncMessage("event", { type: aEvent.type });
43   }
45   observe(subject, topic, data) {
46     switch (topic) {
47       case "audio-playback":
48         this.done({ subject, topic, data });
49         break;
50       default:
51         this.lastObserved = { subject, topic, data };
52         break;
53     }
54   }
56   show() {
57     return "TestChild";
58   }
60   willDestroy() {
61     Services.obs.notifyObservers(
62       this,
63       "test-js-window-actor-willdestroy",
64       true
65     );
66   }
68   didDestroy() {
69     Services.obs.notifyObservers(this, "test-js-window-actor-diddestroy", true);
70   }