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 |