Only grant permissions to new extensions from sync if they have the expected version
[chromium-blink-merge.git] / chrome / browser / resources / print_preview / settings / layout_settings.js
blobaf0bbeadf08fd55133f4c4a42d2df7711ea2512b
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
3 // found in the LICENSE file.
5 cr.define('print_preview', function() {
6 'use strict';
8 /**
9 * Creates a LayoutSettings object. This object encapsulates all settings and
10 * logic related to layout mode (portrait/landscape).
11 * @param {!print_preview.ticket_items.Landscape} landscapeTicketItem Used to
12 * get the layout written to the print ticket.
13 * @constructor
14 * @extends {print_preview.SettingsSection}
16 function LayoutSettings(landscapeTicketItem) {
17 print_preview.SettingsSection.call(this);
19 /**
20 * Used to get the layout written to the print ticket.
21 * @type {!print_preview.ticket_items.Landscape}
22 * @private
24 this.landscapeTicketItem_ = landscapeTicketItem;
27 LayoutSettings.prototype = {
28 __proto__: print_preview.SettingsSection.prototype,
30 /** @override */
31 isAvailable: function() {
32 return this.landscapeTicketItem_.isCapabilityAvailable();
35 /** @override */
36 hasCollapsibleContent: function() {
37 return false;
40 /** @override */
41 set isEnabled(isEnabled) {
42 this.select_.disabled = !isEnabled;
45 /** @override */
46 enterDocument: function() {
47 print_preview.SettingsSection.prototype.enterDocument.call(this);
48 this.tracker.add(
49 this.select_, 'change', this.onSelectChange_.bind(this));
50 this.tracker.add(
51 this.landscapeTicketItem_,
52 print_preview.ticket_items.TicketItem.EventType.CHANGE,
53 this.onLandscapeTicketItemChange_.bind(this));
56 /**
57 * Called when the select element is changed. Updates the print ticket
58 * layout selection.
59 * @private
61 onSelectChange_: function() {
62 var select = this.select_;
63 var isLandscape =
64 select.options[select.selectedIndex].value == 'landscape';
65 this.landscapeTicketItem_.updateValue(isLandscape);
68 /**
69 * @return {HTMLSelectElement} Select element containing the layout options.
70 * @private
72 get select_() {
73 return this.getChildElement('.layout-settings-select');
76 /**
77 * Called when the print ticket store changes state. Updates the state of
78 * the radio buttons and hides the setting if necessary.
79 * @private
81 onLandscapeTicketItemChange_: function() {
82 if (this.isAvailable()) {
83 var select = this.select_;
84 var valueToSelect =
85 this.landscapeTicketItem_.getValue() ? 'landscape' : 'portrait';
86 for (var i = 0; i < select.options.length; i++) {
87 if (select.options[i].value == valueToSelect) {
88 select.selectedIndex = i;
89 break;
93 this.updateUiStateInternal();
97 // Export
98 return {
99 LayoutSettings: LayoutSettings