| 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 function MockWindow(width, height) { | 5 function MockWindow(width, height) { |
| 6 this.innerWidth = width; | 6 this.innerWidth = width; |
| 7 this.innerHeight = height; | 7 this.innerHeight = height; |
| 8 this.addEventListener = function(e, f) { | 8 this.addEventListener = function(e, f) { |
| 9 if (e == 'scroll') | 9 if (e == 'scroll') |
| 10 this.scrollCallback = f; | 10 this.scrollCallback = f; |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 93 | 93 |
| 94 viewport.setDocumentDimensions(new MockDocumentDimensions(40, 51)); | 94 viewport.setDocumentDimensions(new MockDocumentDimensions(40, 51)); |
| 95 scrollbars = viewport.documentNeedsScrollbars_(2); | 95 scrollbars = viewport.documentNeedsScrollbars_(2); |
| 96 chrome.test.assertTrue(scrollbars.vertical); | 96 chrome.test.assertTrue(scrollbars.vertical); |
| 97 chrome.test.assertFalse(scrollbars.horizontal); | 97 chrome.test.assertFalse(scrollbars.horizontal); |
| 98 | 98 |
| 99 viewport.setDocumentDimensions(new MockDocumentDimensions(101, 202)); | 99 viewport.setDocumentDimensions(new MockDocumentDimensions(101, 202)); |
| 100 scrollbars = viewport.documentNeedsScrollbars_(0.5); | 100 scrollbars = viewport.documentNeedsScrollbars_(0.5); |
| 101 chrome.test.assertTrue(scrollbars.vertical); | 101 chrome.test.assertTrue(scrollbars.vertical); |
| 102 chrome.test.assertFalse(scrollbars.horizontal); | 102 chrome.test.assertFalse(scrollbars.horizontal); |
| 103 chrome.test.succeed(); |
| 103 }, | 104 }, |
| 104 | 105 |
| 105 function testSetZoom() { | 106 function testSetZoom() { |
| 106 var mockWindow = new MockWindow(100, 100); | 107 var mockWindow = new MockWindow(100, 100); |
| 107 var mockSizer = new MockSizer(); | 108 var mockSizer = new MockSizer(); |
| 108 var mockCallback = new MockViewportChangedCallback(); | 109 var mockCallback = new MockViewportChangedCallback(); |
| 109 var viewport = new Viewport(mockWindow, mockSizer, | 110 var viewport = new Viewport(mockWindow, mockSizer, |
| 110 mockCallback.callback, 0); | 111 mockCallback.callback, 0); |
| 111 | 112 |
| 112 // Test setting the zoom without the document dimensions set. The sizer | 113 // Test setting the zoom without the document dimensions set. The sizer |
| (...skipping 29 matching lines...) Expand all Loading... |
| 142 // Test that the scroll position scales correctly. It scales relative to the | 143 // Test that the scroll position scales correctly. It scales relative to the |
| 143 // center of the page. | 144 // center of the page. |
| 144 viewport.setZoom_(1); | 145 viewport.setZoom_(1); |
| 145 mockWindow.pageXOffset = 50; | 146 mockWindow.pageXOffset = 50; |
| 146 mockWindow.pageYOffset = 50; | 147 mockWindow.pageYOffset = 50; |
| 147 viewport.setZoom_(2); | 148 viewport.setZoom_(2); |
| 148 chrome.test.assertEq('400px', mockSizer.style.width); | 149 chrome.test.assertEq('400px', mockSizer.style.width); |
| 149 chrome.test.assertEq('400px', mockSizer.style.height); | 150 chrome.test.assertEq('400px', mockSizer.style.height); |
| 150 chrome.test.assertEq(150, mockWindow.pageXOffset); | 151 chrome.test.assertEq(150, mockWindow.pageXOffset); |
| 151 chrome.test.assertEq(150, mockWindow.pageYOffset); | 152 chrome.test.assertEq(150, mockWindow.pageYOffset); |
| 153 chrome.test.succeed(); |
| 152 }, | 154 }, |
| 153 | 155 |
| 154 function testGetMostVisiblePage() { | 156 function testGetMostVisiblePage() { |
| 155 var mockWindow = new MockWindow(100, 100); | 157 var mockWindow = new MockWindow(100, 100); |
| 156 var viewport = new Viewport(mockWindow, new MockSizer(), function() {}, 0); | 158 var viewport = new Viewport(mockWindow, new MockSizer(), function() {}, 0); |
| 157 | 159 |
| 158 var documentDimensions = new MockDocumentDimensions(100, 100); | 160 var documentDimensions = new MockDocumentDimensions(100, 100); |
| 159 documentDimensions.addPage(100, 100); | 161 documentDimensions.addPage(100, 100); |
| 160 documentDimensions.addPage(150, 100); | 162 documentDimensions.addPage(150, 100); |
| 161 documentDimensions.addPage(100, 200); | 163 documentDimensions.addPage(100, 200); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 179 chrome.test.assertEq(1, viewport.getMostVisiblePage()); | 181 chrome.test.assertEq(1, viewport.getMostVisiblePage()); |
| 180 | 182 |
| 181 // Scrolled most of the way through the second page. | 183 // Scrolled most of the way through the second page. |
| 182 mockWindow.scrollTo(0, 180); | 184 mockWindow.scrollTo(0, 180); |
| 183 chrome.test.assertEq(2, viewport.getMostVisiblePage()); | 185 chrome.test.assertEq(2, viewport.getMostVisiblePage()); |
| 184 | 186 |
| 185 // Scrolled just over half way through the first page with 2x zoom. | 187 // Scrolled just over half way through the first page with 2x zoom. |
| 186 viewport.setZoom_(2); | 188 viewport.setZoom_(2); |
| 187 mockWindow.scrollTo(0, 151); | 189 mockWindow.scrollTo(0, 151); |
| 188 chrome.test.assertEq(1, viewport.getMostVisiblePage()); | 190 chrome.test.assertEq(1, viewport.getMostVisiblePage()); |
| 191 chrome.test.succeed(); |
| 189 }, | 192 }, |
| 190 | 193 |
| 191 function testFitToWidth() { | 194 function testFitToWidth() { |
| 192 var mockWindow = new MockWindow(100, 100); | 195 var mockWindow = new MockWindow(100, 100); |
| 193 var mockSizer = new MockSizer(); | 196 var mockSizer = new MockSizer(); |
| 194 var mockCallback = new MockViewportChangedCallback(); | 197 var mockCallback = new MockViewportChangedCallback(); |
| 195 var viewport = new Viewport(mockWindow, mockSizer, | 198 var viewport = new Viewport(mockWindow, mockSizer, |
| 196 mockCallback.callback, 0); | 199 mockCallback.callback, 0); |
| 197 var documentDimensions = new MockDocumentDimensions(); | 200 var documentDimensions = new MockDocumentDimensions(); |
| 198 | 201 |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 246 viewport = new Viewport(mockWindow, mockSizer, | 249 viewport = new Viewport(mockWindow, mockSizer, |
| 247 mockCallback.callback, 15); | 250 mockCallback.callback, 15); |
| 248 documentDimensions.reset(); | 251 documentDimensions.reset(); |
| 249 documentDimensions.addPage(50, 100); | 252 documentDimensions.addPage(50, 100); |
| 250 viewport.setDocumentDimensions(documentDimensions); | 253 viewport.setDocumentDimensions(documentDimensions); |
| 251 mockCallback.reset(); | 254 mockCallback.reset(); |
| 252 viewport.fitToWidth(); | 255 viewport.fitToWidth(); |
| 253 chrome.test.assertTrue(mockCallback.wasCalled); | 256 chrome.test.assertTrue(mockCallback.wasCalled); |
| 254 chrome.test.assertEq('85px', mockSizer.style.width); | 257 chrome.test.assertEq('85px', mockSizer.style.width); |
| 255 chrome.test.assertEq(1.7, viewport.zoom); | 258 chrome.test.assertEq(1.7, viewport.zoom); |
| 259 chrome.test.succeed(); |
| 256 }, | 260 }, |
| 257 | 261 |
| 258 function testFitToPage() { | 262 function testFitToPage() { |
| 259 var mockWindow = new MockWindow(100, 100); | 263 var mockWindow = new MockWindow(100, 100); |
| 260 var mockSizer = new MockSizer(); | 264 var mockSizer = new MockSizer(); |
| 261 var mockCallback = new MockViewportChangedCallback(); | 265 var mockCallback = new MockViewportChangedCallback(); |
| 262 var viewport = new Viewport(mockWindow, mockSizer, | 266 var viewport = new Viewport(mockWindow, mockSizer, |
| 263 mockCallback.callback, 0); | 267 mockCallback.callback, 0); |
| 264 var documentDimensions = new MockDocumentDimensions(); | 268 var documentDimensions = new MockDocumentDimensions(); |
| 265 | 269 |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 330 chrome.test.assertEq(0.5, viewport.zoom); | 334 chrome.test.assertEq(0.5, viewport.zoom); |
| 331 chrome.test.assertEq(0, viewport.position.x); | 335 chrome.test.assertEq(0, viewport.position.x); |
| 332 chrome.test.assertEq(0, viewport.position.y); | 336 chrome.test.assertEq(0, viewport.position.y); |
| 333 viewport.setZoom_(1); | 337 viewport.setZoom_(1); |
| 334 mockWindow.scrollTo(0, 175); | 338 mockWindow.scrollTo(0, 175); |
| 335 viewport.fitToPage(); | 339 viewport.fitToPage(); |
| 336 chrome.test.assertEq(0.25, viewport.zoom); | 340 chrome.test.assertEq(0.25, viewport.zoom); |
| 337 // The page will be centred because it is less than the document width. | 341 // The page will be centred because it is less than the document width. |
| 338 chrome.test.assertEq(12.5, viewport.position.x); | 342 chrome.test.assertEq(12.5, viewport.position.x); |
| 339 chrome.test.assertEq(50, viewport.position.y); | 343 chrome.test.assertEq(50, viewport.position.y); |
| 344 chrome.test.succeed(); |
| 340 }, | 345 }, |
| 341 | 346 |
| 342 function testGoToPage() { | 347 function testGoToPage() { |
| 343 var mockWindow = new MockWindow(100, 100); | 348 var mockWindow = new MockWindow(100, 100); |
| 344 var mockSizer = new MockSizer(); | 349 var mockSizer = new MockSizer(); |
| 345 var mockCallback = new MockViewportChangedCallback(); | 350 var mockCallback = new MockViewportChangedCallback(); |
| 346 var viewport = new Viewport(mockWindow, mockSizer, | 351 var viewport = new Viewport(mockWindow, mockSizer, |
| 347 mockCallback.callback, 0); | 352 mockCallback.callback, 0); |
| 348 var documentDimensions = new MockDocumentDimensions(); | 353 var documentDimensions = new MockDocumentDimensions(); |
| 349 | 354 |
| (...skipping 20 matching lines...) Expand all Loading... |
| 370 chrome.test.assertTrue(mockCallback.wasCalled); | 375 chrome.test.assertTrue(mockCallback.wasCalled); |
| 371 chrome.test.assertEq(0, viewport.position.x); | 376 chrome.test.assertEq(0, viewport.position.x); |
| 372 chrome.test.assertEq(300, viewport.position.y); | 377 chrome.test.assertEq(300, viewport.position.y); |
| 373 | 378 |
| 374 viewport.setZoom_(0.5); | 379 viewport.setZoom_(0.5); |
| 375 mockCallback.reset(); | 380 mockCallback.reset(); |
| 376 viewport.goToPage(2) | 381 viewport.goToPage(2) |
| 377 chrome.test.assertTrue(mockCallback.wasCalled); | 382 chrome.test.assertTrue(mockCallback.wasCalled); |
| 378 chrome.test.assertEq(0, viewport.position.x); | 383 chrome.test.assertEq(0, viewport.position.x); |
| 379 chrome.test.assertEq(150, viewport.position.y); | 384 chrome.test.assertEq(150, viewport.position.y); |
| 385 chrome.test.succeed(); |
| 380 }, | 386 }, |
| 381 | 387 |
| 382 function testGetPageScreenRect() { | 388 function testGetPageScreenRect() { |
| 383 var mockWindow = new MockWindow(100, 100); | 389 var mockWindow = new MockWindow(100, 100); |
| 384 var mockSizer = new MockSizer(); | 390 var mockSizer = new MockSizer(); |
| 385 var mockCallback = new MockViewportChangedCallback(); | 391 var mockCallback = new MockViewportChangedCallback(); |
| 386 var viewport = new Viewport(mockWindow, mockSizer, | 392 var viewport = new Viewport(mockWindow, mockSizer, |
| 387 mockCallback.callback, 0); | 393 mockCallback.callback, 0); |
| 388 var documentDimensions = new MockDocumentDimensions(); | 394 var documentDimensions = new MockDocumentDimensions(); |
| 389 documentDimensions.addPage(100, 100); | 395 documentDimensions.addPage(100, 100); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 412 | 418 |
| 413 // Check the rect of the second page is positioned/sized correctly. | 419 // Check the rect of the second page is positioned/sized correctly. |
| 414 mockWindow.scrollTo(0, 100); | 420 mockWindow.scrollTo(0, 100); |
| 415 rect1 = viewport.getPageScreenRect(1); | 421 rect1 = viewport.getPageScreenRect(1); |
| 416 chrome.test.assertEq(Viewport.PAGE_SHADOW.left, rect1.x); | 422 chrome.test.assertEq(Viewport.PAGE_SHADOW.left, rect1.x); |
| 417 chrome.test.assertEq(Viewport.PAGE_SHADOW.top, rect1.y); | 423 chrome.test.assertEq(Viewport.PAGE_SHADOW.top, rect1.y); |
| 418 chrome.test.assertEq(200 - Viewport.PAGE_SHADOW.right - | 424 chrome.test.assertEq(200 - Viewport.PAGE_SHADOW.right - |
| 419 Viewport.PAGE_SHADOW.left, rect1.width); | 425 Viewport.PAGE_SHADOW.left, rect1.width); |
| 420 chrome.test.assertEq(200 - Viewport.PAGE_SHADOW.bottom - | 426 chrome.test.assertEq(200 - Viewport.PAGE_SHADOW.bottom - |
| 421 Viewport.PAGE_SHADOW.top, rect1.height); | 427 Viewport.PAGE_SHADOW.top, rect1.height); |
| 428 chrome.test.succeed(); |
| 422 } | 429 } |
| 423 ]; | 430 ]; |
| 424 | 431 |
| 425 function runTests() { | 432 chrome.test.runTests(tests); |
| 426 for (var i = 0; i < tests.length; ++i) { | |
| 427 console.log('Running: ' + tests[i].name); | |
| 428 tests[i](); | |
| 429 } | |
| 430 chrome.test.notifyPass(); | |
| 431 } | |
| 432 | |
| 433 runTests(); | |
| OLD | NEW |