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 var ArrayDataModel = cr.ui.ArrayDataModel; | 6 var ArrayDataModel = cr.ui.ArrayDataModel; |
7 var List = cr.ui.List; | 7 var List = cr.ui.List; |
8 var ListItem = cr.ui.ListItem; | 8 var ListItem = cr.ui.ListItem; |
9 var ListSingleSelectionModel = cr.ui.ListSingleSelectionModel; | 9 var ListSingleSelectionModel = cr.ui.ListSingleSelectionModel; |
10 var Menu = cr.ui.Menu; | 10 var Menu = cr.ui.Menu; |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
56 var cellularEnabled_ = false; | 56 var cellularEnabled_ = false; |
57 | 57 |
58 /** | 58 /** |
59 * Indicates if cellular device supports network scanning. | 59 * Indicates if cellular device supports network scanning. |
60 * @type {boolean} | 60 * @type {boolean} |
61 * @private | 61 * @private |
62 */ | 62 */ |
63 var cellularSupportsScan_ = false; | 63 var cellularSupportsScan_ = false; |
64 | 64 |
65 /** | 65 /** |
| 66 * Indicates the current SIM lock type of the cellular device. |
| 67 * @type {boolean} |
| 68 * @private |
| 69 */ |
| 70 var cellularSimLockType_ = ''; |
| 71 |
| 72 /** |
| 73 * Indicates whether the SIM card is absent on the cellular device. |
| 74 * @type {boolean} |
| 75 * @private |
| 76 */ |
| 77 var cellularSimAbsent_ = false; |
| 78 |
| 79 /** |
66 * Indicates if WiMAX networks are available. | 80 * Indicates if WiMAX networks are available. |
67 * @type {boolean} | 81 * @type {boolean} |
68 * @private | 82 * @private |
69 */ | 83 */ |
70 var wimaxAvailable_ = false; | 84 var wimaxAvailable_ = false; |
71 | 85 |
72 /** | 86 /** |
73 * Indicates if WiMAX networks are enabled. | 87 * Indicates if WiMAX networks are enabled. |
74 * @type {boolean} | 88 * @type {boolean} |
75 * @private | 89 * @private |
(...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
361 parent.appendChild(this.menu_); | 375 parent.appendChild(this.menu_); |
362 } | 376 } |
363 var top = this.offsetTop + this.clientHeight; | 377 var top = this.offsetTop + this.clientHeight; |
364 var menuId = this.getMenuName(); | 378 var menuId = this.getMenuName(); |
365 if (menuId != activeMenu_ || rebuild) { | 379 if (menuId != activeMenu_ || rebuild) { |
366 closeMenu_(); | 380 closeMenu_(); |
367 activeMenu_ = menuId; | 381 activeMenu_ = menuId; |
368 this.menu_.style.setProperty('top', top + 'px'); | 382 this.menu_.style.setProperty('top', top + 'px'); |
369 this.menu_.hidden = false; | 383 this.menu_.hidden = false; |
370 } | 384 } |
371 if (rescan) | 385 if (rescan) { |
372 chrome.send('refreshNetworks'); | 386 // TODO(stevenjb): chrome.networkingPrivate.requestNetworkScan |
373 }, | 387 chrome.send('requestNetworkScan'); |
| 388 } |
| 389 } |
374 }; | 390 }; |
375 | 391 |
376 /** | 392 /** |
377 * Creates a control for selecting or configuring a network connection based | 393 * Creates a control for selecting or configuring a network connection based |
378 * on the type of connection (e.g. wifi versus vpn). | 394 * on the type of connection (e.g. wifi versus vpn). |
379 * @param {{key: string, networkList: Array.<Object>}} data Description of the | 395 * @param {{key: string, networkList: Array.<Object>}} data Description of the |
380 * network. | 396 * network. |
381 * @constructor | 397 * @constructor |
382 * @extends {NetworkMenuItem} | 398 * @extends {NetworkMenuItem} |
383 */ | 399 */ |
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
504 list = this.data.networkList; | 520 list = this.data.networkList; |
505 var empty = !list || list.length == 0; | 521 var empty = !list || list.length == 0; |
506 if (list) { | 522 if (list) { |
507 for (var i = 0; i < list.length; i++) { | 523 for (var i = 0; i < list.length; i++) { |
508 var data = list[i]; | 524 var data = list[i]; |
509 this.createNetworkOptionsCallback_(networkGroup, data); | 525 this.createNetworkOptionsCallback_(networkGroup, data); |
510 if (data.ConnectionState == 'Connected') { | 526 if (data.ConnectionState == 'Connected') { |
511 if (data.Type == 'VPN') { | 527 if (data.Type == 'VPN') { |
512 var disconnectCallback = function() { | 528 var disconnectCallback = function() { |
513 sendChromeMetricsAction('Options_NetworkDisconnectVPN'); | 529 sendChromeMetricsAction('Options_NetworkDisconnectVPN'); |
514 chrome.send('networkCommand', | 530 // TODO(stevenjb): chrome.networkingPrivate.startDisconnect |
515 ['VPN', data.servicePath, 'disconnect']); | 531 chrome.send('startDisconnect', [data.servicePath]); |
516 }; | 532 }; |
517 // Add separator | 533 // Add separator |
518 addendum.push({}); | 534 addendum.push({}); |
519 addendum.push({label: loadTimeData.getString('disconnectNetwork'), | 535 addendum.push({label: loadTimeData.getString('disconnectNetwork'), |
520 command: disconnectCallback, | 536 command: disconnectCallback, |
521 data: data}); | 537 data: data}); |
522 } | 538 } |
523 } | 539 } |
524 } | 540 } |
525 } | 541 } |
526 if (this.data_.key == 'WiFi' || this.data_.key == 'Wimax' || | 542 if (this.data_.key == 'WiFi' || this.data_.key == 'Wimax' || |
527 this.data_.key == 'Cellular') { | 543 this.data_.key == 'Cellular') { |
528 addendum.push({}); | 544 addendum.push({}); |
529 if (this.data_.key == 'WiFi') { | 545 if (this.data_.key == 'WiFi') { |
530 addendum.push({label: loadTimeData.getString('turnOffWifi'), | 546 addendum.push({ |
531 command: function() { | 547 label: loadTimeData.getString('turnOffWifi'), |
532 sendChromeMetricsAction('Options_NetworkWifiToggle'); | 548 command: function() { |
533 chrome.send('disableWifi'); | 549 sendChromeMetricsAction('Options_NetworkWifiToggle'); |
534 }, | 550 // TODO(stevenjb): chrome.networkingPrivate.disableNetworkType |
535 data: {}}); | 551 chrome.send('disableNetworkType', ['WiFi']); |
| 552 }, |
| 553 data: {}}); |
536 } else if (this.data_.key == 'Wimax') { | 554 } else if (this.data_.key == 'Wimax') { |
537 addendum.push({label: loadTimeData.getString('turnOffWimax'), | 555 addendum.push({ |
538 command: function() { | 556 label: loadTimeData.getString('turnOffWimax'), |
539 chrome.send('disableWimax'); | 557 command: function() { |
540 }, | 558 // TODO(stevenjb): chrome.networkingPrivate.disableNetworkType |
541 data: {}}); | 559 chrome.send('disableNetworkType', ['Wimax']); |
| 560 }, |
| 561 data: {}}); |
542 } else if (this.data_.key == 'Cellular') { | 562 } else if (this.data_.key == 'Cellular') { |
543 addendum.push({label: loadTimeData.getString('turnOffCellular'), | 563 addendum.push({ |
544 command: function() { | 564 label: loadTimeData.getString('turnOffCellular'), |
545 chrome.send('disableCellular'); | 565 command: function() { |
546 }, | 566 // TODO(stevenjb): chrome.networkingPrivate.disableNetworkType |
547 data: {}}); | 567 chrome.send('disableNetworkType', ['Cellular']); |
| 568 }, |
| 569 data: {}}); |
548 } | 570 } |
549 } | 571 } |
550 if (!empty) | 572 if (!empty) |
551 menu.appendChild(networkGroup); | 573 menu.appendChild(networkGroup); |
552 if (addendum.length > 0) { | 574 if (addendum.length > 0) { |
553 var separator = false; | 575 var separator = false; |
554 if (!empty) { | 576 if (!empty) { |
555 menu.appendChild(MenuItem.createSeparator()); | 577 menu.appendChild(MenuItem.createSeparator()); |
556 separator = true; | 578 separator = true; |
557 } | 579 } |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
652 /** | 674 /** |
653 * Adds a menu item for showing network details. | 675 * Adds a menu item for showing network details. |
654 * @param {!Element} parent The parent element. | 676 * @param {!Element} parent The parent element. |
655 * @param {Object} data Description of the network. | 677 * @param {Object} data Description of the network. |
656 * @private | 678 * @private |
657 */ | 679 */ |
658 createNetworkOptionsCallback_: function(parent, data) { | 680 createNetworkOptionsCallback_: function(parent, data) { |
659 var menuItem = createCallback_(parent, | 681 var menuItem = createCallback_(parent, |
660 data, | 682 data, |
661 getNetworkName(data), | 683 getNetworkName(data), |
662 'options', | 684 'showDetails', |
663 data.iconURL); | 685 data.iconURL); |
664 if (data.policyManaged) | 686 if (data.policyManaged) |
665 menuItem.appendChild(new ManagedNetworkIndicator()); | 687 menuItem.appendChild(new ManagedNetworkIndicator()); |
666 if (data.ConnectionState == 'Connected' || | 688 if (data.ConnectionState == 'Connected' || |
667 data.ConnectionState == 'Connecting') { | 689 data.ConnectionState == 'Connecting') { |
668 var label = menuItem.getElementsByClassName( | 690 var label = menuItem.getElementsByClassName( |
669 'network-menu-item-label')[0]; | 691 'network-menu-item-label')[0]; |
670 label.classList.add('active-network'); | 692 label.classList.add('active-network'); |
671 } | 693 } |
672 } | 694 } |
(...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
955 * cellularAvailable: boolean, cellularEnabled: boolean, | 977 * cellularAvailable: boolean, cellularEnabled: boolean, |
956 * cellularSupportsScan: boolean}} data Description of available network | 978 * cellularSupportsScan: boolean}} data Description of available network |
957 * devices and their corresponding state. | 979 * devices and their corresponding state. |
958 */ | 980 */ |
959 NetworkList.refreshNetworkData = function(data) { | 981 NetworkList.refreshNetworkData = function(data) { |
960 var networkList = $('network-list'); | 982 var networkList = $('network-list'); |
961 networkList.startBatchUpdates(); | 983 networkList.startBatchUpdates(); |
962 cellularAvailable_ = data.cellularAvailable; | 984 cellularAvailable_ = data.cellularAvailable; |
963 cellularEnabled_ = data.cellularEnabled; | 985 cellularEnabled_ = data.cellularEnabled; |
964 cellularSupportsScan_ = data.cellularSupportsScan; | 986 cellularSupportsScan_ = data.cellularSupportsScan; |
| 987 cellularSimAbsent_ = data.cellularSimAbsent; |
| 988 cellularSimLockType_ = data.cellularSimLockType; |
965 wimaxAvailable_ = data.wimaxAvailable; | 989 wimaxAvailable_ = data.wimaxAvailable; |
966 wimaxEnabled_ = data.wimaxEnabled; | 990 wimaxEnabled_ = data.wimaxEnabled; |
967 | 991 |
968 // Only show Ethernet control if connected. | 992 // Only show Ethernet control if connected. |
969 var ethernetConnection = getConnection_(data.wiredList); | 993 var ethernetConnection = getConnection_(data.wiredList); |
970 if (ethernetConnection) { | 994 if (ethernetConnection) { |
971 var type = String('Ethernet'); | 995 var type = String('Ethernet'); |
972 var path = ethernetConnection.servicePath; | 996 var path = ethernetConnection.servicePath; |
973 var ethernetOptions = function() { | 997 var ethernetOptions = function() { |
974 chrome.send('networkCommand', | 998 chrome.send('networkCommand', [type, path, 'showDetails']); |
975 [type, path, 'options']); | |
976 }; | 999 }; |
977 networkList.update( | 1000 networkList.update( |
978 { key: 'Ethernet', | 1001 { key: 'Ethernet', |
979 subtitle: loadTimeData.getString('OncConnectionStateConnected'), | 1002 subtitle: loadTimeData.getString('OncConnectionStateConnected'), |
980 iconURL: ethernetConnection.iconURL, | 1003 iconURL: ethernetConnection.iconURL, |
981 command: ethernetOptions, | 1004 command: ethernetOptions, |
982 policyManaged: ethernetConnection.policyManaged } | 1005 policyManaged: ethernetConnection.policyManaged } |
983 ); | 1006 ); |
984 } else { | 1007 } else { |
985 networkList.deleteItem('Ethernet'); | 1008 networkList.deleteItem('Ethernet'); |
986 } | 1009 } |
987 | 1010 |
988 if (data.wifiEnabled) | 1011 if (data.wifiEnabled) |
989 loadData_('WiFi', data.wirelessList, data.rememberedList); | 1012 loadData_('WiFi', data.wirelessList, data.rememberedList); |
990 else | 1013 else |
991 addEnableNetworkButton_('WiFi', 'enableWifi', 'WiFi'); | 1014 addEnableNetworkButton_('WiFi'); |
992 | 1015 |
993 // Only show cellular control if available. | 1016 // Only show cellular control if available. |
994 if (data.cellularAvailable) { | 1017 if (data.cellularAvailable) { |
995 if (data.cellularEnabled) | 1018 if (data.cellularEnabled) |
996 loadData_('Cellular', data.wirelessList, data.rememberedList); | 1019 loadData_('Cellular', data.wirelessList, data.rememberedList); |
997 else | 1020 else |
998 addEnableNetworkButton_('Cellular', 'enableCellular', 'Cellular'); | 1021 addEnableNetworkButton_('Cellular'); |
999 } else { | 1022 } else { |
1000 networkList.deleteItem('Cellular'); | 1023 networkList.deleteItem('Cellular'); |
1001 } | 1024 } |
1002 | 1025 |
1003 // Only show wimax control if available. Uses cellular icons. | 1026 // Only show wimax control if available. Uses cellular icons. |
1004 if (data.wimaxAvailable) { | 1027 if (data.wimaxAvailable) { |
1005 if (data.wimaxEnabled) | 1028 if (data.wimaxEnabled) |
1006 loadData_('Wimax', data.wirelessList, data.rememberedList); | 1029 loadData_('Wimax', data.wirelessList, data.rememberedList); |
1007 else | 1030 else |
1008 addEnableNetworkButton_('Wimax', 'enableWimax', 'Cellular'); | 1031 addEnableNetworkButton_('Wimax'); |
1009 } else { | 1032 } else { |
1010 networkList.deleteItem('Wimax'); | 1033 networkList.deleteItem('Wimax'); |
1011 } | 1034 } |
1012 | 1035 |
1013 // Only show VPN control if there is at least one VPN configured. | 1036 // Only show VPN control if there is at least one VPN configured. |
1014 if (data.vpnList.length > 0) | 1037 if (data.vpnList.length > 0) |
1015 loadData_('VPN', data.vpnList, data.rememberedList); | 1038 loadData_('VPN', data.vpnList, data.rememberedList); |
1016 else | 1039 else |
1017 networkList.deleteItem('VPN'); | 1040 networkList.deleteItem('VPN'); |
1018 networkList.endBatchUpdates(); | 1041 networkList.endBatchUpdates(); |
1019 }; | 1042 }; |
1020 | 1043 |
1021 /** | 1044 /** |
1022 * Replaces a network menu with a button for reenabling the type of network. | 1045 * Replaces a network menu with a button for enabling the network type. |
1023 * @param {string} name The type of network (WiFi, Cellular or Wimax). | 1046 * @param {string} type The type of network (WiFi, Cellular or Wimax). |
1024 * @param {string} command The command for reenabling the network. | |
1025 * @param {string} icon Type of icon (WiFi or Cellular). | |
1026 * @private | 1047 * @private |
1027 */ | 1048 */ |
1028 function addEnableNetworkButton_(type, command, icon) { | 1049 function addEnableNetworkButton_(type) { |
1029 var subtitle = loadTimeData.getString('networkDisabled'); | 1050 var subtitle = loadTimeData.getString('networkDisabled'); |
| 1051 var icon = (type == 'Wimax') ? 'Cellular' : type; |
1030 var enableNetwork = function() { | 1052 var enableNetwork = function() { |
1031 if (type == 'WiFi') | 1053 if (type == 'WiFi') |
1032 sendChromeMetricsAction('Options_NetworkWifiToggle'); | 1054 sendChromeMetricsAction('Options_NetworkWifiToggle'); |
1033 chrome.send(command); | 1055 if (type == 'Cellular') { |
| 1056 if (cellularSimLockType_) { |
| 1057 chrome.send('simOperation', ['unlock']); |
| 1058 return; |
| 1059 } else if (cellularEnabled_ && cellularSimAbsent_) { |
| 1060 chrome.send('simOperation', ['configure']); |
| 1061 return; |
| 1062 } |
| 1063 } |
| 1064 // TODO(stevenjb): chrome.networkingPrivate.enableNetworkType |
| 1065 chrome.send('enableNetworkType', [type]); |
1034 }; | 1066 }; |
1035 var networkList = $('network-list'); | 1067 $('network-list').update({key: type, |
1036 networkList.update({key: type, | 1068 subtitle: subtitle, |
1037 subtitle: subtitle, | 1069 iconType: icon, |
1038 iconType: icon, | 1070 command: enableNetwork}); |
1039 command: enableNetwork}); | |
1040 } | 1071 } |
1041 | 1072 |
1042 /** | 1073 /** |
1043 * Element for indicating a policy managed network. | 1074 * Element for indicating a policy managed network. |
1044 * @constructor | 1075 * @constructor |
1045 * @extends {options.ControlledSettingIndicator} | 1076 * @extends {options.ControlledSettingIndicator} |
1046 */ | 1077 */ |
1047 function ManagedNetworkIndicator() { | 1078 function ManagedNetworkIndicator() { |
1048 var el = cr.doc.createElement('span'); | 1079 var el = cr.doc.createElement('span'); |
1049 el.__proto__ = ManagedNetworkIndicator.prototype; | 1080 el.__proto__ = ManagedNetworkIndicator.prototype; |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1172 /** | 1203 /** |
1173 * Whether the Network list is disabled. Only used for display purpose. | 1204 * Whether the Network list is disabled. Only used for display purpose. |
1174 */ | 1205 */ |
1175 cr.defineProperty(NetworkList, 'disabled', cr.PropertyKind.BOOL_ATTR); | 1206 cr.defineProperty(NetworkList, 'disabled', cr.PropertyKind.BOOL_ATTR); |
1176 | 1207 |
1177 // Export | 1208 // Export |
1178 return { | 1209 return { |
1179 NetworkList: NetworkList | 1210 NetworkList: NetworkList |
1180 }; | 1211 }; |
1181 }); | 1212 }); |
OLD | NEW |