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..2bb5511402abe108e48da0d5f28c52449bf086c0 100644 |
--- a/chrome/browser/resources/pdf/pdf.js |
+++ b/chrome/browser/resources/pdf/pdf.js |
@@ -5,6 +5,7 @@ |
'use strict'; |
<include src="../../../../ui/webui/resources/js/util.js"> |
+<include src="open_pdf_params_parser.js"> |
<include src="pdf_scripting_api.js"> |
<include src="viewport.js"> |
@@ -150,6 +151,10 @@ function PDFViewer() { |
this.viewport_.setZoom(zoomChangeInfo.newZoomFactor); |
}.bind(this)); |
} |
+ |
+ // Parse open pdf parameters. |
+ var paramsParser = new OpenPDFParamsParser(this.streamDetails.originalUrl); |
+ this.urlParams_ = paramsParser.urlParams; |
} |
PDFViewer.prototype = { |
@@ -265,37 +270,6 @@ PDFViewer.prototype = { |
/** |
* @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. |
- */ |
- handleOpenPDFParams_: function() { |
- var originalUrl = this.streamDetails.originalUrl; |
- var paramIndex = originalUrl.search('#'); |
- if (paramIndex == -1) |
- return; |
- |
- var paramTokens = originalUrl.substring(paramIndex + 1).split('&'); |
- var paramsDictionary = {}; |
- for (var i = 0; i < paramTokens.length; ++i) { |
- var keyValueSplit = paramTokens[i].split('='); |
- if (keyValueSplit.length != 2) |
- continue; |
- paramsDictionary[keyValueSplit[0]] = keyValueSplit[1]; |
- } |
- |
- // Order is important as later actions can override the effects |
- // of previous actions. |
- if ('page' in paramsDictionary) { |
- // |pageNumber| is 1-based, but goToPage() take a zero-based page number. |
- var pageNumber = parseInt(paramsDictionary['page']); |
- if (!isNaN(pageNumber)) |
- this.viewport_.goToPage(pageNumber - 1); |
- } |
- }, |
- |
- /** |
- * @private |
* Update the loading progress of the document in response to a progress |
* message being received from the plugin. |
* @param {number} progress the progress as a percentage. |
@@ -313,7 +287,6 @@ PDFViewer.prototype = { |
} |
} else if (progress == 100) { |
// Document load complete. |
- this.handleOpenPDFParams_(); |
this.loaded = true; |
var loadEvent = new Event('pdfload'); |
window.dispatchEvent(loadEvent); |
@@ -322,6 +295,11 @@ PDFViewer.prototype = { |
}); |
if (this.lastViewportPosition_) |
this.viewport_.position = this.lastViewportPosition_; |
+ |
+ // Handle open pdf params. Order is important as later actions can |
+ // override the effects of previous actions. |
+ if (this.urlParams_.page) |
+ this.viewport_.goToPage(this.urlParams_.page); |
} |
}, |