| OLD | NEW |
| 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, 0); | 9 function() {}, function() {}, 10, 1); |
| 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 Loading... |
| 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, 0); | 64 function() {}, function() {}, 0, 1); |
| 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 Loading... |
| 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, 0); | 139 function() {}, function() {}, 0, 1); |
| 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 Loading... |
| 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, 0); | 189 function() {}, function() {}, 0, 1); |
| 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 Loading... |
| 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, 0); | 248 function() {}, function() {}, 15, 1); |
| 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, 0); | 267 function() {}, function() {}, 0, 1); |
| 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 Loading... |
| 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, 0); | 376 function() {}, function() {}, 0, 1); |
| 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 Loading... |
| 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, 0); | 417 function() {}, function() {}, 0, 1); |
| 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 Loading... |
| 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, 0); | 472 beforeZoom, afterZoom, 0, 1); |
| 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, 0); | 480 function() {}, function() {}, 0, 1.2); |
| 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, 0); | 489 new MockSizer(), function() {}, function() {}, function() {}, 0, 3); |
| 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 } | |
| 535 ]; | 494 ]; |
| 536 | 495 |
| 537 chrome.test.runTests(tests); | 496 chrome.test.runTests(tests); |
| OLD | NEW |