forked from mirrors/gecko-dev
Bug 1865382 - Remove legacy WebRTC indicator implementation. r=pbz,fluent-reviewers,desktop-theme-reviewers,bolsson,emilio
Depends on D193933 Differential Revision: https://phabricator.services.mozilla.com/D193934
This commit is contained in:
parent
73a56de07f
commit
5b77060db6
10 changed files with 0 additions and 534 deletions
|
|
@ -57,7 +57,6 @@ browser/base/content/macWindow.inc.xhtml
|
||||||
browser/base/content/main-popupset.inc.xhtml
|
browser/base/content/main-popupset.inc.xhtml
|
||||||
browser/base/content/pageinfo/pageInfo.xhtml
|
browser/base/content/pageinfo/pageInfo.xhtml
|
||||||
browser/base/content/webext-panels.xhtml
|
browser/base/content/webext-panels.xhtml
|
||||||
browser/base/content/webrtcLegacyIndicator.xhtml
|
|
||||||
browser/components/downloads/content/contentAreaDownloadsView.xhtml
|
browser/components/downloads/content/contentAreaDownloadsView.xhtml
|
||||||
browser/components/places/content/bookmarkProperties.xhtml
|
browser/components/places/content/bookmarkProperties.xhtml
|
||||||
browser/components/places/content/bookmarksSidebar.xhtml
|
browser/components/places/content/bookmarksSidebar.xhtml
|
||||||
|
|
|
||||||
|
|
@ -12,11 +12,6 @@ const { showStreamSharingMenu, webrtcUI } = ChromeUtils.importESModule(
|
||||||
"resource:///modules/webrtcUI.sys.mjs"
|
"resource:///modules/webrtcUI.sys.mjs"
|
||||||
);
|
);
|
||||||
|
|
||||||
ChromeUtils.defineESModuleGetters(this, {
|
|
||||||
BrowserWindowTracker: "resource:///modules/BrowserWindowTracker.sys.mjs",
|
|
||||||
MacOSWebRTCStatusbarIndicator: "resource:///modules/webrtcUI.sys.mjs",
|
|
||||||
});
|
|
||||||
|
|
||||||
XPCOMUtils.defineLazyServiceGetter(
|
XPCOMUtils.defineLazyServiceGetter(
|
||||||
this,
|
this,
|
||||||
"gScreenManager",
|
"gScreenManager",
|
||||||
|
|
|
||||||
|
|
@ -1,208 +0,0 @@
|
||||||
/* 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/. */
|
|
||||||
|
|
||||||
const { webrtcUI } = ChromeUtils.importESModule(
|
|
||||||
"resource:///modules/webrtcUI.sys.mjs"
|
|
||||||
);
|
|
||||||
|
|
||||||
function init(event) {
|
|
||||||
for (let id of ["audioVideoButton", "screenSharePopup"]) {
|
|
||||||
let popup = document.getElementById(id);
|
|
||||||
popup.addEventListener("popupshowing", onPopupMenuShowing);
|
|
||||||
popup.addEventListener("popuphiding", onPopupMenuHiding);
|
|
||||||
popup.addEventListener("command", onPopupMenuCommand);
|
|
||||||
}
|
|
||||||
|
|
||||||
let fxButton = document.getElementById("firefoxButton");
|
|
||||||
fxButton.addEventListener("click", onFirefoxButtonClick);
|
|
||||||
fxButton.addEventListener("mousedown", PositionHandler);
|
|
||||||
|
|
||||||
updateIndicatorState();
|
|
||||||
|
|
||||||
// Alert accessibility implementations stuff just changed. We only need to do
|
|
||||||
// this initially, because changes after this will automatically fire alert
|
|
||||||
// events if things change materially.
|
|
||||||
let ev = new CustomEvent("AlertActive", { bubbles: true, cancelable: true });
|
|
||||||
document.documentElement.dispatchEvent(ev);
|
|
||||||
}
|
|
||||||
|
|
||||||
function updateIndicatorState() {
|
|
||||||
updateWindowAttr("sharingvideo", webrtcUI.showCameraIndicator);
|
|
||||||
updateWindowAttr("sharingaudio", webrtcUI.showMicrophoneIndicator);
|
|
||||||
updateWindowAttr("sharingscreen", webrtcUI.showScreenSharingIndicator);
|
|
||||||
|
|
||||||
// Camera and microphone button tooltip.
|
|
||||||
const audioVideoButton = document.getElementById("audioVideoButton");
|
|
||||||
let avL10nId;
|
|
||||||
if (webrtcUI.showCameraIndicator) {
|
|
||||||
avL10nId = webrtcUI.showMicrophoneIndicator
|
|
||||||
? "webrtc-indicator-sharing-camera-and-microphone"
|
|
||||||
: "webrtc-indicator-sharing-camera";
|
|
||||||
} else {
|
|
||||||
avL10nId = webrtcUI.showMicrophoneIndicator
|
|
||||||
? "webrtc-indicator-sharing-microphone"
|
|
||||||
: "";
|
|
||||||
}
|
|
||||||
if (avL10nId) {
|
|
||||||
document.l10n.setAttributes(audioVideoButton, avL10nId);
|
|
||||||
} else {
|
|
||||||
audioVideoButton.removeAttribute("data-l10n-id");
|
|
||||||
audioVideoButton.removeAttribute("tooltiptext");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Screen sharing button tooltip.
|
|
||||||
const screenShareButton = document.getElementById("screenShareButton");
|
|
||||||
let ssL10nId;
|
|
||||||
const ssi = webrtcUI.showScreenSharingIndicator;
|
|
||||||
switch (ssi) {
|
|
||||||
case "Application":
|
|
||||||
ssL10nId = "webrtc-indicator-sharing-application";
|
|
||||||
break;
|
|
||||||
case "Browser":
|
|
||||||
ssL10nId = "webrtc-indicator-sharing-browser";
|
|
||||||
break;
|
|
||||||
case "Screen":
|
|
||||||
ssL10nId = "webrtc-indicator-sharing-screen";
|
|
||||||
break;
|
|
||||||
case "Window":
|
|
||||||
ssL10nId = "webrtc-indicator-sharing-window";
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
if (ssi) {
|
|
||||||
console.error(`Unknown showScreenSharingIndicator: ${ssi}`);
|
|
||||||
}
|
|
||||||
ssL10nId = "";
|
|
||||||
}
|
|
||||||
if (ssL10nId) {
|
|
||||||
document.l10n.setAttributes(screenShareButton, ssL10nId);
|
|
||||||
} else {
|
|
||||||
screenShareButton.removeAttribute("data-l10n-id");
|
|
||||||
screenShareButton.removeAttribute("tooltiptext");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Resize and ensure the window position is correct
|
|
||||||
// (sizeToContent messes with our position).
|
|
||||||
window.sizeToContent();
|
|
||||||
PositionHandler.adjustPosition();
|
|
||||||
}
|
|
||||||
|
|
||||||
function updateWindowAttr(attr, value) {
|
|
||||||
let docEl = document.documentElement;
|
|
||||||
if (value) {
|
|
||||||
docEl.setAttribute(attr, "true");
|
|
||||||
} else {
|
|
||||||
docEl.removeAttribute(attr);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function onPopupMenuShowing(event) {
|
|
||||||
let popup = event.target;
|
|
||||||
|
|
||||||
let activeStreams;
|
|
||||||
if (popup.getAttribute("type") == "Devices") {
|
|
||||||
activeStreams = webrtcUI.getActiveStreams(true, true, false);
|
|
||||||
} else {
|
|
||||||
activeStreams = webrtcUI.getActiveStreams(false, false, true, true);
|
|
||||||
}
|
|
||||||
if (activeStreams.length) {
|
|
||||||
let index = activeStreams.length - 1;
|
|
||||||
webrtcUI.showSharingDoorhanger(activeStreams[index], event);
|
|
||||||
event.preventDefault();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (let stream of activeStreams) {
|
|
||||||
let item = document.createElement("menuitem");
|
|
||||||
item.setAttribute("label", stream.browser.contentTitle || stream.uri);
|
|
||||||
item.setAttribute("tooltiptext", stream.uri);
|
|
||||||
item.stream = stream;
|
|
||||||
popup.appendChild(item);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function onPopupMenuHiding(event) {
|
|
||||||
let popup = event.target;
|
|
||||||
while (popup.firstChild) {
|
|
||||||
popup.firstChild.remove();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function onPopupMenuCommand(event) {
|
|
||||||
webrtcUI.showSharingDoorhanger(event.target.stream, event);
|
|
||||||
}
|
|
||||||
|
|
||||||
function onFirefoxButtonClick(event) {
|
|
||||||
event.target.blur();
|
|
||||||
let activeStreams = webrtcUI.getActiveStreams(true, true, true, true);
|
|
||||||
activeStreams[0].browser.ownerGlobal.focus();
|
|
||||||
}
|
|
||||||
|
|
||||||
var PositionHandler = {
|
|
||||||
positionCustomized: false,
|
|
||||||
threshold: 10,
|
|
||||||
adjustPosition() {
|
|
||||||
if (!this.positionCustomized) {
|
|
||||||
// Center the window horizontally on the screen (not the available area).
|
|
||||||
// Until we have moved the window to y=0, 'screen.width' may give a value
|
|
||||||
// for a secondary screen, so use values from the screen manager instead.
|
|
||||||
let primaryScreen = Cc["@mozilla.org/gfx/screenmanager;1"].getService(
|
|
||||||
Ci.nsIScreenManager
|
|
||||||
).primaryScreen;
|
|
||||||
let widthDevPix = {};
|
|
||||||
primaryScreen.GetRect({}, {}, widthDevPix, {});
|
|
||||||
let availTopDevPix = {};
|
|
||||||
primaryScreen.GetAvailRect({}, availTopDevPix, {}, {});
|
|
||||||
let scaleFactor = primaryScreen.defaultCSSScaleFactor;
|
|
||||||
let widthCss = widthDevPix.value / scaleFactor;
|
|
||||||
window.moveTo(
|
|
||||||
(widthCss - document.documentElement.clientWidth) / 2,
|
|
||||||
availTopDevPix.value / scaleFactor
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
// This will ensure we're at y=0.
|
|
||||||
this.setXPosition(window.screenX);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
setXPosition(desiredX) {
|
|
||||||
// Ensure the indicator isn't moved outside the available area of the screen.
|
|
||||||
desiredX = Math.max(desiredX, screen.availLeft);
|
|
||||||
let maxX =
|
|
||||||
screen.availLeft +
|
|
||||||
screen.availWidth -
|
|
||||||
document.documentElement.clientWidth;
|
|
||||||
window.moveTo(Math.min(desiredX, maxX), screen.availTop);
|
|
||||||
},
|
|
||||||
handleEvent(aEvent) {
|
|
||||||
switch (aEvent.type) {
|
|
||||||
case "mousedown":
|
|
||||||
if (aEvent.button != 0 || aEvent.defaultPrevented) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
this._startMouseX = aEvent.screenX;
|
|
||||||
this._startWindowX = window.screenX;
|
|
||||||
this._deltaX = this._startMouseX - this._startWindowX;
|
|
||||||
|
|
||||||
window.addEventListener("mousemove", this);
|
|
||||||
window.addEventListener("mouseup", this);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "mousemove":
|
|
||||||
let moveOffset = Math.abs(aEvent.screenX - this._startMouseX);
|
|
||||||
if (this._dragFullyStarted || moveOffset > this.threshold) {
|
|
||||||
this.setXPosition(aEvent.screenX - this._deltaX);
|
|
||||||
this._dragFullyStarted = true;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "mouseup":
|
|
||||||
this._dragFullyStarted = false;
|
|
||||||
window.removeEventListener("mousemove", this);
|
|
||||||
window.removeEventListener("mouseup", this);
|
|
||||||
this.positionCustomized =
|
|
||||||
Math.abs(this._startWindowX - window.screenX) >= this.threshold;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
@ -1,43 +0,0 @@
|
||||||
<?xml version="1.0"?>
|
|
||||||
|
|
||||||
# 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/.
|
|
||||||
|
|
||||||
<!DOCTYPE window>
|
|
||||||
|
|
||||||
<window xmlns:html="http://www.w3.org/1999/xhtml"
|
|
||||||
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
|
||||||
id="webrtcIndicator"
|
|
||||||
role="alert"
|
|
||||||
#ifndef XP_MACOSX
|
|
||||||
data-l10n-id="webrtc-indicator-window"
|
|
||||||
#endif
|
|
||||||
windowtype="Browser:WebRTCGlobalIndicator"
|
|
||||||
onload="init(event);"
|
|
||||||
sizemode="normal"
|
|
||||||
hidechrome="true"
|
|
||||||
orient="horizontal"
|
|
||||||
>
|
|
||||||
<linkset>
|
|
||||||
<html:link rel="stylesheet" href="chrome://global/skin/global.css" />
|
|
||||||
<html:link
|
|
||||||
rel="stylesheet"
|
|
||||||
href="chrome://browser/skin/webRTC-legacy-indicator.css"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<html:link rel="localization" href="branding/brand.ftl"/>
|
|
||||||
<html:link rel="localization" href="browser/webrtcIndicator.ftl"/>
|
|
||||||
</linkset>
|
|
||||||
|
|
||||||
<script src="chrome://browser/content/webrtcLegacyIndicator.js"/>
|
|
||||||
|
|
||||||
<button id="firefoxButton"/>
|
|
||||||
<button id="audioVideoButton" type="menu">
|
|
||||||
<menupopup id="audioVideoPopup" type="Devices"/>
|
|
||||||
</button>
|
|
||||||
<separator id="shareSeparator"/>
|
|
||||||
<button id="screenShareButton" type="menu">
|
|
||||||
<menupopup id="screenSharePopup" type="Screen"/>
|
|
||||||
</button>
|
|
||||||
</window>
|
|
||||||
|
|
@ -89,10 +89,6 @@ browser.jar:
|
||||||
# XXX: We should exclude this one as well (bug 71895)
|
# XXX: We should exclude this one as well (bug 71895)
|
||||||
* content/browser/hiddenWindowMac.xhtml (content/hiddenWindowMac.xhtml)
|
* content/browser/hiddenWindowMac.xhtml (content/hiddenWindowMac.xhtml)
|
||||||
content/browser/nonbrowser-mac.js (content/nonbrowser-mac.js)
|
content/browser/nonbrowser-mac.js (content/nonbrowser-mac.js)
|
||||||
#endif
|
|
||||||
#ifndef XP_MACOSX
|
|
||||||
* content/browser/webrtcLegacyIndicator.xhtml (content/webrtcLegacyIndicator.xhtml)
|
|
||||||
content/browser/webrtcLegacyIndicator.js (content/webrtcLegacyIndicator.js)
|
|
||||||
#endif
|
#endif
|
||||||
content/browser/webrtcIndicator.xhtml (content/webrtcIndicator.xhtml)
|
content/browser/webrtcIndicator.xhtml (content/webrtcIndicator.xhtml)
|
||||||
content/browser/webrtcIndicator.js (content/webrtcIndicator.js)
|
content/browser/webrtcIndicator.js (content/webrtcIndicator.js)
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,6 @@
|
||||||
## enumerate/look for window titles. It is not normally visible anywhere.
|
## enumerate/look for window titles. It is not normally visible anywhere.
|
||||||
|
|
||||||
webrtc-indicator-title = { -brand-short-name } — Sharing Indicator
|
webrtc-indicator-title = { -brand-short-name } — Sharing Indicator
|
||||||
webrtc-indicator-window =
|
|
||||||
.title = { -brand-short-name } — Sharing Indicator
|
|
||||||
|
|
||||||
## Used as list items in sharing menu
|
## Used as list items in sharing menu
|
||||||
|
|
||||||
|
|
@ -59,23 +57,6 @@ webrtc-microphone-system-menu =
|
||||||
webrtc-screen-system-menu =
|
webrtc-screen-system-menu =
|
||||||
.label = You are sharing a window or a screen. Click to control sharing.
|
.label = You are sharing a window or a screen. Click to control sharing.
|
||||||
|
|
||||||
## Tooltips used by the legacy global sharing indicator
|
|
||||||
|
|
||||||
webrtc-indicator-sharing-camera-and-microphone =
|
|
||||||
.tooltiptext = Your camera and microphone are being shared. Click to control sharing.
|
|
||||||
webrtc-indicator-sharing-camera =
|
|
||||||
.tooltiptext = Your camera is being shared. Click to control sharing.
|
|
||||||
webrtc-indicator-sharing-microphone =
|
|
||||||
.tooltiptext = Your microphone is being shared. Click to control sharing.
|
|
||||||
webrtc-indicator-sharing-application =
|
|
||||||
.tooltiptext = An application is being shared. Click to control sharing.
|
|
||||||
webrtc-indicator-sharing-screen =
|
|
||||||
.tooltiptext = Your screen is being shared. Click to control sharing.
|
|
||||||
webrtc-indicator-sharing-window =
|
|
||||||
.tooltiptext = A window is being shared. Click to control sharing.
|
|
||||||
webrtc-indicator-sharing-browser =
|
|
||||||
.tooltiptext = A tab is being shared. Click to control sharing.
|
|
||||||
|
|
||||||
## These strings are only used on Mac for menus attached to icons
|
## These strings are only used on Mac for menus attached to icons
|
||||||
## near the clock on the mac menubar.
|
## near the clock on the mac menubar.
|
||||||
## Variables:
|
## Variables:
|
||||||
|
|
|
||||||
|
|
@ -1053,137 +1053,6 @@ export function showStreamSharingMenu(win, event, inclWindow = false) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Controls the visibility of screen, camera and microphone sharing indicators
|
|
||||||
* in the macOS global menu bar. This class should only ever be instantiated
|
|
||||||
* on macOS.
|
|
||||||
*
|
|
||||||
* The public methods on this class intentionally match the interface for the
|
|
||||||
* WebRTC global sharing indicator, because the MacOSWebRTCStatusbarIndicator
|
|
||||||
* acts as the indicator when in the legacy indicator configuration.
|
|
||||||
*/
|
|
||||||
export class MacOSWebRTCStatusbarIndicator {
|
|
||||||
constructor() {
|
|
||||||
this._camera = null;
|
|
||||||
this._microphone = null;
|
|
||||||
this._screen = null;
|
|
||||||
|
|
||||||
this._hiddenDoc = Services.appShell.hiddenDOMWindow.document;
|
|
||||||
this._statusBar = Cc["@mozilla.org/widget/systemstatusbar;1"].getService(
|
|
||||||
Ci.nsISystemStatusBar
|
|
||||||
);
|
|
||||||
|
|
||||||
this.updateIndicatorState();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Public method that will determine the most appropriate
|
|
||||||
* set of indicators to show, and then show them or hide
|
|
||||||
* them as necessary.
|
|
||||||
*/
|
|
||||||
updateIndicatorState() {
|
|
||||||
this._setIndicatorState("Camera", webrtcUI.showCameraIndicator);
|
|
||||||
this._setIndicatorState("Microphone", webrtcUI.showMicrophoneIndicator);
|
|
||||||
this._setIndicatorState("Screen", webrtcUI.showScreenSharingIndicator);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Public method that will hide all indicators.
|
|
||||||
*/
|
|
||||||
close() {
|
|
||||||
this._setIndicatorState("Camera", false);
|
|
||||||
this._setIndicatorState("Microphone", false);
|
|
||||||
this._setIndicatorState("Screen", false);
|
|
||||||
}
|
|
||||||
|
|
||||||
handleEvent(event) {
|
|
||||||
switch (event.type) {
|
|
||||||
case "popupshowing": {
|
|
||||||
this._popupShowing(event);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "popuphiding": {
|
|
||||||
this._popupHiding(event);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "command": {
|
|
||||||
this._command(event);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Handler for command events fired by the <menuitem> elements
|
|
||||||
* inside any of the indicator <menu>'s.
|
|
||||||
*
|
|
||||||
* @param {Event} aEvent - The command event for the <menuitem>.
|
|
||||||
*/
|
|
||||||
_command(aEvent) {
|
|
||||||
webrtcUI.showSharingDoorhanger(aEvent.target.stream, aEvent);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Handler for the popupshowing event for one of the status
|
|
||||||
* bar indicator menus.
|
|
||||||
*
|
|
||||||
* @param {Event} aEvent - The popupshowing event for the <menu>.
|
|
||||||
*/
|
|
||||||
_popupShowing(aEvent) {
|
|
||||||
const menu = aEvent.target;
|
|
||||||
showStreamSharingMenu(menu.ownerGlobal, aEvent);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Handler for the popuphiding event for one of the status
|
|
||||||
* bar indicator menus.
|
|
||||||
*
|
|
||||||
* @param {Event} aEvent - The popuphiding event for the <menu>.
|
|
||||||
*/
|
|
||||||
_popupHiding(aEvent) {
|
|
||||||
let menu = aEvent.target;
|
|
||||||
while (menu.firstChild) {
|
|
||||||
menu.firstChild.remove();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Updates the status bar to show or hide a screen, camera or
|
|
||||||
* microphone indicator.
|
|
||||||
*
|
|
||||||
* @param {String} aName - One of the following: "screen", "camera",
|
|
||||||
* "microphone"
|
|
||||||
* @param {boolean} aState - True to show the indicator for the aName
|
|
||||||
* type of stream, false ot hide it.
|
|
||||||
*/
|
|
||||||
_setIndicatorState(aName, aState) {
|
|
||||||
let field = "_" + aName.toLowerCase();
|
|
||||||
if (aState && !this[field]) {
|
|
||||||
let menu = this._hiddenDoc.createXULElement("menu");
|
|
||||||
menu.setAttribute("id", "webRTC-sharing" + aName + "-menu");
|
|
||||||
|
|
||||||
// The CSS will only be applied if the menu is actually inserted in the DOM.
|
|
||||||
this._hiddenDoc.documentElement.appendChild(menu);
|
|
||||||
|
|
||||||
this._statusBar.addItem(menu);
|
|
||||||
|
|
||||||
let menupopup = this._hiddenDoc.createXULElement("menupopup");
|
|
||||||
menupopup.setAttribute("type", aName);
|
|
||||||
menupopup.addEventListener("popupshowing", this);
|
|
||||||
menupopup.addEventListener("popuphiding", this);
|
|
||||||
menupopup.addEventListener("command", this);
|
|
||||||
menu.appendChild(menupopup);
|
|
||||||
|
|
||||||
this[field] = menu;
|
|
||||||
} else if (this[field] && !aState) {
|
|
||||||
this._statusBar.removeItem(this[field]);
|
|
||||||
this[field].remove();
|
|
||||||
this[field] = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function onTabSharingMenuPopupShowing(e) {
|
function onTabSharingMenuPopupShowing(e) {
|
||||||
const streams = webrtcUI.getActiveStreams(true, true, true, true);
|
const streams = webrtcUI.getActiveStreams(true, true, true, true);
|
||||||
for (let streamInfo of streams) {
|
for (let streamInfo of streams) {
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,6 @@ browser.jar:
|
||||||
skin/classic/browser/monitor-base.png
|
skin/classic/browser/monitor-base.png
|
||||||
skin/classic/browser/monitor-border.png
|
skin/classic/browser/monitor-border.png
|
||||||
skin/classic/browser/pageInfo.png
|
skin/classic/browser/pageInfo.png
|
||||||
skin/classic/browser/webRTC-legacy-indicator.css (../shared/webRTC-legacy-indicator.css)
|
|
||||||
skin/classic/browser/customizableui/panelUI.css (customizableui/panelUI.css)
|
skin/classic/browser/customizableui/panelUI.css (customizableui/panelUI.css)
|
||||||
skin/classic/browser/downloads/allDownloadsView.css (downloads/allDownloadsView.css)
|
skin/classic/browser/downloads/allDownloadsView.css (downloads/allDownloadsView.css)
|
||||||
skin/classic/browser/downloads/downloads.css (downloads/downloads.css)
|
skin/classic/browser/downloads/downloads.css (downloads/downloads.css)
|
||||||
|
|
|
||||||
|
|
@ -1,121 +0,0 @@
|
||||||
/* 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/. */
|
|
||||||
|
|
||||||
window {
|
|
||||||
border: 1px solid #ff9500;
|
|
||||||
}
|
|
||||||
|
|
||||||
#audioVideoButton,
|
|
||||||
#screenShareButton,
|
|
||||||
#firefoxButton {
|
|
||||||
height: 29px;
|
|
||||||
margin: 0;
|
|
||||||
appearance: none;
|
|
||||||
border-style: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#audioVideoButton,
|
|
||||||
#screenShareButton {
|
|
||||||
-moz-context-properties: fill;
|
|
||||||
fill: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
#firefoxButton {
|
|
||||||
background-image: url("chrome://branding/content/icon48.png");
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-size: 22px;
|
|
||||||
background-position: center center;
|
|
||||||
min-width: 29px;
|
|
||||||
background-color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
#firefoxButton:hover {
|
|
||||||
background-color: #f2f2f2;
|
|
||||||
}
|
|
||||||
|
|
||||||
#screenShareButton {
|
|
||||||
background-image: url("chrome://browser/skin/notification-icons/screen.svg");
|
|
||||||
background-position: center center;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-size: 16px;
|
|
||||||
min-width: 27px;
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
window[sharingscreen] > #screenShareButton {
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
#audioVideoButton {
|
|
||||||
display: none;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* When screen sharing, need to pull in the separator: */
|
|
||||||
window[sharingscreen] > #audioVideoButton {
|
|
||||||
margin-right: -1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Single icon button: */
|
|
||||||
window[sharingvideo] > #audioVideoButton,
|
|
||||||
window[sharingaudio] > #audioVideoButton {
|
|
||||||
display: flex;
|
|
||||||
background-position: center center;
|
|
||||||
background-size: 16px;
|
|
||||||
min-width: 26px;
|
|
||||||
}
|
|
||||||
|
|
||||||
window[sharingvideo] > #audioVideoButton {
|
|
||||||
background-image: url("chrome://browser/skin/notification-icons/camera.svg");
|
|
||||||
}
|
|
||||||
|
|
||||||
window[sharingaudio] > #audioVideoButton {
|
|
||||||
background-image: url("chrome://browser/skin/notification-icons/microphone.svg");
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Multi-icon button: */
|
|
||||||
window[sharingaudio][sharingvideo] > #audioVideoButton {
|
|
||||||
background-image: url("chrome://browser/skin/notification-icons/camera.svg"),
|
|
||||||
url("chrome://browser/skin/notification-icons/microphone.svg");
|
|
||||||
background-position: 6px center, 26px center;
|
|
||||||
background-size: 16px, 16px;
|
|
||||||
min-width: 46px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Hover styles */
|
|
||||||
#audioVideoButton,
|
|
||||||
#screenShareButton {
|
|
||||||
background-color: #ffaa33;
|
|
||||||
}
|
|
||||||
|
|
||||||
#audioVideoButton:hover,
|
|
||||||
#screenShareButton:hover {
|
|
||||||
background-color: #ff9500;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Don't show the dropmarker for the type="menu" case */
|
|
||||||
#audioVideoButton > .box-inherit > .button-menu-dropmarker,
|
|
||||||
#screenShareButton > .box-inherit > .button-menu-dropmarker {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Separator in case of screen sharing + video/audio sharing */
|
|
||||||
#shareSeparator {
|
|
||||||
width: 1px;
|
|
||||||
margin: 4px -1px 4px 0;
|
|
||||||
background-color: #FFCA80;
|
|
||||||
/* Separator needs to show above either button when they're hovered: */
|
|
||||||
position: relative;
|
|
||||||
z-index: 1;
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
window[sharingscreen][sharingvideo] > #shareSeparator,
|
|
||||||
window[sharingscreen][sharingaudio] > #shareSeparator {
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
:is(#audioVideoButton, #screenShareButton, #firefoxButton):-moz-focusring {
|
|
||||||
outline: none;
|
|
||||||
}
|
|
||||||
|
|
@ -12,7 +12,6 @@ browser.jar:
|
||||||
skin/classic/browser/monitor-base.png
|
skin/classic/browser/monitor-base.png
|
||||||
skin/classic/browser/monitor-border.png
|
skin/classic/browser/monitor-border.png
|
||||||
skin/classic/browser/pageInfo.png
|
skin/classic/browser/pageInfo.png
|
||||||
skin/classic/browser/webRTC-legacy-indicator.css (../shared/webRTC-legacy-indicator.css)
|
|
||||||
skin/classic/browser/customizableui/panelUI.css (customizableui/panelUI.css)
|
skin/classic/browser/customizableui/panelUI.css (customizableui/panelUI.css)
|
||||||
skin/classic/browser/downloads/allDownloadsView.css (downloads/allDownloadsView.css)
|
skin/classic/browser/downloads/allDownloadsView.css (downloads/allDownloadsView.css)
|
||||||
skin/classic/browser/downloads/downloads.css (downloads/downloads.css)
|
skin/classic/browser/downloads/downloads.css (downloads/downloads.css)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue