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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
/* vim: set ts=2 sw=2 sts=2 et tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
export class ControllersParent extends JSWindowActorParent {
constructor() {
super();
// A map of commands that have had their enabled/disabled state assigned. The
// value of each key will be true if enabled, and false if disabled.
this.supportedCommands = {};
}
get browser() {
return this.browsingContext.top.embedderElement;
}
// Update the set of enabled and disabled commands.
enableDisableCommands(aAction, aEnabledCommands, aDisabledCommands) {
// Clear the list first
this.supportedCommands = {};
for (let command of aEnabledCommands) {
this.supportedCommands[command] = true;
}
for (let command of aDisabledCommands) {
this.supportedCommands[command] = false;
}
let browser = this.browser;
if (browser) {
browser.ownerGlobal.updateCommands(aAction);
}
}
isCommandEnabled(aCommand) {
return this.supportedCommands[aCommand] || false;
}
supportsCommand(aCommand) {
return aCommand in this.supportedCommands;
}
doCommand(aCommand) {
this.sendAsyncMessage("ControllerCommands:Do", aCommand);
}
getCommandStateWithParams(aCommand, aCommandParams) {
throw Components.Exception("Not implemented", Cr.NS_ERROR_NOT_IMPLEMENTED);
}
doCommandWithParams(aCommand, aCommandParams) {
let cmd = {
cmd: aCommand,
params: null,
};
if (aCommand == "cmd_lookUpDictionary") {
cmd.params = {
x: {
type: "long",
value: aCommandParams.getLongValue("x"),
},
y: {
type: "long",
value: aCommandParams.getLongValue("y"),
},
};
} else {
throw Components.Exception(
"Not implemented",
Cr.NS_ERROR_NOT_IMPLEMENTED
);
}
this.sendAsyncMessage("ControllerCommands:DoWithParams", cmd);
}
getSupportedCommands() {
throw Components.Exception("Not implemented", Cr.NS_ERROR_NOT_IMPLEMENTED);
}
onEvent() {}
}
ControllersParent.prototype.QueryInterface = ChromeUtils.generateQI([
"nsIBrowserController",
"nsIController",
"nsICommandController",
]);
|