Bug 1334111 - Test for EME persistentState being rejected in Private Browsing mode. r=Gijs draft
authorChris Pearce <cpearce@mozilla.com>
Mon, 29 May 2017 14:04:58 +1200
changeset 586109 268f9e0eee2a84ee6988ef35afe2eecf57d377d6
parent 585829 e47e60f5091b6b5477b2c8bd63ba408922706082
child 630901 10013f618a765410a96e40cd36c57dcb9cb64440
push id61309
push usercpearce@mozilla.com
push dateMon, 29 May 2017 20:17:44 +0000
reviewersGijs
bugs1334111
milestone55.0a1
Bug 1334111 - Test for EME persistentState being rejected in Private Browsing mode. r=Gijs MozReview-Commit-ID: Hyy9yDuIToX
browser/base/content/test/plugins/browser.ini
browser/base/content/test/plugins/browser_private_browsing_eme_persistent_state.js
--- 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.");
+});