зеркало из https://github.com/mozilla/gecko-dev.git
120 строки
4.1 KiB
JavaScript
120 строки
4.1 KiB
JavaScript
const PAGE = "https://example.com/browser/toolkit/content/tests/browser/file_silentAudioTrack.html";
|
|
|
|
var SuspendedType = {
|
|
NONE_SUSPENDED : 0,
|
|
SUSPENDED_PAUSE : 1,
|
|
SUSPENDED_BLOCK : 2,
|
|
SUSPENDED_PAUSE_DISPOSABLE : 3
|
|
};
|
|
|
|
function disable_non_test_mouse(disable) {
|
|
let utils = window.QueryInterface(Ci.nsIInterfaceRequestor)
|
|
.getInterface(Ci.nsIDOMWindowUtils);
|
|
utils.disableNonTestMouseEvents(disable);
|
|
}
|
|
|
|
function* hover_icon(icon, tooltip) {
|
|
disable_non_test_mouse(true);
|
|
|
|
let popupShownPromise = BrowserTestUtils.waitForEvent(tooltip, "popupshown");
|
|
EventUtils.synthesizeMouse(icon, 1, 1, {type: "mouseover"});
|
|
EventUtils.synthesizeMouse(icon, 2, 2, {type: "mousemove"});
|
|
EventUtils.synthesizeMouse(icon, 3, 3, {type: "mousemove"});
|
|
EventUtils.synthesizeMouse(icon, 4, 4, {type: "mousemove"});
|
|
return popupShownPromise;
|
|
}
|
|
|
|
function leave_icon(icon) {
|
|
EventUtils.synthesizeMouse(icon, 0, 0, {type: "mouseout"});
|
|
EventUtils.synthesizeMouseAtCenter(document.documentElement, {type: "mousemove"});
|
|
EventUtils.synthesizeMouseAtCenter(document.documentElement, {type: "mousemove"});
|
|
EventUtils.synthesizeMouseAtCenter(document.documentElement, {type: "mousemove"});
|
|
|
|
disable_non_test_mouse(false);
|
|
}
|
|
|
|
function* click_unblock_icon(tab) {
|
|
let icon = document.getAnonymousElementByAttribute(tab, "anonid", "soundplaying-icon");
|
|
|
|
yield hover_icon(icon, document.getElementById("tabbrowser-tab-tooltip"));
|
|
EventUtils.synthesizeMouseAtCenter(icon, {button: 0});
|
|
leave_icon(icon);
|
|
}
|
|
|
|
function check_audio_suspended(suspendedType) {
|
|
var autoPlay = content.document.getElementById("autoplay");
|
|
if (!autoPlay) {
|
|
ok(false, "Can't get the audio element!");
|
|
}
|
|
|
|
is(autoPlay.computedSuspended, suspendedType,
|
|
"The suspeded state of autoplay audio is correct.");
|
|
}
|
|
|
|
add_task(function* setup_test_preference() {
|
|
yield SpecialPowers.pushPrefEnv({"set": [
|
|
["media.useAudioChannelService.testing", true],
|
|
["media.block-autoplay-until-in-foreground", true]
|
|
]});
|
|
});
|
|
|
|
add_task(function* unblock_icon_should_disapear_after_resume_tab() {
|
|
info("- open new background tab -");
|
|
let tab = window.gBrowser.addTab("about:blank");
|
|
tab.linkedBrowser.loadURI(PAGE);
|
|
yield BrowserTestUtils.browserLoaded(tab.linkedBrowser);
|
|
|
|
info("- the suspend state of tab should be suspend-block -");
|
|
yield ContentTask.spawn(tab.linkedBrowser, SuspendedType.SUSPENDED_BLOCK,
|
|
check_audio_suspended);
|
|
|
|
info("- tab should display unblocking icon -");
|
|
yield waitForTabBlockEvent(tab, true);
|
|
|
|
info("- select tab as foreground tab -");
|
|
yield BrowserTestUtils.switchTab(window.gBrowser, tab);
|
|
|
|
info("- the suspend state of tab should be none-suspend -");
|
|
yield ContentTask.spawn(tab.linkedBrowser, SuspendedType.NONE_SUSPENDED,
|
|
check_audio_suspended);
|
|
|
|
info("- should not display unblocking icon -");
|
|
yield waitForTabBlockEvent(tab, false);
|
|
|
|
info("- should not display sound indicator icon -");
|
|
yield waitForTabPlayingEvent(tab, false);
|
|
|
|
info("- remove tab -");
|
|
yield BrowserTestUtils.removeTab(tab);
|
|
});
|
|
|
|
add_task(function* should_not_show_sound_indicator_after_resume_tab() {
|
|
info("- open new background tab -");
|
|
let tab = window.gBrowser.addTab("about:blank");
|
|
tab.linkedBrowser.loadURI(PAGE);
|
|
yield BrowserTestUtils.browserLoaded(tab.linkedBrowser);
|
|
|
|
info("- the suspend state of tab should be suspend-block -");
|
|
yield ContentTask.spawn(tab.linkedBrowser, SuspendedType.SUSPENDED_BLOCK,
|
|
check_audio_suspended);
|
|
|
|
info("- tab should display unblocking icon -");
|
|
yield waitForTabBlockEvent(tab, true);
|
|
|
|
info("- click play tab icon -");
|
|
yield click_unblock_icon(tab);
|
|
|
|
info("- the suspend state of tab should be none-suspend -");
|
|
yield ContentTask.spawn(tab.linkedBrowser, SuspendedType.NONE_SUSPENDED,
|
|
check_audio_suspended);
|
|
|
|
info("- should not display unblocking icon -");
|
|
yield waitForTabBlockEvent(tab, false);
|
|
|
|
info("- should not display sound indicator icon -");
|
|
yield waitForTabPlayingEvent(tab, false);
|
|
|
|
info("- remove tab -");
|
|
yield BrowserTestUtils.removeTab(tab);
|
|
});
|