Chromium Code Reviews| 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 |