| 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 |