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; } this.browser?.ownerGlobal.updateCommands(aAction); } isCommandEnabled(aCommand) { if (aCommand in this.supportedCommands) { return this.supportedCommands[aCommand]; } // Some commands are always supported or enabled for a given window. // We don't want to rely on the child having sent us its command list, so // check with ChromeUtils. return !!ChromeUtils.getGlobalWindowCommandEnabled(aCommand); } supportsCommand(aCommand) { if (aCommand in this.supportedCommands) { return true; } // See isCommandEnabled(). return ChromeUtils.getGlobalWindowCommandEnabled(aCommand) !== null; } doCommand(aCommand) { this.sendAsyncMessage("ControllerCommands:Do", aCommand); } getCommandStateWithParams() { 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", ]); PK