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

Unified Diff: chrome/browser/resources/options/chromeos/internet_detail.js

Issue 543493002: Compile chrome://settings, part 2: reduce from 950 to 400 errors (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@F_settings
Patch Set: fixed all but one comment (website_settings.js:42 left) 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/resources/options/chromeos/internet_detail.js
diff --git a/chrome/browser/resources/options/chromeos/internet_detail.js b/chrome/browser/resources/options/chromeos/internet_detail.js
index e3574440eaa749b57aee4395019cdb26bac64b82..f24ae5e953690f6869cd133201695966ac961d8e 100644
--- a/chrome/browser/resources/options/chromeos/internet_detail.js
+++ b/chrome/browser/resources/options/chromeos/internet_detail.js
@@ -11,16 +11,157 @@
// networkingPrivate API. See network_config.js.
// See crbug.com/279351 for more info.
+/** @typedef {{activationState: (string|undefined),
+ * carriers: Array,
+ * currentCarrierIndex; (number|undefined),
+ * ipAutoConfig: boolean,
+ * ipconfig: Object,
+ * nameServerType: string,
+ * restrictedPool: (string|undefined),
+ * roamingState: (string|undefined),
+ * savedIP: Object,
+ * showActivateButton: (boolean|undefined)
+ * showViewAccountButton: (boolean|undefined),
+ * staticIP: Object}}
+ * Only the keys which had caused problems are declared in this typedef.
+ * There are many more of them.
+ * @see chrome/browser/ui/webui/options/chromeos/internet_options_handler.cc
+ */
+var InternetDetailedInfo;
+
cr.define('options.internet', function() {
var OncData = cr.onc.OncData;
var Page = cr.ui.pageManager.Page;
var PageManager = cr.ui.pageManager.PageManager;
/** @const */ var IPAddressField = options.internet.IPAddressField;
+ var GetManagedTypes = {
+ ACTIVE: 0,
+ TRANSLATED: 1,
+ RECOMMENDED: 2
+ };
+
+ /**
+ * Gets the value of a property from a dictionary |data| that includes ONC
+ * managed properties, e.g. getManagedValue(data, 'Name'). See notes for
+ * getManagedProperty.
+ * @param {Object} data The properties dictionary.
+ * @param {string} key The property key.
+ * @param {string=} opt_type The type of property to get as defined in
+ * GetManagedTypes:
+ * 'ACTIVE' (default) - gets the active value
+ * 'TRANSLATED' - gets the traslated or active value
+ * 'RECOMMENDED' - gets the recommended value
+ * @return {*} The property value or undefined.
+ */
+ function getManagedValue(data, key, opt_type) {
+ var property = getManagedProperty(data, key);
+ if (Array.isArray(property) || typeof property != 'object')
+ return property;
+ if (opt_type == GetManagedTypes.RECOMMENDED)
+ return getRecommendedValue(property);
+ if (opt_type == GetManagedTypes.TRANSLATED && 'Translated' in property)
+ return property['Translated'];
+ // Otherwise get the Active value (defalt behavior).
+ if ('Active' in property)
+ return property['Active'];
+ // If no Active value is defined, return the effective value if present.
+ var effective = getEffectiveValue(property);
+ if (effective != undefined)
+ return effective;
+ // Otherwise this is an Object but not a Managed one.
+ return property;
+ }
+
+ /**
+ * Get the recommended value from a Managed property ONC dictionary.
+ * @param {Object} property The managed property ONC dictionary.
+ * @return {*} the effective value or undefined.
+ */
+ function getRecommendedValue(property) {
+ if (property['UserEditable'])
+ return property['UserPolicy'];
+ if (property['DeviceEditable'])
+ return property['DevicePolicy'];
+ // No value recommended by policy.
+ return undefined;
+ }
+
+ /**
+ * Get the effective value from a Managed property ONC dictionary.
+ * @param {Object} property The managed property ONC dictionary.
+ * @return {*} The effective value or undefined.
+ */
+ function getEffectiveValue(property) {
+ if ('Effective' in property) {
+ var effective = property.Effective;
+ if (effective in property)
+ return property[effective];
+ }
+ return undefined;
+ }
+
+ /**
+ * Gets either a managed property dictionary or an unmanaged value from
+ * dictionary |data| that includes ONC managed properties. This supports
+ * nested dictionaries, e.g. getManagedProperty(data, 'VPN.Type').
+ * @param {Object} data The properties dictionary.
+ * @param {string} key The property key.
+ * @return {*} The property value or dictionary if it exists, otherwise
+ * undefined.
+ */
+ function getManagedProperty(data, key) {
+ while (true) {
+ var index = key.indexOf('.');
+ if (index < 0)
+ break;
+ var keyComponent = key.substr(0, index);
+ if (!(keyComponent in data))
+ return undefined;
+ data = data[keyComponent];
+ key = key.substr(index + 1);
+ }
+ return data[key];
+ }
+
+ /**
+ * Set the value of a property in dictionary |data| that includes ONC
+ * managed properties, e.g. setManagedValue(data, 'Name', 'MyNetwork').
+ * See notes for getManagedProperty.
+ * @param {Object} data The properties dictionary.
+ * @param {string} key The property key.
+ * @param {*} value The property value to set.
+ */
+ function setManagedProperty(data, key, value) {
+ while (true) {
+ var index = key.indexOf('.');
+ if (index < 0)
+ break;
+ var keyComponent = key.substr(0, index);
+ if (!(keyComponent in data))
+ data[keyComponent] = {};
+ data = data[keyComponent];
+ key = key.substr(index + 1);
+ }
+ if (!(key in data) ||
+ (typeof data[key] != 'object') ||
+ (!('Active' in data[key]) && !('Effective' in data[key]))) {
+ data[key] = value;
+ } else {
+ var effective = data[key]['Effective'];
+ assert(effective != 'UserPolicy' || data[key]['UserEditable']);
+ assert(effective != 'DevicePolicy' || data[key]['DeviceEditable']);
+ // For now, just uodare the active value. TODO(stevenjb): Eventually we
+ // should update the 'UserSetting' and 'Effective' properties correctly
+ // and send that back to Chrome.
+ data[key]['Active'] = value;
+ }
+ }
+
/**
* Helper function to set hidden attribute for elements matching a selector.
* @param {string} selector CSS selector for extracting a list of elements.
- * @param {bool} hidden New hidden value.
+ * @param {boolean} hidden New hidden value.
*/
function updateHidden(selector, hidden) {
var elements = cr.doc.querySelectorAll(selector);
@@ -61,7 +202,7 @@ cr.define('options.internet', function() {
/**
* Simple helper method for converting a field to a string. It is used to
* easily assign an empty string from fields that may be unknown or undefined.
- * @param {object} value that should be converted to a string.
+ * @param {Object} value that should be converted to a string.
* @return {string} the result.
*/
function stringFromValue(value) {
@@ -85,9 +226,10 @@ cr.define('options.internet', function() {
/**
* Encapsulated handling of ChromeOS internet details overlay page.
* @constructor
+ * @extends {cr.ui.pageManager.Page}
*/
function DetailsInternetPage() {
- Page.call(this, 'detailsInternetPage', null, 'details-internet-page');
+ Page.call(this, 'detailsInternetPage', '', 'details-internet-page');
}
cr.addSingletonGetter(DetailsInternetPage);
@@ -98,14 +240,14 @@ cr.define('options.internet', function() {
/** @override */
initializePage: function() {
Page.prototype.initializePage.call(this);
- var params = parseQueryParams(window.location);
- this.initializePageContents_(params);
- this.showNetworkDetails_(params);
+ this.initializePageContents_();
+ this.showNetworkDetails_(parseQueryParams(window.location));
},
/**
* Auto-activates the network details dialog if network information
* is included in the URL.
+ * @param {Object} params
*/
showNetworkDetails_: function(params) {
Dan Beam 2014/09/09 02:59:09 remove |params| and instead: var params = parseQu
Vitaly Pavlenko 2014/09/09 17:54:51 Even "var params" can be inlined, is it ok?
var servicePath = params.servicePath;
@@ -118,7 +260,7 @@ cr.define('options.internet', function() {
/**
* Initializes the contents of the page.
*/
- initializePageContents_: function(params) {
+ initializePageContents_: function() {
$('details-internet-dismiss').addEventListener('click', function(event) {
DetailsInternetPage.setDetails();
});
@@ -166,7 +308,7 @@ cr.define('options.internet', function() {
data.userApnIndex = -1;
}
- var activeApn;
+ var activeApn = {};
var iApn = -1;
var apnList = onc.getActiveValue('Cellular.APNList');
if (apnList != undefined && apnList.length > 0) {
@@ -536,9 +678,8 @@ cr.define('options.internet', function() {
* Handler for when the user clicks on the checkbox to allow a
* single proxy usage.
* @private
- * @param {Event} e Click Event.
*/
- toggleSingleProxy_: function(e) {
+ toggleSingleProxy_: function() {
if ($('proxy-all-protocols').checked) {
$('multi-proxy').hidden = true;
$('single-proxy').hidden = false;
@@ -552,9 +693,8 @@ cr.define('options.internet', function() {
* Handler for when the user clicks on the checkbox to enter
* auto configuration URL.
* @private
- * @param {Event} e Click Event.
*/
- handleAutoConfigProxy_: function(e) {
+ handleAutoConfigProxy_: function() {
$('proxy-pac-url').disabled = !$('proxy-use-pac-url').checked;
},
@@ -562,9 +702,8 @@ cr.define('options.internet', function() {
* Handler for selecting a radio button that will disable the manual
* controls.
* @private
- * @param {Event} e Click event.
*/
- disableManualProxy_: function(e) {
+ disableManualProxy_: function(opt_e) {
$('ignored-host-list').disabled = true;
$('new-host').disabled = true;
$('remove-host').disabled = true;
@@ -594,9 +733,8 @@ cr.define('options.internet', function() {
* Handler for selecting a radio button that will enable the manual
* controls.
* @private
- * @param {Event} e Click event.
*/
- enableManualProxy_: function(e) {
+ enableManualProxy_: function(opt_e) {
$('ignored-host-list').redraw();
var allDisabled = $('manual-proxy').disabled;
$('ignored-host-list').disabled = allDisabled;
@@ -769,21 +907,22 @@ cr.define('options.internet', function() {
var servicePath = data.servicePath;
if (data.type == 'WiFi') {
sendCheckedIfEnabled(servicePath, 'setPreferNetwork',
- $('prefer-network-wifi'));
+ assertInstanceof($('prefer-network-wifi'), HTMLInputElement));
sendCheckedIfEnabled(servicePath, 'setAutoConnect',
- $('auto-connect-network-wifi'));
+ assertInstanceof($('auto-connect-network-wifi'), HTMLInputElement));
} else if (data.type == 'Wimax') {
sendCheckedIfEnabled(servicePath, 'setAutoConnect',
- $('auto-connect-network-wimax'));
+ assertInstanceof($('auto-connect-network-wimax'), HTMLInputElement));
} else if (data.type == 'Cellular') {
sendCheckedIfEnabled(servicePath, 'setAutoConnect',
- $('auto-connect-network-cellular'));
+ assertInstanceof($('auto-connect-network-cellular'),
+ HTMLInputElement));
} else if (data.type == 'VPN') {
chrome.send('setServerHostname',
[servicePath,
$('inet-server-hostname').value]);
sendCheckedIfEnabled(servicePath, 'setAutoConnect',
- $('auto-connect-network-vpn'));
+ assertInstanceof($('auto-connect-network-vpn'), HTMLInputElement));
}
var nameServerTypes = ['automatic', 'google', 'user'];
@@ -914,7 +1053,7 @@ cr.define('options.internet', function() {
} else if (onc.type == 'Cellular') {
$('activation-state').textContent = data.activationState;
- $('buyplan-details').hidden = !data.showBuyButton;
+ $('buyplan-details').hidden = true;
$('view-account-details').hidden = !data.showViewAccountButton;
$('activate-details').hidden = !data.showActivateButton;
@@ -933,6 +1072,9 @@ cr.define('options.internet', function() {
$('connection-state').onc = onc;
};
+ /**
+ * @param {InternetDetailedInfo} data
+ */
DetailsInternetPage.showDetailedInfo = function(data) {
var detailsPage = DetailsInternetPage.getInstance();
@@ -1277,7 +1419,7 @@ cr.define('options.internet', function() {
onc.getActiveValue('AutoConnect');
$('auto-connect-network-cellular').disabled = false;
- $('buyplan-details').hidden = !data.showBuyButton;
+ $('buyplan-details').hidden = true;
$('view-account-details').hidden = !data.showViewAccountButton;
$('activate-details').hidden = !data.showActivateButton;
if (data.showActivateButton) {

Powered by Google App Engine
This is Rietveld 408576698