Bug 1276132 - Don't show EME 'enable' UI for non-visible keysystems. r=gijs draft
authorChris Pearce <cpearce@mozilla.com>
Tue, 31 May 2016 12:04:12 +1200
changeset 374273 c198d6613c04df0d9889a6121606498e883ff607
parent 374272 ba7a526411567db90791a55981d79a33b0e0d1bb
child 374274 ad40a29d0ceb8ea44eba61b28a86d89199e2d8f6
push id19972
push usercpearce@mozilla.com
push dateThu, 02 Jun 2016 04:16:40 +0000
reviewersgijs
bugs1276132
milestone49.0a1
Bug 1276132 - Don't show EME 'enable' UI for non-visible keysystems. r=gijs This means we'll only show the EME UI for keysystems that are explicitly turned on in the build config, or those that are enabled after the build via prefs. MozReview-Commit-ID: 7VTp1BJSZFy
browser/base/content/browser-media.js
--- a/browser/base/content/browser-media.js
+++ b/browser/base/content/browser-media.js
@@ -26,33 +26,47 @@ var gEMEHandler = {
       } else if (keySystem == "com.widevine.alpha" &&
                  Services.prefs.getPrefType("media.gmp-widevinecdm.enabled") &&
                  !Services.prefs.getBoolPref("media.gmp-widevinecdm.enabled")) {
         Services.prefs.setBoolPref("media.gmp-widevinecdm.enabled", true);
       }
     }
     browser.reload();
   },
+  isKeySystemVisible: function(keySystem) {
+    if (!keySystem) {
+      return false;
+    }
+    if (keySystem.startsWith("com.adobe") &&
+        Services.prefs.getPrefType("media.gmp-eme-adobe.visible")) {
+      return Services.prefs.getBoolPref("media.gmp-eme-adobe.visible");
+    }
+    if (keySystem == "com.widevine.alpha" &&
+        Services.prefs.getPrefType("media.gmp-widevinecdm.visible")) {
+      return Services.prefs.getBoolPref("media.gmp-widevinecdm.visible");
+    }
+    return true;
+  },
   getLearnMoreLink: function(msgId) {
     let text = gNavigatorBundle.getString("emeNotifications." + msgId + ".learnMoreLabel");
     let baseURL = Services.urlFormatter.formatURLPref("app.support.baseURL");
     return "<label class='text-link' href='" + baseURL + "drm-content'>" +
            text + "</label>";
   },
   receiveMessage: function({target: browser, data: data}) {
     let parsedData;
     try {
       parsedData = JSON.parse(data);
     } catch (ex) {
       Cu.reportError("Malformed EME video message with data: " + data);
       return;
     }
     let {status: status, keySystem: keySystem} = parsedData;
-    // Don't need to show if disabled
-    if (!this.uiEnabled) {
+    // Don't need to show if disabled or keysystem not visible.
+    if (!this.uiEnabled || !this.isKeySystemVisible(keySystem)) {
       return;
     }
 
     let notificationId;
     let buttonCallback;
     let params = [];
     switch (status) {
       case "available":