Skip to content

Commit 8f2a456

Browse files
Merge pull request #20039 from calixteman/bug1974257
[Editor] In the signature modal, disable the save checkbox when the storage is full (bug 1974257)
2 parents f4043b0 + 9acd16a commit 8f2a456

File tree

3 files changed

+56
-7
lines changed

3 files changed

+56
-7
lines changed

test/integration/signature_editor_spec.mjs

Lines changed: 47 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ describe("Signature Editor", () => {
105105
await page.waitForSelector(
106106
"#addSignatureSaveContainer > input:not(:disabled)"
107107
);
108-
await page.waitForSelector("#addSignatureSaveCheckbox[checked=true]");
108+
await page.waitForSelector("#addSignatureSaveCheckbox:checked");
109109

110110
// The description has been filled in automatically.
111111
await page.waitForFunction(
@@ -260,7 +260,7 @@ describe("Signature Editor", () => {
260260
await page.waitForSelector(
261261
"#addSignatureSaveContainer > input:not(:disabled)"
262262
);
263-
await page.waitForSelector("#addSignatureSaveCheckbox[checked=true]");
263+
await page.waitForSelector("#addSignatureSaveCheckbox:checked");
264264

265265
// The description has been filled in automatically.
266266
await page.waitForFunction(
@@ -316,7 +316,7 @@ describe("Signature Editor", () => {
316316
await page.waitForSelector(
317317
"#addSignatureSaveContainer > input:not(:disabled)"
318318
);
319-
await page.waitForSelector("#addSignatureSaveCheckbox[checked=true]");
319+
await page.waitForSelector("#addSignatureSaveCheckbox:checked");
320320

321321
// The description has been filled in automatically.
322322
await page.waitForFunction(
@@ -671,4 +671,48 @@ describe("Signature Editor", () => {
671671
);
672672
});
673673
});
674+
675+
describe("Bug 1974257", () => {
676+
let pages;
677+
678+
beforeEach(async () => {
679+
pages = await loadAndWait("empty.pdf", ".annotationEditorLayer");
680+
});
681+
682+
afterEach(async () => {
683+
await closePages(pages);
684+
});
685+
686+
it("must check that the signature save checkbox is disabled if storage is full", async () => {
687+
await Promise.all(
688+
pages.map(async ([_, page]) => {
689+
await switchToSignature(page);
690+
691+
for (let i = 0; i < 6; i++) {
692+
await page.click("#editorSignatureAddSignature");
693+
await page.waitForSelector("#addSignatureDialog", {
694+
visible: true,
695+
});
696+
await page.click("#addSignatureTypeInput");
697+
await page.type("#addSignatureTypeInput", `PDF.js ${i}`);
698+
if (i === 5) {
699+
await page.waitForSelector(
700+
"#addSignatureSaveCheckbox:not(checked)"
701+
);
702+
await page.waitForSelector("#addSignatureSaveCheckbox:disabled");
703+
} else {
704+
await page.waitForSelector("#addSignatureSaveCheckbox:checked");
705+
await page.waitForSelector(
706+
"#addSignatureSaveCheckbox:not(:disabled)"
707+
);
708+
}
709+
await page.click("#addSignatureAddButton");
710+
await page.waitForSelector("#addSignatureDialog", {
711+
visible: false,
712+
});
713+
}
714+
})
715+
);
716+
});
717+
});
674718
});

web/signature_manager.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,8 @@ class SignatureManager {
8888

8989
#eventBus;
9090

91+
#isStorageFull = false;
92+
9193
#l10n;
9294

9395
#overlayManager;
@@ -322,8 +324,10 @@ class SignatureManager {
322324
}
323325

324326
#disableButtons(value) {
325-
this.#saveCheckbox.disabled =
326-
this.#clearButton.disabled =
327+
if (!value || !this.#isStorageFull) {
328+
this.#saveCheckbox.disabled = !value;
329+
}
330+
this.#clearButton.disabled =
327331
this.#addButton.disabled =
328332
this.#description.disabled =
329333
!value;
@@ -847,7 +851,8 @@ class SignatureManager {
847851
this.#currentEditor = editor;
848852
this.#uiManager.removeEditListeners();
849853

850-
const isStorageFull = await this.#signatureStorage.isFull();
854+
const isStorageFull = (this.#isStorageFull =
855+
await this.#signatureStorage.isFull());
851856
this.#saveContainer.classList.toggle("fullStorage", isStorageFull);
852857
this.#saveCheckbox.checked = !isStorageFull;
853858

web/viewer.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -725,7 +725,7 @@
725725
<button id="clearSignatureButton" type="button" data-l10n-id="pdfjs-editor-add-signature-clear-button" tabindex="0"><span data-l10n-id="pdfjs-editor-add-signature-clear-button-label"></span></button>
726726
</div>
727727
<div id="addSignatureSaveContainer">
728-
<input type="checkbox" id="addSignatureSaveCheckbox" checked="true"></input>
728+
<input type="checkbox" id="addSignatureSaveCheckbox"></input>
729729
<label for="addSignatureSaveCheckbox" data-l10n-id="pdfjs-editor-add-signature-save-checkbox"></label>
730730
<span></span>
731731
<span id="addSignatureSaveWarning" data-l10n-id="pdfjs-editor-add-signature-save-warning-message"></span>

0 commit comments

Comments
 (0)