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

Unified Diff: chrome/browser/resources/pdf/pdf.js

Issue 392533002: Hookup the PDF extension to the chrome extensions zoom API (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/browser/resources/pdf/viewport.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/resources/pdf/pdf.js
diff --git a/chrome/browser/resources/pdf/pdf.js b/chrome/browser/resources/pdf/pdf.js
index 1c70c959f5aa7982dac9b26e5f44ed636dca9e1b..3a35c97e2087d6e44f818152fdf9effd77220947 100644
--- a/chrome/browser/resources/pdf/pdf.js
+++ b/chrome/browser/resources/pdf/pdf.js
@@ -134,6 +134,22 @@ function PDFViewer() {
// Setup the keyboard event listener.
document.onkeydown = this.handleKeyEvent_.bind(this);
+
+ // Set up the zoom API.
+ if (chrome.tabs) {
+ chrome.tabs.setZoomSettings({mode: 'manual', scope: 'per-tab'},
+ this.afterZoom_.bind(this));
+ chrome.tabs.onZoomChange.addListener(function(zoomChangeInfo) {
+ // If the zoom level is close enough to the current zoom level, don't
+ // change it. This avoids us getting into an infinite loop of zoom changes
+ // due to floating point error.
+ var MIN_ZOOM_DELTA = 0.01;
+ var zoomDelta = Math.abs(this.viewport_.zoom -
+ zoomChangeInfo.newZoomFactor);
+ if (zoomDelta > MIN_ZOOM_DELTA)
+ this.viewport_.setZoom(zoomChangeInfo.newZoomFactor);
+ }.bind(this));
+ }
}
PDFViewer.prototype = {
@@ -205,22 +221,6 @@ PDFViewer.prototype = {
this.viewport.position = position;
}
return;
- case 187: // +/= key.
- case 107: // Numpad + key.
- if (e.ctrlKey || e.metaKey) {
- this.viewport_.zoomIn();
- // Since we do the zooming of the page.
- e.preventDefault();
- }
- return;
- case 189: // -/_ key.
- case 109: // Numpad - key.
- if (e.ctrlKey || e.metaKey) {
- this.viewport_.zoomOut();
- // Since we do the zooming of the page.
- e.preventDefault();
- }
- return;
case 83: // s key.
if (e.ctrlKey || e.metaKey) {
// Simulate a click on the button so that the <a download ...>
@@ -381,6 +381,10 @@ PDFViewer.prototype = {
afterZoom_: function() {
var position = this.viewport_.position;
var zoom = this.viewport_.zoom;
+ if (chrome.tabs && !this.setZoomInProgress_) {
+ this.setZoomInProgress_ = true;
+ chrome.tabs.setZoom(zoom, this.setZoomComplete_.bind(this, zoom));
+ }
this.plugin_.postMessage({
type: 'viewport',
zoom: zoom,
@@ -391,6 +395,22 @@ PDFViewer.prototype = {
/**
* @private
+ * A callback that's called after chrome.tabs.setZoom is complete. This will
+ * call chrome.tabs.setZoom again if the zoom level has changed since it was
+ * last called.
+ * @param {number} lastZoom the zoom level that chrome.tabs.setZoom was called
+ * with.
+ */
+ setZoomComplete_: function(lastZoom) {
+ var zoom = this.viewport_.zoom;
+ if (zoom != lastZoom)
+ chrome.tabs.setZoom(zoom, this.setZoomComplete_.bind(this, zoom));
+ else
+ this.setZoomInProgress_ = false;
+ },
+
+ /**
+ * @private
* A callback that's called after the viewport changes.
*/
viewportChanged_: function() {
« no previous file with comments | « no previous file | chrome/browser/resources/pdf/viewport.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698