| 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 |