this._messageDeck.selectedIndex = gUnifiedExtensions.MESSAGE_DECK_INDEX_MENU_HOVER; } else if (target === this._actionButton) { this._messageDeck.selectedIndex = gUnifiedExtensions.MESSAGE_DECK_INDEX_HOVER; } break; } } #setStateMessage() { const messages = OriginControls.getStateMessageIDs({ policy: this.extension.policy, tab: this.ownerGlobal.gBrowser.selectedTab, }); if (!messages) { return; } const messageDefaultElement = this.querySelector( ".unified-extensions-item-message-default" ); this.ownerDocument.l10n.setAttributes( messageDefaultElement, messages.default ); const messageHoverElement = this.querySelector( ".unified-extensions-item-message-hover" ); this.ownerDocument.l10n.setAttributes( messageHoverElement, messages.onHover || messages.default ); } #hasAction() { const state = OriginControls.getState( this.extension.policy, this.ownerGlobal.gBrowser.selectedTab ); return state && state.whenClicked && !state.hasAccess; } render() { if (!this.extension) { throw new Error( "unified-extensions-item requires an extension, forgot to call setExtension()?" ); } this.setAttribute("extension-id", this.extension.id); this.classList.add( "toolbaritem-combined-buttons", "unified-extensions-item" ); // The data-extensionid attribute is used by context menu handlers // to identify the extension being manipulated by the context menu. this._actionButton.dataset.extensionid = this.extension.id; const { attention } = OriginControls.getAttentionState( this.extension.policy, this.ownerGlobal ); this.toggleAttribute("attention", attention); this.querySelector(".unified-extensions-item-name").textContent = this.extension.name; AddonManager.getAddonByID(this.extension.id).then(addon => { const iconURL = AddonManager.getPreferredIconURL(addon, 32, window); if (iconURL) { this.querySelector(".unified-extensions-item-icon").setAttribute( "src", iconURL ); } }); this._actionButton.disabled = !this.#hasAction(); // The data-extensionid attribute is used by context menu handlers // to identify the extension being manipulated by the context menu. this._menuButton.dataset.extensionid = this.extension.id; this.ownerDocument.l10n.setAttributes( this._menuButton, "unified-extensions-item-open-menu", { extensionName: this.extension.name } ); this.#setStateMessage(); this._messageBarWrapper?.refresh(); } } ); PK