зеркало из https://github.com/mozilla/gecko-dev.git
Bug 486262 - Part 4: Add automated tests; r=dao
This commit is contained in:
Родитель
9d049995b6
Коммит
043fb66742
|
@ -7,6 +7,7 @@ support-files =
|
|||
app_subframe_bug575561.html
|
||||
authenticate.sjs
|
||||
aboutHome_content_script.js
|
||||
audio.ogg
|
||||
browser_bug479408_sample.html
|
||||
browser_bug678392-1.html
|
||||
browser_bug678392-2.html
|
||||
|
@ -50,6 +51,7 @@ support-files =
|
|||
file_bug906190_redirected.html
|
||||
file_bug906190.js
|
||||
file_bug906190.sjs
|
||||
file_mediaPlayback.html
|
||||
file_mixedContentFromOnunload.html
|
||||
file_mixedContentFromOnunload_test1.html
|
||||
file_mixedContentFromOnunload_test2.html
|
||||
|
@ -131,6 +133,7 @@ skip-if = e10s # Bug 1093153 - no about:home support yet
|
|||
[browser_addKeywordSearch.js]
|
||||
[browser_search_favicon.js]
|
||||
[browser_alltabslistener.js]
|
||||
[browser_audioTabIcon.js]
|
||||
[browser_autocomplete_a11y_label.js]
|
||||
skip-if = e10s # Bug 1101993 - times out for unknown reasons when run in the dir (works on its own)
|
||||
[browser_autocomplete_cursor.js]
|
||||
|
|
|
@ -0,0 +1,108 @@
|
|||
const PAGE = "https://example.com/browser/browser/base/content/test/general/file_mediaPlayback.html";
|
||||
|
||||
function* wait_for_tab_playing_event(tab, expectPlaying) {
|
||||
yield BrowserTestUtils.waitForEvent(tab, "TabAttrModified", false, (event) => {
|
||||
if (event.detail.changed.indexOf("soundplaying") >= 0) {
|
||||
is(tab.hasAttribute("soundplaying"), expectPlaying, "The tab should " + (expectPlaying ? "" : "not ") + "be playing");
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
function* test_tooltip(icon, expectedTooltip) {
|
||||
function disable_non_test_mouse(disable) {
|
||||
let utils = window.QueryInterface(Ci.nsIInterfaceRequestor)
|
||||
.getInterface(Ci.nsIDOMWindowUtils);
|
||||
utils.disableNonTestMouseEvents(disable);
|
||||
}
|
||||
|
||||
let tooltip = document.getElementById("tabbrowser-tab-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"});
|
||||
yield popupShownPromise;
|
||||
|
||||
is(tooltip.getAttribute("label"), expectedTooltip, "Correct tooltip expected");
|
||||
|
||||
EventUtils.synthesizeMouse(icon, 0, 0, {type: "mouseout"});
|
||||
|
||||
disable_non_test_mouse(false);
|
||||
}
|
||||
|
||||
function* test_mute_tab(tab, icon, expectMuted) {
|
||||
let mutedPromise = BrowserTestUtils.waitForEvent(tab, "TabAttrModified", false, (event) => {
|
||||
if (event.detail.changed.indexOf("muted") >= 0) {
|
||||
is(tab.hasAttribute("muted"), expectMuted, "The tab should " + (expectMuted ? "" : "not ") + "be muted");
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
EventUtils.synthesizeMouseAtCenter(icon, {button: 0});
|
||||
|
||||
return 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();
|
||||
});
|
||||
|
||||
yield wait_for_tab_playing_event(tab, true);
|
||||
|
||||
yield test_tooltip(icon, "This tab is playing audio");
|
||||
|
||||
yield test_mute_tab(tab, icon, true);
|
||||
|
||||
yield test_tooltip(icon, "This tab has been muted");
|
||||
|
||||
yield test_mute_tab(tab, icon, false);
|
||||
|
||||
yield test_tooltip(icon, "This tab is playing audio");
|
||||
|
||||
yield ContentTask.spawn(browser, {}, function* () {
|
||||
let audio = content.document.querySelector("audio");
|
||||
audio.pause();
|
||||
});
|
||||
yield wait_for_tab_playing_event(tab, false);
|
||||
}
|
||||
|
||||
function* test_on_browser(browser) {
|
||||
let tab = gBrowser.getTabForBrowser(browser);
|
||||
|
||||
// Test the icon in a normal tab.
|
||||
yield test_playing_icon_on_tab(tab, browser, false);
|
||||
|
||||
gBrowser.pinTab(tab);
|
||||
|
||||
// Test the icon in a pinned tab.
|
||||
yield test_playing_icon_on_tab(tab, browser, true);
|
||||
|
||||
gBrowser.unpinTab(tab);
|
||||
}
|
||||
|
||||
add_task(function*() {
|
||||
yield new Promise((resolve) => {
|
||||
SpecialPowers.pushPrefEnv({"set": [
|
||||
["media.useAudioChannelService", true],
|
||||
["browser.tabs.showAudioPlayingIcon", true],
|
||||
]}, resolve);
|
||||
});
|
||||
});
|
||||
|
||||
add_task(function* test_page() {
|
||||
yield BrowserTestUtils.withNewTab({
|
||||
gBrowser,
|
||||
url: PAGE
|
||||
}, test_on_browser);
|
||||
});
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<audio src="audio.ogg" controls loop>
|
Загрузка…
Ссылка в новой задаче