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 /** @const @private {!Array<number>} */ | 8 /** @const @private {!Array<number>} */ |
9 var FONT_SIZE_RANGE_ = [ | 9 var FONT_SIZE_RANGE_ = [ |
10 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, | 10 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 24, |
11 40, 44, 48, 56, 64, 72, | 11 26, 28, 30, 32, 34, 36, 40, 44, 48, 56, 64, 72, |
12 ]; | 12 ]; |
13 | 13 |
14 /** @const @private {!Array<number>} */ | 14 /** @const @private {!Array<number>} */ |
15 var MINIMUM_FONT_SIZE_RANGE_ = [ | 15 var MINIMUM_FONT_SIZE_RANGE_ = |
16 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 24 | 16 [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 24]; |
17 ]; | |
18 | 17 |
19 /** | 18 /** |
20 * 'settings-appearance-fonts-page' is the settings page containing appearance | 19 * 'settings-appearance-fonts-page' is the settings page containing appearance |
21 * settings. | 20 * settings. |
22 */ | 21 */ |
23 Polymer({ | 22 Polymer({ |
24 is: 'settings-appearance-fonts-page', | 23 is: 'settings-appearance-fonts-page', |
25 | 24 |
26 behaviors: [I18nBehavior, WebUIListenerBehavior], | 25 behaviors: [I18nBehavior, WebUIListenerBehavior], |
27 | 26 |
28 properties: { | 27 properties: { |
29 /** @private */ | 28 /** @private */ |
30 advancedExtensionSublabel_: String, | 29 advancedExtensionSublabel_: String, |
31 | 30 |
32 /** @private {!DropdownMenuOptionList} */ | 31 /** @private {!DropdownMenuOptionList} */ |
33 fontOptions_: Object, | 32 fontOptions_: Object, |
34 | |
35 /** @private */ | |
36 isGuest_: { | |
37 type: Boolean, | |
38 value: function() { return loadTimeData.getBoolean('isGuest'); } | |
39 }, | |
40 | |
41 /** | |
42 * Common font sizes. | |
43 * @private {!Array<number>} | |
44 */ | |
45 fontSizeRange_: { | |
46 readOnly: true, | |
47 type: Array, | |
48 value: FONT_SIZE_RANGE_, | |
49 }, | |
50 | |
51 /** | |
52 * Reasonable, minimum font sizes. | |
53 * @private {!Array<number>} | |
54 */ | |
55 minimumFontSizeRange_: { | |
56 readOnly: true, | |
57 type: Array, | |
58 value: MINIMUM_FONT_SIZE_RANGE_, | |
59 }, | |
60 | |
61 /** | |
62 * Preferences state. | |
63 */ | |
64 prefs: { | |
65 type: Object, | |
66 notify: true, | |
67 }, | |
68 }, | |
69 | |
70 /** @private {?settings.FontsBrowserProxy} */ | |
71 browserProxy_: null, | |
72 | |
73 /** @private {boolean} */ | |
74 advancedExtensionInstalled_: false, | |
75 | |
76 /** @private {?string} */ | |
77 advancedExtensionUrl_: null, | |
78 | |
79 /** @override */ | |
80 created: function() { | |
81 this.browserProxy_ = settings.FontsBrowserProxyImpl.getInstance(); | |
82 }, | |
83 | |
84 /** @override */ | |
85 ready: function() { | |
86 this.addWebUIListener('advanced-font-settings-installed', | |
87 this.setAdvancedExtensionInstalled_.bind(this)); | |
88 this.browserProxy_.observeAdvancedFontExtensionAvailable(); | |
89 | |
90 this.browserProxy_.fetchFontsData().then( | |
91 this.setFontsData_.bind(this)); | |
92 }, | |
93 | 33 |
94 /** @private */ | 34 /** @private */ |
95 openAdvancedExtension_: function() { | 35 isGuest_: { |
96 if (this.advancedExtensionInstalled_) | 36 type: Boolean, |
97 this.browserProxy_.openAdvancedFontSettings(); | 37 value: function() { |
98 else | 38 return loadTimeData.getBoolean('isGuest'); |
99 window.open(this.advancedExtensionUrl_); | 39 } |
100 }, | 40 }, |
101 | 41 |
102 /** | 42 /** |
103 * @param {boolean} isInstalled Whether the advanced font settings | 43 * Common font sizes. |
104 * extension is installed. | 44 * @private {!Array<number>} |
105 * @private | |
106 */ | 45 */ |
107 setAdvancedExtensionInstalled_: function(isInstalled) { | 46 fontSizeRange_: { |
108 this.advancedExtensionInstalled_ = isInstalled; | 47 readOnly: true, |
109 this.advancedExtensionSublabel_ = this.i18n(isInstalled ? | 48 type: Array, |
110 'openAdvancedFontSettings' : 'requiresWebStoreExtension'); | 49 value: FONT_SIZE_RANGE_, |
111 }, | 50 }, |
112 | 51 |
113 /** | 52 /** |
114 * @param {!FontsData} response A list of fonts and the advanced | 53 * Reasonable, minimum font sizes. |
115 * font settings extension URL. | 54 * @private {!Array<number>} |
116 * @private | |
117 */ | 55 */ |
118 setFontsData_: function(response) { | 56 minimumFontSizeRange_: { |
119 var fontMenuOptions = []; | 57 readOnly: true, |
120 for (var i = 0; i < response.fontList.length; ++i) { | 58 type: Array, |
121 fontMenuOptions.push({ | 59 value: MINIMUM_FONT_SIZE_RANGE_, |
122 value: response.fontList[i][0], | |
123 name: response.fontList[i][1] | |
124 }); | |
125 } | |
126 this.fontOptions_ = fontMenuOptions; | |
127 this.advancedExtensionUrl_ = response.extensionUrl; | |
128 }, | 60 }, |
129 | 61 |
130 /** | 62 /** |
131 * Get the minimum font size, accounting for unset prefs. | 63 * Preferences state. |
132 * @return {?} | |
133 * @private | |
134 */ | 64 */ |
135 computeMinimumFontSize_: function() { | 65 prefs: { |
136 return this.get('prefs.webkit.webprefs.minimum_font_size.value') || | 66 type: Object, |
137 MINIMUM_FONT_SIZE_RANGE_[0]; | 67 notify: true, |
138 }, | 68 }, |
139 }); | 69 }, |
| 70 |
| 71 /** @private {?settings.FontsBrowserProxy} */ |
| 72 browserProxy_: null, |
| 73 |
| 74 /** @private {boolean} */ |
| 75 advancedExtensionInstalled_: false, |
| 76 |
| 77 /** @private {?string} */ |
| 78 advancedExtensionUrl_: null, |
| 79 |
| 80 /** @override */ |
| 81 created: function() { |
| 82 this.browserProxy_ = settings.FontsBrowserProxyImpl.getInstance(); |
| 83 }, |
| 84 |
| 85 /** @override */ |
| 86 ready: function() { |
| 87 this.addWebUIListener( |
| 88 'advanced-font-settings-installed', |
| 89 this.setAdvancedExtensionInstalled_.bind(this)); |
| 90 this.browserProxy_.observeAdvancedFontExtensionAvailable(); |
| 91 |
| 92 this.browserProxy_.fetchFontsData().then(this.setFontsData_.bind(this)); |
| 93 }, |
| 94 |
| 95 /** @private */ |
| 96 openAdvancedExtension_: function() { |
| 97 if (this.advancedExtensionInstalled_) |
| 98 this.browserProxy_.openAdvancedFontSettings(); |
| 99 else |
| 100 window.open(this.advancedExtensionUrl_); |
| 101 }, |
| 102 |
| 103 /** |
| 104 * @param {boolean} isInstalled Whether the advanced font settings |
| 105 * extension is installed. |
| 106 * @private |
| 107 */ |
| 108 setAdvancedExtensionInstalled_: function(isInstalled) { |
| 109 this.advancedExtensionInstalled_ = isInstalled; |
| 110 this.advancedExtensionSublabel_ = this.i18n( |
| 111 isInstalled ? 'openAdvancedFontSettings' : 'requiresWebStoreExtension'); |
| 112 }, |
| 113 |
| 114 /** |
| 115 * @param {!FontsData} response A list of fonts and the advanced |
| 116 * font settings extension URL. |
| 117 * @private |
| 118 */ |
| 119 setFontsData_: function(response) { |
| 120 var fontMenuOptions = []; |
| 121 for (var i = 0; i < response.fontList.length; ++i) { |
| 122 fontMenuOptions.push( |
| 123 {value: response.fontList[i][0], name: response.fontList[i][1]}); |
| 124 } |
| 125 this.fontOptions_ = fontMenuOptions; |
| 126 this.advancedExtensionUrl_ = response.extensionUrl; |
| 127 }, |
| 128 |
| 129 /** |
| 130 * Get the minimum font size, accounting for unset prefs. |
| 131 * @return {?} |
| 132 * @private |
| 133 */ |
| 134 computeMinimumFontSize_: function() { |
| 135 return this.get('prefs.webkit.webprefs.minimum_font_size.value') || |
| 136 MINIMUM_FONT_SIZE_RANGE_[0]; |
| 137 }, |
| 138 }); |
140 })(); | 139 })(); |
OLD | NEW |