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

Side by Side Diff: chrome/browser/resources/print_preview/previewarea/preview_area.js

Issue 2939273002: DO NOT SUBMIT: what chrome/browser/resources/ could eventually look like with clang-format (Closed)
Patch Set: Created 3 years, 6 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 cr.exportPath('print_preview'); 5 cr.exportPath('print_preview');
6 6
7 /** 7 /**
8 * Enumeration of IDs shown in the preview area. 8 * Enumeration of IDs shown in the preview area.
9 * @enum {string} 9 * @enum {string}
10 * @private 10 * @private
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
109 * @private 109 * @private
110 */ 110 */
111 this.plugin_ = null; 111 this.plugin_ = null;
112 112
113 /** 113 /**
114 * Custom margins component superimposed on the preview plugin. 114 * Custom margins component superimposed on the preview plugin.
115 * @type {!print_preview.MarginControlContainer} 115 * @type {!print_preview.MarginControlContainer}
116 * @private 116 * @private
117 */ 117 */
118 this.marginControlContainer_ = new print_preview.MarginControlContainer( 118 this.marginControlContainer_ = new print_preview.MarginControlContainer(
119 this.documentInfo_, 119 this.documentInfo_, this.printTicketStore_.marginsType,
120 this.printTicketStore_.marginsType,
121 this.printTicketStore_.customMargins, 120 this.printTicketStore_.customMargins,
122 this.printTicketStore_.measurementSystem, 121 this.printTicketStore_.measurementSystem,
123 this.onMarginDragChanged_.bind(this)); 122 this.onMarginDragChanged_.bind(this));
124 this.addChild(this.marginControlContainer_); 123 this.addChild(this.marginControlContainer_);
125 124
126 /** 125 /**
127 * Current zoom level as a percentage. 126 * Current zoom level as a percentage.
128 * @type {?number} 127 * @type {?number}
129 * @private 128 * @private
130 */ 129 */
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
218 /** 217 /**
219 * Maps message IDs to the CSS class that contains them. 218 * Maps message IDs to the CSS class that contains them.
220 * @type {Object<print_preview.PreviewAreaMessageId_, string>} 219 * @type {Object<print_preview.PreviewAreaMessageId_, string>}
221 * @private 220 * @private
222 */ 221 */
223 PreviewArea.MessageIdClassMap_ = {}; 222 PreviewArea.MessageIdClassMap_ = {};
224 PreviewArea.MessageIdClassMap_[print_preview.PreviewAreaMessageId_.CUSTOM] = 223 PreviewArea.MessageIdClassMap_[print_preview.PreviewAreaMessageId_.CUSTOM] =
225 'preview-area-custom-message'; 224 'preview-area-custom-message';
226 PreviewArea.MessageIdClassMap_[print_preview.PreviewAreaMessageId_.LOADING] = 225 PreviewArea.MessageIdClassMap_[print_preview.PreviewAreaMessageId_.LOADING] =
227 'preview-area-loading-message'; 226 'preview-area-loading-message';
228 PreviewArea.MessageIdClassMap_[ 227 PreviewArea
229 print_preview.PreviewAreaMessageId_.PREVIEW_FAILED] = 228 .MessageIdClassMap_[print_preview.PreviewAreaMessageId_.PREVIEW_FAILED] =
230 'preview-area-preview-failed-message'; 229 'preview-area-preview-failed-message';
231 230
232 /** 231 /**
233 * Amount of time in milliseconds to wait after issueing a new preview before 232 * Amount of time in milliseconds to wait after issueing a new preview before
234 * the loading message is shown. 233 * the loading message is shown.
235 * @type {number} 234 * @type {number}
236 * @const 235 * @const
237 * @private 236 * @private
238 */ 237 */
239 PreviewArea.LOADING_TIMEOUT_ = 200; 238 PreviewArea.LOADING_TIMEOUT_ = 200;
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
307 */ 306 */
308 showCustomMessage: function(message) { 307 showCustomMessage: function(message) {
309 this.showMessage_(print_preview.PreviewAreaMessageId_.CUSTOM, message); 308 this.showMessage_(print_preview.PreviewAreaMessageId_.CUSTOM, message);
310 }, 309 },
311 310
312 /** @override */ 311 /** @override */
313 enterDocument: function() { 312 enterDocument: function() {
314 print_preview.Component.prototype.enterDocument.call(this); 313 print_preview.Component.prototype.enterDocument.call(this);
315 314
316 this.tracker.add( 315 this.tracker.add(
317 assert(this.openSystemDialogButton_), 316 assert(this.openSystemDialogButton_), 'click',
318 'click',
319 this.onOpenSystemDialogButtonClick_.bind(this)); 317 this.onOpenSystemDialogButtonClick_.bind(this));
320 318
321 var TicketStoreEvent = print_preview.PrintTicketStore.EventType; 319 var TicketStoreEvent = print_preview.PrintTicketStore.EventType;
322 [ 320 [TicketStoreEvent.INITIALIZE, TicketStoreEvent.TICKET_CHANGE,
323 TicketStoreEvent.INITIALIZE, 321 TicketStoreEvent.CAPABILITIES_CHANGE, TicketStoreEvent.DOCUMENT_CHANGE]
324 TicketStoreEvent.TICKET_CHANGE, 322 .forEach(function(eventType) {
325 TicketStoreEvent.CAPABILITIES_CHANGE, 323 this.tracker.add(
326 TicketStoreEvent.DOCUMENT_CHANGE 324 this.printTicketStore_, eventType,
327 ].forEach(function(eventType) { 325 this.onTicketChange_.bind(this));
328 this.tracker.add(this.printTicketStore_, eventType, 326 }.bind(this));
329 this.onTicketChange_.bind(this));
330 }.bind(this));
331 327
332 [ 328 [this.printTicketStore_.color, this.printTicketStore_.cssBackground,
333 this.printTicketStore_.color, 329 this.printTicketStore_.customMargins, this.printTicketStore_.fitToPage,
334 this.printTicketStore_.cssBackground, 330 this.printTicketStore_.headerFooter, this.printTicketStore_.landscape,
335 this.printTicketStore_.customMargins, 331 this.printTicketStore_.marginsType, this.printTicketStore_.pageRange,
336 this.printTicketStore_.fitToPage, 332 this.printTicketStore_.rasterize, this.printTicketStore_.selectionOnly,
337 this.printTicketStore_.headerFooter, 333 this.printTicketStore_.scaling]
338 this.printTicketStore_.landscape, 334 .forEach(function(setting) {
339 this.printTicketStore_.marginsType, 335 this.tracker.add(
340 this.printTicketStore_.pageRange, 336 setting, print_preview.ticket_items.TicketItem.EventType.CHANGE,
341 this.printTicketStore_.rasterize, 337 this.onTicketChange_.bind(this));
342 this.printTicketStore_.selectionOnly, 338 }.bind(this));
343 this.printTicketStore_.scaling
344 ].forEach(function(setting) {
345 this.tracker.add(
346 setting,
347 print_preview.ticket_items.TicketItem.EventType.CHANGE,
348 this.onTicketChange_.bind(this));
349 }.bind(this));
350 339
351 if (this.checkPluginCompatibility_()) { 340 if (this.checkPluginCompatibility_()) {
352 this.previewGenerator_ = new print_preview.PreviewGenerator( 341 this.previewGenerator_ = new print_preview.PreviewGenerator(
353 this.destinationStore_, 342 this.destinationStore_, this.printTicketStore_, this.nativeLayer_,
354 this.printTicketStore_,
355 this.nativeLayer_,
356 this.documentInfo_); 343 this.documentInfo_);
357 this.tracker.add( 344 this.tracker.add(
358 this.previewGenerator_, 345 this.previewGenerator_,
359 print_preview.PreviewGenerator.EventType.PREVIEW_START, 346 print_preview.PreviewGenerator.EventType.PREVIEW_START,
360 this.onPreviewStart_.bind(this)); 347 this.onPreviewStart_.bind(this));
361 this.tracker.add( 348 this.tracker.add(
362 this.previewGenerator_, 349 this.previewGenerator_,
363 print_preview.PreviewGenerator.EventType.PAGE_READY, 350 print_preview.PreviewGenerator.EventType.PAGE_READY,
364 this.onPagePreviewReady_.bind(this)); 351 this.onPagePreviewReady_.bind(this));
365 this.tracker.add( 352 this.tracker.add(
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
435 422
436 // Show specific message. 423 // Show specific message.
437 if (messageId == print_preview.PreviewAreaMessageId_.CUSTOM) { 424 if (messageId == print_preview.PreviewAreaMessageId_.CUSTOM) {
438 var customMessageTextEl = this.getElement().getElementsByClassName( 425 var customMessageTextEl = this.getElement().getElementsByClassName(
439 PreviewArea.Classes_.CUSTOM_MESSAGE_TEXT)[0]; 426 PreviewArea.Classes_.CUSTOM_MESSAGE_TEXT)[0];
440 customMessageTextEl.textContent = opt_message; 427 customMessageTextEl.textContent = opt_message;
441 } else if (messageId == print_preview.PreviewAreaMessageId_.LOADING) { 428 } else if (messageId == print_preview.PreviewAreaMessageId_.LOADING) {
442 jumpingDotsEl.classList.add('jumping-dots'); 429 jumpingDotsEl.classList.add('jumping-dots');
443 } 430 }
444 var messageEl = this.getElement().getElementsByClassName( 431 var messageEl = this.getElement().getElementsByClassName(
445 PreviewArea.MessageIdClassMap_[messageId])[0]; 432 PreviewArea.MessageIdClassMap_[messageId])[0];
446 setIsVisible(messageEl, true); 433 setIsVisible(messageEl, true);
447 434
448 this.setOverlayVisible_(true); 435 this.setOverlayVisible_(true);
449 }, 436 },
450 437
451 /** 438 /**
452 * Set the visibility of the message overlay. 439 * Set the visibility of the message overlay.
453 * @param {boolean} visible Whether to make the overlay visible or not 440 * @param {boolean} visible Whether to make the overlay visible or not
454 * @private 441 * @private
455 */ 442 */
456 setOverlayVisible_: function(visible) { 443 setOverlayVisible_: function(visible) {
457 this.overlayEl_.classList.toggle( 444 this.overlayEl_.classList.toggle(
458 PreviewArea.Classes_.INVISIBLE, 445 PreviewArea.Classes_.INVISIBLE, !visible);
459 !visible);
460 this.overlayEl_.setAttribute('aria-hidden', !visible); 446 this.overlayEl_.setAttribute('aria-hidden', !visible);
461 447
462 // Hide/show all controls that will overlap when the overlay is visible. 448 // Hide/show all controls that will overlap when the overlay is visible.
463 var marginControls = this.getElement().getElementsByClassName( 449 var marginControls = this.getElement().getElementsByClassName(
464 PreviewArea.Classes_.MARGIN_CONTROL); 450 PreviewArea.Classes_.MARGIN_CONTROL);
465 for (var i = 0; i < marginControls.length; ++i) { 451 for (var i = 0; i < marginControls.length; ++i) {
466 marginControls[i].setAttribute('aria-hidden', visible); 452 marginControls[i].setAttribute('aria-hidden', visible);
467 } 453 }
468 var previewAreaControls = this.getElement().getElementsByClassName( 454 var previewAreaControls = this.getElement().getElementsByClassName(
469 PreviewArea.Classes_.PREVIEW_AREA); 455 PreviewArea.Classes_.PREVIEW_AREA);
470 for (var i = 0; i < previewAreaControls.length; ++i) { 456 for (var i = 0; i < previewAreaControls.length; ++i) {
471 previewAreaControls[i].setAttribute('aria-hidden', visible); 457 previewAreaControls[i].setAttribute('aria-hidden', visible);
472 } 458 }
473 459
474 if (!visible) { 460 if (!visible) {
475 // Disable jumping animation to conserve cycles. 461 // Disable jumping animation to conserve cycles.
476 var jumpingDotsEl = this.getElement().querySelector( 462 var jumpingDotsEl = this.getElement().querySelector(
477 '.preview-area-loading-message-jumping-dots'); 463 '.preview-area-loading-message-jumping-dots');
478 jumpingDotsEl.classList.remove('jumping-dots'); 464 jumpingDotsEl.classList.remove('jumping-dots');
479 } 465 }
480 }, 466 },
481 467
482 /** 468 /**
483 * Creates a preview plugin and adds it to the DOM. 469 * Creates a preview plugin and adds it to the DOM.
484 * @param {string} srcUrl Initial URL of the plugin. 470 * @param {string} srcUrl Initial URL of the plugin.
485 * @private 471 * @private
486 */ 472 */
487 createPlugin_: function(srcUrl) { 473 createPlugin_: function(srcUrl) {
488 assert(!this.plugin_); 474 assert(!this.plugin_);
489 this.plugin_ = /** @type {print_preview.PDFPlugin} */( 475 this.plugin_ = /** @type {print_preview.PDFPlugin} */ (
490 PDFCreateOutOfProcessPlugin(srcUrl)); 476 PDFCreateOutOfProcessPlugin(srcUrl));
491 this.plugin_.setKeyEventCallback(this.keyEventCallback_); 477 this.plugin_.setKeyEventCallback(this.keyEventCallback_);
492 478
493 this.plugin_.setAttribute('class', 'preview-area-plugin'); 479 this.plugin_.setAttribute('class', 'preview-area-plugin');
494 this.plugin_.setAttribute('aria-live', 'polite'); 480 this.plugin_.setAttribute('aria-live', 'polite');
495 this.plugin_.setAttribute('aria-atomic', 'true'); 481 this.plugin_.setAttribute('aria-atomic', 'true');
496 // NOTE: The plugin's 'id' field must be set to 'pdf-viewer' since 482 // NOTE: The plugin's 'id' field must be set to 'pdf-viewer' since
497 // chrome/renderer/printing/print_web_view_helper.cc actually references 483 // chrome/renderer/printing/print_web_view_helper.cc actually references
498 // it. 484 // it.
499 this.plugin_.setAttribute('id', 'pdf-viewer'); 485 this.plugin_.setAttribute('id', 'pdf-viewer');
500 this.getChildElement('.preview-area-plugin-wrapper'). 486 this.getChildElement('.preview-area-plugin-wrapper')
501 appendChild(/** @type {Node} */(this.plugin_)); 487 .appendChild(/** @type {Node} */ (this.plugin_));
502 488
503 this.plugin_.setLoadCallback(this.onPluginLoad_.bind(this)); 489 this.plugin_.setLoadCallback(this.onPluginLoad_.bind(this));
504 this.plugin_.setViewportChangedCallback( 490 this.plugin_.setViewportChangedCallback(
505 this.onPreviewVisualStateChange_.bind(this)); 491 this.onPreviewVisualStateChange_.bind(this));
506 }, 492 },
507 493
508 /** 494 /**
509 * Dispatches a PREVIEW_GENERATION_DONE event if all conditions are met. 495 * Dispatches a PREVIEW_GENERATION_DONE event if all conditions are met.
510 * @private 496 * @private
511 */ 497 */
(...skipping 23 matching lines...) Expand all
535 /** 521 /**
536 * Called when the print ticket changes. Updates the preview. 522 * Called when the print ticket changes. Updates the preview.
537 * @private 523 * @private
538 */ 524 */
539 onTicketChange_: function() { 525 onTicketChange_: function() {
540 if (this.previewGenerator_ && this.previewGenerator_.requestPreview()) { 526 if (this.previewGenerator_ && this.previewGenerator_.requestPreview()) {
541 cr.dispatchSimpleEvent( 527 cr.dispatchSimpleEvent(
542 this, PreviewArea.EventType.PREVIEW_GENERATION_IN_PROGRESS); 528 this, PreviewArea.EventType.PREVIEW_GENERATION_IN_PROGRESS);
543 if (this.loadingTimeout_ == null) { 529 if (this.loadingTimeout_ == null) {
544 this.loadingTimeout_ = setTimeout( 530 this.loadingTimeout_ = setTimeout(
545 this.showMessage_.bind(this, 531 this.showMessage_.bind(
546 print_preview.PreviewAreaMessageId_.LOADING), 532 this, print_preview.PreviewAreaMessageId_.LOADING),
547 PreviewArea.LOADING_TIMEOUT_); 533 PreviewArea.LOADING_TIMEOUT_);
548 } 534 }
549 } else { 535 } else {
550 this.marginControlContainer_.showMarginControlsIfNeeded(); 536 this.marginControlContainer_.showMarginControlsIfNeeded();
551 } 537 }
552 }, 538 },
553 539
554 /** 540 /**
555 * Called when the preview generator begins loading the preview. 541 * Called when the preview generator begins loading the preview.
556 * @param {Event} event Contains the URL to initialize the plugin to. 542 * @param {Event} event Contains the URL to initialize the plugin to.
557 * @private 543 * @private
558 */ 544 */
559 onPreviewStart_: function(event) { 545 onPreviewStart_: function(event) {
560 this.isDocumentReady_ = false; 546 this.isDocumentReady_ = false;
561 this.isPluginReloaded_ = false; 547 this.isPluginReloaded_ = false;
562 if (!this.plugin_) { 548 if (!this.plugin_) {
563 this.createPlugin_(event.previewUrl); 549 this.createPlugin_(event.previewUrl);
564 } 550 }
565 this.plugin_.resetPrintPreviewMode( 551 this.plugin_.resetPrintPreviewMode(
566 event.previewUrl, 552 event.previewUrl, !this.printTicketStore_.color.getValue(),
567 !this.printTicketStore_.color.getValue(),
568 this.printTicketStore_.pageRange.getPageNumberSet().asArray(), 553 this.printTicketStore_.pageRange.getPageNumberSet().asArray(),
569 this.documentInfo_.isModifiable); 554 this.documentInfo_.isModifiable);
570 555
571 cr.dispatchSimpleEvent( 556 cr.dispatchSimpleEvent(
572 this, PreviewArea.EventType.PREVIEW_GENERATION_IN_PROGRESS); 557 this, PreviewArea.EventType.PREVIEW_GENERATION_IN_PROGRESS);
573 }, 558 },
574 559
575 /** 560 /**
576 * Called when a page preview has been generated. Updates the plugin with 561 * Called when a page preview has been generated. Updates the plugin with
577 * the new page. 562 * the new page.
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
625 this.isPluginReloaded_ = true; 610 this.isPluginReloaded_ = true;
626 this.dispatchPreviewGenerationDoneIfReady_(); 611 this.dispatchPreviewGenerationDoneIfReady_();
627 }, 612 },
628 613
629 /** 614 /**
630 * Called when the preview plugin's visual state has changed. This is a 615 * Called when the preview plugin's visual state has changed. This is a
631 * consequence of scrolling or zooming the plugin. Updates the custom 616 * consequence of scrolling or zooming the plugin. Updates the custom
632 * margins component if shown. 617 * margins component if shown.
633 * @private 618 * @private
634 */ 619 */
635 onPreviewVisualStateChange_: function(pageX, 620 onPreviewVisualStateChange_: function(
636 pageY, 621 pageX, pageY, pageWidth, viewportWidth, viewportHeight) {
637 pageWidth,
638 viewportWidth,
639 viewportHeight) {
640 this.marginControlContainer_.updateTranslationTransform( 622 this.marginControlContainer_.updateTranslationTransform(
641 new print_preview.Coordinate2d(pageX, pageY)); 623 new print_preview.Coordinate2d(pageX, pageY));
642 this.marginControlContainer_.updateScaleTransform( 624 this.marginControlContainer_.updateScaleTransform(
643 pageWidth / this.documentInfo_.pageSize.width); 625 pageWidth / this.documentInfo_.pageSize.width);
644 this.marginControlContainer_.updateClippingMask( 626 this.marginControlContainer_.updateClippingMask(
645 new print_preview.Size(viewportWidth, viewportHeight)); 627 new print_preview.Size(viewportWidth, viewportHeight));
646 }, 628 },
647 629
648 /** 630 /**
649 * Called when dragging margins starts or stops. 631 * Called when dragging margins starts or stops.
650 * @param {boolean} isDragging True if the margin is currently being dragged 632 * @param {boolean} isDragging True if the margin is currently being dragged
651 * and false otherwise. 633 * and false otherwise.
652 */ 634 */
653 onMarginDragChanged_: function(isDragging) { 635 onMarginDragChanged_: function(isDragging) {
654 if (!this.plugin_) 636 if (!this.plugin_)
655 return; 637 return;
656 638
657 // When hovering over the plugin (which may be in a separate iframe) 639 // When hovering over the plugin (which may be in a separate iframe)
658 // pointer events will be sent to the frame. When dragging the margins, 640 // pointer events will be sent to the frame. When dragging the margins,
659 // we don't want this to happen as it can cause the margin to stop 641 // we don't want this to happen as it can cause the margin to stop
660 // being draggable. 642 // being draggable.
661 this.plugin_.style.pointerEvents = isDragging ? 'none' : 'auto'; 643 this.plugin_.style.pointerEvents = isDragging ? 'none' : 'auto';
662 } 644 }
663 }; 645 };
664 646
665 // Export 647 // Export
666 return { 648 return {PreviewArea: PreviewArea};
667 PreviewArea: PreviewArea
668 };
669 }); 649 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698