123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
- From: Shelley Vohr <[email protected]>
- Date: Mon, 17 Jan 2022 23:47:54 +0100
- Subject: fix: crash when saving edited PDF files
- This commit fixes a crash that persists any time a user attempts to
- download an edited PDF. This was happening because the logic flow for
- downloading of any edited PDF triggers a call to
- chrome.fileSystem.chooseEntry, which we do not support and which
- therefore causes unmapped page access crashes.
- This patch can be removed should we choose to support chrome.fileSystem
- or support it enough to fix the crash.
- diff --git a/chrome/browser/resources/pdf/pdf_viewer.ts b/chrome/browser/resources/pdf/pdf_viewer.ts
- index f291ca720095ad1d079135539fb0a7421cae0be9..b967868063402572d9410c1725188e9c9caa5455 100644
- --- a/chrome/browser/resources/pdf/pdf_viewer.ts
- +++ b/chrome/browser/resources/pdf/pdf_viewer.ts
- @@ -1010,7 +1010,15 @@ export class PdfViewerElement extends PdfViewerBaseElement {
- dataArray = [result.dataToSave];
- }
-
- + const a = document.createElement('a');
- + a.download = this.attachments_[index].name;
- const blob = new Blob(dataArray);
- + // <if expr="not _google_chrome">
- + a.href = URL.createObjectURL(blob);
- + a.click();
- + URL.revokeObjectURL(a.href);
- + // </if>
- + // <if expr="_google_chrome">
- const fileName = this.attachments_[index].name;
- chrome.fileSystem.chooseEntry(
- {type: 'saveFile', suggestedName: fileName},
- @@ -1032,6 +1040,7 @@ export class PdfViewerElement extends PdfViewerBaseElement {
- // </if>
- });
- });
- + // </if>
- }
-
- /**
- @@ -1160,7 +1169,15 @@ export class PdfViewerElement extends PdfViewerBaseElement {
- }
-
- // Create blob before callback to avoid race condition.
- + const a = document.createElement('a');
- + a.download = fileName;
- const blob = new Blob([result.dataToSave], {type: 'application/pdf'});
- + // <if expr="not _google_chrome">
- + a.href = URL.createObjectURL(blob);
- + a.click();
- + URL.revokeObjectURL(a.href);
- + // </if>
- + // <if expr="_google_chrome">
- chrome.fileSystem.chooseEntry(
- {
- type: 'saveFile',
- @@ -1189,6 +1206,7 @@ export class PdfViewerElement extends PdfViewerBaseElement {
- // </if>
- });
- });
- + // </if>
-
- // <if expr="enable_pdf_ink2">
- // Ink2 doesn't need to exit annotation mode after save.
|