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

Unified Diff: chrome/browser/resources/pdf/pdf.js

Issue 420063002: OOP PDF - Add support for "zoom" open pdf parameter (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Review feedback (nit fixes, zoom fix) Created 6 years, 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_;
}
},
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698