Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(419)

Side by Side Diff: chrome/browser/resources/pdf/pdf.js

Issue 838153004: OOP PDF: Allow hyperlinks to be opened by print preview. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 * @return {number} Width of a scrollbar in pixels 8 * @return {number} Width of a scrollbar in pixels
9 */ 9 */
10 function getScrollbarWidth() { 10 function getScrollbarWidth() {
(...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after
362 if (url.charAt(0) == '#') { 362 if (url.charAt(0) == '#') {
363 // if '#' is already present in |originalUrl| then remove old fragment 363 // if '#' is already present in |originalUrl| then remove old fragment
364 // and add new url fragment. 364 // and add new url fragment.
365 var hashIndex = originalUrl.search('#'); 365 var hashIndex = originalUrl.search('#');
366 if (hashIndex != -1) 366 if (hashIndex != -1)
367 url = originalUrl.substring(0, hashIndex) + url; 367 url = originalUrl.substring(0, hashIndex) + url;
368 else 368 else
369 url = originalUrl + url; 369 url = originalUrl + url;
370 } 370 }
371 371
372 var inputURL = url;
373 // If there's no scheme, add http. 372 // If there's no scheme, add http.
374 if (inputURL.indexOf('://') == -1 && inputURL.indexOf('mailto:') == -1) 373 if (url.indexOf('://') == -1 && url.indexOf('mailto:') == -1)
375 inputURL = 'http://' + inputURL; 374 url = 'http://' + url;
376 375
377 // Make sure inputURL starts with a valid scheme. 376 // Make sure url starts with a valid scheme.
378 if (inputURL.indexOf('http://') != 0 && 377 if (url.indexOf('http://') != 0 &&
379 inputURL.indexOf('https://') != 0 && 378 url.indexOf('https://') != 0 &&
380 inputURL.indexOf('ftp://') != 0 && 379 url.indexOf('ftp://') != 0 &&
381 inputURL.indexOf('file://') != 0 && 380 url.indexOf('file://') != 0 &&
382 inputURL.indexOf('mailto:') != 0) { 381 url.indexOf('mailto:') != 0) {
383 return; 382 return;
384 } 383 }
385 // Make sure inputURL is not only a scheme. 384 // Make sure url is not only a scheme.
386 if (inputURL == 'http://' || 385 if (url == 'http://' ||
387 inputURL == 'https://' || 386 url == 'https://' ||
388 inputURL == 'ftp://' || 387 url == 'ftp://' ||
389 inputURL == 'file://' || 388 url == 'file://' ||
390 inputURL == 'mailto:') { 389 url == 'mailto:') {
391 return; 390 return;
392 } 391 }
393 392
394 if (newTab) { 393 if (newTab) {
395 chrome.tabs.create({ url: inputURL }); 394 // Prefer the tabs API because it guarantees we can just open a new tab.
395 // window.open doesn't have this guarantee.
396 if (chrome.tabs)
397 chrome.tabs.create({ url: url });
398 else
399 window.open(url);
396 } else { 400 } else {
397 var pageNumber = 401 var pageNumber =
398 this.paramsParser_.getViewportFromUrlParams(inputURL).page; 402 this.paramsParser_.getViewportFromUrlParams(url).page;
399 if (pageNumber != undefined) 403 if (pageNumber != undefined)
400 this.viewport_.goToPage(pageNumber); 404 this.viewport_.goToPage(pageNumber);
401 else 405 else
402 window.location.href = inputURL; 406 window.location.href = url;
403 } 407 }
404 }, 408 },
405 409
406 /** 410 /**
407 * @private 411 * @private
408 * An event handler for handling message events received from the plugin. 412 * An event handler for handling message events received from the plugin.
409 * @param {MessageObject} message a message event. 413 * @param {MessageObject} message a message event.
410 */ 414 */
411 handlePluginMessage_: function(message) { 415 handlePluginMessage_: function(message) {
412 switch (message.data.type.toString()) { 416 switch (message.data.type.toString()) {
(...skipping 28 matching lines...) Expand all
441 case 'getSelectedTextReply': 445 case 'getSelectedTextReply':
442 this.sendScriptingMessage_(message.data); 446 this.sendScriptingMessage_(message.data);
443 break; 447 break;
444 case 'goToPage': 448 case 'goToPage':
445 this.viewport_.goToPage(message.data.page); 449 this.viewport_.goToPage(message.data.page);
446 break; 450 break;
447 case 'loadProgress': 451 case 'loadProgress':
448 this.updateProgress_(message.data.progress); 452 this.updateProgress_(message.data.progress);
449 break; 453 break;
450 case 'navigate': 454 case 'navigate':
455 // If in print preview, always open a new tab.
451 if (this.isPrintPreview_) 456 if (this.isPrintPreview_)
452 break; 457 this.navigate_(message.data.url, true);
453 this.navigate_(message.data.url, message.data.newTab); 458 else
459 this.navigate_(message.data.url, message.data.newTab);
454 break; 460 break;
455 case 'setNamedDestinations': 461 case 'setNamedDestinations':
456 this.paramsParser_.namedDestinations = message.data.namedDestinations; 462 this.paramsParser_.namedDestinations = message.data.namedDestinations;
457 break; 463 break;
458 case 'setScrollPosition': 464 case 'setScrollPosition':
459 var position = this.viewport_.position; 465 var position = this.viewport_.position;
460 if (message.data.x !== undefined) 466 if (message.data.x !== undefined)
461 position.x = message.data.x; 467 position.x = message.data.x;
462 if (message.data.y !== undefined) 468 if (message.data.y !== undefined)
463 position.y = message.data.y; 469 position.y = message.data.y;
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
678 this.streamDetails_.tabId != -1); 684 this.streamDetails_.tabId != -1);
679 }, 685 },
680 686
681 /** 687 /**
682 * @type {Viewport} the viewport of the PDF viewer. 688 * @type {Viewport} the viewport of the PDF viewer.
683 */ 689 */
684 get viewport() { 690 get viewport() {
685 return this.viewport_; 691 return this.viewport_;
686 } 692 }
687 }; 693 };
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698