Chromium Code Reviews| Index: chrome/browser/resources/pdf/open_pdf_params_parser.js |
| diff --git a/chrome/browser/resources/pdf/open_pdf_params_parser.js b/chrome/browser/resources/pdf/open_pdf_params_parser.js |
| index f4fe8e7354a1617a6c5929c23e72379af59b9465..6ce83a604863cc480e01a1ea799faf9a4dcde88b 100644 |
| --- a/chrome/browser/resources/pdf/open_pdf_params_parser.js |
| +++ b/chrome/browser/resources/pdf/open_pdf_params_parser.js |
| @@ -10,9 +10,9 @@ |
| * @param {string} url to be parsed. |
| */ |
| function OpenPDFParamsParser(url) { |
| - this.url_ = url; |
| this.urlParams = {}; |
| - this.parseOpenPDFParams_(); |
| + // This will have name of all the nameddest from the loaded PDF. |
|
raymes
2015/01/14 00:19:00
nit: // A dictionary of all the named destinations
Deepak
2015/01/14 06:29:01
Done.
|
| + this.namedDestinations = {}; |
| } |
| OpenPDFParamsParser.prototype = { |
| @@ -48,17 +48,18 @@ OpenPDFParamsParser.prototype = { |
| /** |
| * @private |
| - * Parse open PDF parameters. These parameters are mentioned in the url |
| + * Parse PDF url parameters. These parameters are mentioned in the url |
| * and specify actions to be performed when opening pdf files. |
| * See http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/ |
| * pdfs/pdf_open_parameters.pdf for details. |
| + * @param {string} inputUrl that need to be parsed. |
| + * @return {Object} urlParams data that have the PDF url parameter info. |
| */ |
| - parseOpenPDFParams_: function() { |
| - var originalUrl = this.url_; |
| + getURLPDFParams: function(inputUrl) { |
| + var originalUrl = inputUrl; |
| 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) { |
| @@ -67,15 +68,50 @@ OpenPDFParamsParser.prototype = { |
| continue; |
| paramsDictionary[keyValueSplit[0]] = keyValueSplit[1]; |
| } |
| + if ('zoom' in paramsDictionary) |
| + this.parseZoomParam_(paramsDictionary['zoom']); |
| + return this.urlParams; |
| + }, |
| + |
| + /** |
| + * @private |
| + * Helper function to give the page number after parsing url based on page, |
| + * nameddest and nameddest with some value. These parameters are mentioned in |
| + * the url and specify actions to be performed when opening pdf files. |
| + * See http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/ |
| + * pdfs/pdf_open_parameters.pdf for details. |
| + * @param {string} inputUrl that need to be parsed to get pageNumber. |
| + * @return {number} page number info for scrolling PDF file. |
| + */ |
| + getInitalPage: function(inputUrl) { |
| + var originalUrl = inputUrl; |
| + var finalPageNumber = -1; |
| + var paramIndex = originalUrl.search('#'); |
| + if (paramIndex == -1) |
| + return finalPageNumber; |
| - 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.urlParams['page'] = pageNumber - 1; |
| + var paramTokens = originalUrl.substring(paramIndex + 1).split('&'); |
| + if ((paramTokens.length == 1) && (paramTokens[0].search('=') == -1)) { |
| + return this.namedDestinations[paramTokens[0]]; |
| } |
| - if ('zoom' in paramsDictionary) |
| - this.parseZoomParam_(paramsDictionary['zoom']); |
| - } |
| + for (var i = 0; i < paramTokens.length; ++i) { |
| + var keyValueSplit = paramTokens[i].split('='); |
| + if (keyValueSplit.length != 2) |
| + continue; |
| + if (keyValueSplit[0] == 'page') { |
| + var pageNumber = parseInt(keyValueSplit[1]); |
| + if (!isNaN(pageNumber) && pageNumber > 0) |
| + finalPageNumber = pageNumber - 1; |
| + continue; |
| + } |
| + if (keyValueSplit[0] == 'nameddest') { |
| + var pageNumber = this.namedDestinations[keyValueSplit[1]]; |
| + if (!isNaN(pageNumber) && pageNumber >= 0) |
| + finalPageNumber = pageNumber; |
| + continue; |
| + } |
| + } |
| + return finalPageNumber; |
| + }, |
|
raymes
2015/01/14 00:19:00
I don't think we need to add a new function to par
Deepak
2015/01/14 06:29:01
I understood your meaning, I am removing getInitia
|
| }; |