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, 0); | 9 function() {}, function() {}, 10, 0); |
10 var scrollbars; | 10 var scrollbars; |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
102 chrome.test.assertEq('400px', mockSizer.style.width); | 102 chrome.test.assertEq('400px', mockSizer.style.width); |
103 chrome.test.assertEq('400px', mockSizer.style.height); | 103 chrome.test.assertEq('400px', mockSizer.style.height); |
104 chrome.test.assertEq(100, mockWindow.pageXOffset); | 104 chrome.test.assertEq(100, mockWindow.pageXOffset); |
105 chrome.test.assertEq(100, mockWindow.pageYOffset); | 105 chrome.test.assertEq(100, mockWindow.pageYOffset); |
106 mockWindow.scrollTo(250, 250); | 106 mockWindow.scrollTo(250, 250); |
107 viewport.setZoom(1); | 107 viewport.setZoom(1); |
108 chrome.test.assertEq('200px', mockSizer.style.width); | 108 chrome.test.assertEq('200px', mockSizer.style.width); |
109 chrome.test.assertEq('200px', mockSizer.style.height); | 109 chrome.test.assertEq('200px', mockSizer.style.height); |
110 chrome.test.assertEq(100, mockWindow.pageXOffset); | 110 chrome.test.assertEq(100, mockWindow.pageXOffset); |
111 chrome.test.assertEq(100, mockWindow.pageYOffset); | 111 chrome.test.assertEq(100, mockWindow.pageYOffset); |
| 112 |
| 113 var documentDimensions = new MockDocumentDimensions(0, 0); |
| 114 documentDimensions.addPage(200, 200); |
| 115 viewport.setDocumentDimensions(documentDimensions); |
| 116 mockWindow.scrollTo(0, 0); |
| 117 viewport.fitToPage(); |
| 118 viewport.setZoom(1); |
| 119 chrome.test.assertEq(Viewport.FittingType.NONE, viewport.fittingType); |
| 120 chrome.test.assertEq('200px', mockSizer.style.width); |
| 121 chrome.test.assertEq('200px', mockSizer.style.height); |
| 122 chrome.test.assertEq(0, mockWindow.pageXOffset); |
| 123 chrome.test.assertEq(0, mockWindow.pageYOffset); |
| 124 |
| 125 viewport.fitToWidth(); |
| 126 viewport.setZoom(1); |
| 127 chrome.test.assertEq(Viewport.FittingType.NONE, viewport.fittingType); |
| 128 chrome.test.assertEq('200px', mockSizer.style.width); |
| 129 chrome.test.assertEq('200px', mockSizer.style.height); |
| 130 chrome.test.assertEq(0, mockWindow.pageXOffset); |
| 131 chrome.test.assertEq(0, mockWindow.pageYOffset); |
| 132 |
112 chrome.test.succeed(); | 133 chrome.test.succeed(); |
113 }, | 134 }, |
114 | 135 |
115 function testGetMostVisiblePage() { | 136 function testGetMostVisiblePage() { |
116 var mockWindow = new MockWindow(100, 100); | 137 var mockWindow = new MockWindow(100, 100); |
117 var viewport = new Viewport(mockWindow, new MockSizer(), function() {}, | 138 var viewport = new Viewport(mockWindow, new MockSizer(), function() {}, |
118 function() {}, function() {}, 0, 0); | 139 function() {}, function() {}, 0, 0); |
119 | 140 |
120 var documentDimensions = new MockDocumentDimensions(100, 100); | 141 var documentDimensions = new MockDocumentDimensions(100, 100); |
121 documentDimensions.addPage(50, 100); | 142 documentDimensions.addPage(50, 100); |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
167 var viewport = new Viewport(mockWindow, mockSizer, mockCallback.callback, | 188 var viewport = new Viewport(mockWindow, mockSizer, mockCallback.callback, |
168 function() {}, function() {}, 0, 0); | 189 function() {}, function() {}, 0, 0); |
169 var documentDimensions = new MockDocumentDimensions(); | 190 var documentDimensions = new MockDocumentDimensions(); |
170 | 191 |
171 // Test with a document width which matches the window width. | 192 // Test with a document width which matches the window width. |
172 documentDimensions.addPage(100, 100); | 193 documentDimensions.addPage(100, 100); |
173 viewport.setDocumentDimensions(documentDimensions); | 194 viewport.setDocumentDimensions(documentDimensions); |
174 viewport.setZoom(0.1); | 195 viewport.setZoom(0.1); |
175 mockCallback.reset(); | 196 mockCallback.reset(); |
176 viewport.fitToWidth(); | 197 viewport.fitToWidth(); |
| 198 chrome.test.assertEq(Viewport.FittingType.FIT_TO_WIDTH, |
| 199 viewport.fittingType); |
177 chrome.test.assertTrue(mockCallback.wasCalled); | 200 chrome.test.assertTrue(mockCallback.wasCalled); |
178 chrome.test.assertEq('100px', mockSizer.style.width); | 201 chrome.test.assertEq('100px', mockSizer.style.width); |
179 chrome.test.assertEq(1, viewport.zoom); | 202 chrome.test.assertEq(1, viewport.zoom); |
180 | 203 |
181 // Test with a document width which is twice the size of the window width. | 204 // Test with a document width which is twice the size of the window width. |
182 documentDimensions.reset(); | 205 documentDimensions.reset(); |
183 documentDimensions.addPage(200, 100); | 206 documentDimensions.addPage(200, 100); |
184 viewport.setDocumentDimensions(documentDimensions); | 207 viewport.setDocumentDimensions(documentDimensions); |
185 mockCallback.reset(); | 208 mockCallback.reset(); |
186 viewport.fitToWidth(); | 209 viewport.fitToWidth(); |
| 210 chrome.test.assertEq(Viewport.FittingType.FIT_TO_WIDTH, |
| 211 viewport.fittingType); |
187 chrome.test.assertTrue(mockCallback.wasCalled); | 212 chrome.test.assertTrue(mockCallback.wasCalled); |
188 chrome.test.assertEq('100px', mockSizer.style.width); | 213 chrome.test.assertEq('100px', mockSizer.style.width); |
189 chrome.test.assertEq(0.5, viewport.zoom); | 214 chrome.test.assertEq(0.5, viewport.zoom); |
190 | 215 |
191 // Test with a document width which is half the size of the window width. | 216 // Test with a document width which is half the size of the window width. |
192 documentDimensions.reset(); | 217 documentDimensions.reset(); |
193 documentDimensions.addPage(50, 100); | 218 documentDimensions.addPage(50, 100); |
194 viewport.setDocumentDimensions(documentDimensions); | 219 viewport.setDocumentDimensions(documentDimensions); |
195 mockCallback.reset(); | 220 mockCallback.reset(); |
196 viewport.fitToWidth(); | 221 viewport.fitToWidth(); |
| 222 chrome.test.assertEq(Viewport.FittingType.FIT_TO_WIDTH, |
| 223 viewport.fittingType); |
197 chrome.test.assertTrue(mockCallback.wasCalled); | 224 chrome.test.assertTrue(mockCallback.wasCalled); |
198 chrome.test.assertEq('100px', mockSizer.style.width); | 225 chrome.test.assertEq('100px', mockSizer.style.width); |
199 chrome.test.assertEq(2, viewport.zoom); | 226 chrome.test.assertEq(2, viewport.zoom); |
200 | 227 |
201 // Test that the scroll position stays the same relative to the page after | 228 // Test that the scroll position stays the same relative to the page after |
202 // fit to page is called. | 229 // fit to page is called. |
203 documentDimensions.reset(); | 230 documentDimensions.reset(); |
204 documentDimensions.addPage(50, 400); | 231 documentDimensions.addPage(50, 400); |
205 viewport.setDocumentDimensions(documentDimensions); | 232 viewport.setDocumentDimensions(documentDimensions); |
206 viewport.setZoom(1); | 233 viewport.setZoom(1); |
207 mockWindow.scrollTo(0, 100); | 234 mockWindow.scrollTo(0, 100); |
208 mockCallback.reset(); | 235 mockCallback.reset(); |
209 viewport.fitToWidth(); | 236 viewport.fitToWidth(); |
| 237 chrome.test.assertEq(Viewport.FittingType.FIT_TO_WIDTH, |
| 238 viewport.fittingType); |
210 chrome.test.assertTrue(mockCallback.wasCalled); | 239 chrome.test.assertTrue(mockCallback.wasCalled); |
211 chrome.test.assertEq(2, viewport.zoom); | 240 chrome.test.assertEq(2, viewport.zoom); |
212 chrome.test.assertEq(0, viewport.position.x); | 241 chrome.test.assertEq(0, viewport.position.x); |
213 chrome.test.assertEq(200, viewport.position.y); | 242 chrome.test.assertEq(200, viewport.position.y); |
214 | 243 |
215 // 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 |
216 // 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 |
217 // viewport, triggering 15px scrollbars to be shown. | 246 // viewport, triggering 15px scrollbars to be shown. |
218 viewport = new Viewport(mockWindow, mockSizer, mockCallback.callback, | 247 viewport = new Viewport(mockWindow, mockSizer, mockCallback.callback, |
219 function() {}, function() {}, 15, 0); | 248 function() {}, function() {}, 15, 0); |
220 documentDimensions.reset(); | 249 documentDimensions.reset(); |
221 documentDimensions.addPage(50, 100); | 250 documentDimensions.addPage(50, 100); |
222 viewport.setDocumentDimensions(documentDimensions); | 251 viewport.setDocumentDimensions(documentDimensions); |
223 mockCallback.reset(); | 252 mockCallback.reset(); |
224 viewport.fitToWidth(); | 253 viewport.fitToWidth(); |
| 254 chrome.test.assertEq(Viewport.FittingType.FIT_TO_WIDTH, |
| 255 viewport.fittingType); |
225 chrome.test.assertTrue(mockCallback.wasCalled); | 256 chrome.test.assertTrue(mockCallback.wasCalled); |
226 chrome.test.assertEq('85px', mockSizer.style.width); | 257 chrome.test.assertEq('85px', mockSizer.style.width); |
227 chrome.test.assertEq(1.7, viewport.zoom); | 258 chrome.test.assertEq(1.7, viewport.zoom); |
228 chrome.test.succeed(); | 259 chrome.test.succeed(); |
229 }, | 260 }, |
230 | 261 |
231 function testFitToPage() { | 262 function testFitToPage() { |
232 var mockWindow = new MockWindow(100, 100); | 263 var mockWindow = new MockWindow(100, 100); |
233 var mockSizer = new MockSizer(); | 264 var mockSizer = new MockSizer(); |
234 var mockCallback = new MockViewportChangedCallback(); | 265 var mockCallback = new MockViewportChangedCallback(); |
235 var viewport = new Viewport(mockWindow, mockSizer, mockCallback.callback, | 266 var viewport = new Viewport(mockWindow, mockSizer, mockCallback.callback, |
236 function() {}, function() {}, 0, 0); | 267 function() {}, function() {}, 0, 0); |
237 var documentDimensions = new MockDocumentDimensions(); | 268 var documentDimensions = new MockDocumentDimensions(); |
238 | 269 |
239 // Test with a page size which matches the window size. | 270 // Test with a page size which matches the window size. |
240 documentDimensions.addPage(100, 100); | 271 documentDimensions.addPage(100, 100); |
241 viewport.setDocumentDimensions(documentDimensions); | 272 viewport.setDocumentDimensions(documentDimensions); |
242 viewport.setZoom(0.1); | 273 viewport.setZoom(0.1); |
243 mockCallback.reset(); | 274 mockCallback.reset(); |
244 viewport.fitToPage(); | 275 viewport.fitToPage(); |
| 276 chrome.test.assertEq(Viewport.FittingType.FIT_TO_PAGE, |
| 277 viewport.fittingType); |
245 chrome.test.assertTrue(mockCallback.wasCalled); | 278 chrome.test.assertTrue(mockCallback.wasCalled); |
246 chrome.test.assertEq('100px', mockSizer.style.width); | 279 chrome.test.assertEq('100px', mockSizer.style.width); |
247 chrome.test.assertEq('100px', mockSizer.style.height); | 280 chrome.test.assertEq('100px', mockSizer.style.height); |
248 chrome.test.assertEq(1, viewport.zoom); | 281 chrome.test.assertEq(1, viewport.zoom); |
249 | 282 |
250 // Test with a page size whose width is larger than its height. | 283 // Test with a page size whose width is larger than its height. |
251 documentDimensions.reset(); | 284 documentDimensions.reset(); |
252 documentDimensions.addPage(200, 100); | 285 documentDimensions.addPage(200, 100); |
253 viewport.setDocumentDimensions(documentDimensions); | 286 viewport.setDocumentDimensions(documentDimensions); |
254 mockCallback.reset(); | 287 mockCallback.reset(); |
255 viewport.fitToPage(); | 288 viewport.fitToPage(); |
| 289 chrome.test.assertEq(Viewport.FittingType.FIT_TO_PAGE, |
| 290 viewport.fittingType); |
256 chrome.test.assertTrue(mockCallback.wasCalled); | 291 chrome.test.assertTrue(mockCallback.wasCalled); |
257 chrome.test.assertEq('100px', mockSizer.style.width); | 292 chrome.test.assertEq('100px', mockSizer.style.width); |
258 chrome.test.assertEq('50px', mockSizer.style.height); | 293 chrome.test.assertEq('50px', mockSizer.style.height); |
259 chrome.test.assertEq(0.5, viewport.zoom); | 294 chrome.test.assertEq(0.5, viewport.zoom); |
260 | 295 |
261 // Test with a page size whose height is larger than its width. | 296 // Test with a page size whose height is larger than its width. |
262 documentDimensions.reset(); | 297 documentDimensions.reset(); |
263 documentDimensions.addPage(100, 200); | 298 documentDimensions.addPage(100, 200); |
264 viewport.setDocumentDimensions(documentDimensions); | 299 viewport.setDocumentDimensions(documentDimensions); |
265 mockCallback.reset(); | 300 mockCallback.reset(); |
266 viewport.fitToPage(); | 301 viewport.fitToPage(); |
| 302 chrome.test.assertEq(Viewport.FittingType.FIT_TO_PAGE, |
| 303 viewport.fittingType); |
267 chrome.test.assertTrue(mockCallback.wasCalled); | 304 chrome.test.assertTrue(mockCallback.wasCalled); |
268 chrome.test.assertEq('50px', mockSizer.style.width); | 305 chrome.test.assertEq('50px', mockSizer.style.width); |
269 chrome.test.assertEq('100px', mockSizer.style.height); | 306 chrome.test.assertEq('100px', mockSizer.style.height); |
270 chrome.test.assertEq(0.5, viewport.zoom); | 307 chrome.test.assertEq(0.5, viewport.zoom); |
271 | 308 |
272 // Test that when there are multiple pages the height of the most visible | 309 // Test that when there are multiple pages the height of the most visible |
273 // page and the width of the widest page are sized to. | 310 // page and the width of the widest page are sized to. |
274 documentDimensions.reset(); | 311 documentDimensions.reset(); |
275 documentDimensions.addPage(100, 100); | 312 documentDimensions.addPage(100, 100); |
276 documentDimensions.addPage(200, 400); | 313 documentDimensions.addPage(200, 400); |
277 viewport.setDocumentDimensions(documentDimensions); | 314 viewport.setDocumentDimensions(documentDimensions); |
278 viewport.setZoom(1); | 315 viewport.setZoom(1); |
279 mockWindow.scrollTo(0, 0); | 316 mockWindow.scrollTo(0, 0); |
280 mockCallback.reset(); | 317 mockCallback.reset(); |
281 viewport.fitToPage(); | 318 viewport.fitToPage(); |
| 319 chrome.test.assertEq(Viewport.FittingType.FIT_TO_PAGE, |
| 320 viewport.fittingType); |
282 chrome.test.assertTrue(mockCallback.wasCalled); | 321 chrome.test.assertTrue(mockCallback.wasCalled); |
283 chrome.test.assertEq('100px', mockSizer.style.width); | 322 chrome.test.assertEq('100px', mockSizer.style.width); |
284 chrome.test.assertEq('250px', mockSizer.style.height); | 323 chrome.test.assertEq('250px', mockSizer.style.height); |
285 chrome.test.assertEq(0.5, viewport.zoom); | 324 chrome.test.assertEq(0.5, viewport.zoom); |
286 viewport.setZoom(1); | 325 viewport.setZoom(1); |
287 mockWindow.scrollTo(0, 100); | 326 mockWindow.scrollTo(0, 100); |
288 mockCallback.reset(); | 327 mockCallback.reset(); |
289 viewport.fitToPage(); | 328 viewport.fitToPage(); |
290 chrome.test.assertTrue(mockCallback.wasCalled); | 329 chrome.test.assertTrue(mockCallback.wasCalled); |
291 chrome.test.assertEq('50px', mockSizer.style.width); | 330 chrome.test.assertEq('50px', mockSizer.style.width); |
292 chrome.test.assertEq('125px', mockSizer.style.height); | 331 chrome.test.assertEq('125px', mockSizer.style.height); |
293 chrome.test.assertEq(0.25, viewport.zoom); | 332 chrome.test.assertEq(0.25, viewport.zoom); |
294 | 333 |
295 // Test that the top of the most visible page is scrolled to. | 334 // Test that the top of the most visible page is scrolled to. |
296 documentDimensions.reset(); | 335 documentDimensions.reset(); |
297 documentDimensions.addPage(200, 200); | 336 documentDimensions.addPage(200, 200); |
298 documentDimensions.addPage(100, 400); | 337 documentDimensions.addPage(100, 400); |
299 viewport.setDocumentDimensions(documentDimensions); | 338 viewport.setDocumentDimensions(documentDimensions); |
300 viewport.setZoom(1); | 339 viewport.setZoom(1); |
301 mockWindow.scrollTo(0, 0); | 340 mockWindow.scrollTo(0, 0); |
302 viewport.fitToPage(); | 341 viewport.fitToPage(); |
| 342 chrome.test.assertEq(Viewport.FittingType.FIT_TO_PAGE, |
| 343 viewport.fittingType); |
303 chrome.test.assertEq(0.5, viewport.zoom); | 344 chrome.test.assertEq(0.5, viewport.zoom); |
304 chrome.test.assertEq(0, viewport.position.x); | 345 chrome.test.assertEq(0, viewport.position.x); |
305 chrome.test.assertEq(0, viewport.position.y); | 346 chrome.test.assertEq(0, viewport.position.y); |
306 viewport.setZoom(1); | 347 viewport.setZoom(1); |
307 mockWindow.scrollTo(0, 175); | 348 mockWindow.scrollTo(0, 175); |
308 viewport.fitToPage(); | 349 viewport.fitToPage(); |
309 chrome.test.assertEq(0.25, viewport.zoom); | 350 chrome.test.assertEq(0.25, viewport.zoom); |
310 chrome.test.assertEq(0, viewport.position.x); | 351 chrome.test.assertEq(0, viewport.position.x); |
311 chrome.test.assertEq(50, viewport.position.y); | 352 chrome.test.assertEq(50, viewport.position.y); |
312 | 353 |
313 // Test that when the window size changes, fit-to-page occurs but does not | 354 // Test that when the window size changes, fit-to-page occurs but does not |
314 // scroll to the top of the page (it should stay at the scaled scroll | 355 // scroll to the top of the page (it should stay at the scaled scroll |
315 // position). | 356 // position). |
316 mockWindow.scrollTo(0, 0); | 357 mockWindow.scrollTo(0, 0); |
317 viewport.fitToPage(); | 358 viewport.fitToPage(); |
| 359 chrome.test.assertEq(Viewport.FittingType.FIT_TO_PAGE, |
| 360 viewport.fittingType); |
318 chrome.test.assertEq(0.5, viewport.zoom); | 361 chrome.test.assertEq(0.5, viewport.zoom); |
319 mockWindow.scrollTo(0, 10); | 362 mockWindow.scrollTo(0, 10); |
320 mockWindow.setSize(50, 50); | 363 mockWindow.setSize(50, 50); |
321 chrome.test.assertEq(0.25, viewport.zoom); | 364 chrome.test.assertEq(0.25, viewport.zoom); |
322 chrome.test.assertEq(0, viewport.position.x); | 365 chrome.test.assertEq(0, viewport.position.x); |
323 chrome.test.assertEq(5, viewport.position.y); | 366 chrome.test.assertEq(5, viewport.position.y); |
324 | 367 |
325 chrome.test.succeed(); | 368 chrome.test.succeed(); |
326 }, | 369 }, |
327 | 370 |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
426 chrome.test.assertEq(1, viewport.zoom); | 469 chrome.test.assertEq(1, viewport.zoom); |
427 }; | 470 }; |
428 viewport = new Viewport(mockWindow, mockSizer, function() {}, | 471 viewport = new Viewport(mockWindow, mockSizer, function() {}, |
429 beforeZoom, afterZoom, 0, 0); | 472 beforeZoom, afterZoom, 0, 0); |
430 viewport.setZoom(0.5); | 473 viewport.setZoom(0.5); |
431 chrome.test.succeed(); | 474 chrome.test.succeed(); |
432 } | 475 } |
433 ]; | 476 ]; |
434 | 477 |
435 chrome.test.runTests(tests); | 478 chrome.test.runTests(tests); |
OLD | NEW |