OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 cr.define('options.network', function() { | 5 cr.define('options.network', function() { |
6 | 6 |
7 var ArrayDataModel = cr.ui.ArrayDataModel; | 7 var ArrayDataModel = cr.ui.ArrayDataModel; |
8 var List = cr.ui.List; | 8 var List = cr.ui.List; |
9 var ListItem = cr.ui.ListItem; | 9 var ListItem = cr.ui.ListItem; |
10 var Menu = cr.ui.Menu; | 10 var Menu = cr.ui.Menu; |
(...skipping 397 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
408 if (candidateURL) | 408 if (candidateURL) |
409 this.iconURL = candidateURL; | 409 this.iconURL = candidateURL; |
410 else | 410 else |
411 this.iconType = this.data.key; | 411 this.iconType = this.data.key; |
412 | 412 |
413 this.showSelector(); | 413 this.showSelector(); |
414 | 414 |
415 if (policyManaged) | 415 if (policyManaged) |
416 this.showManagedNetworkIndicator(); | 416 this.showManagedNetworkIndicator(); |
417 | 417 |
418 // TODO(kevers): Add default icon for VPN when disconnected or in the | |
419 // process of connecting. | |
420 | |
421 if (activeMenu_ == this.getMenuName_()) { | 418 if (activeMenu_ == this.getMenuName_()) { |
422 // Menu is already showing and needs to be updated. Explicitly calling | 419 // Menu is already showing and needs to be updated. Explicitly calling |
423 // show menu will force the existing menu to be replaced. The call | 420 // show menu will force the existing menu to be replaced. The call |
424 // is deferred in order to ensure that position of this element has | 421 // is deferred in order to ensure that position of this element has |
425 // beem properly updated. | 422 // beem properly updated. |
426 var self = this; | 423 var self = this; |
427 setTimeout(function() {self.showMenu();}, 0); | 424 setTimeout(function() {self.showMenu();}, 0); |
428 } | 425 } |
429 }, | 426 }, |
430 | 427 |
(...skipping 22 matching lines...) Expand all Loading... |
453 data: {}}; | 450 data: {}}; |
454 if (disabled) { | 451 if (disabled) { |
455 entry.command = null; | 452 entry.command = null; |
456 entry.tooltip = | 453 entry.tooltip = |
457 loadTimeData.getString('dataRoamingDisableToggleTooltip'); | 454 loadTimeData.getString('dataRoamingDisableToggleTooltip'); |
458 } else { | 455 } else { |
459 entry.command = function() { | 456 entry.command = function() { |
460 options.Preferences.setBooleanPref( | 457 options.Preferences.setBooleanPref( |
461 'cros.signed.data_roaming_enabled', | 458 'cros.signed.data_roaming_enabled', |
462 !enableDataRoaming_); | 459 !enableDataRoaming_); |
463 // Force revalidation of the menu the next time it is | 460 // Force revalidation of the menu the next time it is displayed. |
464 // displayed. | |
465 this.menu_ = null; | 461 this.menu_ = null; |
466 }; | 462 }; |
467 } | 463 } |
468 addendum.push(entry); | 464 addendum.push(entry); |
469 } | 465 } |
470 var list = this.data.rememberedNetworks; | 466 var list = this.data.rememberedNetworks; |
471 if (list && list.length > 0) { | 467 if (list && list.length > 0) { |
472 var callback = function(list) { | 468 var callback = function(list) { |
473 $('remembered-network-list').clear(); | 469 $('remembered-network-list').clear(); |
474 var dialog = options.PreferredNetworks.getInstance(); | 470 var dialog = options.PreferredNetworks.getInstance(); |
475 OptionsPage.showPageByName('preferredNetworksPage', false); | 471 OptionsPage.showPageByName('preferredNetworksPage', false); |
476 dialog.update(list); | 472 dialog.update(list); |
477 }; | 473 }; |
478 addendum.push({label: loadTimeData.getString('preferredNetworks'), | 474 addendum.push({label: loadTimeData.getString('preferredNetworks'), |
479 command: callback, | 475 command: callback, |
480 data: list}); | 476 data: list}); |
481 } | 477 } |
482 | 478 |
483 var networkGroup = this.ownerDocument.createElement('div'); | 479 var networkGroup = this.ownerDocument.createElement('div'); |
484 networkGroup.className = 'network-menu-group'; | 480 networkGroup.className = 'network-menu-group'; |
485 var empty = true; | |
486 list = this.data.networkList; | 481 list = this.data.networkList; |
| 482 var empty = !list || list.length == 0; |
487 if (list) { | 483 if (list) { |
488 for (var i = 0; i < list.length; i++) { | 484 for (var i = 0; i < list.length; i++) { |
489 var data = list[i]; | 485 var data = list[i]; |
490 if (!data.connected && !data.connecting) { | 486 this.createNetworkOptionsCallback_(networkGroup, data); |
491 if (data.networkType != Constants.TYPE_ETHERNET) { | 487 if (data.connected) { |
492 if (data.networkType == Constants.TYPE_CELLULAR) { | |
493 // Test if cellular network has an activated data plan. | |
494 var activate = data.needs_new_plan || | |
495 (data.activation_state != | |
496 Constants.ACTIVATION_STATE_ACTIVATED && | |
497 data.activation_state != | |
498 Constants.ACTIVATION_STATE_ACTIVATING); | |
499 var cmd = activate ? 'activate' : 'connect'; | |
500 this.createConnectCallback_(networkGroup, data, cmd); | |
501 } else { | |
502 this.createConnectCallback_(networkGroup, data); | |
503 } | |
504 empty = false; | |
505 } | |
506 } else if (data.connected) { | |
507 addendum.push({label: loadTimeData.getString('networkOptions'), | |
508 command: 'options', | |
509 data: data}); | |
510 if (data.networkType == Constants.TYPE_VPN) { | 488 if (data.networkType == Constants.TYPE_VPN) { |
511 // Add separator | 489 // Add separator |
512 addendum.push({}); | 490 addendum.push({}); |
513 var i18nKey = 'disconnectNetwork'; | 491 var i18nKey = 'disconnectNetwork'; |
514 addendum.push({label: loadTimeData.getString(i18nKey), | 492 addendum.push({label: loadTimeData.getString(i18nKey), |
515 command: 'disconnect', | 493 command: 'disconnect', |
516 data: data}); | 494 data: data}); |
517 } | 495 } |
518 if (data.networkType != Constants.TYPE_ETHERNET) { | |
519 var onlineMessage = this.ownerDocument.createElement('div'); | |
520 onlineMessage.textContent = | |
521 loadTimeData.getString('networkOnline'); | |
522 onlineMessage.className = 'network-menu-header'; | |
523 menu.insertBefore(onlineMessage, menu.firstChild); | |
524 } | |
525 } | 496 } |
526 } | 497 } |
527 } | 498 } |
528 if (this.data_.key == 'wifi' || this.data_.key == 'wimax' || | 499 if (this.data_.key == 'wifi' || this.data_.key == 'wimax' || |
529 this.data_.key == 'cellular') { | 500 this.data_.key == 'cellular') { |
530 addendum.push({}); | 501 addendum.push({}); |
531 if (this.data_.key == 'wifi') { | 502 if (this.data_.key == 'wifi') { |
532 addendum.push({label: loadTimeData.getString('turnOffWifi'), | 503 addendum.push({label: loadTimeData.getString('turnOffWifi'), |
533 command: function() { | 504 command: function() { |
534 chrome.send('disableWifi'); | 505 chrome.send('disableWifi'); |
(...skipping 18 matching lines...) Expand all Loading... |
553 menu.appendChild(networkGroup); | 524 menu.appendChild(networkGroup); |
554 if (addendum.length > 0) { | 525 if (addendum.length > 0) { |
555 var separator = false; | 526 var separator = false; |
556 if (!empty) { | 527 if (!empty) { |
557 menu.appendChild(MenuItem.createSeparator()); | 528 menu.appendChild(MenuItem.createSeparator()); |
558 separator = true; | 529 separator = true; |
559 } | 530 } |
560 for (var i = 0; i < addendum.length; i++) { | 531 for (var i = 0; i < addendum.length; i++) { |
561 var value = addendum[i]; | 532 var value = addendum[i]; |
562 if (value.data) { | 533 if (value.data) { |
563 var item = this.createCallback_(menu, | 534 var item = this.createCallback_(menu, value.data, value.label, |
564 value.data, | |
565 value.label, | |
566 value.command); | 535 value.command); |
567 if (value.tooltip) | 536 if (value.tooltip) |
568 item.title = value.tooltip; | 537 item.title = value.tooltip; |
569 separator = false; | 538 separator = false; |
570 } else if (!separator) { | 539 } else if (!separator) { |
571 menu.appendChild(MenuItem.createSeparator()); | 540 menu.appendChild(MenuItem.createSeparator()); |
572 separator = true; | 541 separator = true; |
573 } | 542 } |
574 } | 543 } |
575 } | 544 } |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
687 else | 656 else |
688 buttonLabel.classList.add('network-disabled-control'); | 657 buttonLabel.classList.add('network-disabled-control'); |
689 | 658 |
690 button.data = {label: label}; | 659 button.data = {label: label}; |
691 MenuItem.decorate(button); | 660 MenuItem.decorate(button); |
692 menu.appendChild(button); | 661 menu.appendChild(button); |
693 return button; | 662 return button; |
694 }, | 663 }, |
695 | 664 |
696 /** | 665 /** |
697 * Adds a menu item for connecting to a network. | 666 * Adds a menu item for showing network details. |
698 * @param {!Element} menu Parent menu. | 667 * @param {!Element} parent The parent element. |
699 * @param {Object} data Description of the network. | 668 * @param {Object} data Description of the network. |
700 * @param {string=} opt_connect Optional connection method. | |
701 * @private | 669 * @private |
702 */ | 670 */ |
703 createConnectCallback_: function(menu, data, opt_connect) { | 671 createNetworkOptionsCallback_: function(parent, data) { |
704 var cmd = opt_connect ? opt_connect : 'connect'; | 672 var menuItem = this.createCallback_(parent, |
705 var label = data.networkName; | |
706 if (cmd == 'activate') { | |
707 label = loadTimeData.getString('activateNetwork'); | |
708 label = label.replace('$1', data.networkName); | |
709 } | |
710 var menuItem = this.createCallback_(menu, | |
711 data, | 673 data, |
712 label, | 674 data.networkName, |
713 cmd); | 675 'options'); |
714 menuItem.style.backgroundImage = url(data.iconURL); | 676 menuItem.style.backgroundImage = url(data.iconURL); |
715 | |
716 if (data.policyManaged) | 677 if (data.policyManaged) |
717 menuItem.appendChild(new ManagedNetworkIndicator()); | 678 menuItem.appendChild(new ManagedNetworkIndicator()); |
718 | 679 if (data.connected || data.connecting) { |
719 var optionsButton = this.ownerDocument.createElement('div'); | 680 var label = menuItem.getElementsByClassName( |
720 optionsButton.className = 'network-options-button'; | 681 'network-menu-item-label')[0]; |
721 var type = String(data.networkType); | 682 label.classList.add('active-network'); |
722 var path = data.servicePath; | 683 } |
723 optionsButton.addEventListener('click', function(event) { | |
724 event.stopPropagation(); | |
725 chrome.send('networkCommand', | |
726 [type, path, 'options']); | |
727 closeMenu_(); | |
728 }); | |
729 menuItem.appendChild(optionsButton); | |
730 } | 684 } |
731 }; | 685 }; |
732 | 686 |
733 /** | 687 /** |
734 * Creates a button-like control for configurating internet connectivity. | 688 * Creates a button-like control for configurating internet connectivity. |
735 * @param {{key: string, | 689 * @param {{key: string, |
736 * subtitle: string, | 690 * subtitle: string, |
737 * command: function} data Description of the network control. | 691 * command: function} data Description of the network control. |
738 * @constructor | 692 * @constructor |
739 */ | 693 */ |
(...skipping 392 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1132 * Whether the Network list is disabled. Only used for display purpose. | 1086 * Whether the Network list is disabled. Only used for display purpose. |
1133 * @type {boolean} | 1087 * @type {boolean} |
1134 */ | 1088 */ |
1135 cr.defineProperty(NetworkList, 'disabled', cr.PropertyKind.BOOL_ATTR); | 1089 cr.defineProperty(NetworkList, 'disabled', cr.PropertyKind.BOOL_ATTR); |
1136 | 1090 |
1137 // Export | 1091 // Export |
1138 return { | 1092 return { |
1139 NetworkList: NetworkList | 1093 NetworkList: NetworkList |
1140 }; | 1094 }; |
1141 }); | 1095 }); |
OLD | NEW |