Bug 1458039 - Implement ability to mute/unmute a selection of tabs. r=jaws

MozReview-Commit-ID: 7aw08gxOOtk
This commit is contained in:
layely
2018-05-31 03:26:25 +00:00
parent d49401997c
commit 8f86b7bb1c
8 changed files with 466 additions and 15 deletions

View File

@@ -3704,6 +3704,30 @@ window._gBrowser = {
this._lastMultiSelectedTabRef = Cu.getWeakReference(aTab);
},
toggleMuteAudioOnMultiSelectedTabs(aTab) {
const selectedTabs = ChromeUtils.nondeterministicGetWeakSetKeys(this._multiSelectedTabsSet)
.filter(tab => tab.isConnected);
let tabsToToggle;
if (aTab.activeMediaBlocked) {
tabsToToggle = selectedTabs.filter(tab =>
tab.activeMediaBlocked || tab.linkedBrowser.audioMuted
);
} else {
let tabMuted = aTab.linkedBrowser.audioMuted;
tabsToToggle = selectedTabs.filter(tab =>
// When a user is looking to mute selected tabs, then media-blocked tabs
// should not be toggled. Otherwise those media-blocked tabs are going into a
// playing and unmuted state.
tab.linkedBrowser.audioMuted == tabMuted && !tab.activeMediaBlocked ||
tab.activeMediaBlocked && tabMuted
);
}
for (let tab of tabsToToggle) {
tab.toggleMuteAudio();
}
},
activateBrowserForPrintPreview(aBrowser) {
this._printPreviewBrowsers.add(aBrowser);
if (this._switcher) {