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

Side by Side Diff: chrome/common/extensions/docs/examples/api/fontSettings/pending_changes.js

Issue 23434003: UI refresh of Advanced Font Settings Extension (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: review comments Created 7 years, 3 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) 2013 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 /**
6 * @fileoverview PendingChanges class tracks changes to be applied when an
7 * "Apply Changes" button is clicked.
8 */
9
10 /**
11 * Creates a PendingChanges object with no pending changes.
12 *
13 * @constructor
14 */
15 var PendingChanges = function() {
16 // Format: pendingFontChanges_.Cyrl.sansserif = "My SansSerif Cyrillic Font"
17 this.pendingFontChanges_ = {};
18
19 // Format: pendingFontSizeChanges_.defaultFontSize = 12
20 this.pendingFontSizeChanges_ = {};
21 }
yoshiki 2013/08/28 08:58:44 Add a semicolon after the bracket, since "var = fu
falken 2013/08/29 09:35:44 Done.
22
23 /**
24 * Returns the pending font setting change for the specified script and family,
25 * or null if it doesn't exist.
26 *
27 * @param {string} script The script code, like "Cyrl".
28 * @param {string} genericFamily The generic family, like "sansserif".
29 * @return {string} The pending font setting, like "My Cyrillic SansSerif Font",
yoshiki 2013/08/28 08:58:44 s/string/?string/
falken 2013/08/29 09:35:44 Done.
30 * or null if it doesn't exist.
31 */
32 PendingChanges.prototype.getFont = function(script, genericFamily) {
33 if (this.pendingFontChanges_[script])
34 return this.pendingFontChanges_[script][genericFamily];
35 return null;
36 }
37
38 /**
39 * Returns the pending font size setting change, or null if it doesn't exist.
40 *
41 * @param {string} fontSizeKey The font size setting key. One of
42 * 'defaultFontSize', 'defaultFixedFontSize', or 'minFontSize'.
43 * @return {number} The pending font size setting in pixels, or null if it
yoshiki 2013/08/28 08:58:44 s/number/?number/
falken 2013/08/29 09:35:44 Done.
44 * doesn't exist.
45 */
46 PendingChanges.prototype.getFontSize = function(fontSizeKey) {
47 return this.pendingFontSizeChanges_[fontSizeKey];
48 }
49
50 /**
51 * Sets the pending font change for the specified script and family.
52 *
53 * @param {string} script The script code, like "Cyrl".
54 * @param {string} genericFamily The generic family, like "sansserif".
55 * @param {?string} font The font to set the setting to, or null to clear it.
56 */
57 PendingChanges.prototype.setFont = function(script, genericFamily, font) {
58 if (!this.pendingFontChanges_[script])
59 this.pendingFontChanges_[script] = {};
60 if (this.pendingFontChanges_[script][genericFamily] == font)
61 return;
62 this.pendingFontChanges_[script][genericFamily] = font;
63 }
64
65 /**
66 * Sets the pending font size change.
67 *
68 * @param {string} fontSizeKey The font size setting key. See
69 * getFontSize().
70 * @param {number} size The font size to set the setting to.
71 */
72 PendingChanges.prototype.setFontSize = function(fontSizeKey, size) {
73 if (this.pendingFontSizeChanges_[fontSizeKey] == size)
74 return;
75 this.pendingFontSizeChanges_[fontSizeKey] = size;
76 }
77
78 /**
79 * Commits the pending changes to Chrome. After this function is called, there
80 * are no pending changes.
81 */
82 PendingChanges.prototype.apply = function() {
83 for (script in this.pendingFontChanges_) {
84 for (genericFamily in this.pendingFontChanges_[script]) {
85 var details = {};
86 details.script = script;
87 details.genericFamily = genericFamily;
88 details.fontId = this.pendingFontChanges_[script][genericFamily];
89 chrome.fontSettings.setFont(details);
90 }
91 }
92
93 var size = this.pendingFontSizeChanges_['defaultFontSize'];
94 if (size != null)
95 chrome.fontSettings.setDefaultFontSize({pixelSize: size});
96
97 size = this.pendingFontSizeChanges_['defaultFixedFontSize'];
98 if (size != null)
99 chrome.fontSettings.setDefaultFixedFontSize({pixelSize: size});
100
101 size = this.pendingFontSizeChanges_['minFontSize'];
102 if (size != null)
103 chrome.fontSettings.setMinimumFontSize({pixelSize: size});
104
105 this.clear();
106 }
107
108 /**
109 * Clears the pending font changes for a single script.
110 *
111 * @param {string} script The script code, like "Cyrl".
112 */
113 PendingChanges.prototype.clearOneScript = function(script) {
114 this.pendingFontChanges_[script] = {};
115 }
116
117 /**
118 * Clears all pending font changes.
119 */
120 PendingChanges.prototype.clear = function() {
121 this.pendingFontChanges_ = {};
122 this.pendingFontSizeChanges_ = {};
123 }
124
125 /**
126 * @return {boolean} True if there are no pending changes, otherwise false.
127 */
128 PendingChanges.prototype.isEmpty = function() {
129 for (var script in this.pendingFontChanges_) {
130 for (var genericFamily in this.pendingFontChanges_[script]) {
131 if (this.pendingFontChanges_[script][genericFamily] != null)
132 return false;
133 }
134 }
135 for (var name in this.pendingFontSizeChanges_) {
136 if (this.pendingFontSizeChanges_[name] != null)
137 return false;
138 }
139 return true;
140 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698