Index: chrome/browser/resources/options/chromeos/internet_network_element.js |
=================================================================== |
--- chrome/browser/resources/options/chromeos/internet_network_element.js (revision 84868) |
+++ chrome/browser/resources/options/chromeos/internet_network_element.js (working copy) |
@@ -1,503 +0,0 @@ |
-// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-cr.define('options.internet', function() { |
- |
- /** |
- * Network settings constants. These enums usually match their C++ |
- * counterparts. |
- */ |
- function Constants() {} |
- // Minimum length for wireless network password. |
- Constants.MIN_WIRELESS_PASSWORD_LENGTH = 5; |
- // Minimum length for SSID name. |
- Constants.MIN_WIRELESS_SSID_LENGTH = 1; |
- // Cellular activation states: |
- Constants.ACTIVATION_STATE_UNKNOWN = 0; |
- Constants.ACTIVATION_STATE_ACTIVATED = 1; |
- Constants.ACTIVATION_STATE_ACTIVATING = 2; |
- Constants.ACTIVATION_STATE_NOT_ACTIVATED = 3; |
- Constants.ACTIVATION_STATE_PARTIALLY_ACTIVATED = 4; |
- // Network types: |
- Constants.TYPE_UNKNOWN = 0; |
- Constants.TYPE_ETHERNET = 1; |
- Constants.TYPE_WIFI = 2; |
- Constants.TYPE_WIMAX = 3; |
- Constants.TYPE_BLUETOOTH = 4; |
- Constants.TYPE_CELLULAR = 5; |
- |
- /** |
- * Creates a new network list div. |
- * @param {Object=} opt_propertyBag Optional properties. |
- * @constructor |
- * @extends {HTMLDivElement} |
- */ |
- var NetworkElement = cr.ui.define('div'); |
- |
- NetworkElement.prototype = { |
- __proto__: HTMLDivElement.prototype, |
- |
- /** @inheritDoc */ |
- decorate: function() { |
- this.addEventListener('click', this.handleClick_); |
- }, |
- |
- /** |
- * Loads given network list. |
- * @param {Array} networks An array of network object. |
- */ |
- load: function(networks) { |
- this.textContent = ''; |
- |
- for (var i = 0; i < networks.length; ++i) { |
- this.appendChild(new NetworkItem(networks[i])); |
- } |
- }, |
- |
- /** |
- * Handles click on network list and triggers actions when clicked on |
- * a NetworkListItem button. |
- * @private |
- * @param {!Event} e The click event object. |
- */ |
- handleClick_: function(e) { |
- // We shouldn't respond to click events selecting an input, |
- // so return on those. |
- if (e.target.tagName == 'INPUT') { |
- return; |
- } |
- // Handle left button click |
- if (e.button == 0) { |
- var el = e.target; |
- // If click is on action buttons of a network item. |
- if (!(el.buttonType && el.networkType && el.servicePath)) { |
- if (el.buttonType) { |
- return; |
- } |
- // If click is on a network item or its label, walk up the DOM tree |
- // to find the network item. |
- var item = el; |
- while (item && !item.data) { |
- item = item.parentNode; |
- } |
- if (item.connecting) |
- return; |
- |
- if (item) { |
- var data = item.data; |
- // Don't try to connect to Ethernet or unactivated Cellular. |
- if (data && (data.networkType == 1 || |
- (data.networkType == 5 && data.activation_state != 1))) |
- return; |
- for (var i = 0; i < this.childNodes.length; i++) { |
- if (this.childNodes[i] != item) |
- this.childNodes[i].hidePassword(); |
- } |
- InternetOptions.unlockUpdates(); |
- // If clicked on other networks item. |
- if (data && data.servicePath == '?') { |
- if (InternetOptions.useSettingsUI && |
- data.type != options.internet.Constants.TYPE_CELLULAR) { |
- item.showOtherLogin(); |
- } else { |
- chrome.send('buttonClickCallback', |
- [String(data.networkType), |
- data.servicePath, |
- 'connect']); |
- } |
- } |
- } |
- } |
- } |
- } |
- }; |
- |
- /** |
- * Creates a new network item. |
- * @param {Object} network The network this represents. |
- * @constructor |
- * @extends {HTMLDivElement} |
- */ |
- function NetworkItem(network) { |
- var el = cr.doc.createElement('div'); |
- el.data = { |
- servicePath: network[0], |
- networkName: network[1], |
- networkStatus: network[2], |
- networkType: network[3], |
- connected: network[4], |
- connecting: network[5], |
- iconURL: network[6], |
- remembered: network[7], |
- activation_state: network[8], |
- needs_new_plan: network[9], |
- connectable: network[10] |
- }; |
- NetworkItem.decorate(el); |
- return el; |
- } |
- |
- |
- /** |
- * Decorates an element as a network item. |
- * @param {!HTMLElement} el The element to decorate. |
- */ |
- NetworkItem.decorate = function(el) { |
- el.__proto__ = NetworkItem.prototype; |
- el.decorate(); |
- }; |
- |
- NetworkItem.prototype = { |
- __proto__: HTMLDivElement.prototype, |
- |
- /** @inheritDoc */ |
- decorate: function() { |
- this.className = 'network-item'; |
- this.connected = this.data.connected; |
- this.connectable = this.data.connectable; |
- this.other = this.data.servicePath == '?'; |
- this.id = this.data.servicePath; |
- // textDiv holds icon, name and status text. |
- var textDiv = this.ownerDocument.createElement('div'); |
- textDiv.className = 'network-item-text'; |
- if (this.data.iconURL) { |
- textDiv.style.backgroundImage = url(this.data.iconURL); |
- } |
- |
- var nameEl = this.ownerDocument.createElement('div'); |
- nameEl.className = 'network-name-label'; |
- nameEl.textContent = this.data.networkName; |
- textDiv.appendChild(nameEl); |
- |
- if (this.other) { |
- // No status and buttons for "Other..." |
- this.appendChild(textDiv); |
- return; |
- } |
- |
- // Only show status text for networks other than "remembered". |
- if (!this.data.remembered) { |
- var statusEl = this.ownerDocument.createElement('div'); |
- statusEl.className = 'network-status-label'; |
- statusEl.textContent = this.data.networkStatus; |
- textDiv.appendChild(statusEl); |
- } |
- |
- this.appendChild(textDiv); |
- |
- var spacerDiv = this.ownerDocument.createElement('div'); |
- spacerDiv.className = 'network-item-box-spacer'; |
- this.appendChild(spacerDiv); |
- |
- var buttonsDiv = this.ownerDocument.createElement('div'); |
- var self = this; |
- if (!this.data.remembered) { |
- var no_plan = |
- this.data.networkType == Constants.TYPE_CELLULAR && |
- this.data.needs_new_plan; |
- var show_activate = |
- (this.data.networkType == Constants.TYPE_CELLULAR && |
- this.data.activation_state != |
- Constants.ACTIVATION_STATE_ACTIVATED && |
- this.data.activation_state != |
- Constants.ACTIVATION_STATE_ACTIVATING); |
- |
- // Show [Activate] button for non-activated Cellular network. |
- if (show_activate || no_plan) { |
- var button_name = no_plan ? 'buyplan_button' : 'activate_button'; |
- buttonsDiv.appendChild( |
- this.createButton_(button_name, 'activate', |
- function(e) { |
- chrome.send('buttonClickCallback', |
- [String(self.data.networkType), |
- self.data.servicePath, |
- 'activate']); |
- })); |
- } |
- // Show disconnect button if not ethernet. |
- if (this.data.networkType != Constants.TYPE_ETHERNET && |
- this.data.connected) { |
- buttonsDiv.appendChild( |
- this.createButton_('disconnect_button', 'disconnect', |
- function(e) { |
- chrome.send('buttonClickCallback', |
- [String(self.data.networkType), |
- self.data.servicePath, |
- 'disconnect']); |
- })); |
- } |
- if (!this.data.connected && !this.data.connecting) { |
- // connect button (if not ethernet and not showing activate button) |
- if (this.data.networkType != Constants.TYPE_ETHERNET && |
- !show_activate && !no_plan) { |
- buttonsDiv.appendChild( |
- this.createButton_('connect_button', 'connect', |
- function(e) { |
- chrome.send('buttonClickCallback', |
- [String(self.data.networkType), |
- self.data.servicePath, |
- 'connect']); |
- })); |
- } |
- } |
- if (this.data.connected || |
- this.data.networkType == Constants.TYPE_CELLULAR) { |
- buttonsDiv.appendChild( |
- this.createButton_('options_button', 'options', |
- function(e) { |
- chrome.send('buttonClickCallback', |
- [String(self.data.networkType), |
- self.data.servicePath, |
- 'options']); |
- })); |
- } |
- } else { |
- // Put "Forget this network" button. |
- var button = this.createButton_('forget_button', 'forget', |
- function(e) { |
- chrome.send('buttonClickCallback', |
- [String(self.data.networkType), |
- self.data.servicePath, |
- 'forget']); |
- }); |
- if (!AccountsOptions.currentUserIsOwner()) { |
- // Disable this for guest non-Owners. |
- button.disabled = true; |
- } |
- |
- buttonsDiv.appendChild(button); |
- } |
- this.appendChild(buttonsDiv); |
- }, |
- |
- showPassword: function() { |
- if (this.connecting) |
- return; |
- |
- InternetOptions.lockUpdates(); |
- |
- var passwordDiv = this.ownerDocument.createElement('div'); |
- passwordDiv.className = 'network-password'; |
- var passInput = this.ownerDocument.createElement('input'); |
- passwordDiv.appendChild(passInput); |
- passInput.placeholder = localStrings.getString('inetPassPrompt'); |
- passInput.type = 'password'; |
- var buttonEl = this.ownerDocument.createElement('button'); |
- buttonEl.textContent = localStrings.getString('inetLogin'); |
- buttonEl.addEventListener('click', this.handleLogin_); |
- buttonEl.servicePath = this.data.servicePath; |
- buttonEl.style.right = '0'; |
- buttonEl.style.position = 'absolute'; |
- buttonEl.style.visibility = 'visible'; |
- buttonEl.disabled = true; |
- |
- var togglePassLabel = this.ownerDocument.createElement('label'); |
- togglePassLabel.style.display = 'inline'; |
- var togglePassSpan = this.ownerDocument.createElement('span'); |
- var togglePassCheckbox = this.ownerDocument.createElement('input'); |
- togglePassCheckbox.type = 'checkbox'; |
- togglePassCheckbox.checked = false; |
- togglePassCheckbox.target = passInput; |
- togglePassCheckbox.addEventListener('change', this.handleShowPass_); |
- togglePassSpan.textContent = localStrings.getString('inetShowPass'); |
- togglePassLabel.appendChild(togglePassCheckbox); |
- togglePassLabel.appendChild(togglePassSpan); |
- passwordDiv.appendChild(togglePassLabel); |
- |
- // Disable login button if there is no password. |
- passInput.addEventListener('keyup', function(e) { |
- buttonEl.disabled = |
- passInput.value.length < Constants.MIN_WIRELESS_PASSWORD_LENGTH; |
- }); |
- |
- passwordDiv.appendChild(buttonEl); |
- this.connecting = true; |
- this.appendChild(passwordDiv); |
- }, |
- |
- handleShowPass_: function(e) { |
- var target = e.target; |
- if (target.checked) { |
- target.target.type = 'text'; |
- } else { |
- target.target.type = 'password'; |
- } |
- }, |
- |
- hidePassword: function() { |
- this.connecting = false; |
- var children = this.childNodes; |
- // 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]); |
- } |
- } |
- }, |
- |
- showOtherLogin: function() { |
- if (this.connecting) |
- return; |
- |
- InternetOptions.lockUpdates(); |
- |
- var ssidDiv = this.ownerDocument.createElement('div'); |
- ssidDiv.className = 'network-password'; |
- var ssidInput = this.ownerDocument.createElement('input'); |
- ssidInput.placeholder = localStrings.getString('inetSsidPrompt'); |
- 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'); |
- togglePassLabel.style.display = 'inline'; |
- var togglePassSpan = this.ownerDocument.createElement('span'); |
- var togglePassCheckbox = this.ownerDocument.createElement('input'); |
- togglePassCheckbox.type = 'checkbox'; |
- togglePassCheckbox.checked = false; |
- togglePassCheckbox.target = passInput; |
- togglePassCheckbox.addEventListener('change', this.handleShowPass_); |
- togglePassSpan.textContent = localStrings.getString('inetShowPass'); |
- togglePassLabel.appendChild(togglePassCheckbox); |
- togglePassLabel.appendChild(togglePassSpan); |
- passwordDiv.appendChild(togglePassLabel); |
- |
- 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); |
- |
- 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 >= Constants.MIN_WIRELESS_SSID_LENGTH; |
- var pass_good = |
- securityInput.value == 'none' || |
- passInput.value.length >= Constants.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; |
- }, |
- |
- handleLogin_: function(e) { |
- // The user has clicked on the Login button. It's now safe to |
- // unclock UI updates. |
- InternetOptions.unlockUpdates(); |
- var el = e.target; |
- var parent = el.parentNode; |
- el.disabled = true; |
- var input = parent.firstChild; |
- input.disabled = true; |
- chrome.send('loginToNetwork', [el.servicePath, input.value]); |
- }, |
- |
- handleOtherLogin_: function(e) { |
- // See comments in handleLogin_(). |
- InternetOptions.unlockUpdates(); |
- var el = e.target; |
- var parent = el.parentNode.parentNode; |
- el.disabled = true; |
- 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('loginToOtherNetwork', [sec.value, ssid.value, pass.value]); |
- }, |
- |
- /** |
- * Creates a button for interacting with a network. |
- * @param {Object} name The name of the localStrings to use for the text. |
- * @param {Object} type The type of button. |
- */ |
- createButton_: function(name, type, callback) { |
- var buttonEl = this.ownerDocument.createElement('button'); |
- buttonEl.buttonType = type; |
- buttonEl.textContent = localStrings.getString(name); |
- buttonEl.addEventListener('click', callback); |
- return buttonEl; |
- } |
- }; |
- |
- /** |
- * Whether the underlying network is connected. Only used for display purpose. |
- * @type {boolean} |
- */ |
- cr.defineProperty(NetworkItem, 'connected', cr.PropertyKind.BOOL_ATTR); |
- |
- /** |
- * Whether the underlying network is currently connecting. |
- * Only used for display purpose. |
- * @type {boolean} |
- */ |
- 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); |
- |
- /** |
- * Whether the underlying network is connectable. |
- * @type {boolean} |
- */ |
- cr.defineProperty(NetworkItem, 'connectable', cr.PropertyKind.BOOL_ATTR); |
- |
- return { |
- Constants: Constants, |
- NetworkElement: NetworkElement |
- }; |
-}); |