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_; |
} |
}, |