| Index: chrome/browser/resources/print_preview/search/destination_list_item.js
|
| diff --git a/chrome/browser/resources/print_preview/search/destination_list_item.js b/chrome/browser/resources/print_preview/search/destination_list_item.js
|
| index a8c19aa9d075f9e10189880c7f589e363bb776bc..48b5b8174f78e0a73664a44c4eb5a44e321edc1c 100644
|
| --- a/chrome/browser/resources/print_preview/search/destination_list_item.js
|
| +++ b/chrome/browser/resources/print_preview/search/destination_list_item.js
|
| @@ -132,6 +132,34 @@ cr.define('print_preview', function() {
|
| }
|
| nameEl.title = textContent;
|
|
|
| + if (this.destination_.isExtension) {
|
| + var extensionNameEl = this.getChildElement('.extension-name');
|
| + var extensionName = this.destination_.extensionName;
|
| + extensionNameEl.title = this.destination_.extensionName;
|
| + if (this.query_) {
|
| + extensionNameEl.textContent = '';
|
| + this.addTextWithHighlight_(extensionNameEl, extensionName);
|
| + } else {
|
| + extensionNameEl.textContent = this.destination_.extensionName;
|
| + }
|
| +
|
| + var extensionIconEl = this.getChildElement('.extension-icon');
|
| + extensionIconEl.style.backgroundImage = '-webkit-image-set(' +
|
| + 'url(chrome://extension-icon/' +
|
| + this.destination_.extensionId + '/24/1) 1x,' +
|
| + 'url(chrome://extension-icon/' +
|
| + this.destination_.extensionId + '/48/1) 2x)';
|
| + extensionIconEl.title = loadTimeData.getStringF(
|
| + 'extensionDestinationIconTooltip',
|
| + this.destination_.extensionName);
|
| + extensionIconEl.onclick = this.onExtensionIconClicked_.bind(this);
|
| + extensionIconEl.onkeydown = this.onExtensionIconKeyDown_.bind(this);
|
| + }
|
| +
|
| + var extensionIndicatorEl =
|
| + this.getChildElement('.extension-controlled-indicator');
|
| + setIsVisible(extensionIndicatorEl, this.destination_.isExtension);
|
| +
|
| // Initialize the element which renders the destination's offline status.
|
| this.getElement().classList.toggle('stale', this.destination_.isOffline);
|
| var offlineStatusEl = this.getChildElement('.offline-status');
|
| @@ -232,6 +260,32 @@ cr.define('print_preview', function() {
|
| DestinationListItem.EventType.REGISTER_PROMO_CLICKED);
|
| promoClickedEvent.destination = this.destination_;
|
| this.eventTarget_.dispatchEvent(promoClickedEvent);
|
| + },
|
| +
|
| + /**
|
| + * Handles click and 'Enter' key down events for the extension icon element.
|
| + * It opens extensions page with the extension associated with the
|
| + * destination highlighted.
|
| + * @param {MouseEvent|KeyboardEvent} e The event to handle.
|
| + * @private
|
| + */
|
| + onExtensionIconClicked_: function(e) {
|
| + e.stopPropagation();
|
| + window.open('chrome://extensions?id=' + this.destination_.extensionId);
|
| + },
|
| +
|
| + /**
|
| + * Handles key down event for the extensin icon element. Keys different than
|
| + * 'Enter' are ignored.
|
| + * @param {KeyboardEvent} e The event to handle.
|
| + * @private
|
| + */
|
| + onExtensionIconKeyDown_: function(e) {
|
| + if (e.shiftKey || e.ctrlKey || e.altKey || e.metaKey)
|
| + return;
|
| + if (e.keyCode != 13 /* Enter */)
|
| + return;
|
| + this.onExtensionIconClicked_(event);
|
| }
|
| };
|
|
|
|
|