Skip to content

Commit 949200e

Browse files
authored
Load experiment modules with a unique path (#53)
* Load experiment modules with a unique path
1 parent 5098ba3 commit 949200e

File tree

4 files changed

+44
-13
lines changed

4 files changed

+44
-13
lines changed

calendar/experiments/calendar/parent/ext-calendar-calendars.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,17 @@ var { cal } = ChromeUtils.importESModule("resource:///modules/calendar/calUtils.
99

1010
this.calendar_calendars = class extends ExtensionAPI {
1111
getAPI(context) {
12+
const uuid = context.extension.uuid;
13+
const root = `experiments-calendar-${uuid}`;
14+
const query = context.extension.manifest.version;
1215
const {
1316
unwrapCalendar,
1417
getResolvedCalendarById,
1518
isOwnCalendar,
1619
convertCalendar,
17-
} = ChromeUtils.importESModule("resource://tb-experiments-calendar/experiments/calendar/ext-calendar-utils.sys.mjs");
20+
} = ChromeUtils.importESModule(
21+
`resource://${root}/experiments/calendar/ext-calendar-utils.sys.mjs?${query}`
22+
);
1823

1924
return {
2025
calendar: {

calendar/experiments/calendar/parent/ext-calendar-items.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ var { cal } = ChromeUtils.importESModule("resource:///modules/calendar/calUtils.
99

1010
this.calendar_items = class extends ExtensionAPI {
1111
getAPI(context) {
12+
const uuid = context.extension.uuid;
13+
const root = `experiments-calendar-${uuid}`;
14+
const query = context.extension.manifest.version;
1215
const {
1316
getResolvedCalendarById,
1417
getCachedCalendar,
@@ -17,7 +20,9 @@ this.calendar_items = class extends ExtensionAPI {
1720
propsToItem,
1821
convertItem,
1922
convertAlarm,
20-
} = ChromeUtils.importESModule("resource://tb-experiments-calendar/experiments/calendar/ext-calendar-utils.sys.mjs");
23+
} = ChromeUtils.importESModule(
24+
`resource://${root}/experiments/calendar/ext-calendar-utils.sys.mjs?${query}`
25+
);
2126

2227
return {
2328
calendar: {

calendar/experiments/calendar/parent/ext-calendar-provider.js

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -496,15 +496,21 @@ this.calendar_provider = class extends ExtensionAPI {
496496
if (this.extension.manifest.calendar_provider) {
497497
this.onManifestEntry("calendar_provider");
498498
}
499-
499+
const uuid = this.extension.uuid;
500+
const root = `experiments-calendar-${uuid}`;
501+
const query = this.extension.manifest.version;
500502
Services.io
501503
.getProtocolHandler("resource")
502504
.QueryInterface(Ci.nsIResProtocolHandler)
503-
.setSubstitution("tb-experiments-calendar", this.extension.rootURI);
505+
.setSubstitution(root, this.extension.rootURI);
504506

505-
const { setupE10sBrowser, unwrapCalendar } = ChromeUtils.importESModule("resource://tb-experiments-calendar/experiments/calendar/ext-calendar-utils.sys.mjs");
507+
const { setupE10sBrowser, unwrapCalendar } = ChromeUtils.importESModule(
508+
`resource://${root}/experiments/calendar/ext-calendar-utils.sys.mjs?${query}`
509+
);
506510

507-
ChromeUtils.registerWindowActor("CalendarProvider", { child: { esModuleURI: "resource://tb-experiments-calendar/experiments/calendar/child/ext-calendar-provider-actor.sys.mjs" } });
511+
ChromeUtils.registerWindowActor(`CalendarProvider-${uuid}`, { child: { esModuleURI:
512+
`resource://${root}/experiments/calendar/child/ext-calendar-provider-actor.sys.mjs?${query}`
513+
}});
508514

509515
ExtensionSupport.registerWindowListener("ext-calendar-provider-properties-" + this.extension.id, {
510516
chromeURLs: ["chrome://calendar/content/calendar-properties-dialog.xhtml"],
@@ -606,19 +612,19 @@ this.calendar_provider = class extends ExtensionAPI {
606612
if (isAppShutdown) {
607613
return;
608614
}
615+
const uuid = this.extension.uuid;
616+
const root = `experiments-calendar-${uuid}`;
609617
ExtensionSupport.unregisterWindowListener("ext-calendar-provider-creation-" + this.extension.id);
610618
ExtensionSupport.unregisterWindowListener("ext-calendar-provider-properties-" + this.extension.id);
611-
ChromeUtils.unregisterWindowActor("CalendarProvider");
619+
ChromeUtils.unregisterWindowActor(`CalendarProvider-${uuid}`);
612620

613621
if (this.extension.manifest.calendar_provider) {
614622
ExtCalendarProvider.unregister(this.extension);
615623
}
616-
617-
Cu.unload("resource://tb-experiments-calendar/experiments/calendar/ext-calendar-utils.sys.mjs");
618624
Services.io
619625
.getProtocolHandler("resource")
620626
.QueryInterface(Ci.nsIResProtocolHandler)
621-
.setSubstitution("tb-experiments-calendar", null);
627+
.setSubstitution(root, null);
622628
Services.obs.notifyObservers(null, "startupcache-invalidate");
623629
}
624630

@@ -646,11 +652,16 @@ this.calendar_provider = class extends ExtensionAPI {
646652
}
647653

648654
getAPI(context) {
655+
const uuid = context.extension.uuid;
656+
const root = `experiments-calendar-${uuid}`;
657+
const query = context.extension.manifest.version;
649658
const {
650659
propsToItem,
651660
convertItem,
652661
convertCalendar,
653-
} = ChromeUtils.importESModule("resource://tb-experiments-calendar/experiments/calendar/ext-calendar-utils.sys.mjs");
662+
} = ChromeUtils.importESModule(
663+
`resource://${root}/experiments/calendar/ext-calendar-utils.sys.mjs?${query}`
664+
);
654665

655666
return {
656667
calendar: {

calendar/experiments/calendar/parent/ext-calendarItemDetails.js

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,12 @@ Cu.importGlobalProperties(["URL"]);
1212

1313
this.calendarItemDetails = class extends ExtensionAPI {
1414
onLoadCalendarItemPanel(window, origLoadCalendarItemPanel, iframeId, url) {
15-
const { setupE10sBrowser } = ChromeUtils.importESModule("resource://tb-experiments-calendar/experiments/calendar/ext-calendar-utils.sys.mjs");
15+
const uuid = this.extension.uuid;
16+
const root = `experiments-calendar-${uuid}`;
17+
const query = this.extension.manifest.version;
18+
const { setupE10sBrowser } = ChromeUtils.importESModule(
19+
`resource://${root}/experiments/calendar/ext-calendar-utils.sys.mjs?${query}`
20+
);
1621

1722
const res = origLoadCalendarItemPanel(iframeId, url);
1823
if (!this.extension.manifest.calendar_item_details) {
@@ -96,7 +101,12 @@ this.calendarItemDetails = class extends ExtensionAPI {
96101
}
97102

98103
onLoadSummary(window) {
99-
const { setupE10sBrowser } = ChromeUtils.importESModule("resource://tb-experiments-calendar/experiments/calendar/ext-calendar-utils.sys.mjs");
104+
const uuid = this.extension.uuid;
105+
const root = `experiments-calendar-${uuid}`;
106+
const query = this.extension.manifest.version;
107+
const { setupE10sBrowser } = ChromeUtils.importESModule(
108+
`resource://${root}/experiments/calendar/ext-calendar-utils.sys.mjs?${query}`
109+
);
100110

101111
const document = window.document;
102112

0 commit comments

Comments
 (0)