| Index: chrome/browser/resources/options2/chromeos/internet_detail.js
|
| diff --git a/chrome/browser/resources/options2/chromeos/internet_detail.js b/chrome/browser/resources/options2/chromeos/internet_detail.js
|
| index f84122db53f2e883146bcfd42b641c5cd42174fc..7e4d9b45e12d5a76cdbb989f4ec97dd31d27b594 100644
|
| --- a/chrome/browser/resources/options2/chromeos/internet_detail.js
|
| +++ b/chrome/browser/resources/options2/chromeos/internet_detail.js
|
| @@ -5,6 +5,7 @@
|
| cr.define('options.internet', function() {
|
| var OptionsPage = options.OptionsPage;
|
| /** @const */ var ArrayDataModel = cr.ui.ArrayDataModel;
|
| + /** @const */ var IPAddressField = options.internet.IPAddressField;
|
|
|
| /**
|
| * Network settings constants. These enums must match their C++
|
| @@ -252,10 +253,20 @@ cr.define('options.internet', function() {
|
| $('auto-proxy').addEventListener('click', this.disableManualProxy_);
|
| $('proxy-all-protocols').addEventListener('click',
|
| this.toggleSingleProxy_);
|
| +
|
| observePrefsUI($('direct-proxy'));
|
| observePrefsUI($('manual-proxy'));
|
| observePrefsUI($('auto-proxy'));
|
| observePrefsUI($('proxy-all-protocols'));
|
| +
|
| + $('ip-automatic-configuration-checkbox').addEventListener('click',
|
| + this.handleIpAutoConfig_);
|
| + $('automatic-dns-radio').addEventListener('click',
|
| + this.handleNameServerTypeChange_);
|
| + $('google-dns-radio').addEventListener('click',
|
| + this.handleNameServerTypeChange_);
|
| + $('user-dns-radio').addEventListener('click',
|
| + this.handleNameServerTypeChange_);
|
| },
|
|
|
| /**
|
| @@ -285,6 +296,36 @@ cr.define('options.internet', function() {
|
| },
|
|
|
| /**
|
| + * Handler for when the IP automatic configuration checkbox is clicked.
|
| + * @param {Event} e The click event.
|
| + * @private
|
| + */
|
| + handleIpAutoConfig_: function(e) {
|
| + var checked = $('ip-automatic-configuration-checkbox').checked;
|
| + var fields = [$('ip-address'), $('ip-netmask'), $('ip-gateway')];
|
| + for (var i = 0; i < fields.length; ++i) {
|
| + fields[i].editable = !checked;
|
| + if (checked) {
|
| + var model = fields[i].model;
|
| + model.value = model.automatic;
|
| + fields[i].model = model;
|
| + }
|
| + }
|
| + if (!checked)
|
| + $('ip-address').focus();
|
| + },
|
| +
|
| + /**
|
| + * Handler for when the name server selection changes.
|
| + * @param {Event} e The click event.
|
| + * @private
|
| + */
|
| + handleNameServerTypeChange_: function(event) {
|
| + var type = event.target.value;
|
| + DetailsInternetPage.updateNameServerDisplay(type);
|
| + },
|
| +
|
| + /**
|
| * Update details page controls.
|
| * @private
|
| */
|
| @@ -295,6 +336,8 @@ cr.define('options.internet', function() {
|
| // TODO(chocobo): Once ipconfig is moved to flimflam service objects,
|
| // we need to redo this logic to allow configuration of all networks.
|
| $('ipconfig-section').hidden = !this.connected && this.deviceConnected;
|
| + $('ipconfig-dns-section').hidden =
|
| + !this.connected && this.deviceConnected;
|
|
|
| // Network type related.
|
| updateHidden('#details-internet-page .cellular-details', !this.cellular);
|
| @@ -542,16 +585,71 @@ cr.define('options.internet', function() {
|
| $('auto-connect-network-cellular').checked ? 'true' :
|
| 'false']);
|
| }
|
| - var ipConfigList = $('ip-config-list');
|
| - chrome.send('setIPConfig', [String(servicePath),
|
| - $('ip-type-dhcp').checked ? 'true' : 'false',
|
| - ipConfigList.dataModel.item(0).value,
|
| - ipConfigList.dataModel.item(1).value,
|
| - ipConfigList.dataModel.item(2).value,
|
| - ipConfigList.dataModel.item(3).value]);
|
| +
|
| + var nameServerTypes = ['automatic', 'google', 'user'];
|
| + var nameServerType = 'automatic';
|
| + for (var i = 0; i < nameServerTypes.length; ++i) {
|
| + if ($(nameServerTypes[i] + '-dns-radio').checked) {
|
| + nameServerType = nameServerTypes[i];
|
| + break;
|
| + }
|
| + }
|
| +
|
| + // Skip any empty values.
|
| + var userNameServers = [];
|
| + for (var i = 1; i <= 4; ++i) {
|
| + var nameServerField = $('ipconfig-dns' + i);
|
| + if (nameServerField && nameServerField.model &&
|
| + nameServerField.model.value) {
|
| + userNameServers.push(nameServerField.model.value);
|
| + }
|
| + }
|
| +
|
| + userNameServers = userNameServers.join(',');
|
| +
|
| + chrome.send('setIPConfig',
|
| + [servicePath,
|
| + Boolean($('ip-automatic-configuration-checkbox').checked),
|
| + $('ip-address').model.value || '',
|
| + $('ip-netmask').model.value || '',
|
| + $('ip-gateway').model.value || '',
|
| + nameServerType,
|
| + userNameServers]);
|
| OptionsPage.closeOverlay();
|
| };
|
|
|
| + DetailsInternetPage.updateNameServerDisplay = function(type) {
|
| + var editable = type == 'user';
|
| + var fields = [$('ipconfig-dns1'), $('ipconfig-dns2'),
|
| + $('ipconfig-dns3'), $('ipconfig-dns4')];
|
| + for (var i = 0; i < fields.length; ++i) {
|
| + fields[i].editable = editable;
|
| + }
|
| + if (editable)
|
| + $('ipconfig-dns1').focus();
|
| +
|
| + var automaticDns = $('automatic-dns-display');
|
| + var googleDns = $('google-dns-display');
|
| + var userDns = $('user-dns-settings');
|
| + switch (type) {
|
| + case 'automatic':
|
| + automaticDns.setAttribute('selected', '');
|
| + googleDns.removeAttribute('selected');
|
| + userDns.removeAttribute('selected');
|
| + break;
|
| + case 'google':
|
| + automaticDns.removeAttribute('selected');
|
| + googleDns.setAttribute('selected', '');
|
| + userDns.removeAttribute('selected');
|
| + break;
|
| + case 'user':
|
| + automaticDns.removeAttribute('selected');
|
| + googleDns.removeAttribute('selected');
|
| + userDns.setAttribute('selected', '');
|
| + break;
|
| + }
|
| + };
|
| +
|
| DetailsInternetPage.showDetailedInfo = function(data) {
|
| var detailsPage = DetailsInternetPage.getInstance();
|
|
|
| @@ -610,81 +708,85 @@ cr.define('options.internet', function() {
|
| detailsPage.showStaticIPConfig = data.showStaticIPConfig;
|
| $('connection-state').textContent = data.connectionState;
|
|
|
| - var inetAddress = '';
|
| - var inetSubnetAddress = '';
|
| - var inetGateway = '';
|
| - var inetDns = '';
|
| - $('ip-type-dhcp').checked = true;
|
| - if (data.ipconfigStatic.value) {
|
| - inetAddress = data.ipconfigStatic.value.address;
|
| - inetSubnetAddress = data.ipconfigStatic.value.subnetAddress;
|
| - inetGateway = data.ipconfigStatic.value.gateway;
|
| - inetDns = data.ipconfigStatic.value.dns;
|
| - $('ip-type-static').checked = true;
|
| - } else if (data.ipconfigDHCP.value) {
|
| - inetAddress = data.ipconfigDHCP.value.address;
|
| - inetSubnetAddress = data.ipconfigDHCP.value.subnetAddress;
|
| - inetGateway = data.ipconfigDHCP.value.gateway;
|
| - inetDns = data.ipconfigDHCP.value.dns;
|
| + 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;
|
| }
|
|
|
| - // Hide the dhcp/static radio if needed.
|
| - $('ip-type-dhcp-div').hidden = !data.showStaticIPConfig;
|
| - $('ip-type-static-div').hidden = !data.showStaticIPConfig;
|
| -
|
| - var ipConfigList = $('ip-config-list');
|
| - options.internet.IPConfigList.decorate(ipConfigList);
|
| - ipConfigList.disabled =
|
| - $('ip-type-dhcp').checked || data.ipconfigStatic.controlledBy ||
|
| - !data.showStaticIPConfig;
|
| - ipConfigList.autoExpands = true;
|
| - var model = new ArrayDataModel([]);
|
| - model.push({
|
| - property: 'inetAddress',
|
| - name: loadTimeData.getString('inetAddress'),
|
| - value: inetAddress,
|
| - });
|
| - model.push({
|
| - property: 'inetSubnetAddress',
|
| - name: loadTimeData.getString('inetSubnetAddress'),
|
| - value: inetSubnetAddress,
|
| - });
|
| - model.push({
|
| - property: 'inetGateway',
|
| - name: loadTimeData.getString('inetGateway'),
|
| - value: inetGateway,
|
| - });
|
| - model.push({
|
| - property: 'inetDns',
|
| - name: loadTimeData.getString('inetDns'),
|
| - value: inetDns,
|
| - });
|
| - ipConfigList.dataModel = model;
|
| -
|
| - $('ip-type-dhcp').addEventListener('click', function(event) {
|
| - // Disable ipConfigList and switch back to dhcp values (if any).
|
| - if (data.ipconfigDHCP.value) {
|
| - var config = data.ipconfigDHCP.value;
|
| - ipConfigList.dataModel.item(0).value = config.address;
|
| - ipConfigList.dataModel.item(1).value = config.subnetAddress;
|
| - ipConfigList.dataModel.item(2).value = config.gateway;
|
| - ipConfigList.dataModel.item(3).value = config.dns;
|
| + // 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;
|
| + }
|
| +
|
| + if (ipAutoConfig == 'user') {
|
| + if (data.staticIP.value.address) {
|
| + inetAddress.value = data.staticIP.value.address;
|
| + inetAddress.user = data.staticIP.value.address;
|
| + }
|
| + if (data.staticIP.value.netmask) {
|
| + inetNetmask.value = data.staticIP.value.netmask;
|
| + inetNetmask.user = data.staticIP.value.netmask;
|
| }
|
| - ipConfigList.dataModel.updateIndex(0);
|
| - ipConfigList.dataModel.updateIndex(1);
|
| - ipConfigList.dataModel.updateIndex(2);
|
| - ipConfigList.dataModel.updateIndex(3);
|
| - // Unselect all so we don't keep the currently selected field editable.
|
| - ipConfigList.selectionModel.unselectAll();
|
| - ipConfigList.disabled = true;
|
| - });
|
| -
|
| - $('ip-type-static').addEventListener('click', function(event) {
|
| - // Enable ipConfigList.
|
| - ipConfigList.disabled = false;
|
| - ipConfigList.focus();
|
| - ipConfigList.selectionModel.selectedIndex = 0;
|
| - });
|
| + if (data.staticIP.value.gateway) {
|
| + inetGateway.value = data.staticIP.value.gateway;
|
| + inetGateway.user = data.staticIP.value.gateway;
|
| + }
|
| + }
|
| +
|
| + 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);
|
| +
|
| + if (data.ipconfig.value && data.ipconfig.value.nameServers)
|
| + $('automatic-dns-display').textContent = data.ipconfig.value.nameServers;
|
| +
|
| + if (data.savedIP && data.savedIP.nameServers)
|
| + $('automatic-dns-display').textContent = data.savedIP.nameServers;
|
| +
|
| + if (data.nameServersGoogle)
|
| + $('google-dns-display').textContent = data.nameServersGoogle;
|
| +
|
| + var nameServersUser = [];
|
| + if (data.staticIP.value.nameServers)
|
| + nameServersUser = data.staticIP.value.nameServers.split(',');
|
| +
|
| + var nameServerModels = [];
|
| + for (var i = 0; i < 4; ++i)
|
| + nameServerModels.push({value: nameServersUser[i] || ''});
|
| +
|
| + $(data.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);
|
|
|
| if (data.hardwareAddress) {
|
| $('hardware-address').textContent = data.hardwareAddress;
|
| @@ -711,9 +813,9 @@ cr.define('options.internet', function() {
|
| $('wifi-bssid-entry').hidden = true;
|
| }
|
| $('wifi-ip-address').textContent = inetAddress;
|
| - $('wifi-subnet-address').textContent = inetSubnetAddress;
|
| + $('wifi-netmask').textContent = inetNetmask;
|
| $('wifi-gateway').textContent = inetGateway;
|
| - $('wifi-dns').textContent = inetDns;
|
| + $('wifi-name-servers').textContent = inetNameServers;
|
| if (data.encryption && data.encryption.length > 0) {
|
| $('wifi-security').textContent = data.encryption;
|
| $('wifi-security-entry').hidden = false;
|
|
|