| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 | 5 |
| 6 // Network status constants. | 6 // Network status constants. |
| 7 const StatusConnected = 'connected'; | 7 const StatusConnected = 'connected'; |
| 8 const StatusDisconnected = 'disconnected'; | 8 const StatusDisconnected = 'disconnected'; |
| 9 const StatusConnecting = 'connecting'; | 9 const StatusConnecting = 'connecting'; |
| 10 const StatusError = 'error'; | 10 const StatusError = 'error'; |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 ctx.strokeStyle = '#4e73c7'; | 24 ctx.strokeStyle = '#4e73c7'; |
| 25 ctx.beginPath(); | 25 ctx.beginPath(); |
| 26 ctx.moveTo(lineWidth / 2, r - lineWidth / 2); | 26 ctx.moveTo(lineWidth / 2, r - lineWidth / 2); |
| 27 ctx.arc(r, r, r - lineWidth / 2, Math.PI, Math.PI * 3 / 2); | 27 ctx.arc(r, r, r - lineWidth / 2, Math.PI, Math.PI * 3 / 2); |
| 28 ctx.stroke(); | 28 ctx.stroke(); |
| 29 })(); | 29 })(); |
| 30 | 30 |
| 31 /** | 31 /** |
| 32 * Sends "connect" using the 'action' DOMUI message. | 32 * Sends "connect" using the 'action' DOMUI message. |
| 33 */ | 33 */ |
| 34 function sendConnect(index, passphrase, identity, remember) { | 34 function sendConnect(index, passphrase, identity, auto_connect) { |
| 35 chrome.send('action', | 35 chrome.send('action', |
| 36 ['connect', | 36 ['connect', |
| 37 String(index), | 37 String(index), |
| 38 passphrase, | 38 passphrase, |
| 39 identity, | 39 identity, |
| 40 remember ? '1' : '0']); | 40 auto_connect ? '1' : '0']); |
| 41 } | 41 } |
| 42 | 42 |
| 43 var networkMenuItemProto = (function() { | 43 var networkMenuItemProto = (function() { |
| 44 var networkMenuItem = cr.doc.createElement('div'); | 44 var networkMenuItem = cr.doc.createElement('div'); |
| 45 networkMenuItem.innerHTML = '<div class="network-menu-item">' + | 45 networkMenuItem.innerHTML = '<div class="network-menu-item">' + |
| 46 '<div class="network-label-icon">' + | 46 '<div class="network-label-icon">' + |
| 47 '<div class="network-label"></div>' + | 47 '<div class="network-label"></div>' + |
| 48 '<div class="network-icon hidden"></div>' + | 48 '<div class="network-icon hidden"></div>' + |
| 49 '</div>' + | 49 '</div>' + |
| 50 '<div class="network-status hidden"></div>' + | 50 '<div class="network-status hidden"></div>' + |
| 51 '<div class="hidden"></div>' + | 51 '<div class="hidden"></div>' + |
| 52 '</div>'; | 52 '</div>'; |
| 53 return networkMenuItem; | 53 return networkMenuItem; |
| 54 })(); | 54 })(); |
| 55 | 55 |
| 56 var NetworkMenuItem = cr.ui.define(function() { | 56 var NetworkMenuItem = cr.ui.define(function() { |
| 57 return networkMenuItemProto.cloneNode(true); | 57 return networkMenuItemProto.cloneNode(true); |
| 58 }); | 58 }); |
| 59 | 59 |
| 60 NetworkMenuItem.prototype = { | 60 NetworkMenuItem.prototype = { |
| 61 __proto__: MenuItem.prototype, | 61 __proto__: MenuItem.prototype, |
| 62 | 62 |
| 63 ssidEdit: null, | 63 ssidEdit: null, |
| 64 passwordEdit: null, | 64 passwordEdit: null, |
| 65 rememberCheckbox: null, | 65 autoConnectCheckbox: null, |
| 66 | 66 |
| 67 /** | 67 /** |
| 68 * The label element. | 68 * The label element. |
| 69 * @private | 69 * @private |
| 70 */ | 70 */ |
| 71 get label_() { | 71 get label_() { |
| 72 return this.firstElementChild.firstElementChild.firstElementChild; | 72 return this.firstElementChild.firstElementChild.firstElementChild; |
| 73 }, | 73 }, |
| 74 | 74 |
| 75 /** | 75 /** |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 128 * Handle reconnect. | 128 * Handle reconnect. |
| 129 * @private | 129 * @private |
| 130 */ | 130 */ |
| 131 handleConnect_ : function(e) { | 131 handleConnect_ : function(e) { |
| 132 var index = this.menu_.getMenuItemIndexOf(this); | 132 var index = this.menu_.getMenuItemIndexOf(this); |
| 133 if (this.ssidEdit && this.passwordEdit) { | 133 if (this.ssidEdit && this.passwordEdit) { |
| 134 if (this.ssidEdit.value) { | 134 if (this.ssidEdit.value) { |
| 135 sendConnect(index, | 135 sendConnect(index, |
| 136 this.passwordEdit.value, | 136 this.passwordEdit.value, |
| 137 this.ssidEdit.value, | 137 this.ssidEdit.value, |
| 138 this.rememberCheckbox.checked); | 138 this.autoConnectCheckbox.checked); |
| 139 } | 139 } |
| 140 } else if (this.passwordEdit) { | 140 } else if (this.passwordEdit) { |
| 141 if (this.passwordEdit.value) { | 141 if (this.passwordEdit.value) { |
| 142 sendConnect(index, | 142 sendConnect(index, |
| 143 this.passwordEdit.value, '', this.rememberCheckbox.checked); | 143 this.passwordEdit.value, '', this.autoConnectCheckbox.checked); |
| 144 } | 144 } |
| 145 } else { | 145 } else { |
| 146 if (this.attrs.remembered) { | 146 if (this.attrs.remembered) { |
| 147 sendConnect(index, this.attrs.passphrase, '', | 147 sendConnect(index, this.attrs.passphrase, '', this.attrs.auto_connect); |
| 148 this.rememberCheckbox.checked); | |
| 149 } else { | 148 } else { |
| 150 sendConnect(index, '', '', this.rememberCheckbox.checked); | 149 sendConnect(index, '', '', this.autoConnectCheckbox.checked); |
| 151 } | 150 } |
| 152 } | 151 } |
| 153 }, | 152 }, |
| 154 | 153 |
| 155 /** | 154 /** |
| 156 * Handle keydown event in ssid edit. | 155 * Handle keydown event in ssid edit. |
| 157 * @private | 156 * @private |
| 158 */ | 157 */ |
| 159 handleSsidEditKeydown_: function(e) { | 158 handleSsidEditKeydown_: function(e) { |
| 160 if (e.target == this.ssidEdit && | 159 if (e.target == this.ssidEdit && |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 223 this.passwordEdit.pattern = '^\\S+$'; | 222 this.passwordEdit.pattern = '^\\S+$'; |
| 224 this.passwordEdit.addEventListener('keydown', | 223 this.passwordEdit.addEventListener('keydown', |
| 225 this.handlePassEditKeydown_.bind(this)); | 224 this.handlePassEditKeydown_.bind(this)); |
| 226 | 225 |
| 227 var box = this.ownerDocument.createElement('div'); | 226 var box = this.ownerDocument.createElement('div'); |
| 228 box.appendChild(this.passwordEdit); | 227 box.appendChild(this.passwordEdit); |
| 229 this.action_.appendChild(box); | 228 this.action_.appendChild(box); |
| 230 }, | 229 }, |
| 231 | 230 |
| 232 /** | 231 /** |
| 233 * Add remember this network check box to action area. | 232 * Add auto-connect this network check box to action area. |
| 234 * @private | 233 * @private |
| 235 */ | 234 */ |
| 236 addRememberCheckbox_: function() { | 235 addAutoConnectCheckbox_: function() { |
| 237 this.rememberCheckbox = this.ownerDocument.createElement('input'); | 236 this.autoConnectCheckbox = this.ownerDocument.createElement('input'); |
| 238 this.rememberCheckbox.type = 'checkbox'; | 237 this.autoConnectCheckbox.type = 'checkbox'; |
| 239 this.rememberCheckbox.checked = this.attrs.remembered; | 238 this.autoConnectCheckbox.checked = this.attrs.auto_connect; |
| 240 | 239 |
| 241 var rememberSpan = this.ownerDocument.createElement('span'); | 240 var autoConnectSpan = this.ownerDocument.createElement('span'); |
| 242 rememberSpan.textContent = localStrings.getString('remeber_this_network'); | 241 autoConnectSpan.textContent = |
| 242 localStrings.getString('auto_connect_this_network'); |
| 243 | 243 |
| 244 var rememberLabel = this.ownerDocument.createElement('label'); | 244 var autoConnectLabel = this.ownerDocument.createElement('label'); |
| 245 rememberLabel.appendChild(this.rememberCheckbox); | 245 autoConnectLabel.appendChild(this.autoConnectCheckbox); |
| 246 rememberLabel.appendChild(rememberSpan); | 246 autoConnectLabel.appendChild(autoConnectSpan); |
| 247 | 247 |
| 248 this.action_.appendChild(rememberLabel); | 248 this.action_.appendChild(autoConnectLabel); |
| 249 }, | 249 }, |
| 250 | 250 |
| 251 /** | 251 /** |
| 252 * Internal method to initiailze the MenuItem. | 252 * Internal method to initiailze the MenuItem. |
| 253 * @private | 253 * @private |
| 254 */ | 254 */ |
| 255 initMenuItem_: function() { | 255 initMenuItem_: function() { |
| 256 // *TODO: eliminate code duplication with menu.js | 256 // *TODO: eliminate code duplication with menu.js |
| 257 // MenuItem.prototype.initMenuItem_(); | 257 // MenuItem.prototype.initMenuItem_(); |
| 258 var attrs = this.attrs; | 258 var attrs = this.attrs; |
| 259 this.classList.add(attrs.type); | 259 this.classList.add(attrs.type); |
| 260 this.menu_.addHandlers(this, this); | 260 this.menu_.addHandlers(this, this); |
| 261 | 261 |
| 262 //////// NetworkMenuItem specific code: | 262 //////// NetworkMenuItem specific code: |
| 263 // TODO: Handle specific types of network, connecting icon. | 263 // TODO: Handle specific types of network, connecting icon. |
| 264 this.label_.textContent = attrs.label; | 264 this.label_.textContent = attrs.label; |
| 265 | 265 |
| 266 if (attrs.network_type == NetworkOther) { | 266 if (attrs.network_type == NetworkOther) { |
| 267 this.addSsidEdit_(); | 267 this.addSsidEdit_(); |
| 268 this.addPasswordEdit_(); | 268 this.addPasswordEdit_(); |
| 269 this.addRememberCheckbox_(); | 269 this.addAutoConnectCheckbox_(); |
| 270 } else if (attrs.status && attrs.status != 'unknown') { | 270 } else if (attrs.status && attrs.status != 'unknown') { |
| 271 if (attrs.status == StatusConnected) { | 271 if (attrs.status == StatusConnected) { |
| 272 this.setStatus_(attrs.ip_address); | 272 this.setStatus_(attrs.ip_address); |
| 273 } else if (attrs.status == StatusConnecting) { | 273 } else if (attrs.status == StatusConnecting) { |
| 274 this.setStatus_(attrs.message); | 274 this.setStatus_(attrs.message); |
| 275 | 275 |
| 276 this.icon_.classList.add('spinner'); | 276 this.icon_.classList.add('spinner'); |
| 277 this.icon_.classList.remove('hidden'); | 277 this.icon_.classList.remove('hidden'); |
| 278 } else if (attrs.status == StatusError) { | 278 } else if (attrs.status == StatusError) { |
| 279 this.setStatus_(attrs.message); | 279 this.setStatus_(attrs.message); |
| 280 this.setIcon_('chrome://theme/IDR_WARNING'); | 280 this.setIcon_('chrome://theme/IDR_WARNING'); |
| 281 | 281 |
| 282 var button = this.ownerDocument.createElement('button'); | 282 var button = this.ownerDocument.createElement('button'); |
| 283 button.textContent = localStrings.getString('reconnect'); | 283 button.textContent = localStrings.getString('reconnect'); |
| 284 button.addEventListener('click', this.handleConnect_.bind(this)); | 284 button.addEventListener('click', this.handleConnect_.bind(this)); |
| 285 var box = this.ownerDocument.createElement('div'); | 285 var box = this.ownerDocument.createElement('div'); |
| 286 box.appendChild(button); | 286 box.appendChild(button); |
| 287 this.action_.appendChild(box); | 287 this.action_.appendChild(box); |
| 288 | 288 |
| 289 this.showAction_(true); | 289 this.showAction_(true); |
| 290 } | 290 } |
| 291 | 291 |
| 292 if (attrs.need_passphrase) { | 292 if (attrs.need_passphrase) { |
| 293 this.addPasswordEdit_(); | 293 this.addPasswordEdit_(); |
| 294 } | 294 } |
| 295 | 295 |
| 296 this.addRememberCheckbox_(); | 296 this.addAutoConnectCheckbox_(); |
| 297 } | 297 } |
| 298 //////// End NetworkMenuItem specifi code | 298 //////// End NetworkMenuItem specifi code |
| 299 | 299 |
| 300 if (attrs.font) { | 300 if (attrs.font) { |
| 301 this.label_.style.font = attrs.font; | 301 this.label_.style.font = attrs.font; |
| 302 | 302 |
| 303 var base_font = attrs.font.replace(/bold/, '').replace(/italic/, ''); | 303 var base_font = attrs.font.replace(/bold/, '').replace(/italic/, ''); |
| 304 this.status_.style.font = base_font; | 304 this.status_.style.font = base_font; |
| 305 this.action_.style.font = base_font; | 305 this.action_.style.font = base_font; |
| 306 } | 306 } |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 339 if (attrs.type == 'command') { | 339 if (attrs.type == 'command') { |
| 340 return new NetworkMenuItem(); | 340 return new NetworkMenuItem(); |
| 341 } else { | 341 } else { |
| 342 return new MenuItem(); | 342 return new MenuItem(); |
| 343 } | 343 } |
| 344 }, | 344 }, |
| 345 | 345 |
| 346 /** @inheritDoc */ | 346 /** @inheritDoc */ |
| 347 onClick_: function(event, item) { | 347 onClick_: function(event, item) { |
| 348 // If item is a NetworkMenuItem, it must have at least one of the following. | 348 // If item is a NetworkMenuItem, it must have at least one of the following. |
| 349 if (item.rememberCheckbox || item.ssidEdit || item.passwordEdit) { | 349 if (item.autoConnectCheckbox || item.ssidEdit || item.passwordEdit) { |
| 350 // Ignore clicks other than on the NetworkMenuItem itself. | 350 // Ignore clicks other than on the NetworkMenuItem itself. |
| 351 if (event.target == item.rememberCheckbox || | 351 if (event.target == item.autoConnectCheckbox || |
| 352 event.target == item.rememberCheckbox.nextElementSibling || | 352 event.target == item.autoConnectCheckbox.nextElementSibling || |
| 353 event.target == item.ssidEdit || | 353 event.target == item.ssidEdit || |
| 354 event.target == item.passwordEdit) { | 354 event.target == item.passwordEdit) { |
| 355 return; | 355 return; |
| 356 } | 356 } |
| 357 } | 357 } |
| 358 | 358 |
| 359 Menu.prototype.onClick_.call(this, event, item); | 359 Menu.prototype.onClick_.call(this, event, item); |
| 360 }, | 360 }, |
| 361 }; | 361 }; |
| OLD | NEW |