Chromium Code Reviews| Index: chrome/browser/resources/pdf/pdf.js |
| diff --git a/chrome/browser/resources/pdf/pdf.js b/chrome/browser/resources/pdf/pdf.js |
| index c5920f877dc10c80a416c95c23b8fb7ab4ebc105..d0d99cc83376874309916021524b458c5031d628 100644 |
| --- a/chrome/browser/resources/pdf/pdf.js |
| +++ b/chrome/browser/resources/pdf/pdf.js |
| @@ -146,7 +146,7 @@ function PDFViewer() { |
| var MIN_ZOOM_DELTA = 0.01; |
| var zoomDelta = Math.abs(this.viewport_.zoom - |
| zoomChangeInfo.newZoomFactor); |
| - if (zoomDelta > MIN_ZOOM_DELTA) |
| + if ((zoomDelta > MIN_ZOOM_DELTA) && !this.setZoomInProgress_) |
|
Nikhil
2014/08/21 11:36:50
This was again calling setZoom() with older zoom f
raymes
2014/08/22 03:52:21
Hmm I'm not sure if this is completely correct. Ba
|
| this.viewport_.setZoom(zoomChangeInfo.newZoomFactor); |
| }.bind(this)); |
| } |
| @@ -264,10 +264,38 @@ PDFViewer.prototype = { |
| }, |
| /** |
| + * Handle zoom parameter of open PDF parameters. If this |
| + * parameter is passed while opening PDF then PDF should be opened |
| + * at the specified zoom level. |
| + * @param {number} zoom value. |
| + */ |
| + handleZoomParam_: function(paramValue) { |
| + var paramValueSplit = paramValue.split(','); |
| + if ((paramValueSplit.length != 1) && (paramValueSplit.length != 3)) |
| + return; |
| + |
| + // User scale of 100 means zoom value of 100% i.e. zoom factor of 1.0. |
| + var zoomFactor = parseFloat(paramValueSplit[0]) / 100; |
| + |
| + // Handle #zoom=scale. |
| + if (paramValueSplit.length == 1) { |
| + this.viewport_.setZoom(zoomFactor); |
| + return; |
| + } |
| + |
| + // Handle #zoom=scale,left,top. |
| + var position = {x: parseFloat(paramValueSplit[1]), |
| + y: parseFloat(paramValueSplit[2])}; |
| + this.viewport_.position = position; |
| + this.viewport_.setZoom(zoomFactor); |
| + }, |
| + |
| + /** |
| * @private |
| * Handle open PDF parameters. These parameters are mentioned in the URL |
| * and specify actions to be performed when opening PDF files. |
| - * See http://crbug.com/64309 for details. |
| + * See http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/pdf_open_parameters.pdf |
|
raymes
2014/08/22 03:52:21
you'll have to split up the URL so it doesn't exte
|
| + * for details. |
| */ |
| handleOpenPDFParams_: function() { |
| var originalUrl = this.streamDetails.originalUrl; |
| @@ -292,6 +320,8 @@ PDFViewer.prototype = { |
| if (!isNaN(pageNumber)) |
| this.viewport_.goToPage(pageNumber - 1); |
| } |
| + if ('zoom' in paramsDictionary) |
| + this.handleZoomParam_(paramsDictionary['zoom']); |
| }, |
|
raymes
2014/08/22 03:52:21
This class is already quite large and I'd like to
|
| /** |
| @@ -313,6 +343,8 @@ PDFViewer.prototype = { |
| } |
| } else if (progress == 100) { |
| // Document load complete. |
| + if (this.lastViewportPosition_) |
| + this.viewport_.position = this.lastViewportPosition_; |
| this.handleOpenPDFParams_(); |
| this.loaded = true; |
| var loadEvent = new Event('pdfload'); |
| @@ -320,8 +352,6 @@ PDFViewer.prototype = { |
| this.sendScriptingMessage_({ |
| type: 'documentLoaded' |
| }); |
| - if (this.lastViewportPosition_) |
| - this.viewport_.position = this.lastViewportPosition_; |
| } |
| }, |