Roll src/third_party/WebKit bf18a82:a9cee16 (svn 185297:185304)
[chromium-blink-merge.git] / chrome / browser / resources / pdf / open_pdf_params_parser.js
blobf4fe8e7354a1617a6c5929c23e72379af59b9465
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 'use strict';
7 /**
8 * Creates a new OpenPDFParamsParser. This parses the open pdf parameters
9 * passed in the url to set initial viewport settings for opening the pdf.
10 * @param {string} url to be parsed.
12 function OpenPDFParamsParser(url) {
13 this.url_ = url;
14 this.urlParams = {};
15 this.parseOpenPDFParams_();
18 OpenPDFParamsParser.prototype = {
19 /**
20 * @private
21 * Parse zoom parameter of open PDF parameters. If this
22 * parameter is passed while opening PDF then PDF should be opened
23 * at the specified zoom level.
24 * @param {number} zoom value.
26 parseZoomParam_: function(paramValue) {
27 var paramValueSplit = paramValue.split(',');
28 if ((paramValueSplit.length != 1) && (paramValueSplit.length != 3))
29 return;
31 // User scale of 100 means zoom value of 100% i.e. zoom factor of 1.0.
32 var zoomFactor = parseFloat(paramValueSplit[0]) / 100;
33 if (isNaN(zoomFactor))
34 return;
36 // Handle #zoom=scale.
37 if (paramValueSplit.length == 1) {
38 this.urlParams['zoom'] = zoomFactor;
39 return;
42 // Handle #zoom=scale,left,top.
43 var position = {x: parseFloat(paramValueSplit[1]),
44 y: parseFloat(paramValueSplit[2])};
45 this.urlParams['position'] = position;
46 this.urlParams['zoom'] = zoomFactor;
49 /**
50 * @private
51 * Parse open PDF parameters. These parameters are mentioned in the url
52 * and specify actions to be performed when opening pdf files.
53 * See http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/
54 * pdfs/pdf_open_parameters.pdf for details.
56 parseOpenPDFParams_: function() {
57 var originalUrl = this.url_;
58 var paramIndex = originalUrl.search('#');
59 if (paramIndex == -1)
60 return;
62 var paramTokens = originalUrl.substring(paramIndex + 1).split('&');
63 var paramsDictionary = {};
64 for (var i = 0; i < paramTokens.length; ++i) {
65 var keyValueSplit = paramTokens[i].split('=');
66 if (keyValueSplit.length != 2)
67 continue;
68 paramsDictionary[keyValueSplit[0]] = keyValueSplit[1];
71 if ('page' in paramsDictionary) {
72 // |pageNumber| is 1-based, but goToPage() take a zero-based page number.
73 var pageNumber = parseInt(paramsDictionary['page']);
74 if (!isNaN(pageNumber))
75 this.urlParams['page'] = pageNumber - 1;
78 if ('zoom' in paramsDictionary)
79 this.parseZoomParam_(paramsDictionary['zoom']);