diff --git a/src/display/editor/drawers/inkdraw.js b/src/display/editor/drawers/inkdraw.js index f725a6924..2af5a48f1 100644 --- a/src/display/editor/drawers/inkdraw.js +++ b/src/display/editor/drawers/inkdraw.js @@ -552,7 +552,7 @@ class InkDrawOutline extends Outline { }); } - const outlines = new InkDrawOutline(); + const outlines = new this.prototype.constructor(); outlines.build( newLines, pageWidth, diff --git a/src/display/editor/signature.js b/src/display/editor/signature.js index 8aceb8b3d..c6f7c4eb7 100644 --- a/src/display/editor/signature.js +++ b/src/display/editor/signature.js @@ -391,7 +391,7 @@ class SignatureEditor extends DrawingEditor { static async deserialize(data, parent, uiManager) { const editor = await super.deserialize(data, parent, uiManager); editor.#isExtracted = data.areContours; - editor.description = data.accessibilityData?.alt || ""; + editor.#description = data.accessibilityData?.alt || ""; editor.#signatureUUID = data.uuid; return editor; } diff --git a/test/integration/signature_editor_spec.mjs b/test/integration/signature_editor_spec.mjs index a7fca3e6f..708baf81f 100644 --- a/test/integration/signature_editor_spec.mjs +++ b/test/integration/signature_editor_spec.mjs @@ -16,9 +16,11 @@ import { awaitPromise, closePages, + copy, getEditorSelector, getRect, loadAndWait, + paste, switchToEditor, waitForPointerUp, waitForTimeout, @@ -330,6 +332,60 @@ describe("Signature Editor", () => { }) ); }); + + it("must check copy and paste", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await switchToSignature(page); + await page.click("#editorSignatureAddSignature"); + + await page.waitForSelector("#addSignatureDialog", { + visible: true, + }); + await page.type("#addSignatureTypeInput", "Hello"); + await page.waitForSelector(`${addButtonSelector}:not(:disabled)`); + await page.click("#addSignatureAddButton"); + + const editorSelector = getEditorSelector(0); + await page.waitForSelector(editorSelector, { visible: true }); + await page.waitForSelector( + `.canvasWrapper > svg use[href="#path_p1_0"]`, + { visible: true } + ); + const originalPath = await page.$eval("#path_p1_0", el => + el.getAttribute("d") + ); + const originalDescription = await page.$eval( + `${editorSelector} .altText.editDescription`, + el => el.title + ); + + await copy(page); + await paste(page); + + const pastedEditorSelector = getEditorSelector(1); + await page.waitForSelector(pastedEditorSelector, { visible: true }); + await page.waitForSelector( + `.canvasWrapper > svg use[href="#path_p1_1"]`, + { visible: true } + ); + const pastedPath = await page.$eval("#path_p1_1", el => + el.getAttribute("d") + ); + const pastedDescription = await page.$eval( + `${pastedEditorSelector} .altText.editDescription`, + el => el.title + ); + + expect(pastedPath) + .withContext(`In ${browserName}`) + .toEqual(originalPath); + expect(pastedDescription) + .withContext(`In ${browserName}`) + .toEqual(originalDescription); + }) + ); + }); }); describe("Bug 1948741", () => {