[Editor] Avoid to use a null signal when setting listeners in the editor toolbar

It should fix the error:
```
JavaScript error: http://127.0.0.1:43303/build/generic/build/pdf.mjs, line 1445:
TypeError: EventTarget.addEventListener: 'signal' member of AddEventListenerOptions is not an object.
```

we've when running integration tests on the Linux bot.
This commit is contained in:
Calixte Denizet 2025-08-14 14:00:33 +02:00
parent 7ea7a94ed5
commit 6365188535

View File

@ -48,11 +48,14 @@ class EditorToolbar {
const editToolbar = (this.#toolbar = document.createElement("div")); const editToolbar = (this.#toolbar = document.createElement("div"));
editToolbar.classList.add("editToolbar", "hidden"); editToolbar.classList.add("editToolbar", "hidden");
editToolbar.setAttribute("role", "toolbar"); editToolbar.setAttribute("role", "toolbar");
const signal = this.#editor._uiManager._signal; const signal = this.#editor._uiManager._signal;
editToolbar.addEventListener("contextmenu", noContextMenu, { signal }); if (signal instanceof AbortSignal && !signal.aborted) {
editToolbar.addEventListener("pointerdown", EditorToolbar.#pointerDown, { editToolbar.addEventListener("contextmenu", noContextMenu, { signal });
signal, editToolbar.addEventListener("pointerdown", EditorToolbar.#pointerDown, {
}); signal,
});
}
const buttons = (this.#buttons = document.createElement("div")); const buttons = (this.#buttons = document.createElement("div"));
buttons.className = "buttons"; buttons.className = "buttons";
@ -97,6 +100,9 @@ class EditorToolbar {
// the mouse, we don't want to trigger any focus events on // the mouse, we don't want to trigger any focus events on
// the editor. // the editor.
const signal = this.#editor._uiManager._signal; const signal = this.#editor._uiManager._signal;
if (!(signal instanceof AbortSignal) || signal.aborted) {
return false;
}
element.addEventListener("focusin", this.#focusIn.bind(this), { element.addEventListener("focusin", this.#focusIn.bind(this), {
capture: true, capture: true,
signal, signal,
@ -106,6 +112,7 @@ class EditorToolbar {
signal, signal,
}); });
element.addEventListener("contextmenu", noContextMenu, { signal }); element.addEventListener("contextmenu", noContextMenu, { signal });
return true;
} }
hide() { hide() {
@ -126,14 +133,15 @@ class EditorToolbar {
button.classList.add("basic", "deleteButton"); button.classList.add("basic", "deleteButton");
button.tabIndex = 0; button.tabIndex = 0;
button.setAttribute("data-l10n-id", EditorToolbar.#l10nRemove[editorType]); button.setAttribute("data-l10n-id", EditorToolbar.#l10nRemove[editorType]);
this.#addListenersToElement(button); if (this.#addListenersToElement(button)) {
button.addEventListener( button.addEventListener(
"click", "click",
e => { e => {
_uiManager.delete(); _uiManager.delete();
}, },
{ signal: _uiManager._signal } { signal: _uiManager._signal }
); );
}
this.#buttons.append(button); this.#buttons.append(button);
} }
@ -229,9 +237,13 @@ class FloatingToolbar {
const editToolbar = (this.#toolbar = document.createElement("div")); const editToolbar = (this.#toolbar = document.createElement("div"));
editToolbar.className = "editToolbar"; editToolbar.className = "editToolbar";
editToolbar.setAttribute("role", "toolbar"); editToolbar.setAttribute("role", "toolbar");
editToolbar.addEventListener("contextmenu", noContextMenu, {
signal: this.#uiManager._signal, const signal = this.#uiManager._signal;
}); if (signal instanceof AbortSignal && !signal.aborted) {
editToolbar.addEventListener("contextmenu", noContextMenu, {
signal,
});
}
const buttons = (this.#buttons = document.createElement("div")); const buttons = (this.#buttons = document.createElement("div"));
buttons.className = "buttons"; buttons.className = "buttons";
@ -307,8 +319,10 @@ class FloatingToolbar {
span.className = "visuallyHidden"; span.className = "visuallyHidden";
span.setAttribute("data-l10n-id", labelL10nId); span.setAttribute("data-l10n-id", labelL10nId);
const signal = this.#uiManager._signal; const signal = this.#uiManager._signal;
button.addEventListener("contextmenu", noContextMenu, { signal }); if (signal instanceof AbortSignal && !signal.aborted) {
button.addEventListener("click", clickHandler, { signal }); button.addEventListener("contextmenu", noContextMenu, { signal });
button.addEventListener("click", clickHandler, { signal });
}
this.#buttons.append(button); this.#buttons.append(button);
} }
} }