| Index: chrome/browser/resources/options/chromeos_internet_network_element.js
|
| ===================================================================
|
| --- chrome/browser/resources/options/chromeos_internet_network_element.js (revision 64675)
|
| +++ chrome/browser/resources/options/chromeos_internet_network_element.js (working copy)
|
| @@ -48,7 +48,7 @@
|
| var el = e.target;
|
| // If click is on action buttons of a network item.
|
| if (!(el.buttonType && el.networkType && el.servicePath)) {
|
| - if (el.className == 'other-network' || el.buttonType) {
|
| + if (el.buttonType) {
|
| return;
|
| }
|
| // If click is on a network item or its label, walk up the DOM tree
|
| @@ -144,10 +144,9 @@
|
|
|
| /** @inheritDoc */
|
| decorate: function() {
|
| - var isOtherNetworksItem = this.data.servicePath == '?';
|
| -
|
| this.className = 'network-item';
|
| this.connected = this.data.connected;
|
| + this.other = this.data.servicePath == '?';
|
| this.id = this.data.servicePath;
|
| // textDiv holds icon, name and status text.
|
| var textDiv = this.ownerDocument.createElement('div');
|
| @@ -161,7 +160,7 @@
|
| nameEl.textContent = this.data.networkName;
|
| textDiv.appendChild(nameEl);
|
|
|
| - if (isOtherNetworksItem) {
|
| + if (this.other) {
|
| // No status and buttons for "Other..."
|
| this.appendChild(textDiv);
|
| return;
|
| @@ -298,11 +297,10 @@
|
| hidePassword: function() {
|
| this.connecting = false;
|
| var children = this.childNodes;
|
| - for (var i = 0; i < children.length; i++) {
|
| - if (children[i].className == 'network-password' ||
|
| - children[i].className == 'other-network') {
|
| + // Remove all password divs starting from the end.
|
| + for (var i = children.length-1; i >= 0; i--) {
|
| + if (children[i].className == 'network-password') {
|
| this.removeChild(children[i]);
|
| - return;
|
| }
|
| }
|
| },
|
| @@ -310,14 +308,40 @@
|
| showOtherLogin: function() {
|
| if (this.connecting)
|
| return;
|
| - var passwordDiv = this.ownerDocument.createElement('div');
|
| - passwordDiv.className = 'other-network';
|
| +
|
| + var ssidDiv = this.ownerDocument.createElement('div');
|
| + ssidDiv.className = 'network-password';
|
| var ssidInput = this.ownerDocument.createElement('input');
|
| ssidInput.placeholder = localStrings.getString('inetSsidPrompt');
|
| - passwordDiv.appendChild(ssidInput);
|
| + ssidDiv.appendChild(ssidInput);
|
| +
|
| + var securityDiv = this.ownerDocument.createElement('div');
|
| + securityDiv.className = 'network-password';
|
| + var securityInput = this.ownerDocument.createElement('select');
|
| + var securityNoneOption = this.ownerDocument.createElement('option');
|
| + securityNoneOption.value = 'none';
|
| + securityNoneOption.label = localStrings.getString('inetSecurityNone');
|
| + securityInput.appendChild(securityNoneOption);
|
| + var securityWEPOption = this.ownerDocument.createElement('option');
|
| + securityWEPOption.value = 'wep';
|
| + securityWEPOption.label = localStrings.getString('inetSecurityWEP');
|
| + securityInput.appendChild(securityWEPOption);
|
| + var securityWPAOption = this.ownerDocument.createElement('option');
|
| + securityWPAOption.value = 'wpa';
|
| + securityWPAOption.label = localStrings.getString('inetSecurityWPA');
|
| + securityInput.appendChild(securityWPAOption);
|
| + var securityRSNOption = this.ownerDocument.createElement('option');
|
| + securityRSNOption.value = 'rsn';
|
| + securityRSNOption.label = localStrings.getString('inetSecurityRSN');
|
| + securityInput.appendChild(securityRSNOption);
|
| + securityDiv.appendChild(securityInput);
|
| +
|
| + var passwordDiv = this.ownerDocument.createElement('div');
|
| + passwordDiv.className = 'network-password';
|
| var passInput = this.ownerDocument.createElement('input');
|
| passInput.placeholder = localStrings.getString('inetPassPrompt');
|
| passInput.type = 'password';
|
| + passInput.disabled = true;
|
| passwordDiv.appendChild(passInput);
|
|
|
| var togglePassLabel = this.ownerDocument.createElement('label');
|
| @@ -333,20 +357,42 @@
|
| togglePassLabel.appendChild(togglePassSpan);
|
| passwordDiv.appendChild(togglePassLabel);
|
|
|
| - var buttonEl = this.ownerDocument.createElement('button');
|
| - buttonEl.textContent = localStrings.getString('inetLogin');
|
| - buttonEl.buttonType = true;
|
| - buttonEl.addEventListener('click', this.handleOtherLogin_);
|
| + var buttonEl =
|
| + this.createButton_('inetLogin', true, this.handleOtherLogin_);
|
| buttonEl.style.right = '0';
|
| buttonEl.style.position = 'absolute';
|
| buttonEl.style.visibility = 'visible';
|
| + buttonEl.disabled = true;
|
| passwordDiv.appendChild(buttonEl);
|
| +
|
| + this.appendChild(ssidDiv);
|
| + this.appendChild(securityDiv);
|
| this.appendChild(passwordDiv);
|
|
|
| - ssidInput.addEventListener('keydown', function(e) {
|
| - buttonEl.disabled =
|
| - ssidInput.value.length < NetworkItem.MIN_WIRELESS_SSID_LENGTH;
|
| + securityInput.addEventListener('change', function(e) {
|
| + // If changed to None, then disable passInput and clear it out.
|
| + // Otherwise enable it.
|
| + if (securityInput.value == 'none') {
|
| + passInput.disabled = true;
|
| + passInput.value = '';
|
| + } else {
|
| + passInput.disabled = false;
|
| + }
|
| });
|
| +
|
| + var keyup_listener = function(e) {
|
| + // Disable login button if ssid is not long enough or
|
| + // password is not long enough (unless no security)
|
| + var ssid_good =
|
| + ssidInput.value.length >= NetworkItem.MIN_WIRELESS_SSID_LENGTH;
|
| + var pass_good =
|
| + securityInput.value == 'none' ||
|
| + passInput.value.length >= NetworkItem.MIN_WIRELESS_PASSWORD_LENGTH;
|
| + buttonEl.disabled = !ssid_good || !pass_good;
|
| + };
|
| + ssidInput.addEventListener('keyup', keyup_listener);
|
| + securityInput.addEventListener('change', keyup_listener);
|
| + passInput.addEventListener('keyup', keyup_listener);
|
| this.connecting = true;
|
| },
|
|
|
| @@ -361,13 +407,15 @@
|
|
|
| handleOtherLogin_: function(e) {
|
| var el = e.target;
|
| - var parent = el.parentNode;
|
| + var parent = el.parentNode.parentNode;
|
| el.disabled = true;
|
| - var ssid = parent.childNodes[0];
|
| - var pass = parent.childNodes[1];
|
| + var ssid = parent.childNodes[1].firstChild;
|
| + var sec = parent.childNodes[2].firstChild;
|
| + var pass = parent.childNodes[3].firstChild;
|
| + sec.disabled = true;
|
| ssid.disabled = true;
|
| pass.disabled = true;
|
| - chrome.send('loginToNetwork', [ssid.value, pass.value]);
|
| + chrome.send('loginToOtherNetwork', [sec.value, ssid.value, pass.value]);
|
| },
|
|
|
| /**
|
| @@ -397,6 +445,13 @@
|
| */
|
| cr.defineProperty(NetworkItem, 'connecting', cr.PropertyKind.BOOL_ATTR);
|
|
|
| + /**
|
| + * Whether the underlying network is an other network for adding networks.
|
| + * Only used for display purpose.
|
| + * @type {boolean}
|
| + */
|
| + cr.defineProperty(NetworkItem, 'other', cr.PropertyKind.BOOL_ATTR);
|
| +
|
| return {
|
| NetworkElement: NetworkElement
|
| };
|
|
|