@@ -20,6 +20,7 @@ import {
2020 getSpanRectFromText ,
2121 loadAndWait ,
2222 scrollIntoView ,
23+ waitForPageChanging ,
2324 waitForPageRendered ,
2425} from "./test_utils.mjs" ;
2526import { PNG } from "pngjs" ;
@@ -1273,4 +1274,48 @@ describe("PDF viewer", () => {
12731274 ) ;
12741275 } ) ;
12751276 } ) ;
1277+
1278+ describe ( "Keyboard scrolling on startup (bug 843653)" , ( ) => {
1279+ let pages ;
1280+
1281+ beforeEach ( async ( ) => {
1282+ pages = await loadAndWait ( "tracemonkey.pdf" , ".textLayer .endOfContent" ) ;
1283+ } ) ;
1284+
1285+ afterEach ( async ( ) => {
1286+ await closePages ( pages ) ;
1287+ } ) ;
1288+
1289+ it ( "must check that keyboard scrolling works without having to give the focus to the viewer" , async ( ) => {
1290+ await Promise . all (
1291+ pages . map ( async ( [ browserName , page ] ) => {
1292+ const pdfViewer = await page . evaluateHandle (
1293+ ( ) => window . PDFViewerApplication . pdfViewer
1294+ ) ;
1295+
1296+ // The viewer should not have the focus.
1297+ const hasFocus = await pdfViewer . evaluate ( viewer =>
1298+ viewer . container . contains ( document . activeElement )
1299+ ) ;
1300+ expect ( hasFocus ) . withContext ( `In ${ browserName } ` ) . toBeFalse ( ) ;
1301+
1302+ let currentPageNumber = await pdfViewer . evaluate (
1303+ viewer => viewer . currentPageNumber
1304+ ) ;
1305+ expect ( currentPageNumber ) . withContext ( `In ${ browserName } ` ) . toBe ( 1 ) ;
1306+
1307+ // Press the 'PageDown' key to check that it works.
1308+ const handle = await waitForPageChanging ( page ) ;
1309+ await page . keyboard . press ( "PageDown" ) ;
1310+ await awaitPromise ( handle ) ;
1311+
1312+ // The second page should be displayed.
1313+ currentPageNumber = await pdfViewer . evaluate (
1314+ viewer => viewer . currentPageNumber
1315+ ) ;
1316+ expect ( currentPageNumber ) . withContext ( `In ${ browserName } ` ) . toBe ( 2 ) ;
1317+ } )
1318+ ) ;
1319+ } ) ;
1320+ } ) ;
12761321} ) ;
0 commit comments