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

Side by Side Diff: chrome/browser/resources/options/chromeos/onc_data.js

Issue 570503002: Compile chrome://settings, part 6 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@H_options_errors_4
Patch Set: fix asserts, rebase Created 6 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 /** 5 /**
6 * @fileoverview ONC Data support class. Wraps a dictionary object containing 6 * @fileoverview ONC Data support class. Wraps a dictionary object containing
7 * ONC managed or unmanaged dictionaries. Supports nested dictionaries, 7 * ONC managed or unmanaged dictionaries. Supports nested dictionaries,
8 * e.g. data.getManagedProperty('VPN.Type'). 8 * e.g. data.getManagedProperty('VPN.Type').
9 */ 9 */
10
11 cr.exportPath('cr.onc');
12
13 /**
14 * @typedef {(Object|Array|string|undefined)}
15 */
16 cr.onc.OncValue;
17
10 cr.define('cr.onc', function() { 18 cr.define('cr.onc', function() {
11 'use strict'; 19 'use strict';
12 20
13 /** 21 /**
14 * @constructor 22 * @constructor
15 */ 23 */
16 function OncData(data) { 24 function OncData(data) {
17 this.data_ = data; 25 this.data_ = data;
18 } 26 }
19 27
20 OncData.prototype = { 28 OncData.prototype = {
21 29
22 /** 30 /**
23 * Returns either a managed property dictionary or an unmanaged value. 31 * Returns either a managed property dictionary or an unmanaged value.
24 * @param {string} key The property key. 32 * @param {string} key The property key.
25 * @return {*} The property value or dictionary if it exists, otherwise 33 * @return {cr.onc.OncValue} The property value or dictionary if it exists,
26 * undefined. 34 * otherwise undefined.
27 */ 35 */
28 getManagedProperty: function(key) { 36 getManagedProperty: function(key) {
29 var data = this.data_; 37 var data = this.data_;
30 while (true) { 38 while (true) {
31 var index = key.indexOf('.'); 39 var index = key.indexOf('.');
32 if (index < 0) 40 if (index < 0)
33 break; 41 break;
34 var keyComponent = key.substr(0, index); 42 var keyComponent = key.substr(0, index);
35 if (!(keyComponent in data)) 43 if (!(keyComponent in data))
36 return undefined; 44 return undefined;
37 data = data[keyComponent]; 45 data = data[keyComponent];
38 key = key.substr(index + 1); 46 key = key.substr(index + 1);
39 } 47 }
40 return data[key]; 48 return data[key];
41 }, 49 },
42 50
43 /** 51 /**
44 * Sets the value of a property. Currently only supports unmanaged 52 * Sets the value of a property. Currently only supports unmanaged
45 * properties. 53 * properties.
46 * @param {string} key The property key. 54 * @param {string} key The property key.
47 * @param {string} value The property value to set. 55 * @param {Object} value The property value to set.
48 */ 56 */
49 setManagedProperty: function(key, value) { 57 setManagedProperty: function(key, value) {
50 var data = this.data_; 58 var data = this.data_;
51 while (true) { 59 while (true) {
52 var index = key.indexOf('.'); 60 var index = key.indexOf('.');
53 if (index < 0) 61 if (index < 0)
54 break; 62 break;
55 var keyComponent = key.substr(0, index); 63 var keyComponent = key.substr(0, index);
56 if (!(keyComponent in data)) 64 if (!(keyComponent in data))
57 data[keyComponent] = {}; 65 data[keyComponent] = {};
(...skipping 11 matching lines...) Expand all
69 // For now, just update the active value. TODO(stevenjb): Eventually we 77 // For now, just update the active value. TODO(stevenjb): Eventually we
70 // should update the 'UserSetting' and 'Effective' properties correctly 78 // should update the 'UserSetting' and 'Effective' properties correctly
71 // and send that back to Chrome. 79 // and send that back to Chrome.
72 data[key]['Active'] = value; 80 data[key]['Active'] = value;
73 } 81 }
74 }, 82 },
75 83
76 /** 84 /**
77 * Gets the active value of a property. 85 * Gets the active value of a property.
78 * @param {string} key The property key. 86 * @param {string} key The property key.
79 * @return {*} The property value or undefined. 87 * @return {cr.onc.OncValue} The property value or undefined.
80 */ 88 */
81 getActiveValue: function(key) { 89 getActiveValue: function(key) {
82 var property = this.getManagedProperty(key); 90 var property = this.getManagedProperty(key);
83 if (Array.isArray(property) || typeof property != 'object') 91 if (Array.isArray(property) || typeof property != 'object')
84 return property; 92 return property;
85 // Otherwise get the Active value (default behavior). 93 // Otherwise get the Active value (default behavior).
86 if ('Active' in property) 94 if ('Active' in property)
87 return property['Active']; 95 return property['Active'];
88 // If no Active value is defined, return the effective value if present. 96 // If no Active value is defined, return the effective value if present.
89 var effective = this.getEffectiveValueFromProperty_(property); 97 var effective = this.getEffectiveValueFromProperty_(
98 /** @type {Object} */(property));
90 if (effective != undefined) 99 if (effective != undefined)
91 return effective; 100 return effective;
92 // Otherwise this is an Object but not a Managed one. 101 // Otherwise this is an Object but not a Managed one.
93 return property; 102 return property;
94 }, 103 },
95 104
96 /** 105 /**
97 * Gets the translated ONC value from the result of getActiveValue() using 106 * Gets the translated ONC value from the result of getActiveValue() using
98 * loadTimeData. If no translation exists, returns the untranslated value. 107 * loadTimeData. If no translation exists, returns the untranslated value.
99 * @param {string} key The property key. 108 * @param {string} key The property key.
100 * @return {*} The translation if available or the value if not. 109 * @return {cr.onc.OncValue} The translation if available or the value if
110 * not.
101 */ 111 */
102 getTranslatedValue: function(key) { 112 getTranslatedValue: function(key) {
103 var value = this.getActiveValue(key); 113 var value = this.getActiveValue(key);
104 if (typeof value != 'string') 114 if (typeof value != 'string')
105 return value; 115 return value;
106 var oncString = 'Onc' + key + value; 116 var oncString = 'Onc' + key + value;
107 // Handle special cases 117 // Handle special cases
108 if (key == 'Name' && this.getActiveValue('Type') == 'Ethernet') 118 if (key == 'Name' && this.getActiveValue('Type') == 'Ethernet')
109 return loadTimeData.getString('ethernetName'); 119 return loadTimeData.getString('ethernetName');
110 if (key == 'VPN.Type' && value == 'L2TP-IPsec') { 120 if (key == 'VPN.Type' && value == 'L2TP-IPsec') {
111 var auth = this.getActiveValue('VPN.IPsec.AuthenticationType'); 121 var auth = this.getActiveValue('VPN.IPsec.AuthenticationType');
112 if (auth != undefined) 122 if (auth != undefined)
113 oncString += auth; 123 oncString += auth;
114 } 124 }
115 oncString = oncString.replace(/\./g, '-'); 125 oncString = oncString.replace(/\./g, '-');
116 if (loadTimeData.valueExists(oncString)) 126 if (loadTimeData.valueExists(oncString))
117 return loadTimeData.getString(oncString); 127 return loadTimeData.getString(oncString);
118 return value; 128 return value;
119 }, 129 },
120 130
121 /** 131 /**
122 * Gets the recommended value of a property. 132 * Gets the recommended value of a property.
123 * @param {string} key The property key. 133 * @param {string} key The property key.
124 * @return {*} The property value or undefined. 134 * @return {cr.onc.OncValue} The property value or undefined.
125 */ 135 */
126 getRecommendedValue: function(key) { 136 getRecommendedValue: function(key) {
127 var property = this.getManagedProperty(key); 137 var property = this.getManagedProperty(key);
128 if (Array.isArray(property) || typeof property != 'object') 138 if (Array.isArray(property) || typeof property != 'object')
129 return undefined; 139 return undefined;
130 if (property['UserEditable']) 140 if (property['UserEditable'])
131 return property['UserPolicy']; 141 return property['UserPolicy'];
132 if (property['DeviceEditable']) 142 if (property['DeviceEditable'])
133 return property['DevicePolicy']; 143 return property['DevicePolicy'];
134 // No value recommended by policy. 144 // No value recommended by policy.
(...skipping 19 matching lines...) Expand all
154 getWiFiSecurity: function() { 164 getWiFiSecurity: function() {
155 var security = this.getActiveValue('WiFi.Security'); 165 var security = this.getActiveValue('WiFi.Security');
156 if (security == undefined) 166 if (security == undefined)
157 return 'None'; 167 return 'None';
158 return security; 168 return security;
159 }, 169 },
160 170
161 /** 171 /**
162 * Get the effective value from a Managed property ONC dictionary. 172 * Get the effective value from a Managed property ONC dictionary.
163 * @param {Object} property The managed property ONC dictionary. 173 * @param {Object} property The managed property ONC dictionary.
164 * @return {*} The effective value or undefined. 174 * @return {cr.onc.OncValue} The effective value or undefined.
165 * @private 175 * @private
166 */ 176 */
167 getEffectiveValueFromProperty_: function(property) { 177 getEffectiveValueFromProperty_: function(property) {
168 if ('Effective' in property) { 178 if ('Effective' in property) {
169 var effective = property.Effective; 179 var effective = property.Effective;
170 if (effective in property) 180 if (effective in property)
171 return property[effective]; 181 return property[effective];
172 } 182 }
173 return undefined; 183 return undefined;
174 } 184 }
175 }; 185 };
176 186
177 return { 187 return {
178 OncData: OncData 188 OncData: OncData
179 }; 189 };
180 }); 190 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698