Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(423)

Side by Side Diff: chrome/test/data/pdf/viewport_test.js

Issue 1255403002: Add a scroll offset to PDF documents to account for the top material design toolbar. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 var tests = [ 5 var tests = [
6 function testDocumentNeedsScrollbars() { 6 function testDocumentNeedsScrollbars() {
7 var viewport = 7 var viewport =
8 new Viewport(new MockWindow(100, 100), new MockSizer(), function() {}, 8 new Viewport(new MockWindow(100, 100), new MockSizer(), function() {},
9 function() {}, function() {}, 10, 1); 9 function() {}, function() {}, 10, 1, 0);
10 var scrollbars; 10 var scrollbars;
11 11
12 viewport.setDocumentDimensions(new MockDocumentDimensions(90, 90)); 12 viewport.setDocumentDimensions(new MockDocumentDimensions(90, 90));
13 scrollbars = viewport.documentNeedsScrollbars_(1); 13 scrollbars = viewport.documentNeedsScrollbars_(1);
14 chrome.test.assertFalse(scrollbars.vertical); 14 chrome.test.assertFalse(scrollbars.vertical);
15 chrome.test.assertFalse(scrollbars.horizontal); 15 chrome.test.assertFalse(scrollbars.horizontal);
16 16
17 viewport.setDocumentDimensions(new MockDocumentDimensions(100, 100)); 17 viewport.setDocumentDimensions(new MockDocumentDimensions(100, 100));
18 scrollbars = viewport.documentNeedsScrollbars_(1); 18 scrollbars = viewport.documentNeedsScrollbars_(1);
19 chrome.test.assertFalse(scrollbars.vertical); 19 chrome.test.assertFalse(scrollbars.vertical);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 chrome.test.assertTrue(scrollbars.vertical); 54 chrome.test.assertTrue(scrollbars.vertical);
55 chrome.test.assertFalse(scrollbars.horizontal); 55 chrome.test.assertFalse(scrollbars.horizontal);
56 chrome.test.succeed(); 56 chrome.test.succeed();
57 }, 57 },
58 58
59 function testSetZoom() { 59 function testSetZoom() {
60 var mockSizer = new MockSizer(); 60 var mockSizer = new MockSizer();
61 var mockWindow = new MockWindow(100, 100, mockSizer); 61 var mockWindow = new MockWindow(100, 100, mockSizer);
62 var mockCallback = new MockViewportChangedCallback(); 62 var mockCallback = new MockViewportChangedCallback();
63 var viewport = new Viewport(mockWindow, mockSizer, mockCallback.callback, 63 var viewport = new Viewport(mockWindow, mockSizer, mockCallback.callback,
64 function() {}, function() {}, 0, 1); 64 function() {}, function() {}, 0, 1, 0);
65 65
66 // Test setting the zoom without the document dimensions set. The sizer 66 // Test setting the zoom without the document dimensions set. The sizer
67 // shouldn't change size. 67 // shouldn't change size.
68 mockCallback.reset(); 68 mockCallback.reset();
69 viewport.setZoom(0.5); 69 viewport.setZoom(0.5);
70 chrome.test.assertEq(0.5, viewport.zoom); 70 chrome.test.assertEq(0.5, viewport.zoom);
71 chrome.test.assertTrue(mockCallback.wasCalled); 71 chrome.test.assertTrue(mockCallback.wasCalled);
72 chrome.test.assertEq('0px', mockSizer.style.width); 72 chrome.test.assertEq('0px', mockSizer.style.width);
73 chrome.test.assertEq('0px', mockSizer.style.height); 73 chrome.test.assertEq('0px', mockSizer.style.height);
74 chrome.test.assertEq(0, mockWindow.pageXOffset); 74 chrome.test.assertEq(0, mockWindow.pageXOffset);
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 chrome.test.assertEq('200px', mockSizer.style.height); 129 chrome.test.assertEq('200px', mockSizer.style.height);
130 chrome.test.assertEq(0, mockWindow.pageXOffset); 130 chrome.test.assertEq(0, mockWindow.pageXOffset);
131 chrome.test.assertEq(0, mockWindow.pageYOffset); 131 chrome.test.assertEq(0, mockWindow.pageYOffset);
132 132
133 chrome.test.succeed(); 133 chrome.test.succeed();
134 }, 134 },
135 135
136 function testGetMostVisiblePage() { 136 function testGetMostVisiblePage() {
137 var mockWindow = new MockWindow(100, 100); 137 var mockWindow = new MockWindow(100, 100);
138 var viewport = new Viewport(mockWindow, new MockSizer(), function() {}, 138 var viewport = new Viewport(mockWindow, new MockSizer(), function() {},
139 function() {}, function() {}, 0, 1); 139 function() {}, function() {}, 0, 1, 0);
140 140
141 var documentDimensions = new MockDocumentDimensions(100, 100); 141 var documentDimensions = new MockDocumentDimensions(100, 100);
142 documentDimensions.addPage(50, 100); 142 documentDimensions.addPage(50, 100);
143 documentDimensions.addPage(100, 100); 143 documentDimensions.addPage(100, 100);
144 documentDimensions.addPage(100, 200); 144 documentDimensions.addPage(100, 200);
145 viewport.setDocumentDimensions(documentDimensions); 145 viewport.setDocumentDimensions(documentDimensions);
146 viewport.setZoom(1); 146 viewport.setZoom(1);
147 147
148 // Scrolled to the start of the first page. 148 // Scrolled to the start of the first page.
149 mockWindow.scrollTo(0, 0); 149 mockWindow.scrollTo(0, 0);
(...skipping 29 matching lines...) Expand all
179 mockWindow.scrollTo(0, 0); 179 mockWindow.scrollTo(0, 0);
180 chrome.test.assertEq(0, viewport.getMostVisiblePage()); 180 chrome.test.assertEq(0, viewport.getMostVisiblePage());
181 chrome.test.succeed(); 181 chrome.test.succeed();
182 }, 182 },
183 183
184 function testFitToWidth() { 184 function testFitToWidth() {
185 var mockWindow = new MockWindow(100, 100); 185 var mockWindow = new MockWindow(100, 100);
186 var mockSizer = new MockSizer(); 186 var mockSizer = new MockSizer();
187 var mockCallback = new MockViewportChangedCallback(); 187 var mockCallback = new MockViewportChangedCallback();
188 var viewport = new Viewport(mockWindow, mockSizer, mockCallback.callback, 188 var viewport = new Viewport(mockWindow, mockSizer, mockCallback.callback,
189 function() {}, function() {}, 0, 1); 189 function() {}, function() {}, 0, 1, 0);
190 var documentDimensions = new MockDocumentDimensions(); 190 var documentDimensions = new MockDocumentDimensions();
191 191
192 // Test with a document width which matches the window width. 192 // Test with a document width which matches the window width.
193 documentDimensions.addPage(100, 100); 193 documentDimensions.addPage(100, 100);
194 viewport.setDocumentDimensions(documentDimensions); 194 viewport.setDocumentDimensions(documentDimensions);
195 viewport.setZoom(0.1); 195 viewport.setZoom(0.1);
196 mockCallback.reset(); 196 mockCallback.reset();
197 viewport.fitToWidth(); 197 viewport.fitToWidth();
198 chrome.test.assertEq(Viewport.FittingType.FIT_TO_WIDTH, 198 chrome.test.assertEq(Viewport.FittingType.FIT_TO_WIDTH,
199 viewport.fittingType); 199 viewport.fittingType);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
238 viewport.fittingType); 238 viewport.fittingType);
239 chrome.test.assertTrue(mockCallback.wasCalled); 239 chrome.test.assertTrue(mockCallback.wasCalled);
240 chrome.test.assertEq(2, viewport.zoom); 240 chrome.test.assertEq(2, viewport.zoom);
241 chrome.test.assertEq(0, viewport.position.x); 241 chrome.test.assertEq(0, viewport.position.x);
242 chrome.test.assertEq(200, viewport.position.y); 242 chrome.test.assertEq(200, viewport.position.y);
243 243
244 // Test fitting works with scrollbars. The page will need to be zoomed to 244 // Test fitting works with scrollbars. The page will need to be zoomed to
245 // fit to width, which will cause the page height to span outside of the 245 // fit to width, which will cause the page height to span outside of the
246 // viewport, triggering 15px scrollbars to be shown. 246 // viewport, triggering 15px scrollbars to be shown.
247 viewport = new Viewport(mockWindow, mockSizer, mockCallback.callback, 247 viewport = new Viewport(mockWindow, mockSizer, mockCallback.callback,
248 function() {}, function() {}, 15, 1); 248 function() {}, function() {}, 15, 1, 0);
249 documentDimensions.reset(); 249 documentDimensions.reset();
250 documentDimensions.addPage(50, 100); 250 documentDimensions.addPage(50, 100);
251 viewport.setDocumentDimensions(documentDimensions); 251 viewport.setDocumentDimensions(documentDimensions);
252 mockCallback.reset(); 252 mockCallback.reset();
253 viewport.fitToWidth(); 253 viewport.fitToWidth();
254 chrome.test.assertEq(Viewport.FittingType.FIT_TO_WIDTH, 254 chrome.test.assertEq(Viewport.FittingType.FIT_TO_WIDTH,
255 viewport.fittingType); 255 viewport.fittingType);
256 chrome.test.assertTrue(mockCallback.wasCalled); 256 chrome.test.assertTrue(mockCallback.wasCalled);
257 chrome.test.assertEq('85px', mockSizer.style.width); 257 chrome.test.assertEq('85px', mockSizer.style.width);
258 chrome.test.assertEq(1.7, viewport.zoom); 258 chrome.test.assertEq(1.7, viewport.zoom);
259 chrome.test.succeed(); 259 chrome.test.succeed();
260 }, 260 },
261 261
262 function testFitToPage() { 262 function testFitToPage() {
263 var mockWindow = new MockWindow(100, 100); 263 var mockWindow = new MockWindow(100, 100);
264 var mockSizer = new MockSizer(); 264 var mockSizer = new MockSizer();
265 var mockCallback = new MockViewportChangedCallback(); 265 var mockCallback = new MockViewportChangedCallback();
266 var viewport = new Viewport(mockWindow, mockSizer, mockCallback.callback, 266 var viewport = new Viewport(mockWindow, mockSizer, mockCallback.callback,
267 function() {}, function() {}, 0, 1); 267 function() {}, function() {}, 0, 1, 0);
268 var documentDimensions = new MockDocumentDimensions(); 268 var documentDimensions = new MockDocumentDimensions();
269 269
270 // Test with a page size which matches the window size. 270 // Test with a page size which matches the window size.
271 documentDimensions.addPage(100, 100); 271 documentDimensions.addPage(100, 100);
272 viewport.setDocumentDimensions(documentDimensions); 272 viewport.setDocumentDimensions(documentDimensions);
273 viewport.setZoom(0.1); 273 viewport.setZoom(0.1);
274 mockCallback.reset(); 274 mockCallback.reset();
275 viewport.fitToPage(); 275 viewport.fitToPage();
276 chrome.test.assertEq(Viewport.FittingType.FIT_TO_PAGE, 276 chrome.test.assertEq(Viewport.FittingType.FIT_TO_PAGE,
277 viewport.fittingType); 277 viewport.fittingType);
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
366 chrome.test.assertEq(5, viewport.position.y); 366 chrome.test.assertEq(5, viewport.position.y);
367 367
368 chrome.test.succeed(); 368 chrome.test.succeed();
369 }, 369 },
370 370
371 function testGoToPage() { 371 function testGoToPage() {
372 var mockWindow = new MockWindow(100, 100); 372 var mockWindow = new MockWindow(100, 100);
373 var mockSizer = new MockSizer(); 373 var mockSizer = new MockSizer();
374 var mockCallback = new MockViewportChangedCallback(); 374 var mockCallback = new MockViewportChangedCallback();
375 var viewport = new Viewport(mockWindow, mockSizer, mockCallback.callback, 375 var viewport = new Viewport(mockWindow, mockSizer, mockCallback.callback,
376 function() {}, function() {}, 0, 1); 376 function() {}, function() {}, 0, 1, 0);
377 var documentDimensions = new MockDocumentDimensions(); 377 var documentDimensions = new MockDocumentDimensions();
378 378
379 documentDimensions.addPage(100, 100); 379 documentDimensions.addPage(100, 100);
380 documentDimensions.addPage(200, 200); 380 documentDimensions.addPage(200, 200);
381 documentDimensions.addPage(100, 400); 381 documentDimensions.addPage(100, 400);
382 viewport.setDocumentDimensions(documentDimensions); 382 viewport.setDocumentDimensions(documentDimensions);
383 viewport.setZoom(1); 383 viewport.setZoom(1);
384 384
385 mockCallback.reset(); 385 mockCallback.reset();
386 viewport.goToPage(0); 386 viewport.goToPage(0);
(...skipping 20 matching lines...) Expand all
407 chrome.test.assertEq(0, viewport.position.x); 407 chrome.test.assertEq(0, viewport.position.x);
408 chrome.test.assertEq(150, viewport.position.y); 408 chrome.test.assertEq(150, viewport.position.y);
409 chrome.test.succeed(); 409 chrome.test.succeed();
410 }, 410 },
411 411
412 function testGetPageScreenRect() { 412 function testGetPageScreenRect() {
413 var mockWindow = new MockWindow(100, 100); 413 var mockWindow = new MockWindow(100, 100);
414 var mockSizer = new MockSizer(); 414 var mockSizer = new MockSizer();
415 var mockCallback = new MockViewportChangedCallback(); 415 var mockCallback = new MockViewportChangedCallback();
416 var viewport = new Viewport(mockWindow, mockSizer, mockCallback.callback, 416 var viewport = new Viewport(mockWindow, mockSizer, mockCallback.callback,
417 function() {}, function() {}, 0, 1); 417 function() {}, function() {}, 0, 1, 0);
418 var documentDimensions = new MockDocumentDimensions(); 418 var documentDimensions = new MockDocumentDimensions();
419 documentDimensions.addPage(100, 100); 419 documentDimensions.addPage(100, 100);
420 documentDimensions.addPage(200, 200); 420 documentDimensions.addPage(200, 200);
421 viewport.setDocumentDimensions(documentDimensions); 421 viewport.setDocumentDimensions(documentDimensions);
422 viewport.setZoom(1); 422 viewport.setZoom(1);
423 423
424 // Test that the rect of the first page is positioned/sized correctly. 424 // Test that the rect of the first page is positioned/sized correctly.
425 mockWindow.scrollTo(0, 0); 425 mockWindow.scrollTo(0, 0);
426 var rect1 = viewport.getPageScreenRect(0); 426 var rect1 = viewport.getPageScreenRect(0);
427 chrome.test.assertEq(Viewport.PAGE_SHADOW.left + 100 / 2, rect1.x); 427 chrome.test.assertEq(Viewport.PAGE_SHADOW.left + 100 / 2, rect1.x);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
462 afterZoomCalled = true; 462 afterZoomCalled = true;
463 chrome.test.assertTrue(beforeZoomCalled); 463 chrome.test.assertTrue(beforeZoomCalled);
464 chrome.test.assertEq(0.5, viewport.zoom); 464 chrome.test.assertEq(0.5, viewport.zoom);
465 }; 465 };
466 var beforeZoom = function() { 466 var beforeZoom = function() {
467 beforeZoomCalled = true; 467 beforeZoomCalled = true;
468 chrome.test.assertFalse(afterZoomCalled); 468 chrome.test.assertFalse(afterZoomCalled);
469 chrome.test.assertEq(1, viewport.zoom); 469 chrome.test.assertEq(1, viewport.zoom);
470 }; 470 };
471 viewport = new Viewport(mockWindow, mockSizer, function() {}, 471 viewport = new Viewport(mockWindow, mockSizer, function() {},
472 beforeZoom, afterZoom, 0, 1); 472 beforeZoom, afterZoom, 0, 1, 0);
473 viewport.setZoom(0.5); 473 viewport.setZoom(0.5);
474 chrome.test.succeed(); 474 chrome.test.succeed();
475 }, 475 },
476 476
477 function testInitialSetDocumentDimensionsZoomConstrained() { 477 function testInitialSetDocumentDimensionsZoomConstrained() {
478 var viewport = 478 var viewport =
479 new Viewport(new MockWindow(100, 100), new MockSizer(), function() {}, 479 new Viewport(new MockWindow(100, 100), new MockSizer(), function() {},
480 function() {}, function() {}, 0, 1.2); 480 function() {}, function() {}, 0, 1.2, 0);
481 viewport.setDocumentDimensions(new MockDocumentDimensions(50, 50)); 481 viewport.setDocumentDimensions(new MockDocumentDimensions(50, 50));
482 chrome.test.assertEq(1.2, viewport.zoom); 482 chrome.test.assertEq(1.2, viewport.zoom);
483 chrome.test.succeed(); 483 chrome.test.succeed();
484 }, 484 },
485 485
486 function testInitialSetDocumentDimensionsZoomUnconstrained() { 486 function testInitialSetDocumentDimensionsZoomUnconstrained() {
487 var viewport = new Viewport( 487 var viewport = new Viewport(
488 new MockWindow(100, 100), 488 new MockWindow(100, 100),
489 new MockSizer(), function() {}, function() {}, function() {}, 0, 3); 489 new MockSizer(), function() {}, function() {}, function() {}, 0, 3, 0);
490 viewport.setDocumentDimensions(new MockDocumentDimensions(50, 50)); 490 viewport.setDocumentDimensions(new MockDocumentDimensions(50, 50));
491 chrome.test.assertEq(2, viewport.zoom); 491 chrome.test.assertEq(2, viewport.zoom);
492 chrome.test.succeed(); 492 chrome.test.succeed();
493 }, 493 },
494
495 function testToolbarHeightOffset() {
496 var mockSizer = new MockSizer();
497 var mockWindow = new MockWindow(100, 100);
498 var viewport = new Viewport(mockWindow,
499 mockSizer, function() {}, function() {}, function() {}, 0, 1, 50);
500 var documentDimensions = new MockDocumentDimensions(0, 0);
501 documentDimensions.addPage(50, 500);
502 viewport.setDocumentDimensions(documentDimensions);
503 viewport.setZoom(1);
504
505 // Check that the sizer incorporates the toolbar height.
506 chrome.test.assertEq('550px', mockSizer.style.height);
507 chrome.test.assertEq('50px', mockSizer.style.width);
508 chrome.test.assertEq(0, viewport.position.x);
509
510 // Check the sizer incorporates the toolbar height correctly even if zoomed.
511 viewport.setZoom(2);
512 chrome.test.assertEq('1050px', mockSizer.style.height);
513 chrome.test.assertEq('100px', mockSizer.style.width);
514
515 // Test that the viewport scrolls to the correct offset when fit-to-page is
516 // enabled. The top of the viewport should be at the start of the document.
517 viewport.fitToPage();
518 chrome.test.assertEq(0, viewport.position.y);
519
520 // Check that going to a page scrolls to the correct offset when fit-to-page
521 // is enabled. The top of the viewport should be at the start of the
522 // document.
523 mockWindow.scrollTo(0, 100);
524 viewport.goToPage(0);
525 chrome.test.assertEq(0, viewport.position.y);
526
527 // Check that going to a page scrolls to the correct offset when fit-to-page
528 // is not enabled. The top of the viewport should be before start of the
529 // document.
530 viewport.setZoom(1);
531 viewport.goToPage(0);
532 chrome.test.assertEq(-50, viewport.position.y);
533 chrome.test.succeed();
534 }
494 ]; 535 ];
495 536
496 chrome.test.runTests(tests); 537 chrome.test.runTests(tests);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698