/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";

/**
 * Tests that Picture-in-Picture "move toggle" context menu item
 * successfully changes preference.
 */
add_task(async () => {
  let videoID = "with-controls";
  await BrowserTestUtils.withNewTab(
    {
      url: TEST_PAGE,
      gBrowser,
    },
    async browser => {
      await ensureVideosReady(browser);

      await SpecialPowers.spawn(browser, [videoID], async videoID => {
        await content.document.getElementById(videoID).play();
      });

      const TOGGLE_POSITION_PREF =
        "media.videocontrols.picture-in-picture.video-toggle.position";
      const TOGGLE_POSITION_RIGHT = "right";
      const TOGGLE_POSITION_LEFT = "left";

      await SpecialPowers.pushPrefEnv({
        set: [[TOGGLE_POSITION_PREF, TOGGLE_POSITION_RIGHT]],
      });

      let contextMoveToggle = document.getElementById(
        "context_MovePictureInPictureToggle"
      );
      contextMoveToggle.click();
      let position = Services.prefs.getStringPref(
        TOGGLE_POSITION_PREF,
        TOGGLE_POSITION_RIGHT
      );

      Assert.strictEqual(
        position,
        TOGGLE_POSITION_LEFT,
        "Picture-in-Picture toggle position value should be 'left'."
      );

      contextMoveToggle.click();
      position = Services.prefs.getStringPref(
        TOGGLE_POSITION_PREF,
        TOGGLE_POSITION_RIGHT
      );

      Assert.strictEqual(
        position,
        TOGGLE_POSITION_RIGHT,
        "Picture-in-Picture toggle position value should be 'right'."
      );
    }
  );
});
