| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 'use strict'; | 5 'use strict'; |
| 6 | 6 |
| 7 /** | 7 /** |
| 8 * Creates a new NavigatorDelegate for calling browser-specific functions to | 8 * Creates a new NavigatorDelegate for calling browser-specific functions to |
| 9 * do the actual navigating. | 9 * do the actual navigating. |
| 10 * @param {number} tabId The tab ID of the PDF viewer or -1 if the viewer is | 10 * @param {number} tabId The tab ID of the PDF viewer or -1 if the viewer is |
| 11 * not displayed in a tab. | 11 * not displayed in a tab. |
| 12 * @constructor |
| 12 */ | 13 */ |
| 13 function NavigatorDelegate(tabId) { | 14 function NavigatorDelegate(tabId) { |
| 14 this.tabId_ = tabId; | 15 this.tabId_ = tabId; |
| 15 } | 16 } |
| 16 | 17 |
| 17 /** | 18 /** |
| 18 * Creates a new Navigator for navigating to links inside or outside the PDF. | 19 * Creates a new Navigator for navigating to links inside or outside the PDF. |
| 19 * @param {string} originalUrl The original page URL. | 20 * @param {string} originalUrl The original page URL. |
| 20 * @param {Object} viewport The viewport info of the page. | 21 * @param {Object} viewport The viewport info of the page. |
| 21 * @param {Object} paramsParser The object for URL parsing. | 22 * @param {Object} paramsParser The object for URL parsing. |
| 22 * @param {Object} navigatorDelegate The object with callback functions that | 23 * @param {Object} navigatorDelegate The object with callback functions that |
| 23 * get called when navigation happens in the current tab, a new tab, | 24 * get called when navigation happens in the current tab, a new tab, |
| 24 * and a new window. | 25 * and a new window. |
| 26 * @constructor |
| 25 */ | 27 */ |
| 26 function Navigator(originalUrl, viewport, paramsParser, navigatorDelegate) { | 28 function Navigator(originalUrl, viewport, paramsParser, navigatorDelegate) { |
| 27 this.originalUrl_ = originalUrl; | 29 this.originalUrl_ = originalUrl; |
| 28 this.viewport_ = viewport; | 30 this.viewport_ = viewport; |
| 29 this.paramsParser_ = paramsParser; | 31 this.paramsParser_ = paramsParser; |
| 30 this.navigatorDelegate_ = navigatorDelegate; | 32 this.navigatorDelegate_ = navigatorDelegate; |
| 31 } | 33 } |
| 32 | 34 |
| 33 NavigatorDelegate.prototype = { | 35 NavigatorDelegate.prototype = { |
| 34 /** | 36 /** |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 84 Navigator.WindowOpenDisposition = { | 86 Navigator.WindowOpenDisposition = { |
| 85 CURRENT_TAB: 1, | 87 CURRENT_TAB: 1, |
| 86 NEW_FOREGROUND_TAB: 3, | 88 NEW_FOREGROUND_TAB: 3, |
| 87 NEW_BACKGROUND_TAB: 4, | 89 NEW_BACKGROUND_TAB: 4, |
| 88 NEW_WINDOW: 6, | 90 NEW_WINDOW: 6, |
| 89 SAVE_TO_DISK: 7 | 91 SAVE_TO_DISK: 7 |
| 90 }; | 92 }; |
| 91 | 93 |
| 92 Navigator.prototype = { | 94 Navigator.prototype = { |
| 93 /** | 95 /** |
| 94 * @private | |
| 95 * Function to navigate to the given URL. This might involve navigating | 96 * Function to navigate to the given URL. This might involve navigating |
| 96 * within the PDF page or opening a new url (in the same tab or a new tab). | 97 * within the PDF page or opening a new url (in the same tab or a new tab). |
| 97 * @param {string} url The URL to navigate to. | 98 * @param {string} url The URL to navigate to. |
| 98 * @param {number} disposition The window open disposition when | 99 * @param {number} disposition The window open disposition when |
| 99 * navigating to the new URL. | 100 * navigating to the new URL. |
| 100 */ | 101 */ |
| 101 navigate: function(url, disposition) { | 102 navigate: function(url, disposition) { |
| 102 if (url.length == 0) | 103 if (url.length == 0) |
| 103 return; | 104 return; |
| 104 | 105 |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 166 var pageNumber = viewportPosition.page; | 167 var pageNumber = viewportPosition.page; |
| 167 if (pageNumber != undefined && originalUrl == newUrl) | 168 if (pageNumber != undefined && originalUrl == newUrl) |
| 168 this.viewport_.goToPage(pageNumber); | 169 this.viewport_.goToPage(pageNumber); |
| 169 else | 170 else |
| 170 this.navigatorDelegate_.navigateInCurrentTab(viewportPosition.url); | 171 this.navigatorDelegate_.navigateInCurrentTab(viewportPosition.url); |
| 171 }, | 172 }, |
| 172 | 173 |
| 173 /** | 174 /** |
| 174 * @private | 175 * @private |
| 175 * Checks if the URL starts with a scheme and is not just a scheme. | 176 * Checks if the URL starts with a scheme and is not just a scheme. |
| 176 * @param {string} The input URL | 177 * @param {string} url The input URL |
| 177 * @return {boolean} Whether the url is valid. | 178 * @return {boolean} Whether the url is valid. |
| 178 */ | 179 */ |
| 179 isValidUrl_: function(url) { | 180 isValidUrl_: function(url) { |
| 180 // Make sure |url| starts with a valid scheme. | 181 // Make sure |url| starts with a valid scheme. |
| 181 if (!url.startsWith('http://') && | 182 if (!url.startsWith('http://') && |
| 182 !url.startsWith('https://') && | 183 !url.startsWith('https://') && |
| 183 !url.startsWith('ftp://') && | 184 !url.startsWith('ftp://') && |
| 184 !url.startsWith('file://') && | 185 !url.startsWith('file://') && |
| 185 !url.startsWith('mailto:')) { | 186 !url.startsWith('mailto:')) { |
| 186 return false; | 187 return false; |
| (...skipping 12 matching lines...) Expand all Loading... |
| 199 url == 'mailto:') { | 200 url == 'mailto:') { |
| 200 return false; | 201 return false; |
| 201 } | 202 } |
| 202 | 203 |
| 203 return true; | 204 return true; |
| 204 }, | 205 }, |
| 205 | 206 |
| 206 /** | 207 /** |
| 207 * @private | 208 * @private |
| 208 * Attempt to figure out what a URL is when there is no scheme. | 209 * Attempt to figure out what a URL is when there is no scheme. |
| 209 * @param {string} The input URL | 210 * @param {string} url The input URL |
| 210 * @return {string} The URL with a scheme or the original URL if it is not | 211 * @return {string} The URL with a scheme or the original URL if it is not |
| 211 * possible to determine the scheme. | 212 * possible to determine the scheme. |
| 212 */ | 213 */ |
| 213 guessUrlWithoutScheme_: function(url) { | 214 guessUrlWithoutScheme_: function(url) { |
| 214 // If the original URL is mailto:, that does not make sense to start with, | 215 // If the original URL is mailto:, that does not make sense to start with, |
| 215 // and neither does adding |url| to it. | 216 // and neither does adding |url| to it. |
| 216 // If the original URL is not a valid URL, this cannot make a valid URL. | 217 // If the original URL is not a valid URL, this cannot make a valid URL. |
| 217 // In both cases, just bail out. | 218 // In both cases, just bail out. |
| 218 if (this.originalUrl_.startsWith('mailto:') || | 219 if (this.originalUrl_.startsWith('mailto:') || |
| 219 !this.isValidUrl_(this.originalUrl_)) { | 220 !this.isValidUrl_(this.originalUrl_)) { |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 253 if (isRelative) { | 254 if (isRelative) { |
| 254 var slashIndex = this.originalUrl_.lastIndexOf('/'); | 255 var slashIndex = this.originalUrl_.lastIndexOf('/'); |
| 255 var path = slashIndex != -1 ? | 256 var path = slashIndex != -1 ? |
| 256 this.originalUrl_.substr(0, slashIndex) : this.originalUrl_; | 257 this.originalUrl_.substr(0, slashIndex) : this.originalUrl_; |
| 257 return path + '/' + url; | 258 return path + '/' + url; |
| 258 } | 259 } |
| 259 | 260 |
| 260 return 'http://' + url; | 261 return 'http://' + url; |
| 261 } | 262 } |
| 262 }; | 263 }; |
| OLD | NEW |