Skip to content

Commit

Permalink
[Editor] Avoid to have a stamp editor resizing itself
Browse files Browse the repository at this point in the history
Fixes #18715.
  • Loading branch information
calixteman committed Sep 9, 2024
1 parent a1b45d6 commit 3f23bcb
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 8 deletions.
6 changes: 1 addition & 5 deletions src/display/editor/editor.js
Original file line number Diff line number Diff line change
Expand Up @@ -659,11 +659,7 @@ class AnnotationEditor {
parentScale,
pageDimensions: [pageWidth, pageHeight],
} = this;
const scaledWidth = pageWidth * parentScale;
const scaledHeight = pageHeight * parentScale;
return FeatureTest.isCSSRoundSupported
? [Math.round(scaledWidth), Math.round(scaledHeight)]
: [scaledWidth, scaledHeight];
return [pageWidth * parentScale, pageHeight * parentScale];
}

/**
Expand Down
1 change: 0 additions & 1 deletion src/display/editor/stamp.js
Original file line number Diff line number Diff line change
Expand Up @@ -553,7 +553,6 @@ class StampEditor extends AnnotationEditor {
const [parentWidth, parentHeight] = this.parentDimensions;
this.width = width / parentWidth;
this.height = height / parentHeight;
this.setDims(width, height);
if (this._initialOptions?.isCentered) {
this.center();
} else {
Expand Down
51 changes: 49 additions & 2 deletions test/integration/stamp_editor_spec.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ import {
waitForSelectedEditor,
waitForSerialized,
waitForStorageEntries,
waitForTimeout,
waitForUnselectedEditor,
} from "./test_utils.mjs";
import { fileURLToPath } from "url";
Expand Down Expand Up @@ -150,8 +151,8 @@ describe("Stamp Editor", () => {
const ratio = await page.evaluate(
() => window.pdfjsLib.PixelsPerInch.PDF_TO_CSS_UNITS
);
expect(bitmap.width).toEqual(Math.round(242 * ratio));
expect(bitmap.height).toEqual(Math.round(80 * ratio));
expect(Math.abs(bitmap.width - 242 * ratio) < 1).toBeTrue();
expect(Math.abs(bitmap.height - 80 * ratio) < 1).toBeTrue();

await clearAll(page);
})
Expand Down Expand Up @@ -1097,4 +1098,50 @@ describe("Stamp Editor", () => {
}
});
});

describe("No auto-resize", () => {
let pages;

beforeAll(async () => {
pages = await loadAndWait("empty.pdf", ".annotationEditorLayer", 67);
});

afterAll(async () => {
await closePages(pages);
});

it("must check that a stamp editor isn't resizing itself", async () => {
// Run sequentially to avoid clipboard issues.
const editorSelector = getEditorSelector(0);

for (const [, page] of pages) {
await switchToStamp(page);

await copyImage(page, "../images/firefox_logo.png", 0);
await page.waitForSelector(editorSelector);
await waitForSerialized(page, 1);
}

await Promise.all(
pages.map(async ([browserName, page]) => {
const getDims = () =>
page.evaluate(sel => {
const bbox = document.querySelector(sel).getBoundingClientRect();
return `${bbox.width}::${bbox.height}`;
}, editorSelector);
const initialDims = await getDims();
for (let i = 0; i < 50; i++) {
// We want to make sure that the editor doesn't resize itself, so we
// check every 10ms that the dimensions are the same.

// eslint-disable-next-line no-restricted-syntax
await waitForTimeout(10);

const dims = await getDims();
expect(dims).withContext(`In ${browserName}`).toEqual(initialDims);
}
})
);
});
});
});

0 comments on commit 3f23bcb

Please sign in to comment.