Commit e9fadcbe authored by iulian moraru's avatar iulian moraru Committed by imoraru@mozilla.com
Browse files

Revert "Bug 1907633 - Do not instantiate the RemoteSettingsExperimentLoader on...

Revert "Bug 1907633 - Do not instantiate the RemoteSettingsExperimentLoader on import r=nimbus-reviewers,relud" for causing bc failures on browser_trigger_messagesLoaded.js.

This reverts commit 002d90f4.
parent 02823d3e
Loading
Loading
Loading
Loading
+5 −16
Changes for toolkit/components/nimbus/ExperimentAPI.sys.mjs: 5 added lines, 16 removed lines.
Original line number Diff line number Diff line
@@ -140,7 +140,6 @@ export const EnrollmentType = Object.freeze({

let initialized = false;
let experimentManager = null;
let experimentLoader = null;

export const ExperimentAPI = {
  /**
@@ -251,27 +250,13 @@ export const ExperimentAPI = {
    return this.manager;
  },

  /**
   * Return the global RemoteSettingsExperimentLoader.
   */
  get _rsLoader() {
    if (experimentLoader === null) {
      experimentLoader = new lazy.RemoteSettingsExperimentLoader(this.manager);
    }

    return experimentLoader;
  },

  _resetForTests() {
    experimentLoader?.disable();
    experimentLoader = null;

    this._rsLoader.disable();
    lazy.CleanupManager.removeCleanupHandler(
      ExperimentAPI._removeCrashReportAnnotator
    );
    experimentManager?.store.off("update", this._annotateCrashReport);
    experimentManager = null;

    initialized = false;
  },

@@ -910,6 +895,10 @@ ExperimentAPI._onStudiesEnabledChanged =
ExperimentAPI._removeCrashReportAnnotator =
  ExperimentAPI._removeCrashReportAnnotator.bind(ExperimentAPI);

ChromeUtils.defineLazyGetter(ExperimentAPI, "_rsLoader", function () {
  return lazy.RemoteSettingsExperimentLoader;
});

ChromeUtils.defineLazyGetter(
  ExperimentAPI,
  "_remoteSettingsClient",
+7 −3
Changes for toolkit/components/nimbus/lib/RemoteSettingsExperimentLoader.sys.mjs: 7 added lines, 3 removed lines.
Original line number Diff line number Diff line
@@ -164,7 +164,7 @@ export const CheckRecipeResult = {
  },
};

export class RemoteSettingsExperimentLoader {
export class _RemoteSettingsExperimentLoader {
  get LOCK_ID() {
    return "remote-settings-experiment-loader:update";
  }
@@ -174,8 +174,6 @@ export class RemoteSettingsExperimentLoader {
  }

  constructor(manager) {
    this.manager = manager;

    // Has the timer been set?
    this._enabled = false;
    // Are we in the middle of updating recipes already?
@@ -185,6 +183,9 @@ export class RemoteSettingsExperimentLoader {
    // deferred promise object that resolves after recipes are updated
    this._updatingDeferred = Promise.withResolvers();

    // Make it possible to override for testing
    this.manager = manager ?? lazy.ExperimentAPI.manager;

    this.remoteSettingsClients = {};
    ChromeUtils.defineLazyGetter(
      this.remoteSettingsClients,
@@ -1090,3 +1091,6 @@ export class EnrollmentsContext {
    return schema;
  }
}

export const RemoteSettingsExperimentLoader =
  new _RemoteSettingsExperimentLoader();
+3 −3
Changes for toolkit/components/nimbus/test/NimbusTestUtils.sys.mjs: 3 added lines, 3 removed lines.
Original line number Diff line number Diff line
@@ -16,7 +16,7 @@ ChromeUtils.defineESModuleGetters(lazy, {
  JsonSchema: "resource://gre/modules/JsonSchema.sys.mjs",
  NetUtil: "resource://gre/modules/NetUtil.sys.mjs",
  ExperimentManager: "resource://nimbus/lib/ExperimentManager.sys.mjs",
  RemoteSettingsExperimentLoader:
  _RemoteSettingsExperimentLoader:
    "resource://nimbus/lib/RemoteSettingsExperimentLoader.sys.mjs",
  sinon: "resource://testing-common/Sinon.sys.mjs",
});
@@ -282,7 +282,7 @@ export const NimbusTestUtils = {
    },

    rsLoader(manager) {
      const loader = new lazy.RemoteSettingsExperimentLoader(
      const loader = new lazy._RemoteSettingsExperimentLoader(
        manager ?? NimbusTestUtils.stubs.manager()
      );

@@ -573,7 +573,7 @@ export const NimbusTestUtils = {
   * @property {object} sandbox
   *           A sinon sandbox.
   *
   * @property {RemoteSettingsExperimentLoader} loader
   * @property {_RemoteSettingsExperimentLoader} loader
   *           A RemoteSettingsExperimentLoader instance that has stubbed
   *           RemoteSettings clients.
   *
+3 −2
Changes for toolkit/components/nimbus/test/browser/browser_experiment_evaluate_jexl.js: 3 added lines, 2 removed lines.
Original line number Diff line number Diff line
"use strict";

const { EnrollmentsContext } = ChromeUtils.importESModule(
const { EnrollmentsContext, RemoteSettingsExperimentLoader } =
  ChromeUtils.importESModule(
    "resource://nimbus/lib/RemoteSettingsExperimentLoader.sys.mjs"
  );

@@ -16,7 +17,7 @@ add_setup(async function setup() {
    await SpecialPowers.popPrefEnv();
  });

  CONTEXT = new EnrollmentsContext(ExperimentAPI.manager);
  CONTEXT = new EnrollmentsContext(RemoteSettingsExperimentLoader.manager);
});

let CONTEXT;
+7 −4
Changes for toolkit/components/nimbus/test/browser/browser_remotesettings_experiment_enroll.js: 7 added lines, 4 removed lines.
Original line number Diff line number Diff line
@@ -3,6 +3,9 @@
const { RemoteSettings } = ChromeUtils.importESModule(
  "resource://services-settings/remote-settings.sys.mjs"
);
const { RemoteSettingsExperimentLoader } = ChromeUtils.importESModule(
  "resource://nimbus/lib/RemoteSettingsExperimentLoader.sys.mjs"
);

let rsClient;

@@ -19,7 +22,7 @@ add_setup(async function () {
  });

  await ExperimentAPI.ready();
  await ExperimentAPI._rsLoader.finishedUpdating();
  await RemoteSettingsExperimentLoader.finishedUpdating();

  registerCleanupFunction(async () => {
    await SpecialPowers.popPrefEnv();
@@ -35,7 +38,7 @@ add_task(async function test_experimentEnrollment() {
    clear: true,
  });

  await ExperimentAPI._rsLoader.updateRecipes("mochitest");
  await RemoteSettingsExperimentLoader.updateRecipes("mochitest");

  let meta = NimbusFeatures.testFeature.getEnrollmentMetadata();
  Assert.equal(meta.slug, recipe.slug, "Enrollment active");
@@ -55,11 +58,11 @@ add_task(async function test_experimentEnrollment_startup() {
    set: [["app.shield.optoutstudies.enabled", false]],
  });

  Assert.ok(!ExperimentAPI._rsLoader._enabled, "Should be disabled");
  Assert.ok(!RemoteSettingsExperimentLoader._enabled, "Should be disabled");

  await SpecialPowers.pushPrefEnv({
    set: [["app.shield.optoutstudies.enabled", true]],
  });

  Assert.ok(ExperimentAPI._rsLoader._enabled, "Should be enabled");
  Assert.ok(RemoteSettingsExperimentLoader._enabled, "Should be enabled");
});
Loading