From 162d94d6d3bef9e35f1a31bee71628b8e42f57d8 Mon Sep 17 00:00:00 2001 From: DeBaschdi Date: Thu, 2 Jul 2026 08:08:14 +0200 Subject: [PATCH] Handle absolute calendar item action popup URLs calendar_item_action.default_popup can already resolve to an absolute URL after localization. Passing that value through extension.getURL() again prefixes it with the extension base URL and produces an invalid nested moz-extension URL. Keep absolute popup URLs unchanged and only resolve relative manifest paths through extension.getURL(). --- .../experiments/calendar/parent/ext-calendarItemAction.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/calendar/experiments/calendar/parent/ext-calendarItemAction.js b/calendar/experiments/calendar/parent/ext-calendarItemAction.js index bed3740..65c65c0 100644 --- a/calendar/experiments/calendar/parent/ext-calendarItemAction.js +++ b/calendar/experiments/calendar/parent/ext-calendarItemAction.js @@ -41,7 +41,10 @@ this.calendarItemAction = class extends ToolbarButtonAPI { const localize = this.extension.localize.bind(this.extension); if (calendarItemAction.default_popup) { - calendarItemAction.default_popup = this.extension.getURL(localize(calendarItemAction.default_popup)); + const popupUrl = localize(calendarItemAction.default_popup); + calendarItemAction.default_popup = /^[a-z][a-z0-9+.-]*:/i.test(popupUrl) + ? popupUrl + : this.extension.getURL(popupUrl); } if (calendarItemAction.default_label) { calendarItemAction.default_label = localize(calendarItemAction.default_label);