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

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

Issue 726343002: OOP PDF: Add whether a resource is embedded to StreamInfo. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@embedded-pdfs
Patch Set: address comment Created 6 years, 1 month 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 | « chrome/browser/resources/pdf/main.js ('k') | chrome/common/extensions/api/streams_private.idl » ('j') | 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 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
77 77
78 this.plugin_.setAttribute('src', this.streamDetails.originalUrl); 78 this.plugin_.setAttribute('src', this.streamDetails.originalUrl);
79 this.plugin_.setAttribute('stream-url', this.streamDetails.streamUrl); 79 this.plugin_.setAttribute('stream-url', this.streamDetails.streamUrl);
80 var headers = ''; 80 var headers = '';
81 for (var header in this.streamDetails.responseHeaders) { 81 for (var header in this.streamDetails.responseHeaders) {
82 headers += header + ': ' + 82 headers += header + ': ' +
83 this.streamDetails.responseHeaders[header] + '\n'; 83 this.streamDetails.responseHeaders[header] + '\n';
84 } 84 }
85 this.plugin_.setAttribute('headers', headers); 85 this.plugin_.setAttribute('headers', headers);
86 86
87 if (window.top == window) 87 if (!this.streamDetails.embedded)
88 this.plugin_.setAttribute('full-frame', ''); 88 this.plugin_.setAttribute('full-frame', '');
89 document.body.appendChild(this.plugin_); 89 document.body.appendChild(this.plugin_);
90 90
91 // TODO(raymes): Remove this spurious message once crbug.com/388606 is fixed. 91 // TODO(raymes): Remove this spurious message once crbug.com/388606 is fixed.
92 // This is a hack to initialize pepper sync scripting and avoid re-entrancy. 92 // This is a hack to initialize pepper sync scripting and avoid re-entrancy.
93 this.plugin_.postMessage({ 93 this.plugin_.postMessage({
94 type: 'viewport', 94 type: 'viewport',
95 zoom: 1, 95 zoom: 1,
96 xOffset: 0, 96 xOffset: 0,
97 yOffset: 0 97 yOffset: 0
98 }); 98 });
99 99
100 // Setup the button event listeners. 100 // Setup the button event listeners.
101 $('fit-to-width-button').addEventListener('click', 101 $('fit-to-width-button').addEventListener('click',
102 this.viewport_.fitToWidth.bind(this.viewport_)); 102 this.viewport_.fitToWidth.bind(this.viewport_));
103 $('fit-to-page-button').addEventListener('click', 103 $('fit-to-page-button').addEventListener('click',
104 this.viewport_.fitToPage.bind(this.viewport_)); 104 this.viewport_.fitToPage.bind(this.viewport_));
105 $('zoom-in-button').addEventListener('click', 105 $('zoom-in-button').addEventListener('click',
106 this.viewport_.zoomIn.bind(this.viewport_)); 106 this.viewport_.zoomIn.bind(this.viewport_));
107 $('zoom-out-button').addEventListener('click', 107 $('zoom-out-button').addEventListener('click',
108 this.viewport_.zoomOut.bind(this.viewport_)); 108 this.viewport_.zoomOut.bind(this.viewport_));
109 $('save-button-link').href = this.streamDetails.originalUrl; 109 $('save-button-link').href = this.streamDetails.originalUrl;
110 $('print-button').addEventListener('click', this.print_.bind(this)); 110 $('print-button').addEventListener('click', this.print_.bind(this));
111 111
112 // Setup the keyboard event listener. 112 // Setup the keyboard event listener.
113 document.onkeydown = this.handleKeyEvent_.bind(this); 113 document.onkeydown = this.handleKeyEvent_.bind(this);
114 114
115 // Set up the zoom API. 115 // Set up the zoom API.
116 if (chrome.tabs) { 116 if (this.shouldManageZoom_()) {
117 chrome.tabs.setZoomSettings(this.streamDetails.tabId, 117 chrome.tabs.setZoomSettings(this.streamDetails.tabId,
118 {mode: 'manual', scope: 'per-tab'}, 118 {mode: 'manual', scope: 'per-tab'},
119 this.afterZoom_.bind(this)); 119 this.afterZoom_.bind(this));
120 chrome.tabs.onZoomChange.addListener(function(zoomChangeInfo) { 120 chrome.tabs.onZoomChange.addListener(function(zoomChangeInfo) {
121 if (zoomChangeInfo.tabId != this.streamDetails.tabId) 121 if (zoomChangeInfo.tabId != this.streamDetails.tabId)
122 return; 122 return;
123 // If the zoom level is close enough to the current zoom level, don't 123 // If the zoom level is close enough to the current zoom level, don't
124 // change it. This avoids us getting into an infinite loop of zoom changes 124 // change it. This avoids us getting into an infinite loop of zoom changes
125 // due to floating point error. 125 // due to floating point error.
126 var MIN_ZOOM_DELTA = 0.01; 126 var MIN_ZOOM_DELTA = 0.01;
(...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after
415 }, 415 },
416 416
417 /** 417 /**
418 * @private 418 * @private
419 * A callback that's called after the zoom changes. Notify the plugin of the 419 * A callback that's called after the zoom changes. Notify the plugin of the
420 * zoom change and to continue reacting to scroll events. 420 * zoom change and to continue reacting to scroll events.
421 */ 421 */
422 afterZoom_: function() { 422 afterZoom_: function() {
423 var position = this.viewport_.position; 423 var position = this.viewport_.position;
424 var zoom = this.viewport_.zoom; 424 var zoom = this.viewport_.zoom;
425 if (chrome.tabs && !this.setZoomInProgress_) { 425 if (this.shouldManageZoom_() && !this.setZoomInProgress_) {
426 this.setZoomInProgress_ = true; 426 this.setZoomInProgress_ = true;
427 chrome.tabs.setZoom(this.streamDetails.tabId, zoom, 427 chrome.tabs.setZoom(this.streamDetails.tabId, zoom,
428 this.setZoomComplete_.bind(this, zoom)); 428 this.setZoomComplete_.bind(this, zoom));
429 } 429 }
430 this.plugin_.postMessage({ 430 this.plugin_.postMessage({
431 type: 'viewport', 431 type: 'viewport',
432 zoom: zoom, 432 zoom: zoom,
433 xOffset: position.x, 433 xOffset: position.x,
434 yOffset: position.y 434 yOffset: position.y
435 }); 435 });
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
567 * @private 567 * @private
568 * Send a scripting message outside the extension (typically to 568 * Send a scripting message outside the extension (typically to
569 * PDFScriptingAPI in a page containing the extension). 569 * PDFScriptingAPI in a page containing the extension).
570 * @param {Object} message the message to send. 570 * @param {Object} message the message to send.
571 */ 571 */
572 sendScriptingMessage_: function(message) { 572 sendScriptingMessage_: function(message) {
573 window.parent.postMessage(message, '*'); 573 window.parent.postMessage(message, '*');
574 }, 574 },
575 575
576 /** 576 /**
577 * @private
578 * Return whether this PDFViewer should manage zoom for its containing page.
579 * @return {boolean} Whether this PDFViewer should manage zoom for its
580 * containing page.
581 */
582 shouldManageZoom_: function() {
583 return !!(chrome.tabs && !this.streamDetails.embedded &&
584 this.streamDetails.tabId != -1);
585 },
586
587 /**
577 * @type {Viewport} the viewport of the PDF viewer. 588 * @type {Viewport} the viewport of the PDF viewer.
578 */ 589 */
579 get viewport() { 590 get viewport() {
580 return this.viewport_; 591 return this.viewport_;
581 } 592 }
582 }; 593 };
OLDNEW
« no previous file with comments | « chrome/browser/resources/pdf/main.js ('k') | chrome/common/extensions/api/streams_private.idl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698