Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(836)

Side by Side Diff: chrome/browser/resources/options/font_settings.js

Issue 7003007: Apply content-security-policy to the HTML options page. This is a (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2011 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.
4
5 cr.define('options', function() {
6
7 var OptionsPage = options.OptionsPage;
8
9 /**
10 * FontSettings class
11 * Encapsulated handling of the 'Fonts and Encoding' page.
12 * @class
13 */
14 function FontSettings() {
15 OptionsPage.call(this,
16 'fonts',
17 templateData.fontSettingsPageTabTitle,
18 'font-settings');
19 }
20
21 cr.addSingletonGetter(FontSettings);
22
23 FontSettings.prototype = {
24 __proto__: OptionsPage.prototype,
25
26 /**
27 * Initialize the page.
28 */
29 initializePage: function() {
30 OptionsPage.prototype.initializePage.call(this);
31
32 var standardFontRange = $('standard-font-size');
33 standardFontRange.valueMap = [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20,
34 22, 24, 26, 28, 30, 32, 34, 36, 40, 44, 48, 56, 64, 72];
35 standardFontRange.continuous = false;
36 standardFontRange.notifyChange = this.standardRangeChanged_.bind(this);
37
38 var minimumFontRange = $('minimum-font-size');
39 minimumFontRange.valueMap = [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
40 18, 20, 22, 24];
41 minimumFontRange.continuous = false;
42 minimumFontRange.notifyChange = this.minimumRangeChanged_.bind(this);
43 minimumFontRange.notifyPrefChange =
44 this.minimumFontSizeChanged_.bind(this);
45
46 var placeholder = localStrings.getString('fontSettingsPlaceholder');
47 $('standard-font-family').appendChild(new Option(placeholder));
48 $('serif-font-family').appendChild(new Option(placeholder));
49 $('sans-serif-font-family').appendChild(new Option(placeholder));
50 $('fixed-font-family').appendChild(new Option(placeholder));
51 $('font-encoding').appendChild(new Option(placeholder));
52 },
53
54 /**
55 * Called by the options page when this page has been shown.
56 */
57 didShowPage: function() {
58 // The fonts list may be large so we only load it when this page is
59 // loaded for the first time. This makes opening the options window
60 // faster and consume less memory if the user never opens the fonts
61 // dialog.
62 if (!this.hasShown) {
63 chrome.send('fetchFontsData');
64 this.hasShown = true;
65 }
66 },
67
68 /**
69 * Called as the user changes the standard font size. This allows for
70 * reflecting the change in the UI before the preference has been changed.
71 * @param {Element} el The slider input element.
72 * @param {number} value The mapped value currently set by the slider.
73 * @private
74 */
75 standardRangeChanged_: function(el, value) {
76 var fontSampleEl = $('standard-font-sample');
77 this.setUpFontSample_(fontSampleEl, value, fontSampleEl.style.fontFamily,
78 true);
79
80 fontSampleEl = $('serif-font-sample');
81 this.setUpFontSample_(fontSampleEl, value, fontSampleEl.style.fontFamily,
82 true);
83
84 fontSampleEl = $('sans-serif-font-sample');
85 this.setUpFontSample_(fontSampleEl, value, fontSampleEl.style.fontFamily,
86 true);
87 },
88
89 /**
90 * Called as the user changes the miniumum font size. This allows for
91 * reflecting the change in the UI before the preference has been changed.
92 * @param {Element} el The slider input element.
93 * @param {number} value The mapped value currently set by the slider.
94 * @private
95 */
96 minimumRangeChanged_: function(el, value) {
97 var fontSampleEl = $('minimum-font-sample');
98 this.setUpFontSample_(fontSampleEl, value, fontSampleEl.style.fontFamily,
99 true);
100 },
101
102 /**
103 * Sets the 'minimum_logical_font_size' preference when the minimum font
104 * size has been changed by the user.
105 * @param {Element} el The slider input element.
106 * @param {number} value The mapped value that has been saved.
107 * @private
108 */
109 minimumFontSizeChanged_: function(el, value) {
110 Preferences.setIntegerPref('webkit.webprefs.minimum_logical_font_size',
111 value, '');
112 },
113
114 /**
115 * Sets the text, font size and font family of the sample text.
116 * @param {Element} el The div containing the sample text.
117 * @param {number} size The font size of the sample text.
118 * @param {string} font The font family of the sample text.
119 * @param {bool} showSize True if the font size should appear in the sample.
120 * @private
121 */
122 setUpFontSample_: function(el, size, font, showSize) {
123 var prefix = showSize ? (size + ': ') : '';
124 el.textContent = prefix +
125 localStrings.getString('fontSettingsLoremIpsum');
126 el.style.fontSize = size + 'px';
127 if (font)
128 el.style.fontFamily = font;
129 },
130
131 /**
132 * Populates a select list and selects the specified item.
133 * @param {Element} element The select element to populate.
134 * @param {Array} items The array of items from which to populate.
135 * @param {string} selectedValue The selected item.
136 * @private
137 */
138 populateSelect_: function(element, items, selectedValue) {
139 // Remove any existing content.
140 element.textContent = '';
141
142 // Insert new child nodes into select element.
143 var value, text, selected, option;
144 for (var i = 0; i < items.length; i++) {
145 value = items[i][0];
146 text = items[i][1];
147 if (text) {
148 selected = value == selectedValue;
149 element.appendChild(new Option(text, value, false, selected));
150 } else {
151 element.appendChild(document.createElement('hr'));
152 }
153 }
154
155 // Enable if not a managed pref.
156 if (!element.managed)
157 element.disabled = false;
158 }
159 };
160
161 // Chrome callbacks
162 FontSettings.setFontsData = function(fonts, encodings, selectedValues) {
163 FontSettings.getInstance().populateSelect_($('standard-font-family'), fonts,
164 selectedValues[0]);
165 FontSettings.getInstance().populateSelect_($('serif-font-family'), fonts,
166 selectedValues[1]);
167 FontSettings.getInstance().populateSelect_($('sans-serif-font-family'),
168 fonts, selectedValues[2]);
169 FontSettings.getInstance().populateSelect_($('fixed-font-family'), fonts,
170 selectedValues[3]);
171 FontSettings.getInstance().populateSelect_($('font-encoding'), encodings,
172 selectedValues[4]);
173 };
174
175 FontSettings.setUpStandardFontSample = function(font, size) {
176 FontSettings.getInstance().setUpFontSample_($('standard-font-sample'), size,
177 font, true);
178 };
179
180 FontSettings.setUpSerifFontSample = function(font, size) {
181 FontSettings.getInstance().setUpFontSample_($('serif-font-sample'), size,
182 font, true);
183 };
184
185 FontSettings.setUpSansSerifFontSample = function(font, size) {
186 FontSettings.getInstance().setUpFontSample_($('sans-serif-font-sample'),
187 size, font, true);
188 };
189
190 FontSettings.setUpFixedFontSample = function(font, size) {
191 FontSettings.getInstance().setUpFontSample_($('fixed-font-sample'),
192 size, font, false);
193 };
194
195 FontSettings.setUpMinimumFontSample = function(size) {
196 // If size is less than 6, represent it as six in the sample to account
197 // for the minimum logical font size.
198 if (size < 6)
199 size = 6;
200 FontSettings.getInstance().setUpFontSample_($('minimum-font-sample'), size,
201 null, true);
202 };
203
204 // Export
205 return {
206 FontSettings: FontSettings
207 };
208 });
209
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698