summaryrefslogtreecommitdiffstats
path: root/toolkit/components/pictureinpicture/tests/browser_controlsHover.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/pictureinpicture/tests/browser_controlsHover.js')
-rw-r--r--toolkit/components/pictureinpicture/tests/browser_controlsHover.js191
1 files changed, 191 insertions, 0 deletions
diff --git a/toolkit/components/pictureinpicture/tests/browser_controlsHover.js b/toolkit/components/pictureinpicture/tests/browser_controlsHover.js
new file mode 100644
index 0000000000..7a3a33733f
--- /dev/null
+++ b/toolkit/components/pictureinpicture/tests/browser_controlsHover.js
@@ -0,0 +1,191 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+/**
+ * Tests functionality for the hover states of the various controls for the Picture-in-Picture
+ * video window.
+ */
+add_task(async () => {
+ let videoID = "with-controls";
+
+ await BrowserTestUtils.withNewTab(
+ {
+ url: TEST_PAGE,
+ gBrowser,
+ },
+ async browser => {
+ let waitForVideoEvent = eventType => {
+ return BrowserTestUtils.waitForContentEvent(browser, eventType, true);
+ };
+
+ await ensureVideosReady(browser);
+ await SpecialPowers.spawn(browser, [videoID], async videoID => {
+ await content.document.getElementById(videoID).play();
+ });
+
+ // Open the video in PiP
+ let pipWin = await triggerPictureInPicture(browser, videoID);
+ ok(pipWin, "Got Picture-in-Picture window.");
+
+ const l10n = new Localization(
+ ["toolkit/pictureinpicture/pictureinpicture.ftl"],
+ true
+ );
+
+ let [
+ close,
+ play,
+ unmute,
+ unpip,
+ subtitles,
+ pause,
+ mute,
+ fullscreenEnter,
+ fullscreenExit,
+ ] = l10n.formatMessagesSync([
+ {
+ id: "pictureinpicture-close-btn",
+ args: {
+ shortcut: ShortcutUtils.prettifyShortcut(
+ pipWin.document.getElementById("closeShortcut")
+ ),
+ },
+ },
+ { id: "pictureinpicture-play-btn" },
+ {
+ id: "pictureinpicture-unmute-btn",
+ args: {
+ shortcut: ShortcutUtils.prettifyShortcut(
+ pipWin.document.getElementById("unMuteShortcut")
+ ),
+ },
+ },
+ { id: "pictureinpicture-unpip-btn" },
+ { id: "pictureinpicture-subtitles-btn" },
+ { id: "pictureinpicture-pause-btn" },
+ {
+ id: "pictureinpicture-mute-btn",
+ args: {
+ shortcut: ShortcutUtils.prettifyShortcut(
+ pipWin.document.getElementById("muteShortcut")
+ ),
+ },
+ },
+ {
+ id: "pictureinpicture-fullscreen-btn2",
+ args: {
+ shortcut: ShortcutUtils.prettifyShortcut(
+ pipWin.document.getElementById("fullscreenToggleShortcut")
+ ),
+ },
+ },
+ {
+ id: "pictureinpicture-exit-fullscreen-btn2",
+ args: {
+ shortcut: ShortcutUtils.prettifyShortcut(
+ pipWin.document.getElementById("fullscreenToggleShortcut")
+ ),
+ },
+ },
+ ]);
+
+ let closeButton = pipWin.document.getElementById("close");
+ let playPauseButton = pipWin.document.getElementById("playpause");
+ let unpipButton = pipWin.document.getElementById("unpip");
+ let muteUnmuteButton = pipWin.document.getElementById("audio");
+ let subtitlesButton = pipWin.document.getElementById("closed-caption");
+ let fullscreenButton = pipWin.document.getElementById("fullscreen");
+
+ // checks hover title for close button
+ await pipWin.document.l10n.translateFragment(closeButton);
+ Assert.equal(
+ close.attributes[1].value,
+ closeButton.getAttribute("tooltip"),
+ "The close button title matches Fluent string"
+ );
+
+ // checks hover title for play button
+ await pipWin.document.l10n.translateFragment(playPauseButton);
+ Assert.equal(
+ pause.attributes[1].value,
+ playPauseButton.getAttribute("tooltip"),
+ "The play button title matches Fluent string"
+ );
+
+ // checks hover title for unpip button
+ await pipWin.document.l10n.translateFragment(unpipButton);
+ Assert.equal(
+ unpip.attributes[1].value,
+ unpipButton.getAttribute("tooltip"),
+ "The unpip button title matches Fluent string"
+ );
+
+ // checks hover title for subtitles button
+ await pipWin.document.l10n.translateFragment(subtitlesButton);
+ Assert.equal(
+ subtitles.attributes[1].value,
+ subtitlesButton.getAttribute("tooltip"),
+ "The subtitles button title matches Fluent string"
+ );
+
+ // checks hover title for unmute button
+ await pipWin.document.l10n.translateFragment(muteUnmuteButton);
+ Assert.equal(
+ mute.attributes[1].value,
+ muteUnmuteButton.getAttribute("tooltip"),
+ "The Unmute button title matches Fluent string"
+ );
+
+ // Pause the video
+ let pausedPromise = waitForVideoEvent("pause");
+ EventUtils.synthesizeMouseAtCenter(playPauseButton, {}, pipWin);
+ await pausedPromise;
+ ok(await isVideoPaused(browser, videoID), "The video is paused.");
+
+ // checks hover title for pause button
+ await pipWin.document.l10n.translateFragment(playPauseButton);
+ Assert.equal(
+ play.attributes[1].value,
+ playPauseButton.getAttribute("tooltip"),
+ "The pause button title matches Fluent string"
+ );
+
+ // Mute the video
+ let mutedPromise = waitForVideoEvent("volumechange");
+ EventUtils.synthesizeMouseAtCenter(muteUnmuteButton, {}, pipWin);
+ await mutedPromise;
+ ok(await isVideoMuted(browser, videoID), "The audio is muted.");
+
+ // checks hover title for mute button
+ await pipWin.document.l10n.translateFragment(muteUnmuteButton);
+ Assert.equal(
+ unmute.attributes[1].value,
+ muteUnmuteButton.getAttribute("tooltip"),
+ "The mute button title matches Fluent string"
+ );
+
+ // checks hover title for enter fullscreen button
+ await pipWin.document.l10n.translateFragment(fullscreenButton);
+ Assert.equal(
+ fullscreenEnter.attributes[1].value,
+ fullscreenButton.getAttribute("tooltip"),
+ "The enter fullscreen button title matches Fluent string"
+ );
+
+ // enable fullscreen
+ await promiseFullscreenEntered(pipWin, async () => {
+ EventUtils.synthesizeMouseAtCenter(fullscreenButton, {}, pipWin);
+ });
+
+ // checks hover title for exit fullscreen button
+ await pipWin.document.l10n.translateFragment(fullscreenButton);
+ Assert.equal(
+ fullscreenExit.attributes[1].value,
+ fullscreenButton.getAttribute("tooltip"),
+ "The exit fullscreen button title matches Fluent string"
+ );
+ }
+ );
+});