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 |