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

Side by Side Diff: trunk/src/chrome/browser/resources/pdf/viewport.js

Issue 398643002: Revert 283225 "Hookup the PDF extension to the chrome extensions..." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 6 years, 5 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 /** 5 /**
6 * Returns the area of the intersection of two rectangles. 6 * Returns the area of the intersection of two rectangles.
7 * @param {Object} rect1 the first rect 7 * @param {Object} rect1 the first rect
8 * @param {Object} rect2 the second rect 8 * @param {Object} rect2 the second rect
9 * @return {number} the area of the intersection of the rects 9 * @return {number} the area of the intersection of the rects
10 */ 10 */
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
199 f(); 199 f();
200 this.allowedToChangeZoom_ = false; 200 this.allowedToChangeZoom_ = false;
201 this.afterZoomCallback_(); 201 this.afterZoomCallback_();
202 }, 202 },
203 203
204 /** 204 /**
205 * @private 205 * @private
206 * Sets the zoom of the viewport. 206 * Sets the zoom of the viewport.
207 * @param {number} newZoom the zoom level to zoom to. 207 * @param {number} newZoom the zoom level to zoom to.
208 */ 208 */
209 setZoomInternal_: function(newZoom) { 209 setZoom_: function(newZoom) {
210 if (!this.allowedToChangeZoom_) { 210 if (!this.allowedToChangeZoom_)
211 throw 'Called Viewport.setZoomInternal_ without calling ' + 211 throw 'Called Viewport.setZoom_ without calling Viewport.mightZoom_.';
212 'Viewport.mightZoom_.';
213 }
214 var oldZoom = this.zoom_; 212 var oldZoom = this.zoom_;
215 this.zoom_ = newZoom; 213 this.zoom_ = newZoom;
216 // Record the scroll position (relative to the middle of the window). 214 // Record the scroll position (relative to the middle of the window).
217 var currentScrollPos = [ 215 var currentScrollPos = [
218 (this.window_.pageXOffset + this.window_.innerWidth / 2) / oldZoom, 216 (this.window_.pageXOffset + this.window_.innerWidth / 2) / oldZoom,
219 (this.window_.pageYOffset + this.window_.innerHeight / 2) / oldZoom 217 (this.window_.pageYOffset + this.window_.innerHeight / 2) / oldZoom
220 ]; 218 ];
221 this.contentSizeChanged_(); 219 this.contentSizeChanged_();
222 // Scroll to the scaled scroll position. 220 // Scroll to the scaled scroll position.
223 this.window_.scrollTo( 221 this.window_.scrollTo(
224 currentScrollPos[0] * newZoom - this.window_.innerWidth / 2, 222 currentScrollPos[0] * newZoom - this.window_.innerWidth / 2,
225 currentScrollPos[1] * newZoom - this.window_.innerHeight / 2); 223 currentScrollPos[1] * newZoom - this.window_.innerHeight / 2);
226 }, 224 },
227 225
228 /** 226 /**
229 * Sets the zoom to the given zoom level. 227 * @private
230 * @param {number} newZoom the zoom level to zoom to. 228 * Sets the zoom for testing purposes.
231 */ 229 */
232 setZoom: function(newZoom) { 230 setZoomForTest_: function(newZoom) {
233 this.mightZoom_(function() { 231 this.mightZoom_(function() {
234 this.setZoomInternal_(newZoom); 232 this.setZoom_(newZoom);
235 this.updateViewport_();
236 }.bind(this)); 233 }.bind(this));
237 }, 234 },
238 235
239 /** 236 /**
240 * @type {number} the width of scrollbars in the viewport in pixels. 237 * @type {number} the width of scrollbars in the viewport in pixels.
241 */ 238 */
242 get scrollbarWidth() { 239 get scrollbarWidth() {
243 return this.scrollbarWidth_; 240 return this.scrollbarWidth_;
244 }, 241 },
245 242
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
377 */ 374 */
378 fitToWidth: function() { 375 fitToWidth: function() {
379 this.mightZoom_(function() { 376 this.mightZoom_(function() {
380 this.fittingType_ = Viewport.FittingType.FIT_TO_WIDTH; 377 this.fittingType_ = Viewport.FittingType.FIT_TO_WIDTH;
381 if (!this.documentDimensions_) 378 if (!this.documentDimensions_)
382 return; 379 return;
383 // Track the last y-position to stay at the same position after zooming. 380 // Track the last y-position to stay at the same position after zooming.
384 var oldY = this.window_.pageYOffset / this.zoom_; 381 var oldY = this.window_.pageYOffset / this.zoom_;
385 // When computing fit-to-width, the maximum width of a page in the 382 // When computing fit-to-width, the maximum width of a page in the
386 // document is used, which is equal to the size of the document width. 383 // document is used, which is equal to the size of the document width.
387 this.setZoomInternal_(this.computeFittingZoom_(this.documentDimensions_, 384 this.setZoom_(this.computeFittingZoom_(this.documentDimensions_, true));
388 true));
389 var page = this.getMostVisiblePage(); 385 var page = this.getMostVisiblePage();
390 this.window_.scrollTo(0, oldY * this.zoom_); 386 this.window_.scrollTo(0, oldY * this.zoom_);
391 this.updateViewport_(); 387 this.updateViewport_();
392 }.bind(this)); 388 }.bind(this));
393 }, 389 },
394 390
395 /** 391 /**
396 * Zoom the viewport so that a page consumes the entire viewport. Also scrolls 392 * Zoom the viewport so that a page consumes the entire viewport. Also scrolls
397 * to the top of the most visible page. 393 * to the top of the most visible page.
398 */ 394 */
399 fitToPage: function() { 395 fitToPage: function() {
400 this.mightZoom_(function() { 396 this.mightZoom_(function() {
401 this.fittingType_ = Viewport.FittingType.FIT_TO_PAGE; 397 this.fittingType_ = Viewport.FittingType.FIT_TO_PAGE;
402 if (!this.documentDimensions_) 398 if (!this.documentDimensions_)
403 return; 399 return;
404 var page = this.getMostVisiblePage(); 400 var page = this.getMostVisiblePage();
405 this.setZoomInternal_(this.computeFittingZoom_( 401 this.setZoom_(this.computeFittingZoom_(
406 this.pageDimensions_[page], false)); 402 this.pageDimensions_[page], false));
407 // Center the document in the page by scrolling by the amount of empty 403 // Center the document in the page by scrolling by the amount of empty
408 // space to the left of the document. 404 // space to the left of the document.
409 var xOffset = 405 var xOffset =
410 (this.documentDimensions_.width - this.pageDimensions_[page].width) * 406 (this.documentDimensions_.width - this.pageDimensions_[page].width) *
411 this.zoom_ / 2; 407 this.zoom_ / 2;
412 this.window_.scrollTo(xOffset, 408 this.window_.scrollTo(xOffset,
413 this.pageDimensions_[page].y * this.zoom_); 409 this.pageDimensions_[page].y * this.zoom_);
414 this.updateViewport_(); 410 this.updateViewport_();
415 }.bind(this)); 411 }.bind(this));
416 }, 412 },
417 413
418 /** 414 /**
419 * Zoom out to the next predefined zoom level. 415 * Zoom out to the next predefined zoom level.
420 */ 416 */
421 zoomOut: function() { 417 zoomOut: function() {
422 this.mightZoom_(function() { 418 this.mightZoom_(function() {
423 this.fittingType_ = Viewport.FittingType.NONE; 419 this.fittingType_ = Viewport.FittingType.NONE;
424 var nextZoom = Viewport.ZOOM_FACTORS[0]; 420 var nextZoom = Viewport.ZOOM_FACTORS[0];
425 for (var i = 0; i < Viewport.ZOOM_FACTORS.length; i++) { 421 for (var i = 0; i < Viewport.ZOOM_FACTORS.length; i++) {
426 if (Viewport.ZOOM_FACTORS[i] < this.zoom_) 422 if (Viewport.ZOOM_FACTORS[i] < this.zoom_)
427 nextZoom = Viewport.ZOOM_FACTORS[i]; 423 nextZoom = Viewport.ZOOM_FACTORS[i];
428 } 424 }
429 this.setZoomInternal_(nextZoom); 425 this.setZoom_(nextZoom);
430 this.updateViewport_(); 426 this.updateViewport_();
431 }.bind(this)); 427 }.bind(this));
432 }, 428 },
433 429
434 /** 430 /**
435 * Zoom in to the next predefined zoom level. 431 * Zoom in to the next predefined zoom level.
436 */ 432 */
437 zoomIn: function() { 433 zoomIn: function() {
438 this.mightZoom_(function() { 434 this.mightZoom_(function() {
439 this.fittingType_ = Viewport.FittingType.NONE; 435 this.fittingType_ = Viewport.FittingType.NONE;
440 var nextZoom = Viewport.ZOOM_FACTORS[Viewport.ZOOM_FACTORS.length - 1]; 436 var nextZoom = Viewport.ZOOM_FACTORS[Viewport.ZOOM_FACTORS.length - 1];
441 for (var i = Viewport.ZOOM_FACTORS.length - 1; i >= 0; i--) { 437 for (var i = Viewport.ZOOM_FACTORS.length - 1; i >= 0; i--) {
442 if (Viewport.ZOOM_FACTORS[i] > this.zoom_) 438 if (Viewport.ZOOM_FACTORS[i] > this.zoom_)
443 nextZoom = Viewport.ZOOM_FACTORS[i]; 439 nextZoom = Viewport.ZOOM_FACTORS[i];
444 } 440 }
445 this.setZoomInternal_(nextZoom); 441 this.setZoom_(nextZoom);
446 this.updateViewport_(); 442 this.updateViewport_();
447 }.bind(this)); 443 }.bind(this));
448 }, 444 },
449 445
450 /** 446 /**
451 * Go to the given page index. 447 * Go to the given page index.
452 * @param {number} page the index of the page to go to. 448 * @param {number} page the index of the page to go to.
453 */ 449 */
454 goToPage: function(page) { 450 goToPage: function(page) {
455 this.mightZoom_(function() { 451 this.mightZoom_(function() {
(...skipping 13 matching lines...) Expand all
469 /** 465 /**
470 * Set the dimensions of the document. 466 * Set the dimensions of the document.
471 * @param {Object} documentDimensions the dimensions of the document 467 * @param {Object} documentDimensions the dimensions of the document
472 */ 468 */
473 setDocumentDimensions: function(documentDimensions) { 469 setDocumentDimensions: function(documentDimensions) {
474 this.mightZoom_(function() { 470 this.mightZoom_(function() {
475 var initialDimensions = !this.documentDimensions_; 471 var initialDimensions = !this.documentDimensions_;
476 this.documentDimensions_ = documentDimensions; 472 this.documentDimensions_ = documentDimensions;
477 this.pageDimensions_ = this.documentDimensions_.pageDimensions; 473 this.pageDimensions_ = this.documentDimensions_.pageDimensions;
478 if (initialDimensions) { 474 if (initialDimensions) {
479 this.setZoomInternal_(this.computeFittingZoom_(this.documentDimensions_, 475 this.setZoom_(this.computeFittingZoom_(this.documentDimensions_, true));
480 true));
481 if (this.zoom_ > 1) 476 if (this.zoom_ > 1)
482 this.setZoomInternal_(1); 477 this.setZoom_(1);
483 this.window_.scrollTo(0, 0); 478 this.window_.scrollTo(0, 0);
484 } 479 }
485 this.contentSizeChanged_(); 480 this.contentSizeChanged_();
486 this.resize_(); 481 this.resize_();
487 }.bind(this)); 482 }.bind(this));
488 }, 483 },
489 484
490 /** 485 /**
491 * Get the coordinates of the page contents (excluding the page shadow) 486 * Get the coordinates of the page contents (excluding the page shadow)
492 * relative to the screen. 487 * relative to the screen.
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
529 spaceOnLeft = Math.max(spaceOnLeft, 0); 524 spaceOnLeft = Math.max(spaceOnLeft, 0);
530 525
531 return { 526 return {
532 x: x * this.zoom_ + spaceOnLeft - this.window_.pageXOffset, 527 x: x * this.zoom_ + spaceOnLeft - this.window_.pageXOffset,
533 y: insetDimensions.y * this.zoom_ - this.window_.pageYOffset, 528 y: insetDimensions.y * this.zoom_ - this.window_.pageYOffset,
534 width: insetDimensions.width * this.zoom_, 529 width: insetDimensions.width * this.zoom_,
535 height: insetDimensions.height * this.zoom_ 530 height: insetDimensions.height * this.zoom_
536 }; 531 };
537 } 532 }
538 }; 533 };
OLDNEW
« no previous file with comments | « trunk/src/chrome/browser/resources/pdf/pdf.js ('k') | trunk/src/chrome/test/data/pdf/basic_plugin_test.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698