Skip to content

Commit 5951485

Browse files
Merge pull request #20166 from calixteman/fix_signal_integration_test
[Editor] Avoid to use a null signal when setting listeners in the editor toolbar
2 parents 7ea7a94 + 6365188 commit 5951485

1 file changed

Lines changed: 31 additions & 17 deletions

File tree

src/display/editor/toolbar.js

Lines changed: 31 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,14 @@ class EditorToolbar {
4848
const editToolbar = (this.#toolbar = document.createElement("div"));
4949
editToolbar.classList.add("editToolbar", "hidden");
5050
editToolbar.setAttribute("role", "toolbar");
51+
5152
const signal = this.#editor._uiManager._signal;
52-
editToolbar.addEventListener("contextmenu", noContextMenu, { signal });
53-
editToolbar.addEventListener("pointerdown", EditorToolbar.#pointerDown, {
54-
signal,
55-
});
53+
if (signal instanceof AbortSignal && !signal.aborted) {
54+
editToolbar.addEventListener("contextmenu", noContextMenu, { signal });
55+
editToolbar.addEventListener("pointerdown", EditorToolbar.#pointerDown, {
56+
signal,
57+
});
58+
}
5659

5760
const buttons = (this.#buttons = document.createElement("div"));
5861
buttons.className = "buttons";
@@ -97,6 +100,9 @@ class EditorToolbar {
97100
// the mouse, we don't want to trigger any focus events on
98101
// the editor.
99102
const signal = this.#editor._uiManager._signal;
103+
if (!(signal instanceof AbortSignal) || signal.aborted) {
104+
return false;
105+
}
100106
element.addEventListener("focusin", this.#focusIn.bind(this), {
101107
capture: true,
102108
signal,
@@ -106,6 +112,7 @@ class EditorToolbar {
106112
signal,
107113
});
108114
element.addEventListener("contextmenu", noContextMenu, { signal });
115+
return true;
109116
}
110117

111118
hide() {
@@ -126,14 +133,15 @@ class EditorToolbar {
126133
button.classList.add("basic", "deleteButton");
127134
button.tabIndex = 0;
128135
button.setAttribute("data-l10n-id", EditorToolbar.#l10nRemove[editorType]);
129-
this.#addListenersToElement(button);
130-
button.addEventListener(
131-
"click",
132-
e => {
133-
_uiManager.delete();
134-
},
135-
{ signal: _uiManager._signal }
136-
);
136+
if (this.#addListenersToElement(button)) {
137+
button.addEventListener(
138+
"click",
139+
e => {
140+
_uiManager.delete();
141+
},
142+
{ signal: _uiManager._signal }
143+
);
144+
}
137145
this.#buttons.append(button);
138146
}
139147

@@ -229,9 +237,13 @@ class FloatingToolbar {
229237
const editToolbar = (this.#toolbar = document.createElement("div"));
230238
editToolbar.className = "editToolbar";
231239
editToolbar.setAttribute("role", "toolbar");
232-
editToolbar.addEventListener("contextmenu", noContextMenu, {
233-
signal: this.#uiManager._signal,
234-
});
240+
241+
const signal = this.#uiManager._signal;
242+
if (signal instanceof AbortSignal && !signal.aborted) {
243+
editToolbar.addEventListener("contextmenu", noContextMenu, {
244+
signal,
245+
});
246+
}
235247

236248
const buttons = (this.#buttons = document.createElement("div"));
237249
buttons.className = "buttons";
@@ -307,8 +319,10 @@ class FloatingToolbar {
307319
span.className = "visuallyHidden";
308320
span.setAttribute("data-l10n-id", labelL10nId);
309321
const signal = this.#uiManager._signal;
310-
button.addEventListener("contextmenu", noContextMenu, { signal });
311-
button.addEventListener("click", clickHandler, { signal });
322+
if (signal instanceof AbortSignal && !signal.aborted) {
323+
button.addEventListener("contextmenu", noContextMenu, { signal });
324+
button.addEventListener("click", clickHandler, { signal });
325+
}
312326
this.#buttons.append(button);
313327
}
314328
}

0 commit comments

Comments
 (0)