Bug 1334111 - Test for EME persistentState being rejected in Private Browsing mode. r=Gijs
MozReview-Commit-ID: Hyy9yDuIToX
--- a/browser/base/content/test/plugins/browser.ini
+++ b/browser/base/content/test/plugins/browser.ini
@@ -89,16 +89,17 @@ tags = blocklist
[browser_pluginnotification.js]
tags = blocklist
[browser_plugin_reloading.js]
tags = blocklist
[browser_blocklist_content.js]
skip-if = !e10s
tags = blocklist
[browser_enable_DRM_prompt.js]
+[browser_private_browsing_eme_persistent_state.js]
[browser_globalplugin_crashinfobar.js]
skip-if = !crashreporter
[browser_pluginCrashCommentAndURL.js]
skip-if = !crashreporter
[browser_pageInfo_plugins.js]
[browser_pluginCrashReportNonDeterminism.js]
skip-if = !crashreporter || os == 'linux' # Bug 1152811
[browser_private_clicktoplay.js]
new file mode 100644
--- /dev/null
+++ b/browser/base/content/test/plugins/browser_private_browsing_eme_persistent_state.js
@@ -0,0 +1,44 @@
+/* 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.");
+});