1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Use of this source code is governed by a BSD-style license that can be 3bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// found in the LICENSE file. 4bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 5bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsencr.define('options.internet', function() { 621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen /** 821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen * Network settings constants. These enums usually match their C++ 921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen * counterparts. 1021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen */ 1121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen function Constants() {} 1221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen // Minimum length for wireless network password. 1321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen Constants.MIN_WIRELESS_PASSWORD_LENGTH = 5; 1421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen // Minimum length for SSID name. 1521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen Constants.MIN_WIRELESS_SSID_LENGTH = 1; 1621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen // Cellular activation states: 1721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen Constants.ACTIVATION_STATE_UNKNOWN = 0; 1821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen Constants.ACTIVATION_STATE_ACTIVATED = 1; 1921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen Constants.ACTIVATION_STATE_ACTIVATING = 2; 2021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen Constants.ACTIVATION_STATE_NOT_ACTIVATED = 3; 2121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen Constants.ACTIVATION_STATE_PARTIALLY_ACTIVATED = 4; 2221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen // Network types: 2321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen Constants.TYPE_UNKNOWN = 0; 2421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen Constants.TYPE_ETHERNET = 1; 2521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen Constants.TYPE_WIFI = 2; 2621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen Constants.TYPE_WIMAX = 3; 2721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen Constants.TYPE_BLUETOOTH = 4; 2821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen Constants.TYPE_CELLULAR = 5; 2921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 30bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen /** 31bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen * Creates a new network list div. 32bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen * @param {Object=} opt_propertyBag Optional properties. 33bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen * @constructor 34bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen * @extends {HTMLDivElement} 35bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen */ 36bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen var NetworkElement = cr.ui.define('div'); 37bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 38bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen NetworkElement.prototype = { 39bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen __proto__: HTMLDivElement.prototype, 40bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 41bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen /** @inheritDoc */ 42bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen decorate: function() { 43bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen this.addEventListener('click', this.handleClick_); 44bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen }, 45bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 46bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen /** 47bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen * Loads given network list. 48bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen * @param {Array} networks An array of network object. 49bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen */ 50bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen load: function(networks) { 51bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen this.textContent = ''; 52bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 53bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen for (var i = 0; i < networks.length; ++i) { 54bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen this.appendChild(new NetworkItem(networks[i])); 55bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 56bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen }, 57bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 58bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen /** 59bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen * Handles click on network list and triggers actions when clicked on 60bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen * a NetworkListItem button. 61bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen * @private 62bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen * @param {!Event} e The click event object. 63bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen */ 64bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen handleClick_: function(e) { 65bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // We shouldn't respond to click events selecting an input, 66bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // so return on those. 67bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen if (e.target.tagName == 'INPUT') { 68bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen return; 69bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 70bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // Handle left button click 71bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen if (e.button == 0) { 72bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen var el = e.target; 73bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // If click is on action buttons of a network item. 74513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch if (!(el.buttonType && el.networkType && el.servicePath)) { 75513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch if (el.buttonType) { 76bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen return; 77bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 78bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // If click is on a network item or its label, walk up the DOM tree 79bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // to find the network item. 80bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen var item = el; 81bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen while (item && !item.data) { 82bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen item = item.parentNode; 83bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 84ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (item.connecting) 85731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick return; 86bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 87bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen if (item) { 88bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen var data = item.data; 89513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Don't try to connect to Ethernet or unactivated Cellular. 90513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch if (data && (data.networkType == 1 || 91513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch (data.networkType == 5 && data.activation_state != 1))) 92731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick return; 93bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen for (var i = 0; i < this.childNodes.length; i++) { 94731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick if (this.childNodes[i] != item) 95731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick this.childNodes[i].hidePassword(); 96bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 974a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch InternetOptions.unlockUpdates(); 98bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // If clicked on other networks item. 99bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen if (data && data.servicePath == '?') { 100ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (InternetOptions.useSettingsUI && 101ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen data.type != options.internet.Constants.TYPE_CELLULAR) { 102201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch item.showOtherLogin(); 103201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch } else { 104201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch chrome.send('buttonClickCallback', 105201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch [String(data.networkType), 106201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch data.servicePath, 107201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch 'connect']); 108201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch } 109bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 110bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 111bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 112bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 113bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 114bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen }; 115bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 116bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen /** 117bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen * Creates a new network item. 118bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen * @param {Object} network The network this represents. 119bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen * @constructor 120bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen * @extends {HTMLDivElement} 121bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen */ 122bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen function NetworkItem(network) { 123bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen var el = cr.doc.createElement('div'); 124bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen el.data = { 125bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen servicePath: network[0], 126bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen networkName: network[1], 127bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen networkStatus: network[2], 128bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen networkType: network[3], 129bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen connected: network[4], 130bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen connecting: network[5], 131bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen iconURL: network[6], 132513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch remembered: network[7], 133513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch activation_state: network[8], 134201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch needs_new_plan: network[9], 1354a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch connectable: network[10] 136bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen }; 137bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen NetworkItem.decorate(el); 138bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen return el; 139bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 140bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 141731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 142731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick /** 143bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen * Decorates an element as a network item. 144bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen * @param {!HTMLElement} el The element to decorate. 145bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen */ 146bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen NetworkItem.decorate = function(el) { 147bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen el.__proto__ = NetworkItem.prototype; 148bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen el.decorate(); 149bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen }; 150bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 151bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen NetworkItem.prototype = { 152bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen __proto__: HTMLDivElement.prototype, 153bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 154bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen /** @inheritDoc */ 155bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen decorate: function() { 156bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen this.className = 'network-item'; 157bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen this.connected = this.data.connected; 1584a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch this.connectable = this.data.connectable; 159513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch this.other = this.data.servicePath == '?'; 160bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen this.id = this.data.servicePath; 161bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // textDiv holds icon, name and status text. 162bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen var textDiv = this.ownerDocument.createElement('div'); 163bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen textDiv.className = 'network-item-text'; 164bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen if (this.data.iconURL) { 165bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen textDiv.style.backgroundImage = url(this.data.iconURL); 166bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 167bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 168bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen var nameEl = this.ownerDocument.createElement('div'); 169bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen nameEl.className = 'network-name-label'; 170bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen nameEl.textContent = this.data.networkName; 171bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen textDiv.appendChild(nameEl); 172bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 173513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch if (this.other) { 174bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // No status and buttons for "Other..." 175bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen this.appendChild(textDiv); 176bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen return; 177bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 178bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 179bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen // Only show status text for networks other than "remembered". 180bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen if (!this.data.remembered) { 181bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen var statusEl = this.ownerDocument.createElement('div'); 182bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen statusEl.className = 'network-status-label'; 183bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen statusEl.textContent = this.data.networkStatus; 184bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen textDiv.appendChild(statusEl); 185bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 186bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 187bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen this.appendChild(textDiv); 188bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 189bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen var spacerDiv = this.ownerDocument.createElement('div'); 190bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen spacerDiv.className = 'network-item-box-spacer'; 191bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen this.appendChild(spacerDiv); 192bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 193bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen var buttonsDiv = this.ownerDocument.createElement('div'); 194513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch var self = this; 195bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen if (!this.data.remembered) { 196513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch var no_plan = 19721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen this.data.networkType == Constants.TYPE_CELLULAR && 198201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch this.data.needs_new_plan; 199513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch var show_activate = 20021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen (this.data.networkType == Constants.TYPE_CELLULAR && 201513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch this.data.activation_state != 20221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen Constants.ACTIVATION_STATE_ACTIVATED && 203513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch this.data.activation_state != 20421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen Constants.ACTIVATION_STATE_ACTIVATING); 205513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 206513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Show [Activate] button for non-activated Cellular network. 207513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch if (show_activate || no_plan) { 208513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch var button_name = no_plan ? 'buyplan_button' : 'activate_button'; 209513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch buttonsDiv.appendChild( 210513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch this.createButton_(button_name, 'activate', 211513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch function(e) { 212513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch chrome.send('buttonClickCallback', 213513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch [String(self.data.networkType), 214513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch self.data.servicePath, 215513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 'activate']); 216513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch })); 217513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch } 21821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen // Show disconnect button if not ethernet. 21921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen if (this.data.networkType != Constants.TYPE_ETHERNET && 22021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen this.data.connected) { 22121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen buttonsDiv.appendChild( 22221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen this.createButton_('disconnect_button', 'disconnect', 22321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen function(e) { 22421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen chrome.send('buttonClickCallback', 22521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen [String(self.data.networkType), 22621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen self.data.servicePath, 22721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 'disconnect']); 22821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen })); 22921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen } 230ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (!this.data.connected && !this.data.connecting) { 231ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // connect button (if not ethernet and not showing activate button) 23221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen if (this.data.networkType != Constants.TYPE_ETHERNET && 233201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch !show_activate && !no_plan) { 234201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch buttonsDiv.appendChild( 235201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch this.createButton_('connect_button', 'connect', 236201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch function(e) { 237201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch chrome.send('buttonClickCallback', 238201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch [String(self.data.networkType), 239201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch self.data.servicePath, 240201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch 'connect']); 241201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch })); 242201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch } 243201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch } 244201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch if (this.data.connected || 24521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen this.data.networkType == Constants.TYPE_CELLULAR) { 246513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch buttonsDiv.appendChild( 247513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch this.createButton_('options_button', 'options', 248513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch function(e) { 249513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch chrome.send('buttonClickCallback', 250513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch [String(self.data.networkType), 251513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch self.data.servicePath, 252513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 'options']); 253513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch })); 254bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 255bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } else { 256513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Put "Forget this network" button. 257513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch var button = this.createButton_('forget_button', 'forget', 258513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch function(e) { 259513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch chrome.send('buttonClickCallback', 260513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch [String(self.data.networkType), 261513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch self.data.servicePath, 262513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 'forget']); 263513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch }); 264513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch if (!AccountsOptions.currentUserIsOwner()) { 265513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Disable this for guest non-Owners. 266731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick button.disabled = true; 267731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick } 268731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 269731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick buttonsDiv.appendChild(button); 270bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 271bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen this.appendChild(buttonsDiv); 272bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen }, 273bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 274513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch showPassword: function() { 275731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick if (this.connecting) 276731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick return; 2774a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 2784a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch InternetOptions.lockUpdates(); 2794a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 280bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen var passwordDiv = this.ownerDocument.createElement('div'); 281bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen passwordDiv.className = 'network-password'; 282bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen var passInput = this.ownerDocument.createElement('input'); 283bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen passwordDiv.appendChild(passInput); 284bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen passInput.placeholder = localStrings.getString('inetPassPrompt'); 285bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen passInput.type = 'password'; 286bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen var buttonEl = this.ownerDocument.createElement('button'); 287bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen buttonEl.textContent = localStrings.getString('inetLogin'); 288bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen buttonEl.addEventListener('click', this.handleLogin_); 289bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen buttonEl.servicePath = this.data.servicePath; 290bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen buttonEl.style.right = '0'; 291bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen buttonEl.style.position = 'absolute'; 292bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen buttonEl.style.visibility = 'visible'; 293731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick buttonEl.disabled = true; 294bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 295bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen var togglePassLabel = this.ownerDocument.createElement('label'); 296bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen togglePassLabel.style.display = 'inline'; 297bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen var togglePassSpan = this.ownerDocument.createElement('span'); 298bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen var togglePassCheckbox = this.ownerDocument.createElement('input'); 299bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen togglePassCheckbox.type = 'checkbox'; 300bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen togglePassCheckbox.checked = false; 301bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen togglePassCheckbox.target = passInput; 302bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen togglePassCheckbox.addEventListener('change', this.handleShowPass_); 303bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen togglePassSpan.textContent = localStrings.getString('inetShowPass'); 304513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch togglePassLabel.appendChild(togglePassCheckbox); 305bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen togglePassLabel.appendChild(togglePassSpan); 306bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen passwordDiv.appendChild(togglePassLabel); 307bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 308731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick // Disable login button if there is no password. 309731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick passInput.addEventListener('keyup', function(e) { 310731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick buttonEl.disabled = 31121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen passInput.value.length < Constants.MIN_WIRELESS_PASSWORD_LENGTH; 312731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick }); 313731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 314bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen passwordDiv.appendChild(buttonEl); 315bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen this.connecting = true; 316bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen this.appendChild(passwordDiv); 317bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen }, 318bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 319bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen handleShowPass_: function(e) { 320bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen var target = e.target; 321bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen if (target.checked) { 322bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen target.target.type = 'text'; 323bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } else { 324bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen target.target.type = 'password'; 325bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 326bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen }, 327bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 328bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen hidePassword: function() { 329bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen this.connecting = false; 330bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen var children = this.childNodes; 331513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Remove all password divs starting from the end. 332513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch for (var i = children.length-1; i >= 0; i--) { 333513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch if (children[i].className == 'network-password') { 334bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen this.removeChild(children[i]); 335bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 336bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 337bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen }, 338bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 339bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen showOtherLogin: function() { 340731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick if (this.connecting) 341731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick return; 342513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 3434a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch InternetOptions.lockUpdates(); 3444a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 345513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch var ssidDiv = this.ownerDocument.createElement('div'); 346513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch ssidDiv.className = 'network-password'; 347bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen var ssidInput = this.ownerDocument.createElement('input'); 348bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ssidInput.placeholder = localStrings.getString('inetSsidPrompt'); 349513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch ssidDiv.appendChild(ssidInput); 350513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 351513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch var securityDiv = this.ownerDocument.createElement('div'); 352513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch securityDiv.className = 'network-password'; 353513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch var securityInput = this.ownerDocument.createElement('select'); 354513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch var securityNoneOption = this.ownerDocument.createElement('option'); 355513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch securityNoneOption.value = 'none'; 356513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch securityNoneOption.label = localStrings.getString('inetSecurityNone'); 357513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch securityInput.appendChild(securityNoneOption); 358513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch var securityWEPOption = this.ownerDocument.createElement('option'); 359513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch securityWEPOption.value = 'wep'; 360513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch securityWEPOption.label = localStrings.getString('inetSecurityWEP'); 361513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch securityInput.appendChild(securityWEPOption); 362513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch var securityWPAOption = this.ownerDocument.createElement('option'); 363513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch securityWPAOption.value = 'wpa'; 364513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch securityWPAOption.label = localStrings.getString('inetSecurityWPA'); 365513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch securityInput.appendChild(securityWPAOption); 366513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch var securityRSNOption = this.ownerDocument.createElement('option'); 367513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch securityRSNOption.value = 'rsn'; 368513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch securityRSNOption.label = localStrings.getString('inetSecurityRSN'); 369513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch securityInput.appendChild(securityRSNOption); 370513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch securityDiv.appendChild(securityInput); 371513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 372513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch var passwordDiv = this.ownerDocument.createElement('div'); 373513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch passwordDiv.className = 'network-password'; 374bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen var passInput = this.ownerDocument.createElement('input'); 375bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen passInput.placeholder = localStrings.getString('inetPassPrompt'); 376513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch passInput.type = 'password'; 377513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch passInput.disabled = true; 378bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen passwordDiv.appendChild(passInput); 379513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 380513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch var togglePassLabel = this.ownerDocument.createElement('label'); 381513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch togglePassLabel.style.display = 'inline'; 382513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch var togglePassSpan = this.ownerDocument.createElement('span'); 383513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch var togglePassCheckbox = this.ownerDocument.createElement('input'); 384513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch togglePassCheckbox.type = 'checkbox'; 385513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch togglePassCheckbox.checked = false; 386513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch togglePassCheckbox.target = passInput; 387513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch togglePassCheckbox.addEventListener('change', this.handleShowPass_); 388513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch togglePassSpan.textContent = localStrings.getString('inetShowPass'); 389513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch togglePassLabel.appendChild(togglePassCheckbox); 390513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch togglePassLabel.appendChild(togglePassSpan); 391513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch passwordDiv.appendChild(togglePassLabel); 392513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 393513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch var buttonEl = 394513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch this.createButton_('inetLogin', true, this.handleOtherLogin_); 395513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch buttonEl.style.right = '0'; 396513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch buttonEl.style.position = 'absolute'; 397bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen buttonEl.style.visibility = 'visible'; 398513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch buttonEl.disabled = true; 399bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen passwordDiv.appendChild(buttonEl); 400513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 401513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch this.appendChild(ssidDiv); 402513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch this.appendChild(securityDiv); 403bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen this.appendChild(passwordDiv); 404513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 405513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch securityInput.addEventListener('change', function(e) { 406513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // If changed to None, then disable passInput and clear it out. 407513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Otherwise enable it. 408513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch if (securityInput.value == 'none') { 409513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch passInput.disabled = true; 410513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch passInput.value = ''; 411513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch } else { 412513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch passInput.disabled = false; 413513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch } 414513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch }); 415513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 416513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch var keyup_listener = function(e) { 417513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Disable login button if ssid is not long enough or 418513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // password is not long enough (unless no security) 419513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch var ssid_good = 42021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen ssidInput.value.length >= Constants.MIN_WIRELESS_SSID_LENGTH; 421513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch var pass_good = 422513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch securityInput.value == 'none' || 42321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen passInput.value.length >= Constants.MIN_WIRELESS_PASSWORD_LENGTH; 424513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch buttonEl.disabled = !ssid_good || !pass_good; 425513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch }; 426513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch ssidInput.addEventListener('keyup', keyup_listener); 427513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch securityInput.addEventListener('change', keyup_listener); 428513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch passInput.addEventListener('keyup', keyup_listener); 429731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick this.connecting = true; 430bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen }, 431bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 432bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen handleLogin_: function(e) { 4334a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // The user has clicked on the Login button. It's now safe to 4344a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // unclock UI updates. 4354a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch InternetOptions.unlockUpdates(); 436bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen var el = e.target; 437bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen var parent = el.parentNode; 438bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen el.disabled = true; 439bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen var input = parent.firstChild; 440bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen input.disabled = true; 441bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen chrome.send('loginToNetwork', [el.servicePath, input.value]); 442bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen }, 443bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 444bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen handleOtherLogin_: function(e) { 4454a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // See comments in handleLogin_(). 4464a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch InternetOptions.unlockUpdates(); 447bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen var el = e.target; 448513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch var parent = el.parentNode.parentNode; 449bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen el.disabled = true; 450513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch var ssid = parent.childNodes[1].firstChild; 451513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch var sec = parent.childNodes[2].firstChild; 452513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch var pass = parent.childNodes[3].firstChild; 453513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch sec.disabled = true; 454bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen ssid.disabled = true; 455bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen pass.disabled = true; 456513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch chrome.send('loginToOtherNetwork', [sec.value, ssid.value, pass.value]); 457bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen }, 458bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 459bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen /** 460bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen * Creates a button for interacting with a network. 461bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen * @param {Object} name The name of the localStrings to use for the text. 462bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen * @param {Object} type The type of button. 463bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen */ 464513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch createButton_: function(name, type, callback) { 465bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen var buttonEl = this.ownerDocument.createElement('button'); 466bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen buttonEl.buttonType = type; 467513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch buttonEl.textContent = localStrings.getString(name); 468513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch buttonEl.addEventListener('click', callback); 469bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen return buttonEl; 470bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen } 471bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen }; 472bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 473bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen /** 474bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen * Whether the underlying network is connected. Only used for display purpose. 475bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen * @type {boolean} 476bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen */ 477bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen cr.defineProperty(NetworkItem, 'connected', cr.PropertyKind.BOOL_ATTR); 478bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 479bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen /** 480bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen * Whether the underlying network is currently connecting. 481bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen * Only used for display purpose. 482bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen * @type {boolean} 483bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen */ 484bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen cr.defineProperty(NetworkItem, 'connecting', cr.PropertyKind.BOOL_ATTR); 485bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen 486513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch /** 487513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch * Whether the underlying network is an other network for adding networks. 488513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch * Only used for display purpose. 489513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch * @type {boolean} 490513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch */ 491513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch cr.defineProperty(NetworkItem, 'other', cr.PropertyKind.BOOL_ATTR); 492513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 4934a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch /** 4944a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch * Whether the underlying network is connectable. 4954a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch * @type {boolean} 4964a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch */ 4974a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch cr.defineProperty(NetworkItem, 'connectable', cr.PropertyKind.BOOL_ATTR); 4984a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 499bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen return { 50021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen Constants: Constants, 501bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen NetworkElement: NetworkElement 502bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen }; 503bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}); 504