| 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 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 61 this.reset = function() { | 61 this.reset = function() { |
| 62 this.width = 0; | 62 this.width = 0; |
| 63 this.height = 0; | 63 this.height = 0; |
| 64 this.pageDimensions = []; | 64 this.pageDimensions = []; |
| 65 }; | 65 }; |
| 66 } | 66 } |
| 67 | 67 |
| 68 var tests = [ | 68 var tests = [ |
| 69 function testDocumentNeedsScrollbars() { | 69 function testDocumentNeedsScrollbars() { |
| 70 var viewport = new Viewport(new MockWindow(100, 100), new MockSizer(), | 70 var viewport = new Viewport(new MockWindow(100, 100), new MockSizer(), |
| 71 function() {}, 0); | 71 function() {}, function() {}, function() {}, 0); |
| 72 var scrollbars; | 72 var scrollbars; |
| 73 | 73 |
| 74 viewport.setDocumentDimensions(new MockDocumentDimensions(90, 90)); | 74 viewport.setDocumentDimensions(new MockDocumentDimensions(90, 90)); |
| 75 scrollbars = viewport.documentNeedsScrollbars_(1); | 75 scrollbars = viewport.documentNeedsScrollbars_(1); |
| 76 chrome.test.assertFalse(scrollbars.vertical); | 76 chrome.test.assertFalse(scrollbars.vertical); |
| 77 chrome.test.assertFalse(scrollbars.horizontal); | 77 chrome.test.assertFalse(scrollbars.horizontal); |
| 78 | 78 |
| 79 viewport.setDocumentDimensions(new MockDocumentDimensions(100, 100)); | 79 viewport.setDocumentDimensions(new MockDocumentDimensions(100, 100)); |
| 80 scrollbars = viewport.documentNeedsScrollbars_(1); | 80 scrollbars = viewport.documentNeedsScrollbars_(1); |
| 81 chrome.test.assertFalse(scrollbars.vertical); | 81 chrome.test.assertFalse(scrollbars.vertical); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 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 chrome.test.succeed(); |
| 104 }, | 104 }, |
| 105 | 105 |
| 106 function testSetZoom() { | 106 function testSetZoom() { |
| 107 var mockWindow = new MockWindow(100, 100); | 107 var mockWindow = new MockWindow(100, 100); |
| 108 var mockSizer = new MockSizer(); | 108 var mockSizer = new MockSizer(); |
| 109 var mockCallback = new MockViewportChangedCallback(); | 109 var mockCallback = new MockViewportChangedCallback(); |
| 110 var viewport = new Viewport(mockWindow, mockSizer, | 110 var viewport = new Viewport(mockWindow, mockSizer, mockCallback.callback, |
| 111 mockCallback.callback, 0); | 111 function() {}, function() {}, 0); |
| 112 | 112 |
| 113 // Test setting the zoom without the document dimensions set. The sizer | 113 // Test setting the zoom without the document dimensions set. The sizer |
| 114 // shouldn't change size. | 114 // shouldn't change size. |
| 115 mockCallback.reset(); | 115 mockCallback.reset(); |
| 116 viewport.setZoom_(0.5); | 116 viewport.setZoomForTest_(0.5); |
| 117 chrome.test.assertEq(0.5, viewport.zoom); | 117 chrome.test.assertEq(0.5, viewport.zoom); |
| 118 chrome.test.assertTrue(mockCallback.wasCalled); | 118 chrome.test.assertTrue(mockCallback.wasCalled); |
| 119 chrome.test.assertEq('0px', mockSizer.style.width); | 119 chrome.test.assertEq('0px', mockSizer.style.width); |
| 120 chrome.test.assertEq('0px', mockSizer.style.height); | 120 chrome.test.assertEq('0px', mockSizer.style.height); |
| 121 chrome.test.assertEq(0, mockWindow.pageXOffset); | 121 chrome.test.assertEq(0, mockWindow.pageXOffset); |
| 122 chrome.test.assertEq(0, mockWindow.pageYOffset); | 122 chrome.test.assertEq(0, mockWindow.pageYOffset); |
| 123 | 123 |
| 124 viewport.setZoom_(1); | 124 viewport.setZoomForTest_(1); |
| 125 viewport.setDocumentDimensions(new MockDocumentDimensions(200, 200)); | 125 viewport.setDocumentDimensions(new MockDocumentDimensions(200, 200)); |
| 126 | 126 |
| 127 // Test zooming out. | 127 // Test zooming out. |
| 128 mockCallback.reset(); | 128 mockCallback.reset(); |
| 129 viewport.setZoom_(0.5); | 129 viewport.setZoomForTest_(0.5); |
| 130 chrome.test.assertEq(0.5, viewport.zoom); | 130 chrome.test.assertEq(0.5, viewport.zoom); |
| 131 chrome.test.assertTrue(mockCallback.wasCalled); | 131 chrome.test.assertTrue(mockCallback.wasCalled); |
| 132 chrome.test.assertEq('100px', mockSizer.style.width); | 132 chrome.test.assertEq('100px', mockSizer.style.width); |
| 133 chrome.test.assertEq('100px', mockSizer.style.height); | 133 chrome.test.assertEq('100px', mockSizer.style.height); |
| 134 | 134 |
| 135 // Test zooming in. | 135 // Test zooming in. |
| 136 mockCallback.reset(); | 136 mockCallback.reset(); |
| 137 viewport.setZoom_(2); | 137 viewport.setZoomForTest_(2); |
| 138 chrome.test.assertEq(2, viewport.zoom); | 138 chrome.test.assertEq(2, viewport.zoom); |
| 139 chrome.test.assertTrue(mockCallback.wasCalled); | 139 chrome.test.assertTrue(mockCallback.wasCalled); |
| 140 chrome.test.assertEq('400px', mockSizer.style.width); | 140 chrome.test.assertEq('400px', mockSizer.style.width); |
| 141 chrome.test.assertEq('400px', mockSizer.style.height); | 141 chrome.test.assertEq('400px', mockSizer.style.height); |
| 142 | 142 |
| 143 // 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 |
| 144 // center of the page. | 144 // center of the page. |
| 145 viewport.setZoom_(1); | 145 viewport.setZoomForTest_(1); |
| 146 mockWindow.pageXOffset = 50; | 146 mockWindow.pageXOffset = 50; |
| 147 mockWindow.pageYOffset = 50; | 147 mockWindow.pageYOffset = 50; |
| 148 viewport.setZoom_(2); | 148 viewport.setZoomForTest_(2); |
| 149 chrome.test.assertEq('400px', mockSizer.style.width); | 149 chrome.test.assertEq('400px', mockSizer.style.width); |
| 150 chrome.test.assertEq('400px', mockSizer.style.height); | 150 chrome.test.assertEq('400px', mockSizer.style.height); |
| 151 chrome.test.assertEq(150, mockWindow.pageXOffset); | 151 chrome.test.assertEq(150, mockWindow.pageXOffset); |
| 152 chrome.test.assertEq(150, mockWindow.pageYOffset); | 152 chrome.test.assertEq(150, mockWindow.pageYOffset); |
| 153 chrome.test.succeed(); | 153 chrome.test.succeed(); |
| 154 }, | 154 }, |
| 155 | 155 |
| 156 function testGetMostVisiblePage() { | 156 function testGetMostVisiblePage() { |
| 157 var mockWindow = new MockWindow(100, 100); | 157 var mockWindow = new MockWindow(100, 100); |
| 158 var viewport = new Viewport(mockWindow, new MockSizer(), function() {}, 0); | 158 var viewport = new Viewport(mockWindow, new MockSizer(), function() {}, |
| 159 function() {}, function() {}, 0); |
| 159 | 160 |
| 160 var documentDimensions = new MockDocumentDimensions(100, 100); | 161 var documentDimensions = new MockDocumentDimensions(100, 100); |
| 161 documentDimensions.addPage(100, 100); | 162 documentDimensions.addPage(100, 100); |
| 162 documentDimensions.addPage(150, 100); | 163 documentDimensions.addPage(150, 100); |
| 163 documentDimensions.addPage(100, 200); | 164 documentDimensions.addPage(100, 200); |
| 164 viewport.setDocumentDimensions(documentDimensions); | 165 viewport.setDocumentDimensions(documentDimensions); |
| 165 viewport.setZoom_(1); | 166 viewport.setZoomForTest_(1); |
| 166 | 167 |
| 167 // Scrolled to the start of the first page. | 168 // Scrolled to the start of the first page. |
| 168 mockWindow.scrollTo(0, 0); | 169 mockWindow.scrollTo(0, 0); |
| 169 chrome.test.assertEq(0, viewport.getMostVisiblePage()); | 170 chrome.test.assertEq(0, viewport.getMostVisiblePage()); |
| 170 | 171 |
| 171 // Scrolled to the start of the second page. | 172 // Scrolled to the start of the second page. |
| 172 mockWindow.scrollTo(0, 100); | 173 mockWindow.scrollTo(0, 100); |
| 173 chrome.test.assertEq(1, viewport.getMostVisiblePage()); | 174 chrome.test.assertEq(1, viewport.getMostVisiblePage()); |
| 174 | 175 |
| 175 // Scrolled half way through the first page. | 176 // Scrolled half way through the first page. |
| 176 mockWindow.scrollTo(0, 50); | 177 mockWindow.scrollTo(0, 50); |
| 177 chrome.test.assertEq(0, viewport.getMostVisiblePage()); | 178 chrome.test.assertEq(0, viewport.getMostVisiblePage()); |
| 178 | 179 |
| 179 // Scrolled just over half way through the first page. | 180 // Scrolled just over half way through the first page. |
| 180 mockWindow.scrollTo(0, 51); | 181 mockWindow.scrollTo(0, 51); |
| 181 chrome.test.assertEq(1, viewport.getMostVisiblePage()); | 182 chrome.test.assertEq(1, viewport.getMostVisiblePage()); |
| 182 | 183 |
| 183 // Scrolled most of the way through the second page. | 184 // Scrolled most of the way through the second page. |
| 184 mockWindow.scrollTo(0, 180); | 185 mockWindow.scrollTo(0, 180); |
| 185 chrome.test.assertEq(2, viewport.getMostVisiblePage()); | 186 chrome.test.assertEq(2, viewport.getMostVisiblePage()); |
| 186 | 187 |
| 187 // Scrolled just over half way through the first page with 2x zoom. | 188 // Scrolled just over half way through the first page with 2x zoom. |
| 188 viewport.setZoom_(2); | 189 viewport.setZoomForTest_(2); |
| 189 mockWindow.scrollTo(0, 151); | 190 mockWindow.scrollTo(0, 151); |
| 190 chrome.test.assertEq(1, viewport.getMostVisiblePage()); | 191 chrome.test.assertEq(1, viewport.getMostVisiblePage()); |
| 191 chrome.test.succeed(); | 192 chrome.test.succeed(); |
| 192 }, | 193 }, |
| 193 | 194 |
| 194 function testFitToWidth() { | 195 function testFitToWidth() { |
| 195 var mockWindow = new MockWindow(100, 100); | 196 var mockWindow = new MockWindow(100, 100); |
| 196 var mockSizer = new MockSizer(); | 197 var mockSizer = new MockSizer(); |
| 197 var mockCallback = new MockViewportChangedCallback(); | 198 var mockCallback = new MockViewportChangedCallback(); |
| 198 var viewport = new Viewport(mockWindow, mockSizer, | 199 var viewport = new Viewport(mockWindow, mockSizer, mockCallback.callback, |
| 199 mockCallback.callback, 0); | 200 function() {}, function() {}, 0); |
| 200 var documentDimensions = new MockDocumentDimensions(); | 201 var documentDimensions = new MockDocumentDimensions(); |
| 201 | 202 |
| 202 // Test with a document width which matches the window width. | 203 // Test with a document width which matches the window width. |
| 203 documentDimensions.addPage(100, 100); | 204 documentDimensions.addPage(100, 100); |
| 204 viewport.setDocumentDimensions(documentDimensions); | 205 viewport.setDocumentDimensions(documentDimensions); |
| 205 viewport.setZoom_(0.1); | 206 viewport.setZoomForTest_(0.1); |
| 206 mockCallback.reset(); | 207 mockCallback.reset(); |
| 207 viewport.fitToWidth(); | 208 viewport.fitToWidth(); |
| 208 chrome.test.assertTrue(mockCallback.wasCalled); | 209 chrome.test.assertTrue(mockCallback.wasCalled); |
| 209 chrome.test.assertEq('100px', mockSizer.style.width); | 210 chrome.test.assertEq('100px', mockSizer.style.width); |
| 210 chrome.test.assertEq(1, viewport.zoom); | 211 chrome.test.assertEq(1, viewport.zoom); |
| 211 | 212 |
| 212 // Test with a document width which is twice the size of the window width. | 213 // Test with a document width which is twice the size of the window width. |
| 213 documentDimensions.reset(); | 214 documentDimensions.reset(); |
| 214 documentDimensions.addPage(200, 100); | 215 documentDimensions.addPage(200, 100); |
| 215 viewport.setDocumentDimensions(documentDimensions); | 216 viewport.setDocumentDimensions(documentDimensions); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 227 viewport.fitToWidth(); | 228 viewport.fitToWidth(); |
| 228 chrome.test.assertTrue(mockCallback.wasCalled); | 229 chrome.test.assertTrue(mockCallback.wasCalled); |
| 229 chrome.test.assertEq('100px', mockSizer.style.width); | 230 chrome.test.assertEq('100px', mockSizer.style.width); |
| 230 chrome.test.assertEq(2, viewport.zoom); | 231 chrome.test.assertEq(2, viewport.zoom); |
| 231 | 232 |
| 232 // Test that the scroll position stays the same relative to the page after | 233 // Test that the scroll position stays the same relative to the page after |
| 233 // fit to page is called. | 234 // fit to page is called. |
| 234 documentDimensions.reset(); | 235 documentDimensions.reset(); |
| 235 documentDimensions.addPage(50, 400); | 236 documentDimensions.addPage(50, 400); |
| 236 viewport.setDocumentDimensions(documentDimensions); | 237 viewport.setDocumentDimensions(documentDimensions); |
| 237 viewport.setZoom_(1); | 238 viewport.setZoomForTest_(1); |
| 238 mockWindow.scrollTo(0, 100); | 239 mockWindow.scrollTo(0, 100); |
| 239 mockCallback.reset(); | 240 mockCallback.reset(); |
| 240 viewport.fitToWidth(); | 241 viewport.fitToWidth(); |
| 241 chrome.test.assertTrue(mockCallback.wasCalled); | 242 chrome.test.assertTrue(mockCallback.wasCalled); |
| 242 chrome.test.assertEq(2, viewport.zoom); | 243 chrome.test.assertEq(2, viewport.zoom); |
| 243 chrome.test.assertEq(0, viewport.position.x); | 244 chrome.test.assertEq(0, viewport.position.x); |
| 244 chrome.test.assertEq(200, viewport.position.y); | 245 chrome.test.assertEq(200, viewport.position.y); |
| 245 | 246 |
| 246 // Test fitting works with scrollbars. The page will need to be zoomed to | 247 // Test fitting works with scrollbars. The page will need to be zoomed to |
| 247 // fit to width, which will cause the page height to span outside of the | 248 // fit to width, which will cause the page height to span outside of the |
| 248 // viewport, triggering 15px scrollbars to be shown. | 249 // viewport, triggering 15px scrollbars to be shown. |
| 249 viewport = new Viewport(mockWindow, mockSizer, | 250 viewport = new Viewport(mockWindow, mockSizer, mockCallback.callback, |
| 250 mockCallback.callback, 15); | 251 function() {}, function() {}, 15); |
| 251 documentDimensions.reset(); | 252 documentDimensions.reset(); |
| 252 documentDimensions.addPage(50, 100); | 253 documentDimensions.addPage(50, 100); |
| 253 viewport.setDocumentDimensions(documentDimensions); | 254 viewport.setDocumentDimensions(documentDimensions); |
| 254 mockCallback.reset(); | 255 mockCallback.reset(); |
| 255 viewport.fitToWidth(); | 256 viewport.fitToWidth(); |
| 256 chrome.test.assertTrue(mockCallback.wasCalled); | 257 chrome.test.assertTrue(mockCallback.wasCalled); |
| 257 chrome.test.assertEq('85px', mockSizer.style.width); | 258 chrome.test.assertEq('85px', mockSizer.style.width); |
| 258 chrome.test.assertEq(1.7, viewport.zoom); | 259 chrome.test.assertEq(1.7, viewport.zoom); |
| 259 chrome.test.succeed(); | 260 chrome.test.succeed(); |
| 260 }, | 261 }, |
| 261 | 262 |
| 262 function testFitToPage() { | 263 function testFitToPage() { |
| 263 var mockWindow = new MockWindow(100, 100); | 264 var mockWindow = new MockWindow(100, 100); |
| 264 var mockSizer = new MockSizer(); | 265 var mockSizer = new MockSizer(); |
| 265 var mockCallback = new MockViewportChangedCallback(); | 266 var mockCallback = new MockViewportChangedCallback(); |
| 266 var viewport = new Viewport(mockWindow, mockSizer, | 267 var viewport = new Viewport(mockWindow, mockSizer, mockCallback.callback, |
| 267 mockCallback.callback, 0); | 268 function() {}, function() {}, 0); |
| 268 var documentDimensions = new MockDocumentDimensions(); | 269 var documentDimensions = new MockDocumentDimensions(); |
| 269 | 270 |
| 270 // Test with a page size which matches the window size. | 271 // Test with a page size which matches the window size. |
| 271 documentDimensions.addPage(100, 100); | 272 documentDimensions.addPage(100, 100); |
| 272 viewport.setDocumentDimensions(documentDimensions); | 273 viewport.setDocumentDimensions(documentDimensions); |
| 273 viewport.setZoom_(0.1); | 274 viewport.setZoomForTest_(0.1); |
| 274 mockCallback.reset(); | 275 mockCallback.reset(); |
| 275 viewport.fitToPage(); | 276 viewport.fitToPage(); |
| 276 chrome.test.assertTrue(mockCallback.wasCalled); | 277 chrome.test.assertTrue(mockCallback.wasCalled); |
| 277 chrome.test.assertEq('100px', mockSizer.style.width); | 278 chrome.test.assertEq('100px', mockSizer.style.width); |
| 278 chrome.test.assertEq('100px', mockSizer.style.height); | 279 chrome.test.assertEq('100px', mockSizer.style.height); |
| 279 chrome.test.assertEq(1, viewport.zoom); | 280 chrome.test.assertEq(1, viewport.zoom); |
| 280 | 281 |
| 281 // Test with a page size whose width is larger than its height. | 282 // Test with a page size whose width is larger than its height. |
| 282 documentDimensions.reset(); | 283 documentDimensions.reset(); |
| 283 documentDimensions.addPage(200, 100); | 284 documentDimensions.addPage(200, 100); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 299 chrome.test.assertEq('50px', mockSizer.style.width); | 300 chrome.test.assertEq('50px', mockSizer.style.width); |
| 300 chrome.test.assertEq('100px', mockSizer.style.height); | 301 chrome.test.assertEq('100px', mockSizer.style.height); |
| 301 chrome.test.assertEq(0.5, viewport.zoom); | 302 chrome.test.assertEq(0.5, viewport.zoom); |
| 302 | 303 |
| 303 // Test that when there are multiple pages the most visible page is sized | 304 // Test that when there are multiple pages the most visible page is sized |
| 304 // to. | 305 // to. |
| 305 documentDimensions.reset(); | 306 documentDimensions.reset(); |
| 306 documentDimensions.addPage(200, 100); | 307 documentDimensions.addPage(200, 100); |
| 307 documentDimensions.addPage(100, 400); | 308 documentDimensions.addPage(100, 400); |
| 308 viewport.setDocumentDimensions(documentDimensions); | 309 viewport.setDocumentDimensions(documentDimensions); |
| 309 viewport.setZoom_(1); | 310 viewport.setZoomForTest_(1); |
| 310 mockWindow.scrollTo(0, 0); | 311 mockWindow.scrollTo(0, 0); |
| 311 mockCallback.reset(); | 312 mockCallback.reset(); |
| 312 viewport.fitToPage(); | 313 viewport.fitToPage(); |
| 313 chrome.test.assertTrue(mockCallback.wasCalled); | 314 chrome.test.assertTrue(mockCallback.wasCalled); |
| 314 chrome.test.assertEq('100px', mockSizer.style.width); | 315 chrome.test.assertEq('100px', mockSizer.style.width); |
| 315 chrome.test.assertEq('250px', mockSizer.style.height); | 316 chrome.test.assertEq('250px', mockSizer.style.height); |
| 316 chrome.test.assertEq(0.5, viewport.zoom); | 317 chrome.test.assertEq(0.5, viewport.zoom); |
| 317 viewport.setZoom_(1); | 318 viewport.setZoomForTest_(1); |
| 318 mockWindow.scrollTo(0, 100); | 319 mockWindow.scrollTo(0, 100); |
| 319 mockCallback.reset(); | 320 mockCallback.reset(); |
| 320 viewport.fitToPage(); | 321 viewport.fitToPage(); |
| 321 chrome.test.assertTrue(mockCallback.wasCalled); | 322 chrome.test.assertTrue(mockCallback.wasCalled); |
| 322 chrome.test.assertEq('50px', mockSizer.style.width); | 323 chrome.test.assertEq('50px', mockSizer.style.width); |
| 323 chrome.test.assertEq('125px', mockSizer.style.height); | 324 chrome.test.assertEq('125px', mockSizer.style.height); |
| 324 chrome.test.assertEq(0.25, viewport.zoom); | 325 chrome.test.assertEq(0.25, viewport.zoom); |
| 325 | 326 |
| 326 // Test that the top of the most visible page is scrolled to. | 327 // Test that the top of the most visible page is scrolled to. |
| 327 documentDimensions.reset(); | 328 documentDimensions.reset(); |
| 328 documentDimensions.addPage(200, 200); | 329 documentDimensions.addPage(200, 200); |
| 329 documentDimensions.addPage(100, 400); | 330 documentDimensions.addPage(100, 400); |
| 330 viewport.setDocumentDimensions(documentDimensions); | 331 viewport.setDocumentDimensions(documentDimensions); |
| 331 viewport.setZoom_(1); | 332 viewport.setZoomForTest_(1); |
| 332 mockWindow.scrollTo(0, 0); | 333 mockWindow.scrollTo(0, 0); |
| 333 viewport.fitToPage(); | 334 viewport.fitToPage(); |
| 334 chrome.test.assertEq(0.5, viewport.zoom); | 335 chrome.test.assertEq(0.5, viewport.zoom); |
| 335 chrome.test.assertEq(0, viewport.position.x); | 336 chrome.test.assertEq(0, viewport.position.x); |
| 336 chrome.test.assertEq(0, viewport.position.y); | 337 chrome.test.assertEq(0, viewport.position.y); |
| 337 viewport.setZoom_(1); | 338 viewport.setZoomForTest_(1); |
| 338 mockWindow.scrollTo(0, 175); | 339 mockWindow.scrollTo(0, 175); |
| 339 viewport.fitToPage(); | 340 viewport.fitToPage(); |
| 340 chrome.test.assertEq(0.25, viewport.zoom); | 341 chrome.test.assertEq(0.25, viewport.zoom); |
| 341 // The page will be centred because it is less than the document width. | 342 // The page will be centred because it is less than the document width. |
| 342 chrome.test.assertEq(12.5, viewport.position.x); | 343 chrome.test.assertEq(12.5, viewport.position.x); |
| 343 chrome.test.assertEq(50, viewport.position.y); | 344 chrome.test.assertEq(50, viewport.position.y); |
| 344 chrome.test.succeed(); | 345 chrome.test.succeed(); |
| 345 }, | 346 }, |
| 346 | 347 |
| 347 function testGoToPage() { | 348 function testGoToPage() { |
| 348 var mockWindow = new MockWindow(100, 100); | 349 var mockWindow = new MockWindow(100, 100); |
| 349 var mockSizer = new MockSizer(); | 350 var mockSizer = new MockSizer(); |
| 350 var mockCallback = new MockViewportChangedCallback(); | 351 var mockCallback = new MockViewportChangedCallback(); |
| 351 var viewport = new Viewport(mockWindow, mockSizer, | 352 var viewport = new Viewport(mockWindow, mockSizer, mockCallback.callback, |
| 352 mockCallback.callback, 0); | 353 function() {}, function() {}, 0); |
| 353 var documentDimensions = new MockDocumentDimensions(); | 354 var documentDimensions = new MockDocumentDimensions(); |
| 354 | 355 |
| 355 documentDimensions.addPage(100, 100); | 356 documentDimensions.addPage(100, 100); |
| 356 documentDimensions.addPage(200, 200); | 357 documentDimensions.addPage(200, 200); |
| 357 documentDimensions.addPage(100, 400); | 358 documentDimensions.addPage(100, 400); |
| 358 viewport.setDocumentDimensions(documentDimensions); | 359 viewport.setDocumentDimensions(documentDimensions); |
| 359 viewport.setZoom_(1); | 360 viewport.setZoomForTest_(1); |
| 360 | 361 |
| 361 mockCallback.reset(); | 362 mockCallback.reset(); |
| 362 viewport.goToPage(0); | 363 viewport.goToPage(0); |
| 363 chrome.test.assertTrue(mockCallback.wasCalled); | 364 chrome.test.assertTrue(mockCallback.wasCalled); |
| 364 chrome.test.assertEq(0, viewport.position.x); | 365 chrome.test.assertEq(0, viewport.position.x); |
| 365 chrome.test.assertEq(0, viewport.position.y); | 366 chrome.test.assertEq(0, viewport.position.y); |
| 366 | 367 |
| 367 mockCallback.reset(); | 368 mockCallback.reset(); |
| 368 viewport.goToPage(1); | 369 viewport.goToPage(1); |
| 369 chrome.test.assertTrue(mockCallback.wasCalled); | 370 chrome.test.assertTrue(mockCallback.wasCalled); |
| 370 chrome.test.assertEq(0, viewport.position.x); | 371 chrome.test.assertEq(0, viewport.position.x); |
| 371 chrome.test.assertEq(100, viewport.position.y); | 372 chrome.test.assertEq(100, viewport.position.y); |
| 372 | 373 |
| 373 mockCallback.reset(); | 374 mockCallback.reset(); |
| 374 viewport.goToPage(2); | 375 viewport.goToPage(2); |
| 375 chrome.test.assertTrue(mockCallback.wasCalled); | 376 chrome.test.assertTrue(mockCallback.wasCalled); |
| 376 chrome.test.assertEq(0, viewport.position.x); | 377 chrome.test.assertEq(0, viewport.position.x); |
| 377 chrome.test.assertEq(300, viewport.position.y); | 378 chrome.test.assertEq(300, viewport.position.y); |
| 378 | 379 |
| 379 viewport.setZoom_(0.5); | 380 viewport.setZoomForTest_(0.5); |
| 380 mockCallback.reset(); | 381 mockCallback.reset(); |
| 381 viewport.goToPage(2); | 382 viewport.goToPage(2); |
| 382 chrome.test.assertTrue(mockCallback.wasCalled); | 383 chrome.test.assertTrue(mockCallback.wasCalled); |
| 383 chrome.test.assertEq(0, viewport.position.x); | 384 chrome.test.assertEq(0, viewport.position.x); |
| 384 chrome.test.assertEq(150, viewport.position.y); | 385 chrome.test.assertEq(150, viewport.position.y); |
| 385 chrome.test.succeed(); | 386 chrome.test.succeed(); |
| 386 }, | 387 }, |
| 387 | 388 |
| 388 function testGetPageScreenRect() { | 389 function testGetPageScreenRect() { |
| 389 var mockWindow = new MockWindow(100, 100); | 390 var mockWindow = new MockWindow(100, 100); |
| 390 var mockSizer = new MockSizer(); | 391 var mockSizer = new MockSizer(); |
| 391 var mockCallback = new MockViewportChangedCallback(); | 392 var mockCallback = new MockViewportChangedCallback(); |
| 392 var viewport = new Viewport(mockWindow, mockSizer, | 393 var viewport = new Viewport(mockWindow, mockSizer, mockCallback.callback, |
| 393 mockCallback.callback, 0); | 394 function() {}, function() {}, 0); |
| 394 var documentDimensions = new MockDocumentDimensions(); | 395 var documentDimensions = new MockDocumentDimensions(); |
| 395 documentDimensions.addPage(100, 100); | 396 documentDimensions.addPage(100, 100); |
| 396 documentDimensions.addPage(200, 200); | 397 documentDimensions.addPage(200, 200); |
| 397 viewport.setDocumentDimensions(documentDimensions); | 398 viewport.setDocumentDimensions(documentDimensions); |
| 398 viewport.setZoom_(1); | 399 viewport.setZoomForTest_(1); |
| 399 | 400 |
| 400 // Test that the rect of the first page is positioned/sized correctly. | 401 // Test that the rect of the first page is positioned/sized correctly. |
| 401 mockWindow.scrollTo(0, 0); | 402 mockWindow.scrollTo(0, 0); |
| 402 var rect1 = viewport.getPageScreenRect(0); | 403 var rect1 = viewport.getPageScreenRect(0); |
| 403 chrome.test.assertEq(Viewport.PAGE_SHADOW.left + 100 / 2, rect1.x); | 404 chrome.test.assertEq(Viewport.PAGE_SHADOW.left + 100 / 2, rect1.x); |
| 404 chrome.test.assertEq(Viewport.PAGE_SHADOW.top, rect1.y); | 405 chrome.test.assertEq(Viewport.PAGE_SHADOW.top, rect1.y); |
| 405 chrome.test.assertEq(100 - Viewport.PAGE_SHADOW.right - | 406 chrome.test.assertEq(100 - Viewport.PAGE_SHADOW.right - |
| 406 Viewport.PAGE_SHADOW.left, rect1.width); | 407 Viewport.PAGE_SHADOW.left, rect1.width); |
| 407 chrome.test.assertEq(100 - Viewport.PAGE_SHADOW.bottom - | 408 chrome.test.assertEq(100 - Viewport.PAGE_SHADOW.bottom - |
| 408 Viewport.PAGE_SHADOW.top, rect1.height); | 409 Viewport.PAGE_SHADOW.top, rect1.height); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 419 // Check the rect of the second page is positioned/sized correctly. | 420 // Check the rect of the second page is positioned/sized correctly. |
| 420 mockWindow.scrollTo(0, 100); | 421 mockWindow.scrollTo(0, 100); |
| 421 rect1 = viewport.getPageScreenRect(1); | 422 rect1 = viewport.getPageScreenRect(1); |
| 422 chrome.test.assertEq(Viewport.PAGE_SHADOW.left, rect1.x); | 423 chrome.test.assertEq(Viewport.PAGE_SHADOW.left, rect1.x); |
| 423 chrome.test.assertEq(Viewport.PAGE_SHADOW.top, rect1.y); | 424 chrome.test.assertEq(Viewport.PAGE_SHADOW.top, rect1.y); |
| 424 chrome.test.assertEq(200 - Viewport.PAGE_SHADOW.right - | 425 chrome.test.assertEq(200 - Viewport.PAGE_SHADOW.right - |
| 425 Viewport.PAGE_SHADOW.left, rect1.width); | 426 Viewport.PAGE_SHADOW.left, rect1.width); |
| 426 chrome.test.assertEq(200 - Viewport.PAGE_SHADOW.bottom - | 427 chrome.test.assertEq(200 - Viewport.PAGE_SHADOW.bottom - |
| 427 Viewport.PAGE_SHADOW.top, rect1.height); | 428 Viewport.PAGE_SHADOW.top, rect1.height); |
| 428 chrome.test.succeed(); | 429 chrome.test.succeed(); |
| 430 }, |
| 431 |
| 432 function testBeforeZoomAfterZoom() { |
| 433 var mockWindow = new MockWindow(100, 100); |
| 434 var mockSizer = new MockSizer(); |
| 435 var viewport; |
| 436 var afterZoomCalled = false; |
| 437 var beforeZoomCalled = false; |
| 438 var afterZoom = function() { |
| 439 afterZoomCalled = true; |
| 440 chrome.test.assertTrue(beforeZoomCalled); |
| 441 chrome.test.assertEq(0.5, viewport.zoom); |
| 442 }; |
| 443 var beforeZoom = function() { |
| 444 beforeZoomCalled = true; |
| 445 chrome.test.assertFalse(afterZoomCalled); |
| 446 chrome.test.assertEq(1, viewport.zoom); |
| 447 }; |
| 448 viewport = new Viewport(mockWindow, mockSizer, function() {}, |
| 449 beforeZoom, afterZoom, 0); |
| 450 viewport.setZoomForTest_(0.5); |
| 451 chrome.test.succeed(); |
| 429 } | 452 } |
| 430 ]; | 453 ]; |
| 431 | 454 |
| 432 chrome.test.runTests(tests); | 455 chrome.test.runTests(tests); |
| OLD | NEW |