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

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

Issue 420063002: OOP PDF - Add support for "zoom" open pdf parameter (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: OOP PDF Changes Created 6 years, 4 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 <include src="../../../../ui/webui/resources/js/util.js"> 7 <include src="../../../../ui/webui/resources/js/util.js">
8 <include src="pdf_scripting_api.js"> 8 <include src="pdf_scripting_api.js">
9 <include src="viewport.js"> 9 <include src="viewport.js">
10 10
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after
257 * @private 257 * @private
258 * Notify the plugin to print. 258 * Notify the plugin to print.
259 */ 259 */
260 print_: function() { 260 print_: function() {
261 this.plugin_.postMessage({ 261 this.plugin_.postMessage({
262 type: 'print', 262 type: 'print',
263 }); 263 });
264 }, 264 },
265 265
266 /** 266 /**
267 * Handle zoom parameter of open PDF parameters. If this
268 * parameter is passed while opening PDF then PDF should be opened
269 * at the specified zoom level.
270 * @param {number} zoom value.
271 */
272 handleZoomParam_: function(paramValue) {
273 var paramValueSplit = paramValue.split(',');
274 if ((paramValueSplit.length != 1) && (paramValueSplit.length != 3))
275 return;
276
277 // User scale of 100 means zoom value of 100% i.e. zoom factor of 1.0.
278 var zoomFactor = parseFloat(paramValueSplit[0]) / 100;
279
280 // Handle #zoom=scale.
281 if (paramValueSplit.length == 1) {
282 this.viewport_.setZoom(zoomFactor);
Nikhil 2014/08/19 15:09:42 setZoom() isn't working as intended. Is this not t
raymes 2014/08/20 00:14:21 This looks correct. What is it that isn't working?
Nikhil 2014/08/20 04:46:55 It didn't work as intended since zoom didn't chang
Nikhil 2014/08/21 11:36:50 It wasn't working because chrome.tabs.onZoomChange
283 return;
284 }
285
286 // Handle #zoom=scale,left,top.
287 var position = {x: parseFloat(paramValueSplit[1]),
Lei Zhang 2014/08/20 00:37:07 The Adobe open parameters document is rather vague
Nikhil 2014/08/20 04:46:54 Yep, it's a bit vague on units. Unlike page which
288 y: parseFloat(paramValueSplit[2])};
289 this.viewport_.position = position;
290 this.viewport_.setZoom(zoomFactor);
291 },
292
293 /**
267 * @private 294 * @private
268 * Handle open PDF parameters. These parameters are mentioned in the URL 295 * Handle open PDF parameters. These parameters are mentioned in the URL
269 * and specify actions to be performed when opening PDF files. 296 * and specify actions to be performed when opening PDF files.
270 * See http://crbug.com/64309 for details. 297 * See http://crbug.com/64309 for details.
raymes 2014/08/20 00:14:21 nit: we don't need the crbug link,but a link to a
Nikhil 2014/08/21 11:36:50 Done.
271 */ 298 */
272 handleOpenPDFParams_: function() { 299 handleOpenPDFParams_: function() {
273 var originalUrl = this.streamDetails.originalUrl; 300 var originalUrl = this.streamDetails.originalUrl;
274 var paramIndex = originalUrl.search('#'); 301 var paramIndex = originalUrl.search('#');
275 if (paramIndex == -1) 302 if (paramIndex == -1)
276 return; 303 return;
277 304
278 var paramTokens = originalUrl.substring(paramIndex + 1).split('&'); 305 var paramTokens = originalUrl.substring(paramIndex + 1).split('&');
279 var paramsDictionary = {}; 306 var paramsDictionary = {};
280 for (var i = 0; i < paramTokens.length; ++i) { 307 for (var i = 0; i < paramTokens.length; ++i) {
281 var keyValueSplit = paramTokens[i].split('='); 308 var keyValueSplit = paramTokens[i].split('=');
282 if (keyValueSplit.length != 2) 309 if (keyValueSplit.length != 2)
283 continue; 310 continue;
284 paramsDictionary[keyValueSplit[0]] = keyValueSplit[1]; 311 paramsDictionary[keyValueSplit[0]] = keyValueSplit[1];
285 } 312 }
286 313
287 // Order is important as later actions can override the effects 314 // Order is important as later actions can override the effects
288 // of previous actions. 315 // of previous actions.
289 if ('page' in paramsDictionary) { 316 if ('page' in paramsDictionary) {
290 // value is 1-based. 317 // value is 1-based.
291 this.viewport_.goToPage(paramsDictionary['page'] - 1); 318 this.viewport_.goToPage(paramsDictionary['page'] - 1);
292 } 319 }
320 if ('zoom' in paramsDictionary)
Lei Zhang 2014/08/20 00:37:07 I think order might also matter between page and z
Nikhil 2014/08/20 04:46:55 As I understand, page should always be handled bef
321 this.handleZoomParam_(paramsDictionary['zoom']);
293 }, 322 },
294 323
295 /** 324 /**
296 * @private 325 * @private
297 * Update the loading progress of the document in response to a progress 326 * Update the loading progress of the document in response to a progress
298 * message being received from the plugin. 327 * message being received from the plugin.
299 * @param {number} progress the progress as a percentage. 328 * @param {number} progress the progress as a percentage.
300 */ 329 */
301 updateProgress_: function(progress) { 330 updateProgress_: function(progress) {
302 this.progressBar_.progress = progress; 331 this.progressBar_.progress = progress;
303 if (progress == -1) { 332 if (progress == -1) {
304 // Document load failed. 333 // Document load failed.
305 this.errorScreen_.style.visibility = 'visible'; 334 this.errorScreen_.style.visibility = 'visible';
306 this.sizer_.style.display = 'none'; 335 this.sizer_.style.display = 'none';
307 this.toolbar_.style.visibility = 'hidden'; 336 this.toolbar_.style.visibility = 'hidden';
308 if (this.passwordScreen_.active) { 337 if (this.passwordScreen_.active) {
309 this.passwordScreen_.deny(); 338 this.passwordScreen_.deny();
310 this.passwordScreen_.active = false; 339 this.passwordScreen_.active = false;
311 } 340 }
312 } else if (progress == 100) { 341 } else if (progress == 100) {
313 // Document load complete. 342 // Document load complete.
314 this.handleOpenPDFParams_(); 343 this.handleOpenPDFParams_();
315 this.loaded = true; 344 this.loaded = true;
316 var loadEvent = new Event('pdfload'); 345 var loadEvent = new Event('pdfload');
317 window.dispatchEvent(loadEvent); 346 window.dispatchEvent(loadEvent);
318 this.sendScriptingMessage_({ 347 this.sendScriptingMessage_({
319 type: 'documentLoaded' 348 type: 'documentLoaded'
320 }); 349 });
321 if (this.lastViewportPosition_) 350 if (this.lastViewportPosition_)
322 this.viewport_.position = this.lastViewportPosition_; 351 this.viewport_.position = this.lastViewportPosition_;
raymes 2014/08/20 00:14:21 It shouldn't make a difference at present but I th
Nikhil 2014/08/21 11:36:50 Done.
323 } 352 }
324 }, 353 },
325 354
326 /** 355 /**
327 * @private 356 * @private
328 * An event handler for handling password-submitted events. These are fired 357 * An event handler for handling password-submitted events. These are fired
329 * when an event is entered into the password screen. 358 * when an event is entered into the password screen.
330 * @param {Object} event a password-submitted event. 359 * @param {Object} event a password-submitted event.
331 */ 360 */
332 onPasswordSubmitted_: function(event) { 361 onPasswordSubmitted_: function(event) {
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
569 598
570 /** 599 /**
571 * @type {Viewport} the viewport of the PDF viewer. 600 * @type {Viewport} the viewport of the PDF viewer.
572 */ 601 */
573 get viewport() { 602 get viewport() {
574 return this.viewport_; 603 return this.viewport_;
575 } 604 }
576 }; 605 };
577 606
578 var viewer = new PDFViewer(); 607 var viewer = new PDFViewer();
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