Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(60)

Side by Side Diff: chrome/test/data/pdf/viewport_test.js

Issue 347763007: Improve scrolling performance in OOP PDF (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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
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
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);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698