Bug 1390706 - Remove Flash CTP rollout addon and make it CTP by default through prefs. r=benjamin+7044
authorFelipe Gomes <felipc@gmail.com>
Tue, 19 Sep 2017 18:56:25 -0300
changeset 433775 a6f36a2ff650f7a0cda479bfb5dbf38f199c729d
parent 433774 fa4de7ce4de0d9d5fcb4baffa600e439992b9e4b
child 433776 18723c6944b1d45e0044e100a8fdc8f573df4714
push id1567
push userjlorenzo@mozilla.com
push dateThu, 02 Nov 2017 12:36:05 +0000
treeherdermozilla-release@e512c14a0406 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersbenjamin
bugs1390706
milestone57.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1390706 - Remove Flash CTP rollout addon and make it CTP by default through prefs. r=benjamin+7044 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
@@ -690,24 +690,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},