Merge pull request #17793 from calixteman/zoom_wheel_ctrl
When zooming the scrollbar can disappear and then no scrollend is triggered
This commit is contained in:
		
						commit
						2a68724b53
					
				@ -35,6 +35,7 @@ async function runTests(results) {
 | 
				
			|||||||
      "scripting_spec.mjs",
 | 
					      "scripting_spec.mjs",
 | 
				
			||||||
      "stamp_editor_spec.mjs",
 | 
					      "stamp_editor_spec.mjs",
 | 
				
			||||||
      "text_field_spec.mjs",
 | 
					      "text_field_spec.mjs",
 | 
				
			||||||
 | 
					      "viewer_spec.mjs",
 | 
				
			||||||
    ],
 | 
					    ],
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										58
									
								
								test/integration/viewer_spec.mjs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								test/integration/viewer_spec.mjs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,58 @@
 | 
				
			|||||||
 | 
					/* Copyright 2024 Mozilla Foundation
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					 * you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					 * You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					 * See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					 * limitations under the License.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import { closePages, loadAndWait } from "./test_utils.mjs";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					describe("PDF viewer", () => {
 | 
				
			||||||
 | 
					  describe("Zoom with the mouse wheel", () => {
 | 
				
			||||||
 | 
					    let pages;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    beforeAll(async () => {
 | 
				
			||||||
 | 
					      pages = await loadAndWait("empty.pdf", ".textLayer .endOfContent", 1000);
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    afterAll(async () => {
 | 
				
			||||||
 | 
					      await closePages(pages);
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    it("must check that we can zoom with the mouse wheel and pressed control key", async () => {
 | 
				
			||||||
 | 
					      await Promise.all(
 | 
				
			||||||
 | 
					        pages.map(async ([browserName, page]) => {
 | 
				
			||||||
 | 
					          if (browserName === "firefox") {
 | 
				
			||||||
 | 
					            // Skip this test for Firefox, as it's not working correctly.
 | 
				
			||||||
 | 
					            // See https://github.com/puppeteer/puppeteer/issues/12093.
 | 
				
			||||||
 | 
					            // TODO: Remove this check once the issue is resolved.
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					          await page.keyboard.down("Control");
 | 
				
			||||||
 | 
					          let zoom = 10;
 | 
				
			||||||
 | 
					          const zoomGetter = () =>
 | 
				
			||||||
 | 
					            page.evaluate(
 | 
				
			||||||
 | 
					              () => window.PDFViewerApplication.pdfViewer.currentScale
 | 
				
			||||||
 | 
					            );
 | 
				
			||||||
 | 
					          while (zoom > 0.1) {
 | 
				
			||||||
 | 
					            await page.mouse.wheel({ deltaY: 100 });
 | 
				
			||||||
 | 
					            zoom = await zoomGetter();
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					          while (zoom < 10) {
 | 
				
			||||||
 | 
					            await page.mouse.wheel({ deltaY: -100 });
 | 
				
			||||||
 | 
					            zoom = await zoomGetter();
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					          await page.keyboard.up("Control");
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
@ -2024,8 +2024,9 @@ const PDFViewerApplication = {
 | 
				
			|||||||
    });
 | 
					    });
 | 
				
			||||||
    const scroll = (_boundEvents.mainContainerScroll = () => {
 | 
					    const scroll = (_boundEvents.mainContainerScroll = () => {
 | 
				
			||||||
      if (
 | 
					      if (
 | 
				
			||||||
        this._lastScrollTop === mainContainer.scrollTop &&
 | 
					        this._isCtrlKeyDown ||
 | 
				
			||||||
        this._lastScrollLeft === mainContainer.scrollLeft
 | 
					        (this._lastScrollTop === mainContainer.scrollTop &&
 | 
				
			||||||
 | 
					          this._lastScrollLeft === mainContainer.scrollLeft)
 | 
				
			||||||
      ) {
 | 
					      ) {
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user