michael@0: # -*- Mode: javascript; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- michael@0: # This Source Code Form is subject to the terms of the Mozilla Public michael@0: # License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: # file, You can obtain one at http://mozilla.org/MPL/2.0/. michael@0: michael@0: let WebrtcIndicator = { michael@0: init: function () { michael@0: let temp = {}; michael@0: Cu.import("resource:///modules/webrtcUI.jsm", temp); michael@0: this.UIModule = temp.webrtcUI; michael@0: michael@0: this.updateButton(); michael@0: }, michael@0: michael@0: get button() { michael@0: delete this.button; michael@0: return this.button = document.getElementById("webrtc-status-button"); michael@0: }, michael@0: michael@0: updateButton: function () { michael@0: this.button.hidden = !this.UIModule.showGlobalIndicator; michael@0: }, michael@0: michael@0: fillPopup: function (aPopup) { michael@0: this._menuitemData = new WeakMap; michael@0: for (let streamData of this.UIModule.activeStreams) { michael@0: let pageURI = Services.io.newURI(streamData.uri, null, null); michael@0: let menuitem = document.createElement("menuitem"); michael@0: menuitem.setAttribute("class", "menuitem-iconic"); michael@0: menuitem.setAttribute("label", streamData.browser.contentTitle || streamData.uri); michael@0: menuitem.setAttribute("tooltiptext", streamData.uri); michael@0: PlacesUtils.favicons.getFaviconURLForPage(pageURI, function (aURI) { michael@0: if (aURI) { michael@0: let iconURL = PlacesUtils.favicons.getFaviconLinkForIcon(aURI).spec; michael@0: menuitem.setAttribute("image", iconURL); michael@0: } michael@0: }); michael@0: michael@0: this._menuitemData.set(menuitem, streamData); michael@0: michael@0: aPopup.appendChild(menuitem); michael@0: } michael@0: }, michael@0: michael@0: clearPopup: function (aPopup) { michael@0: while (aPopup.lastChild) michael@0: aPopup.removeChild(aPopup.lastChild); michael@0: }, michael@0: michael@0: menuCommand: function (aMenuitem) { michael@0: let streamData = this._menuitemData.get(aMenuitem); michael@0: if (!streamData) michael@0: return; michael@0: michael@0: let browserWindow = streamData.browser.ownerDocument.defaultView; michael@0: if (streamData.tab) { michael@0: browserWindow.gBrowser.selectedTab = streamData.tab; michael@0: } else { michael@0: streamData.browser.focus(); michael@0: } michael@0: browserWindow.focus(); michael@0: PopupNotifications.getNotification("webRTC-sharingDevices", michael@0: streamData.browser).reshow(); michael@0: } michael@0: }