Chromium Code Reviews| Index: chrome/browser/resources/pdf/pdf.js |
| diff --git a/chrome/browser/resources/pdf/pdf.js b/chrome/browser/resources/pdf/pdf.js |
| index 7c3d906bf68dc831ca37c47fc447c616c5c2fa25..a2ef12eaa1908f1d92199032c3e403b0b93ed4a7 100644 |
| --- a/chrome/browser/resources/pdf/pdf.js |
| +++ b/chrome/browser/resources/pdf/pdf.js |
| @@ -295,6 +295,50 @@ PDFViewer.prototype = { |
| /** |
| * @private |
| + * Handle page param of open PDF parameters. |
| + * @param {number} page value. |
| + */ |
| + handlePageParam_: function(value) { |
| + if (value > 0) { |
| + // value is 1-based. |
| + this.viewport_.goToPage(value - 1); |
| + } |
| + }, |
|
raymes
2014/08/15 01:07:18
I would suggest just inlining this function. viewp
Nikhil
2014/08/16 10:24:01
Done.
|
| + |
| + /** |
| + * @private |
| + * Handle open PDF parameters. |
| + */ |
| + handleOpenPDFParams_: function() { |
| + var originalUrl = this.streamDetails.originalUrl; |
| + var hasParams = originalUrl.search('#'); |
| + if (hasParams == -1) |
| + return; |
| + |
| + var paramTokens = originalUrl.substring(hasParams + 1).split('&'); |
| + // Handle the case of http://foo.com/bar#NAMEDDEST. This is not explicitly |
| + // mentioned except by example in the Adobe "PDF Open Parameters" document. |
| + if ((paramTokens.length == 1) && (paramTokens[0].search('=') == -1)) { |
| + // FIXME: Send message for GetNamedDestinationPage(); |
|
raymes
2014/08/15 01:07:18
Are you going to add support for this soon? If not
Nikhil
2014/08/16 10:24:01
Yes, I'm planning to add support for this soon in
raymes
2014/08/18 00:39:34
I had a look at the API that pdfium exposes and it
Nikhil
2014/08/18 04:53:32
I'll check it further.
|
| + return; |
| + } |
| + |
| + 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) |
| + this.handlePageParam_(paramsDictionary['page']); |
| + }, |
| + |
| + /** |
| + * @private |
| * An event handler for handling password-submitted events. These are fired |
| * when an event is entered into the password screen. |
| * @param {Object} event a password-submitted event. |
| @@ -372,6 +416,9 @@ PDFViewer.prototype = { |
| case 'cancelStreamUrl': |
| chrome.streamsPrivate.abort(this.streamDetails.streamUrl); |
| break; |
| + case 'openPDFParams': |
| + this.handleOpenPDFParams_(); |
|
raymes
2014/08/15 01:07:17
Rather than calling this here, we can get rid of t
Nikhil
2014/08/16 10:24:01
Done.
|
| + break; |
| } |
| }, |