/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

/*
 * This test ensures that navigator.requestMediaKeySystemAccess() requests
 * to run EME with persistent state are rejected in private browsing windows.
 * Bug 1334111.
 */

const TEST_URL =
  getRootDirectory(gTestPath).replace("chrome://mochitests/content",
  "https://example.com") + "empty_file.html";

async function isEmePersistentStateSupported(mode) {
  let win = await BrowserTestUtils.openNewBrowserWindow(mode);
  let tab = await BrowserTestUtils.openNewForegroundTab(win.gBrowser, TEST_URL);
  let persistentStateSupported = await ContentTask.spawn(tab.linkedBrowser, {}, async function() {
    try {
      let config = [{
        initDataTypes: ["webm"],
        videoCapabilities: [{contentType: 'video/webm; codecs="vp9"'}],
        persistentState: "required",
      }];
      await content.navigator.requestMediaKeySystemAccess("org.w3.clearkey", config);
    } catch (ex) {
      return false;
    }
    return true;
  });

  await BrowserTestUtils.closeWindow(win);

  return persistentStateSupported;
}

add_task(async function test() {
  is(await isEmePersistentStateSupported({private: true}),
     false,
     "EME persistentState should *NOT* be supported in private browsing window.");
  is(await isEmePersistentStateSupported({private: false}),
     true,
     "EME persistentState *SHOULD* be supported in non private browsing window.");
});
