OLD | NEW |
---|---|
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 (function() { | 5 (function() { |
6 'use strict'; | 6 'use strict'; |
7 | 7 |
8 /** | 8 /** |
9 * This is the absolute difference maintained between standard and | 9 * This is the absolute difference maintained between standard and |
10 * fixed-width font sizes. http://crbug.com/91922. | 10 * fixed-width font sizes. http://crbug.com/91922. |
11 * @const @private {number} | 11 * @const @private {number} |
12 */ | 12 */ |
dpapad
2017/04/19 17:48:22
OuterIIFEBody indentation fix. Unfortunately --fix
Dan Beam
2017/04/19 19:04:40
we'd definitely need that to use eslint, IMO...
| |
13 var SIZE_DIFFERENCE_FIXED_STANDARD_ = 3; | 13 var SIZE_DIFFERENCE_FIXED_STANDARD_ = 3; |
14 | 14 |
15 /** @const @private {!Array<number>} */ | 15 /** @const @private {!Array<number>} */ |
16 var FONT_SIZE_RANGE_ = [ | 16 var FONT_SIZE_RANGE_ = [ |
17 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, | 17 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, |
18 40, 44, 48, 56, 64, 72, | 18 40, 44, 48, 56, 64, 72, |
19 ]; | 19 ]; |
20 | 20 |
21 /** @const @private {!Array<number>} */ | 21 /** @const @private {!Array<number>} */ |
22 var MINIMUM_FONT_SIZE_RANGE_ = [ | 22 var MINIMUM_FONT_SIZE_RANGE_ = [ |
23 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 24 | 23 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 24 |
24 ]; | 24 ]; |
25 | 25 |
26 /** | 26 /** |
27 * 'settings-appearance-fonts-page' is the settings page containing appearance | 27 * 'settings-appearance-fonts-page' is the settings page containing appearance |
28 * settings. | 28 * settings. |
29 * | 29 * |
30 * Example: | 30 * Example: |
31 * | 31 * |
32 * <settings-appearance-fonts-page prefs="{{prefs}}"> | 32 * <settings-appearance-fonts-page prefs="{{prefs}}"> |
33 * </settings-appearance-fonts-page> | 33 * </settings-appearance-fonts-page> |
34 */ | 34 */ |
35 Polymer({ | 35 Polymer({ |
36 is: 'settings-appearance-fonts-page', | 36 is: 'settings-appearance-fonts-page', |
37 | 37 |
38 behaviors: [I18nBehavior, WebUIListenerBehavior], | 38 behaviors: [I18nBehavior, WebUIListenerBehavior], |
39 | 39 |
40 properties: { | 40 properties: { |
41 /** @private */ | 41 /** @private */ |
42 advancedExtensionSublabel_: String, | 42 advancedExtensionSublabel_: String, |
43 | 43 |
44 /** @private {!DropdownMenuOptionList} */ | 44 /** @private {!DropdownMenuOptionList} */ |
45 fontOptions_: Object, | 45 fontOptions_: Object, |
46 | 46 |
47 /** @private */ | 47 /** @private */ |
48 isGuest_: { | 48 isGuest_: { |
49 type: Boolean, | 49 type: Boolean, |
50 value: function() { return loadTimeData.getBoolean('isGuest'); } | 50 value: function() { return loadTimeData.getBoolean('isGuest'); } |
51 }, | 51 }, |
52 | 52 |
53 /** | 53 /** |
54 * Common font sizes. | 54 * Common font sizes. |
55 * @private {!Array<number>} | 55 * @private {!Array<number>} |
56 */ | 56 */ |
57 fontSizeRange_: { | 57 fontSizeRange_: { |
58 readOnly: true, | 58 readOnly: true, |
59 type: Array, | 59 type: Array, |
60 value: FONT_SIZE_RANGE_, | 60 value: FONT_SIZE_RANGE_, |
61 }, | 61 }, |
62 | 62 |
63 /** | 63 /** |
64 * Reasonable, minimum font sizes. | 64 * Reasonable, minimum font sizes. |
65 * @private {!Array<number>} | 65 * @private {!Array<number>} |
66 */ | 66 */ |
67 minimumFontSizeRange_: { | 67 minimumFontSizeRange_: { |
68 readOnly: true, | 68 readOnly: true, |
69 type: Array, | 69 type: Array, |
70 value: MINIMUM_FONT_SIZE_RANGE_, | 70 value: MINIMUM_FONT_SIZE_RANGE_, |
71 }, | 71 }, |
72 | 72 |
73 /** | 73 /** |
74 * Preferences state. | 74 * Preferences state. |
75 */ | 75 */ |
76 prefs: { | 76 prefs: { |
77 type: Object, | 77 type: Object, |
78 notify: true, | 78 notify: true, |
79 }, | |
80 }, | 79 }, |
80 }, | |
81 | 81 |
82 /** @private {?settings.FontsBrowserProxy} */ | 82 /** @private {?settings.FontsBrowserProxy} */ |
83 browserProxy_: null, | 83 browserProxy_: null, |
84 | 84 |
85 /** @private {boolean} */ | 85 /** @private {boolean} */ |
86 advancedExtensionInstalled_: false, | 86 advancedExtensionInstalled_: false, |
87 | 87 |
88 /** @private {?string} */ | 88 /** @private {?string} */ |
89 advancedExtensionUrl_: null, | 89 advancedExtensionUrl_: null, |
90 | 90 |
91 observers: [ | 91 observers: [ |
92 'fontSizeChanged_(prefs.webkit.webprefs.default_font_size.value)', | 92 'fontSizeChanged_(prefs.webkit.webprefs.default_font_size.value)', |
93 ], | 93 ], |
94 | 94 |
95 /** @override */ | 95 /** @override */ |
96 created: function() { | 96 created: function() { |
97 this.browserProxy_ = settings.FontsBrowserProxyImpl.getInstance(); | 97 this.browserProxy_ = settings.FontsBrowserProxyImpl.getInstance(); |
98 }, | 98 }, |
99 | 99 |
100 /** @override */ | 100 /** @override */ |
101 ready: function() { | 101 ready: function() { |
102 this.addWebUIListener('advanced-font-settings-installed', | 102 this.addWebUIListener('advanced-font-settings-installed', |
103 this.setAdvancedExtensionInstalled_.bind(this)); | 103 this.setAdvancedExtensionInstalled_.bind(this)); |
104 this.browserProxy_.observeAdvancedFontExtensionAvailable(); | 104 this.browserProxy_.observeAdvancedFontExtensionAvailable(); |
105 | 105 |
106 this.browserProxy_.fetchFontsData().then( | 106 this.browserProxy_.fetchFontsData().then( |
107 this.setFontsData_.bind(this)); | 107 this.setFontsData_.bind(this)); |
108 }, | 108 }, |
109 | 109 |
110 /** @private */ | 110 /** @private */ |
111 openAdvancedExtension_: function() { | 111 openAdvancedExtension_: function() { |
112 if (this.advancedExtensionInstalled_) | 112 if (this.advancedExtensionInstalled_) |
113 this.browserProxy_.openAdvancedFontSettings(); | 113 this.browserProxy_.openAdvancedFontSettings(); |
114 else | 114 else |
115 window.open(this.advancedExtensionUrl_); | 115 window.open(this.advancedExtensionUrl_); |
116 }, | 116 }, |
117 | 117 |
118 /** | 118 /** |
119 * @param {boolean} isInstalled Whether the advanced font settings | 119 * @param {boolean} isInstalled Whether the advanced font settings |
120 * extension is installed. | 120 * extension is installed. |
121 * @private | 121 * @private |
122 */ | 122 */ |
123 setAdvancedExtensionInstalled_: function(isInstalled) { | 123 setAdvancedExtensionInstalled_: function(isInstalled) { |
124 this.advancedExtensionInstalled_ = isInstalled; | 124 this.advancedExtensionInstalled_ = isInstalled; |
125 this.advancedExtensionSublabel_ = this.i18n(isInstalled ? | 125 this.advancedExtensionSublabel_ = this.i18n(isInstalled ? |
126 'openAdvancedFontSettings' : 'requiresWebStoreExtension'); | 126 'openAdvancedFontSettings' : 'requiresWebStoreExtension'); |
127 }, | 127 }, |
128 | 128 |
129 /** | 129 /** |
130 * @param {!FontsData} response A list of fonts and the advanced | 130 * @param {!FontsData} response A list of fonts and the advanced |
131 * font settings extension URL. | 131 * font settings extension URL. |
132 * @private | 132 * @private |
133 */ | 133 */ |
134 setFontsData_: function(response) { | 134 setFontsData_: function(response) { |
135 var fontMenuOptions = []; | 135 var fontMenuOptions = []; |
136 for (var i = 0; i < response.fontList.length; ++i) { | 136 for (var i = 0; i < response.fontList.length; ++i) { |
137 fontMenuOptions.push({ | 137 fontMenuOptions.push({ |
138 value: response.fontList[i][0], | 138 value: response.fontList[i][0], |
139 name: response.fontList[i][1] | 139 name: response.fontList[i][1] |
140 }); | 140 }); |
141 } | 141 } |
142 this.fontOptions_ = fontMenuOptions; | 142 this.fontOptions_ = fontMenuOptions; |
143 this.advancedExtensionUrl_ = response.extensionUrl; | 143 this.advancedExtensionUrl_ = response.extensionUrl; |
144 }, | 144 }, |
145 | 145 |
146 /** | 146 /** |
147 * @param {number} value The changed font size slider value. | 147 * @param {number} value The changed font size slider value. |
148 * @private | 148 * @private |
149 */ | 149 */ |
150 fontSizeChanged_: function(value) { | 150 fontSizeChanged_: function(value) { |
151 // TODO(michaelpg): Whitelist this pref in prefs_utils.cc so it is | 151 // TODO(michaelpg): Whitelist this pref in prefs_utils.cc so it is |
152 // included in the <settings-prefs> getAllPrefs call, otherwise this path | 152 // included in the <settings-prefs> getAllPrefs call, otherwise this path |
153 // is invalid and nothing happens. See crbug.com/612535. | 153 // is invalid and nothing happens. See crbug.com/612535. |
154 this.set('prefs.webkit.webprefs.default_fixed_font_size.value', | 154 this.set('prefs.webkit.webprefs.default_fixed_font_size.value', |
155 value - SIZE_DIFFERENCE_FIXED_STANDARD_); | 155 value - SIZE_DIFFERENCE_FIXED_STANDARD_); |
156 }, | 156 }, |
157 | 157 |
158 /** | 158 /** |
159 * Get the minimum font size, accounting for unset prefs. | 159 * Get the minimum font size, accounting for unset prefs. |
160 * @return {?} | 160 * @return {?} |
161 * @private | 161 * @private |
162 */ | 162 */ |
163 computeMinimumFontSize_: function() { | 163 computeMinimumFontSize_: function() { |
164 return this.get('prefs.webkit.webprefs.minimum_font_size.value') || | 164 return this.get('prefs.webkit.webprefs.minimum_font_size.value') || |
165 MINIMUM_FONT_SIZE_RANGE_[0]; | 165 MINIMUM_FONT_SIZE_RANGE_[0]; |
166 }, | 166 }, |
167 }); | 167 }); |
168 })(); | 168 })(); |
OLD | NEW |