summaryrefslogtreecommitdiffstats
path: root/toolkit/actors/ControllersParent.sys.mjs
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/actors/ControllersParent.sys.mjs')
-rw-r--r--toolkit/actors/ControllersParent.sys.mjs90
1 files changed, 90 insertions, 0 deletions
diff --git a/toolkit/actors/ControllersParent.sys.mjs b/toolkit/actors/ControllersParent.sys.mjs
new file mode 100644
index 0000000000..05ea166112
--- /dev/null
+++ b/toolkit/actors/ControllersParent.sys.mjs
@@ -0,0 +1,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",
+]);