Bug 1758292 - Stop using ChromeUtils.import(..., null) for browser_actions_ShowHeartbeatAction.js. r=Gijs

Differential Revision: https://phabricator.services.mozilla.com/D140454
This commit is contained in:
Mark Banner 2022-03-08 16:59:20 +00:00
parent bc20120fc3
commit 3a6b2a9fff
3 changed files with 30 additions and 16 deletions

View file

@ -544,7 +544,6 @@ module.exports = {
"dom/push/test/xpcshell/head.js",
"dom/push/test/xpcshell/test_broadcast_success.js",
"dom/push/test/xpcshell/test_crypto.js",
"toolkit/components/normandy/test/browser/browser_actions_ShowHeartbeatAction.js",
"toolkit/mozapps/extensions/internal/AddonTestUtils.jsm",
"toolkit/mozapps/extensions/test/browser/browser_gmpProvider.js",
"toolkit/mozapps/extensions/test/xpcshell/head_addons.js",

View file

@ -62,6 +62,16 @@ const DAY_IN_MS = 24 * 60 * 60 * 1000;
const HEARTBEAT_THROTTLE = 1 * DAY_IN_MS;
class ShowHeartbeatAction extends BaseAction {
static Heartbeat = Heartbeat;
static overrideHeartbeatForTests(newHeartbeat) {
if (newHeartbeat) {
this.Heartbeat = newHeartbeat;
} else {
this.Heartbeat = Heartbeat;
}
}
get schema() {
return ActionSchemas["show-heartbeat"];
}
@ -90,7 +100,7 @@ class ShowHeartbeatAction extends BaseAction {
throw new Error("No window to show heartbeat in");
}
const heartbeat = new Heartbeat(targetWindow, {
const heartbeat = new ShowHeartbeatAction.Heartbeat(targetWindow, {
surveyId: this.generateSurveyId(recipe),
message,
engagementButtonLabel,

View file

@ -1,12 +1,22 @@
"use strict";
ChromeUtils.import("resource://normandy/actions/BaseAction.jsm", this);
ChromeUtils.import("resource://normandy/actions/ShowHeartbeatAction.jsm", this);
ChromeUtils.import("resource://normandy/lib/ClientEnvironment.jsm", this);
ChromeUtils.import("resource://normandy/lib/Heartbeat.jsm", this);
ChromeUtils.import("resource://normandy/lib/Storage.jsm", this);
ChromeUtils.import("resource://normandy/lib/Uptake.jsm", this);
ChromeUtils.import("resource://testing-common/NormandyTestUtils.jsm", this);
const { BaseAction } = ChromeUtils.import(
"resource://normandy/actions/BaseAction.jsm"
);
const { ShowHeartbeatAction } = ChromeUtils.import(
"resource://normandy/actions/ShowHeartbeatAction.jsm"
);
const { ClientEnvironment } = ChromeUtils.import(
"resource://normandy/lib/ClientEnvironment.jsm"
);
const { Heartbeat } = ChromeUtils.import(
"resource://normandy/lib/Heartbeat.jsm"
);
const { Storage } = ChromeUtils.import("resource://normandy/lib/Storage.jsm");
const { Uptake } = ChromeUtils.import("resource://normandy/lib/Uptake.jsm");
const { NormandyTestUtils } = ChromeUtils.import(
"resource://testing-common/NormandyTestUtils.jsm"
);
const HOUR_IN_MS = 60 * 60 * 1000;
@ -50,15 +60,10 @@ class MockEventEmitter {
function withStubbedHeartbeat() {
return function(testFunction) {
return async function wrappedTestFunction(args) {
const backstage = ChromeUtils.import(
"resource://normandy/actions/ShowHeartbeatAction.jsm",
null
);
const originalHeartbeat = backstage.Heartbeat;
const heartbeatInstanceStub = new MockHeartbeat();
const heartbeatClassStub = sinon.stub();
heartbeatClassStub.returns(heartbeatInstanceStub);
backstage.Heartbeat = heartbeatClassStub;
ShowHeartbeatAction.overrideHeartbeatForTests(heartbeatClassStub);
try {
await testFunction({
@ -67,7 +72,7 @@ function withStubbedHeartbeat() {
heartbeatInstanceStub,
});
} finally {
backstage.Heartbeat = originalHeartbeat;
ShowHeartbeatAction.overrideHeartbeatForTests();
}
};
};