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

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

Issue 509643003: Use GetManagedProperties in InternetOptionsHandler (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@issue_279351_internet_options_8a
Patch Set: Rebase, Clarify PrefixLengthToNetmask 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
« no previous file with comments | « no previous file | chrome/browser/ui/webui/options/chromeos/internet_options_handler.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 a4307a8321d1a4ec8eff2baf978a14622588ed1c..f8f06c018f08d2a0aab037fd5af044763a6b3499 100644
--- a/chrome/browser/resources/options/chromeos/internet_detail.js
+++ b/chrome/browser/resources/options/chromeos/internet_detail.js
@@ -17,6 +17,8 @@ cr.define('options.internet', function() {
var PageManager = cr.ui.pageManager.PageManager;
/** @const */ var IPAddressField = options.internet.IPAddressField;
+ /** @const */ var GoogleNameServersString = '8.8.4.4,8.8.8.8';
+
/**
* Helper function to set hidden attribute for elements matching a selector.
* @param {string} selector CSS selector for extracting a list of elements.
@@ -79,6 +81,34 @@ cr.define('options.internet', function() {
chrome.send(message, [path, checkbox.checked ? 'true' : 'false']);
}
+ /**
+ * Returns the netmask as a string for a given prefix length.
+ * @param {string} prefixLength The ONC routing prefix length.
+ * @return {string} The corresponding netmask.
+ */
+ function PrefixLengthToNetmask(prefixLength) {
+ // Return the empty string for invalid inputs.
+ if (prefixLength < 0 || prefixLength > 32)
+ return '';
+ var netmask = '';
+ for (var i = 0; i < 4; ++i) {
+ var remainder = 8;
+ if (prefixLength >= 8) {
+ prefixLength -= 8;
+ } else {
+ remainder = prefixLength;
+ prefixLength = 0;
+ }
+ if (i > 0)
+ netmask += '.';
+ var value = 0;
+ if (remainder != 0)
+ value = ((2 << (remainder - 1)) - 1) << (8 - remainder);
+ netmask += value.toString();
+ }
+ return netmask;
+ }
+
/////////////////////////////////////////////////////////////////////////////
// DetailsInternetPage class:
@@ -329,7 +359,7 @@ cr.define('options.internet', function() {
// page is fixed. http://crbug.com/242865
if (loadTimeData.data_) {
$('google-dns-label').innerHTML =
- loadTimeData.getString('googleNameServers');
+ loadTimeData.getString('googleNameServers');
}
},
@@ -805,8 +835,7 @@ cr.define('options.internet', function() {
}
}
- userNameServers = userNameServers.join(',');
-
+ userNameServers = userNameServers.sort();
chrome.send('setIPConfig',
[servicePath,
Boolean($('ip-automatic-configuration-checkbox').checked),
@@ -814,7 +843,7 @@ cr.define('options.internet', function() {
$('ip-netmask').model.value || '',
$('ip-gateway').model.value || '',
nameServerType,
- userNameServers]);
+ userNameServers.join(',')]);
PageManager.closeOverlay();
};
@@ -1003,93 +1032,143 @@ cr.define('options.internet', function() {
var restricted = onc.getActiveValue('RestrictedConnectivity');
var restrictedString = loadTimeData.getString(
restricted ? 'restrictedYes' : 'restrictedNo');
- var ipAutoConfig = data.ipAutoConfig ? 'automatic' : 'user';
- $('ip-automatic-configuration-checkbox').checked = data.ipAutoConfig;
- var inetAddress = {autoConfig: ipAutoConfig};
- var inetNetmask = {autoConfig: ipAutoConfig};
- var inetGateway = {autoConfig: ipAutoConfig};
-
- if (data.ipconfig.value) {
- inetAddress.automatic = data.ipconfig.value.address;
- inetAddress.value = data.ipconfig.value.address;
- inetNetmask.automatic = data.ipconfig.value.netmask;
- inetNetmask.value = data.ipconfig.value.netmask;
- inetGateway.automatic = data.ipconfig.value.gateway;
- inetGateway.value = data.ipconfig.value.gateway;
- if (data.ipconfig.value.webProxyAutoDiscoveryUrl) {
- $('web-proxy-auto-discovery').hidden = false;
- $('web-proxy-auto-discovery-url').value =
- data.ipconfig.value.webProxyAutoDiscoveryUrl;
+
+ var inetAddress = {};
+ var inetNetmask = {};
+ var inetGateway = {};
+
+ var inetNameServersString;
+
+ if ('IPConfigs' in data) {
+ var ipconfigList = onc.getActiveValue('IPConfigs');
+ for (var i = 0; i < ipconfigList.length; ++i) {
+ var ipconfig = ipconfigList[i];
+ var type = ipconfig['Type'];
+ if (type != 'IPv4') {
+ // TODO(stevenjb): Handle IPv6 properties.
+ continue;
+ }
+ var address = ipconfig['IPAddress'];
+ inetAddress.automatic = address;
+ inetAddress.value = address;
+ var netmask = PrefixLengthToNetmask(ipconfig['RoutingPrefix']);
+ inetNetmask.automatic = netmask;
+ inetNetmask.value = netmask;
+ var gateway = ipconfig['Gateway'];
+ inetGateway.automatic = gateway;
+ inetGateway.value = gateway;
+ if ('WebProxyAutoDiscoveryUrl' in ipconfig) {
+ $('web-proxy-auto-discovery').hidden = false;
+ $('web-proxy-auto-discovery-url').value =
+ ipconfig['WebProxyAutoDiscoveryUrl'];
+ }
+ if ('NameServers' in ipconfig) {
+ var inetNameServers = ipconfig['NameServers'];
+ inetNameServers = inetNameServers.sort();
+ inetNameServersString = inetNameServers.join(',');
+ }
+ break; // Use the first IPv4 entry.
}
}
// Override the "automatic" values with the real saved DHCP values,
// if they are set.
- if (data.savedIP.address) {
- inetAddress.automatic = data.savedIP.address;
- inetAddress.value = data.savedIP.address;
- }
- if (data.savedIP.netmask) {
- inetNetmask.automatic = data.savedIP.netmask;
- inetNetmask.value = data.savedIP.netmask;
- }
- if (data.savedIP.gateway) {
- inetGateway.automatic = data.savedIP.gateway;
- inetGateway.value = data.savedIP.gateway;
+ var savedNameServersString;
+ if ('SavedIPConfig' in data) {
+ var savedIpAddress = onc.getActiveValue('SavedIPConfig.IPAddress');
+ if (savedIpAddress != undefined) {
+ inetAddress.automatic = savedIpAddress;
+ inetAddress.value = savedIpAddress;
+ }
+ var savedPrefix = onc.getActiveValue('SavedIPConfig.RoutingPrefix');
+ if (savedPrefix != undefined) {
+ var savedNetmask = PrefixLengthToNetmask(savedPrefix);
+ inetNetmask.automatic = savedNetmask;
+ inetNetmask.value = savedNetmask;
+ }
+ var savedGateway = onc.getActiveValue('SavedIPConfig.Gateway');
+ if (savedGateway != undefined) {
+ inetGateway.automatic = savedGateway;
+ inetGateway.value = savedGateway;
+ }
+ var savedNameServers = onc.getActiveValue('SavedIPConfig.NameServers');
+ if (savedNameServers) {
+ savedNameServers = savedNameServers.sort();
+ savedNameServersString = savedNameServers.join(',');
+ }
}
- if (ipAutoConfig == 'user') {
- if (data.staticIP.value.address) {
- inetAddress.value = data.staticIP.value.address;
- inetAddress.user = data.staticIP.value.address;
+ var ipAutoConfig = 'automatic';
+
+ var staticNameServersString;
+ if ('StaticIPConfig' in data) {
+ var staticIpAddress = onc.getActiveValue('StaticIPConfig.IPAddress');
+ if (staticIpAddress != undefined) {
+ ipAutoConfig = 'user';
+ inetAddress.user = staticIpAddress;
+ inetAddress.value = staticIpAddress;
+ }
+ var staticPrefix = onc.getActiveValue('StaticIPConfig.RoutingPrefix');
+ if (staticPrefix != undefined) {
+ var staticNetmask = PrefixLengthToNetmask(staticPrefix);
+ inetNetmask.user = staticNetmask;
+ inetNetmask.value = staticNetmask;
}
- if (data.staticIP.value.netmask) {
- inetNetmask.value = data.staticIP.value.netmask;
- inetNetmask.user = data.staticIP.value.netmask;
+ var staticGateway = onc.getActiveValue('StaticIPConfig.Gateway');
+ if (staticGateway != undefined) {
+ inetGateway.user = staticGateway;
+ inetGateway.value = staticGateway;
}
- if (data.staticIP.value.gateway) {
- inetGateway.value = data.staticIP.value.gateway;
- inetGateway.user = data.staticIP.value.gateway;
+ var staticNameServers = onc.getActiveValue('StaticIPConfig.NameServers');
+ if (staticNameServers) {
+ staticNameServers = staticNameServers.sort();
+ staticNameServersString = staticNameServers.join(',');
}
}
+ $('ip-automatic-configuration-checkbox').checked =
+ ipAutoConfig == 'automatic';
+
+ inetAddress.autoConfig = ipAutoConfig;
+ inetNetmask.autoConfig = ipAutoConfig;
+ inetGateway.autoConfig = ipAutoConfig;
+
var configureAddressField = function(field, model) {
IPAddressField.decorate(field);
field.model = model;
field.editable = model.autoConfig == 'user';
};
-
configureAddressField($('ip-address'), inetAddress);
configureAddressField($('ip-netmask'), inetNetmask);
configureAddressField($('ip-gateway'), inetGateway);
- var inetNameServers = '';
- if (data.ipconfig.value && data.ipconfig.value.nameServers) {
- inetNameServers = data.ipconfig.value.nameServers;
- $('automatic-dns-display').textContent = inetNameServers;
+ // Set Nameserver fields.
+ var nameServerType = 'automatic';
+ if (staticNameServersString &&
+ staticNameServersString == inetNameServersString) {
+ nameServerType = 'user';
}
+ if (inetNameServersString == GoogleNameServersString)
+ nameServerType = 'google';
- if (data.savedIP && data.savedIP.nameServers)
- $('automatic-dns-display').textContent = data.savedIP.nameServers;
-
- if (data.nameServersGoogle)
- $('google-dns-display').textContent = data.nameServersGoogle;
+ $('automatic-dns-display').textContent = inetNameServersString;
+ $('google-dns-display').textContent = GoogleNameServersString;
var nameServersUser = [];
- if (data.staticIP.value.nameServers)
- nameServersUser = data.staticIP.value.nameServers.split(',');
+ if (staticNameServers)
+ nameServersUser = staticNameServers;
var nameServerModels = [];
for (var i = 0; i < 4; ++i)
nameServerModels.push({value: nameServersUser[i] || ''});
- $(data.nameServerType + '-dns-radio').checked = true;
+ $(nameServerType + '-dns-radio').checked = true;
configureAddressField($('ipconfig-dns1'), nameServerModels[0]);
configureAddressField($('ipconfig-dns2'), nameServerModels[1]);
configureAddressField($('ipconfig-dns3'), nameServerModels[2]);
configureAddressField($('ipconfig-dns4'), nameServerModels[3]);
- DetailsInternetPage.updateNameServerDisplay(data.nameServerType);
+ DetailsInternetPage.updateNameServerDisplay(nameServerType);
var macAddress = onc.getActiveValue('MacAddress');
if (macAddress) {
@@ -1237,8 +1316,15 @@ cr.define('options.internet', function() {
var otherOption = apnSelector[0];
data.selectedApn = -1;
data.userApnIndex = -1;
- var activeApn = onc.getActiveValue('Cellular.APN');
- var lastGoodApn = onc.getActiveValue('Cellular.LastGoodAPN');
+ var activeApn = onc.getActiveValue('Cellular.APN.AccessPointName');
+ var activeUsername = onc.getActiveValue('Cellular.APN.Username');
+ var activePassword = onc.getActiveValue('Cellular.APN.Password');
+ var lastGoodApn =
+ onc.getActiveValue('Cellular.LastGoodAPN.AccessPointName');
+ var lastGoodUsername =
+ onc.getActiveValue('Cellular.LastGoodAPN.Username');
+ var lastGoodPassword =
+ onc.getActiveValue('Cellular.LastGoodAPN.Password');
var apnList = onc.getActiveValue('Cellular.APNList');
for (var i = 0; i < apnList.length; i++) {
var apnDict = apnList[i];
@@ -1251,24 +1337,21 @@ cr.define('options.internet', function() {
option.value = i;
// If this matches the active Apn, or LastGoodApn, set it as the
// selected Apn.
- if ((activeApn != undefined &&
- activeApn['AccessPointName'] == accessPointName &&
- activeApn['Username'] == apnDict['Username'] &&
- activeApn['Password'] == apnDict['Password']) ||
- ((activeApn == undefined || !activeApn['AccessPointName']) &&
- lastGoodApn != undefined &&
- lastGoodApn['AccessPointName'] == accessPointName &&
- lastGoodApn['Username'] == apnDict['Username'] &&
- lastGoodApn['Password'] == apnDict['Password'])) {
+ if ((activeApn == accessPointName &&
+ activeUsername == apnDict['Username'] &&
+ activePassword == apnDict['Password']) ||
+ (!activeApn &&
+ lastGoodApn == accessPointName &&
+ lastGoodUsername == apnDict['Username'] &&
+ lastGoodPassword == apnDict['Password'])) {
data.selectedApn = i;
}
// Insert new option before "other" option.
apnSelector.add(option, otherOption);
}
- if (data.selectedApn == -1 &&
- activeApn != undefined && activeApn['AccessPointName']) {
+ if (data.selectedApn == -1 && activeApn) {
var option = document.createElement('option');
- option.textContent = activeApn['AccessPointName'];
+ option.textContent = activeApn;
option.value = -1;
apnSelector.add(option, otherOption);
data.selectedApn = apnSelector.length - 2;
« no previous file with comments | « no previous file | chrome/browser/ui/webui/options/chromeos/internet_options_handler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698