Bug 1390706 - Remove Flash CTP rollout addon and make it CTP by default through prefs. r=bsmedberg draft
authorFelipe Gomes <felipc@gmail.com>
Tue, 19 Sep 2017 18:56:25 -0300
changeset 667304 f9cf7de2ffc494098c7fa6cf6474a8e2dee28140
parent 667303 a0eb21bf55e1c1ae0ba311e6f2273da05c712799
child 732334 85d3717655a12fa67fca47d2dd3d25acdc2cdb82
push id80655
push userfelipc@gmail.com
push dateTue, 19 Sep 2017 21:57:38 +0000
reviewersbsmedberg
bugs1390706
milestone57.0a1
Bug 1390706 - Remove Flash CTP rollout addon and make it CTP by default through prefs. r=bsmedberg MozReview-Commit-ID: CPIoiXnx5WT
browser/app/profile/firefox.js
browser/extensions/clicktoplay-rollout/bootstrap.js
browser/extensions/clicktoplay-rollout/install.rdf.in
browser/extensions/clicktoplay-rollout/moz.build
browser/extensions/moz.build
testing/talos/talos/xtalos/xperf_whitelist.json
--- a/browser/app/profile/firefox.js
+++ b/browser/app/profile/firefox.js
@@ -692,24 +692,18 @@ pref("plugins.remember_infobar_dismissal
 pref("plugin.default.state", 1);
 
 // Plugins bundled in XPIs are enabled by default.
 pref("plugin.defaultXpi.state", 2);
 
 // Java is Click-to-Activate by default on all channels.
 pref("plugin.state.java", 1);
 
-// Flash is Click-to-Activate by default on Nightly.
-// On other channels, it will be controlled by a
-// rollout system addon.
-#ifdef NIGHTLY_BUILD
+// Flash is Click-to-Activate by default on all channels.
 pref("plugin.state.flash", 1);
-#else
-pref("plugin.state.flash", 2);
-#endif
 
 // Enables the download and use of the flash blocklists.
 pref("plugins.flashBlock.enabled", true);
 
 // Prefer HTML5 video over Flash content, and don't
 // load plugin instances with no src declared.
 // These prefs are documented in details on all.js.
 // With the "follow-ctp" setting, this will only
deleted file mode 100644
--- a/browser/extensions/clicktoplay-rollout/bootstrap.js
+++ /dev/null
@@ -1,148 +0,0 @@
-/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
-/* 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/. */
-"use strict";
-
-const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
-
-Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-Cu.import("resource://gre/modules/Services.jsm");
-Cu.import("resource://gre/modules/UpdateUtils.jsm");
-Cu.import("resource://gre/modules/AppConstants.jsm");
-Cu.import("resource://gre/modules/TelemetryEnvironment.jsm");
-
-// The amount of people to be part of the rollout
-const TEST_THRESHOLD = {
-  "beta": 1.0,  // 100%
-  "release": 1.0,  // 100%
-};
-
-if (AppConstants.RELEASE_OR_BETA) {
-  // The rollout is controlled by the channel name, which
-  // is the only way to distinguish between Beta and Release.
-  // However, non-official release builds (like the ones done by distros
-  // to ship Firefox on their package managers) do not set a value
-  // for the release channel, which gets them to the default value
-  // of.. (drumroll) "default".
-  // But we can't just always configure the same settings for the
-  // "default" channel because that's also the name that a locally
-  // built Firefox gets, and CTP is already directly set there
-  // through an #ifdef in firefox.js
-  TEST_THRESHOLD.default = TEST_THRESHOLD.release;
-}
-
-const PREF_COHORT_SAMPLE       = "plugins.ctprollout.cohortSample";
-const PREF_COHORT_NAME         = "plugins.ctprollout.cohort";
-const PREF_FLASH_STATE         = "plugin.state.flash";
-
-function startup() {
-  defineCohort();
-}
-
-function defineCohort() {
-  let updateChannel = UpdateUtils.getUpdateChannel(false);
-  if (!(updateChannel in TEST_THRESHOLD)) {
-    return;
-  }
-
-  let cohort = Services.prefs.getStringPref(PREF_COHORT_NAME, undefined);
-
-  if (!cohort) {
-    // The cohort has not been defined yet: this is the first
-    // time that we're running. Let's see if the user has
-    // a non-default setting to avoid changing it.
-    let currentPluginState = Services.prefs.getIntPref(PREF_FLASH_STATE);
-    switch (currentPluginState) {
-      case Ci.nsIPluginTag.STATE_CLICKTOPLAY:
-        cohort = "early-adopter-ctp";
-        break;
-
-      case Ci.nsIPluginTag.STATE_DISABLED:
-        cohort = "early-adopter-disabled";
-        break;
-
-      default:
-        // intentionally missing from the list is STATE_ENABLED,
-        // which will keep cohort undefined.
-        break;
-    }
-  }
-
-  switch (cohort) {
-    case undefined:
-    case null:
-    case "":
-    case "test":
-    case "control":
-    case "excluded":
-    {
-      // If it's either test/control, the cohort might have changed
-      // if the desired sampling has been changed.
-      let testThreshold = TEST_THRESHOLD[updateChannel];
-      let userSample = getUserSample();
-
-      if (userSample < testThreshold) {
-        cohort = "test";
-        let defaultPrefs = Services.prefs.getDefaultBranch("");
-        defaultPrefs.setIntPref(PREF_FLASH_STATE, Ci.nsIPluginTag.STATE_CLICKTOPLAY);
-      } else if (userSample >= 1.0 - testThreshold) {
-        cohort = "control";
-      } else {
-        cohort = "excluded";
-      }
-
-      setCohort(cohort);
-      watchForPrefChanges();
-      break;
-    }
-
-    case "early-adopter-ctp":
-    case "early-adopter-disabled":
-    default:
-      // "user-changed-from-*" will fall into this default case and
-      // not do anything special.
-      setCohort(cohort);
-      break;
-  }
-}
-
-function getUserSample() {
-  let prefType = Services.prefs.getPrefType(PREF_COHORT_SAMPLE);
-
-  if (prefType == Ci.nsIPrefBranch.PREF_STRING) {
-    return parseFloat(Services.prefs.getStringPref(PREF_COHORT_SAMPLE), 10);
-  }
-
-  let value = Math.random();
-  Services.prefs.setStringPref(PREF_COHORT_SAMPLE, value.toString().substr(0, 8));
-  return value;
-}
-
-function setCohort(cohortName) {
-  Services.prefs.setStringPref(PREF_COHORT_NAME, cohortName);
-  TelemetryEnvironment.setExperimentActive("clicktoplay-rollout", cohortName);
-
-  try {
-    if (Ci.nsICrashReporter) {
-      Services.appinfo.QueryInterface(Ci.nsICrashReporter).annotateCrashReport("CTPCohort", cohortName);
-    }
-  } catch (e) {}
-}
-
-function watchForPrefChanges() {
-  Services.prefs.addObserver(PREF_FLASH_STATE, function prefWatcher() {
-    let currentCohort = Services.prefs.getStringPref(PREF_COHORT_NAME, "unknown");
-    setCohort(`user-changed-from-${currentCohort}`);
-    Services.prefs.removeObserver(PREF_FLASH_STATE, prefWatcher);
-  });
-}
-
-function install() {
-}
-
-function shutdown(data, reason) {
-}
-
-function uninstall() {
-}
deleted file mode 100644
--- a/browser/extensions/clicktoplay-rollout/install.rdf.in
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0"?>
-<!-- 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/. -->
-
-#filter substitution
-
-<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-     xmlns:em="http://www.mozilla.org/2004/em-rdf#">
-
-  <Description about="urn:mozilla:install-manifest">
-    <em:id>clicktoplay-rollout@mozilla.org</em:id>
-    <em:version>1.4</em:version>
-    <em:type>2</em:type>
-    <em:bootstrap>true</em:bootstrap>
-    <em:multiprocessCompatible>true</em:multiprocessCompatible>
-
-    <!-- Target Application this theme can install into,
-        with minimum and maximum supported versions. -->
-    <em:targetApplication>
-      <Description>
-        <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
-        <em:minVersion>@MOZ_APP_VERSION@</em:minVersion>
-        <em:maxVersion>@MOZ_APP_MAXVERSION@</em:maxVersion>
-      </Description>
-    </em:targetApplication>
-
-    <!-- Front End MetaData -->
-    <em:name>Click-to-Play staged rollout</em:name>
-    <em:description>Staged rollout for Click-to-Play Flash.</em:description>
-  </Description>
-</RDF>
deleted file mode 100644
--- a/browser/extensions/clicktoplay-rollout/moz.build
+++ /dev/null
@@ -1,19 +0,0 @@
-# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
-# 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/.
-
-with Files("**"):
-    BUG_COMPONENT = ("Core", "Plug-ins")
-
-DEFINES['MOZ_APP_VERSION'] = CONFIG['MOZ_APP_VERSION']
-DEFINES['MOZ_APP_MAXVERSION'] = CONFIG['MOZ_APP_MAXVERSION']
-
-FINAL_TARGET_FILES.features['clicktoplay-rollout@mozilla.org'] += [
-  'bootstrap.js'
-]
-
-FINAL_TARGET_PP_FILES.features['clicktoplay-rollout@mozilla.org'] += [
-  'install.rdf.in'
-]
--- a/browser/extensions/moz.build
+++ b/browser/extensions/moz.build
@@ -2,17 +2,16 @@
 # vim: set filetype=python:
 # 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/.
 
 DIRS += [
     'activity-stream',
     'aushelper',
-    'clicktoplay-rollout',
     'e10srollout',
     'followonsearch',
     'formautofill',
     'onboarding',
     'pdfjs',
     'pocket',
     'screenshots',
     'shield-recipe-client',
--- a/testing/talos/talos/xtalos/xperf_whitelist.json
+++ b/testing/talos/talos/xtalos/xperf_whitelist.json
@@ -2,17 +2,16 @@
  "C:\\$Mft": {"ignore": true},
  "C:\\$Extend\\$UsnJrnl:$J": {"ignore": true},
  "C:\\Windows\\Prefetch\\{prefetch}.pf": {"ignore": true},
  "C:\\$Secure": {"ignore": true},
  "C:\\$logfile": {"ignore": true},
  "{firefox}\\omni.ja": {"mincount": 0, "maxcount": 46, "minbytes": 0, "maxbytes": 3014656},
  "{firefox}\\browser\\omni.ja": {"mincount": 0, "maxcount": 28, "minbytes": 0, "maxbytes": 1835008},
  "{firefox}\\browser\\features\\aushelper@mozilla.org.xpi": {"mincount": 0, "maxcount": 100, "minbytes": 0, "maxbytes": 10000000},
- "{firefox}\\browser\\features\\clicktoplay-rollout@mozilla.org.xpi": {"mincount": 0, "maxcount": 100, "minbytes": 0, "maxbytes": 10000000},
  "{firefox}\\browser\\features\\e10srollout@mozilla.org.xpi": {"mincount": 0, "maxcount": 100, "minbytes": 0, "maxbytes": 10000000},
  "{firefox}\\browser\\features\\flyweb@mozilla.org.xpi": {"mincount": 0, "maxcount": 100, "minbytes": 0, "maxbytes": 10000000},
  "{firefox}\\browser\\features\\formautofill@mozilla.org.xpi": {"mincount": 0, "maxcount": 100, "minbytes": 0, "maxbytes": 10000000},
  "{firefox}\\browser\\features\\loop@mozilla.org.xpi": {"mincount": 0, "maxcount": 100, "minbytes": 0, "maxbytes": 10000000},
  "{firefox}\\browser\\features\\firefox@getpocket.com.xpi": {"mincount": 0, "maxcount": 100, "minbytes": 0, "maxbytes": 10000000},
  "{firefox}\\browser\\features\\presentation@mozilla.org.xpi": {"mincount": 0, "maxcount": 100, "minbytes": 0, "maxbytes": 10000000},
  "{firefox}\\browser\\features\\webcompat@mozilla.org.xpi": {"mincount": 0, "maxcount": 100, "minbytes": 0, "maxbytes": 10000000},
  "{firefox}\\browser\\features\\webcompat-reporter@mozilla.org.xpi": {"mincount": 0, "maxcount": 100, "minbytes": 0, "maxbytes": 10000000},