author | Ehsan Akhgari <ehsan@mozilla.com> |
Tue, 25 Aug 2015 21:12:12 -0400 | |
changeset 259389 | f65705f6dc2a2cd2a585407aee9885e3dd15ff47 |
parent 259388 | 073c612673cf264be8cf64399558430380ab7c56 |
child 259390 | c3b9538afc427bb568c6f43e90e9db2a75656243 |
push id | 29277 |
push user | ryanvm@gmail.com |
push date | Wed, 26 Aug 2015 18:32:23 +0000 |
treeherder | mozilla-central@fea87cbeaa6b [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | jaws |
bugs | 1197569 |
milestone | 43.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/browser/base/content/browser.js +++ b/browser/base/content/browser.js @@ -7577,16 +7577,26 @@ var TabContextMenu = { let bookmarkAllTabs = document.getElementById("context_bookmarkAllTabs"); bookmarkAllTabs.hidden = this.contextTab.pinned; if (!bookmarkAllTabs.hidden) PlacesCommandHook.updateBookmarkAllTabsCommand(); // Hide "Move to Group" if it's a pinned tab. document.getElementById("context_tabViewMenu").hidden = (this.contextTab.pinned || !TabView.firstUseExperienced); + + // Adjust the state of the toggle mute menu item. + let toggleMute = document.getElementById("context_toggleMuteTab"); + if (this.contextTab.hasAttribute("muted")) { + toggleMute.label = gNavigatorBundle.getString("unmuteTab.label"); + toggleMute.accessKey = gNavigatorBundle.getString("unmuteTab.accesskey"); + } else { + toggleMute.label = gNavigatorBundle.getString("muteTab.label"); + toggleMute.accessKey = gNavigatorBundle.getString("muteTab.accesskey"); + } } }; XPCOMUtils.defineLazyModuleGetter(this, "gDevTools", "resource:///modules/devtools/gDevTools.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "gDevToolsBrowser", "resource:///modules/devtools/gDevTools.jsm");
--- a/browser/base/content/browser.xul +++ b/browser/base/content/browser.xul @@ -78,16 +78,17 @@ #undef FULL_BROWSER_WINDOW <popupset id="mainPopupSet"> <menupopup id="tabContextMenu" onpopupshowing="if (event.target == this) TabContextMenu.updateContextMenu(this);" onpopuphidden="if (event.target == this) TabContextMenu.contextTab = null;"> <menuitem id="context_reloadTab" label="&reloadTab.label;" accesskey="&reloadTab.accesskey;" oncommand="gBrowser.reloadTab(TabContextMenu.contextTab);"/> + <menuitem id="context_toggleMuteTab" oncommand="TabContextMenu.contextTab.toggleMuteAudio();"/> <menuseparator/> <menuitem id="context_pinTab" label="&pinTab.label;" accesskey="&pinTab.accesskey;" oncommand="gBrowser.pinTab(TabContextMenu.contextTab);"/> <menuitem id="context_unpinTab" label="&unpinTab.label;" hidden="true" accesskey="&unpinTab.accesskey;" oncommand="gBrowser.unpinTab(TabContextMenu.contextTab);"/> <menu id="context_tabViewMenu" label="&moveToGroup.label;"
--- a/browser/base/content/test/general/browser_audioTabIcon.js +++ b/browser/base/content/test/general/browser_audioTabIcon.js @@ -71,16 +71,37 @@ function* test_mute_tab(tab, icon, expec } function get_tab_attributes(tab) { const ss = Cc["@mozilla.org/browser/sessionstore;1"].getService(Ci.nsISessionStore); let {attributes} = JSON.parse(ss.getTabState(tab)); return attributes; } +function* test_muting_using_menu(tab, expectMuted) { + // Show the popup menu + let contextMenu = document.getElementById("tabContextMenu"); + let popupShownPromise = BrowserTestUtils.waitForEvent(contextMenu, "popupshown"); + EventUtils.synthesizeMouseAtCenter(tab, {type: "contextmenu", button: 2}); + yield popupShownPromise; + + // Check the menu + let expectedLabel = expectMuted ? "Unmute Tab" : "Mute Tab"; + let toggleMute = document.getElementById("context_toggleMuteTab"); + is(toggleMute.label, expectedLabel, "Correct label expected"); + is(toggleMute.accessKey, "M", "Correct accessKey expected"); + + // Click on the menu and wait for the tab to be muted. + let mutedPromise = get_wait_for_mute_promise(tab, !expectMuted); + let popupHiddenPromise = BrowserTestUtils.waitForEvent(contextMenu, "popuphidden"); + EventUtils.synthesizeMouseAtCenter(toggleMute, {}); + yield popupHiddenPromise; + yield mutedPromise; +} + function* test_playing_icon_on_tab(tab, browser, isPinned) { let icon = document.getAnonymousElementByAttribute(tab, "anonid", isPinned ? "overlay-icon" : "soundplaying-icon"); yield ContentTask.spawn(browser, {}, function* () { let audio = content.document.querySelector("audio"); audio.play(); }); @@ -115,16 +136,22 @@ function* test_playing_icon_on_tab(tab, !tab.hasAttribute("soundplaying"), "Tab should still be muted but not playing"); yield test_tooltip(icon, "Unmute tab"); yield test_mute_tab(tab, icon, false); ok(!tab.hasAttribute("muted") && !tab.hasAttribute("soundplaying"), "Tab should not be be muted or playing"); + + // Make sure it's possible to mute using the context menu. + yield test_muting_using_menu(tab, false); + + // Make sure it's possible to unmute using the context menu. + yield test_muting_using_menu(tab, true); } function* test_swapped_browser(oldTab, newBrowser, isPlaying) { ok(oldTab.hasAttribute("muted"), "Expected the correct muted attribute on the old tab"); is(oldTab.hasAttribute("soundplaying"), isPlaying, "Expected the correct soundplaying attribute on the old tab"); let newTab = gBrowser.getTabForBrowser(newBrowser); let AttrChangePromise = BrowserTestUtils.waitForEvent(newTab, "TabAttrModified", false, event => {
--- a/browser/locales/en-US/chrome/browser/browser.properties +++ b/browser/locales/en-US/chrome/browser/browser.properties @@ -766,8 +766,13 @@ e10s.offerPopup.noThanks.accesskey = N e10s.postActivationInfobar.message = You're now helping to test multi-process in %S! Please report problems you find. e10s.postActivationInfobar.learnMore.label = Learn More e10s.postActivationInfobar.learnMore.accesskey = L e10s.accessibilityNotice.mainMessage = Multi-process does not yet support accessibility features. Multi-process will be disabled if you restart %S. Would you like to restart? e10s.accessibilityNotice.disableAndRestart.label = Disable and Restart e10s.accessibilityNotice.disableAndRestart.accesskey = R e10s.accessibilityNotice.dontDisable.label = Don't Disable e10s.accessibilityNotice.dontDisable.accesskey = D + +muteTab.label = Mute Tab +muteTab.accesskey = M +unmuteTab.label = Unmute Tab +unmuteTab.accesskey = M