Skip to content

Commit

Permalink
Avoid wrong scrolling when calling zoomReset
Browse files Browse the repository at this point in the history
The goal of this patch is to fix the test:
https://searchfox.org/mozilla-central/source/toolkit/components/pdfjs/test/browser_pdfjs_zoom.js

It's a regression due to #17790.
  • Loading branch information
calixteman committed Mar 21, 2024
1 parent ae60221 commit 918b500
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 2 deletions.
32 changes: 32 additions & 0 deletions test/integration/viewer_spec.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -55,4 +55,36 @@ describe("PDF viewer", () => {
);
});
});

describe("Zoom commands", () => {
let pages;

beforeAll(async () => {
pages = await loadAndWait("tracemonkey.pdf", ".textLayer .endOfContent");
});

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

it("must check that zoom commands don't scroll the document", async () => {
await Promise.all(
pages.map(async ([browserName, page]) => {
for (let i = 0; i < 10; i++) {
await page.evaluate(() => window.PDFViewerApplication.zoomIn());
await page.evaluate(() => window.PDFViewerApplication.zoomReset());
await page.waitForSelector(
`.page[data-page-number="1"] .textLayer .endOfContent`
);
const scrollTop = await page.evaluate(
() => document.getElementById("viewerContainer").scrollTop
);
expect(scrollTop < 100)
.withContext(`In ${browserName}`)
.toBe(true);
}
})
);
});
});
});
1 change: 0 additions & 1 deletion web/annotation_editor_layer_builder.js
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,6 @@ class AnnotationEditorLayerBuilder {
return;
}
this.annotationEditorLayer.destroy();
this.div.remove();
}

hide() {
Expand Down
7 changes: 6 additions & 1 deletion web/pdf_page_view.js
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ const LAYERS_ORDER = new Map([
["textLayer", 1],
["annotationLayer", 2],
["annotationEditorLayer", 3],
["xfaLayer", 2],
["xfaLayer", 3],
]);

/**
Expand Down Expand Up @@ -235,7 +235,12 @@ class PDFPageView {

#addLayer(div, name) {
const pos = LAYERS_ORDER.get(name);
const oldDiv = this.#layers[pos];
this.#layers[pos] = div;
if (oldDiv) {
oldDiv.replaceWith(div);
return;
}
for (let i = pos - 1; i >= 0; i--) {
const layer = this.#layers[i];
if (layer) {
Expand Down

0 comments on commit 918b500

Please sign in to comment.