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 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
110 function NetworkListItem(data) { | 110 function NetworkListItem(data) { |
111 var el = cr.doc.createElement('li'); | 111 var el = cr.doc.createElement('li'); |
112 el.data_ = {}; | 112 el.data_ = {}; |
113 for (var key in data) | 113 for (var key in data) |
114 el.data_[key] = data[key]; | 114 el.data_[key] = data[key]; |
115 NetworkListItem.decorate(el); | 115 NetworkListItem.decorate(el); |
116 return el; | 116 return el; |
117 } | 117 } |
118 | 118 |
119 /** | 119 /** |
| 120 * @param {string} action An action to send to coreOptionsUserMetricsAction. |
| 121 */ |
| 122 function sendChromeMetricsAction(action) { |
| 123 chrome.send('coreOptionsUserMetricsAction', [action]); |
| 124 } |
| 125 |
| 126 /** |
120 * Decorate an element as a NetworkListItem. | 127 * Decorate an element as a NetworkListItem. |
121 * @param {!Element} el The element to decorate. | 128 * @param {!Element} el The element to decorate. |
122 */ | 129 */ |
123 NetworkListItem.decorate = function(el) { | 130 NetworkListItem.decorate = function(el) { |
124 el.__proto__ = NetworkListItem.prototype; | 131 el.__proto__ = NetworkListItem.prototype; |
125 el.decorate(); | 132 el.decorate(); |
126 }; | 133 }; |
127 | 134 |
128 NetworkListItem.prototype = { | 135 NetworkListItem.prototype = { |
129 __proto__: ListItem.prototype, | 136 __proto__: ListItem.prototype, |
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
435 * @return {!Element} The newly created menu. | 442 * @return {!Element} The newly created menu. |
436 */ | 443 */ |
437 createMenu: function() { | 444 createMenu: function() { |
438 var menu = this.ownerDocument.createElement('div'); | 445 var menu = this.ownerDocument.createElement('div'); |
439 menu.id = this.getMenuName(); | 446 menu.id = this.getMenuName(); |
440 menu.className = 'network-menu'; | 447 menu.className = 'network-menu'; |
441 menu.hidden = true; | 448 menu.hidden = true; |
442 Menu.decorate(menu); | 449 Menu.decorate(menu); |
443 var addendum = []; | 450 var addendum = []; |
444 if (this.data_.key == 'WiFi') { | 451 if (this.data_.key == 'WiFi') { |
445 addendum.push({label: loadTimeData.getString('joinOtherNetwork'), | 452 addendum.push({ |
446 command: 'add', | 453 label: loadTimeData.getString('joinOtherNetwork'), |
447 data: {Type: 'WiFi', servicePath: ''}}); | 454 command: createAddConnectionCallback_('WiFi'), |
| 455 data: {} |
| 456 }); |
448 } else if (this.data_.key == 'Cellular') { | 457 } else if (this.data_.key == 'Cellular') { |
449 if (cellularEnabled_ && cellularSupportsScan_) { | 458 if (cellularEnabled_ && cellularSupportsScan_) { |
450 entry = { | 459 addendum.push({ |
451 label: loadTimeData.getString('otherCellularNetworks'), | 460 label: loadTimeData.getString('otherCellularNetworks'), |
452 command: createAddConnectionCallback_('Cellular'), | 461 command: createAddConnectionCallback_('Cellular'), |
453 addClass: ['other-cellulars'], | 462 addClass: ['other-cellulars'], |
454 data: {} | 463 data: {} |
455 }; | 464 }); |
456 addendum.push(entry); | |
457 } | 465 } |
458 | 466 |
459 var label = enableDataRoaming_ ? 'disableDataRoaming' : | 467 var label = enableDataRoaming_ ? 'disableDataRoaming' : |
460 'enableDataRoaming'; | 468 'enableDataRoaming'; |
461 var disabled = !loadTimeData.getValue('loggedInAsOwner'); | 469 var disabled = !loadTimeData.getValue('loggedInAsOwner'); |
462 var entry = {label: loadTimeData.getString(label), | 470 var entry = {label: loadTimeData.getString(label), |
463 data: {}}; | 471 data: {}}; |
464 if (disabled) { | 472 if (disabled) { |
465 entry.command = null; | 473 entry.command = null; |
466 entry.tooltip = | 474 entry.tooltip = |
(...skipping 10 matching lines...) Expand all Loading... |
477 } | 485 } |
478 addendum.push(entry); | 486 addendum.push(entry); |
479 } | 487 } |
480 var list = this.data.rememberedNetworks; | 488 var list = this.data.rememberedNetworks; |
481 if (list && list.length > 0) { | 489 if (list && list.length > 0) { |
482 var callback = function(list) { | 490 var callback = function(list) { |
483 $('remembered-network-list').clear(); | 491 $('remembered-network-list').clear(); |
484 var dialog = options.PreferredNetworks.getInstance(); | 492 var dialog = options.PreferredNetworks.getInstance(); |
485 PageManager.showPageByName('preferredNetworksPage', false); | 493 PageManager.showPageByName('preferredNetworksPage', false); |
486 dialog.update(list); | 494 dialog.update(list); |
487 chrome.send('coreOptionsUserMetricsAction', | 495 sendChromeMetricsAction('Options_NetworkShowPreferred'); |
488 ['Options_NetworkShowPreferred']); | |
489 }; | 496 }; |
490 addendum.push({label: loadTimeData.getString('preferredNetworks'), | 497 addendum.push({label: loadTimeData.getString('preferredNetworks'), |
491 command: callback, | 498 command: callback, |
492 data: list}); | 499 data: list}); |
493 } | 500 } |
494 | 501 |
495 var networkGroup = this.ownerDocument.createElement('div'); | 502 var networkGroup = this.ownerDocument.createElement('div'); |
496 networkGroup.className = 'network-menu-group'; | 503 networkGroup.className = 'network-menu-group'; |
497 list = this.data.networkList; | 504 list = this.data.networkList; |
498 var empty = !list || list.length == 0; | 505 var empty = !list || list.length == 0; |
499 if (list) { | 506 if (list) { |
500 for (var i = 0; i < list.length; i++) { | 507 for (var i = 0; i < list.length; i++) { |
501 var data = list[i]; | 508 var data = list[i]; |
502 this.createNetworkOptionsCallback_(networkGroup, data); | 509 this.createNetworkOptionsCallback_(networkGroup, data); |
503 if (data.ConnectionState == 'Connected') { | 510 if (data.ConnectionState == 'Connected') { |
504 if (data.Type == 'VPN') { | 511 if (data.Type == 'VPN') { |
| 512 var disconnectCallback = function() { |
| 513 sendChromeMetricsAction('Options_NetworkDisconnectVPN'); |
| 514 chrome.send('networkCommand', |
| 515 ['VPN', data.servicePath, 'disconnect']); |
| 516 }; |
505 // Add separator | 517 // Add separator |
506 addendum.push({}); | 518 addendum.push({}); |
507 var i18nKey = 'disconnectNetwork'; | 519 addendum.push({label: loadTimeData.getString('disconnectNetwork'), |
508 addendum.push({label: loadTimeData.getString(i18nKey), | 520 command: disconnectCallback, |
509 command: 'disconnect', | |
510 data: data}); | 521 data: data}); |
511 } | 522 } |
512 } | 523 } |
513 } | 524 } |
514 } | 525 } |
515 if (this.data_.key == 'WiFi' || this.data_.key == 'Wimax' || | 526 if (this.data_.key == 'WiFi' || this.data_.key == 'Wimax' || |
516 this.data_.key == 'Cellular') { | 527 this.data_.key == 'Cellular') { |
517 addendum.push({}); | 528 addendum.push({}); |
518 if (this.data_.key == 'WiFi') { | 529 if (this.data_.key == 'WiFi') { |
519 addendum.push({label: loadTimeData.getString('turnOffWifi'), | 530 addendum.push({label: loadTimeData.getString('turnOffWifi'), |
520 command: function() { | 531 command: function() { |
| 532 sendChromeMetricsAction('Options_NetworkWifiToggle'); |
521 chrome.send('disableWifi'); | 533 chrome.send('disableWifi'); |
522 }, | 534 }, |
523 data: {}}); | 535 data: {}}); |
524 } else if (this.data_.key == 'Wimax') { | 536 } else if (this.data_.key == 'Wimax') { |
525 addendum.push({label: loadTimeData.getString('turnOffWimax'), | 537 addendum.push({label: loadTimeData.getString('turnOffWimax'), |
526 command: function() { | 538 command: function() { |
527 chrome.send('disableWimax'); | 539 chrome.send('disableWimax'); |
528 }, | 540 }, |
529 data: {}}); | 541 data: {}}); |
530 } else if (this.data_.key == 'Cellular') { | 542 } else if (this.data_.key == 'Cellular') { |
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
716 | 728 |
717 var buttonLabel = menu.ownerDocument.createElement('span'); | 729 var buttonLabel = menu.ownerDocument.createElement('span'); |
718 buttonLabel.className = 'network-menu-item-label'; | 730 buttonLabel.className = 'network-menu-item-label'; |
719 buttonLabel.textContent = label; | 731 buttonLabel.textContent = label; |
720 button.appendChild(buttonLabel); | 732 button.appendChild(buttonLabel); |
721 var callback = null; | 733 var callback = null; |
722 if (typeof command == 'string') { | 734 if (typeof command == 'string') { |
723 var type = data.Type; | 735 var type = data.Type; |
724 var path = data.servicePath; | 736 var path = data.servicePath; |
725 callback = function() { | 737 callback = function() { |
726 chrome.send('networkCommand', | 738 chrome.send('networkCommand', [type, path, command]); |
727 [type, path, command]); | |
728 closeMenu_(); | 739 closeMenu_(); |
729 }; | 740 }; |
730 } else if (command != null) { | 741 } else if (command != null) { |
731 if (data) { | 742 if (data) { |
732 callback = function() { | 743 callback = function() { |
733 (/** @type {Function} */(command))(data); | 744 (/** @type {Function} */(command))(data); |
734 closeMenu_(); | 745 closeMenu_(); |
735 }; | 746 }; |
736 } else { | 747 } else { |
737 callback = function() { | 748 callback = function() { |
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1002 networkList.endBatchUpdates(); | 1013 networkList.endBatchUpdates(); |
1003 }; | 1014 }; |
1004 | 1015 |
1005 /** | 1016 /** |
1006 * Replaces a network menu with a button for reenabling the type of network. | 1017 * Replaces a network menu with a button for reenabling the type of network. |
1007 * @param {string} name The type of network (WiFi, Cellular or Wimax). | 1018 * @param {string} name The type of network (WiFi, Cellular or Wimax). |
1008 * @param {string} command The command for reenabling the network. | 1019 * @param {string} command The command for reenabling the network. |
1009 * @param {string} icon Type of icon (WiFi or Cellular). | 1020 * @param {string} icon Type of icon (WiFi or Cellular). |
1010 * @private | 1021 * @private |
1011 */ | 1022 */ |
1012 function addEnableNetworkButton_(name, command, icon) { | 1023 function addEnableNetworkButton_(type, command, icon) { |
1013 var subtitle = loadTimeData.getString('networkDisabled'); | 1024 var subtitle = loadTimeData.getString('networkDisabled'); |
1014 var enableNetwork = function() { | 1025 var enableNetwork = function() { |
| 1026 if (type == 'WiFi') |
| 1027 sendChromeMetricsAction('Options_NetworkWifiToggle'); |
1015 chrome.send(command); | 1028 chrome.send(command); |
1016 }; | 1029 }; |
1017 var networkList = $('network-list'); | 1030 var networkList = $('network-list'); |
1018 networkList.update({key: name, | 1031 networkList.update({key: type, |
1019 subtitle: subtitle, | 1032 subtitle: subtitle, |
1020 iconType: icon, | 1033 iconType: icon, |
1021 command: enableNetwork}); | 1034 command: enableNetwork}); |
1022 } | 1035 } |
1023 | 1036 |
1024 /** | 1037 /** |
1025 * Element for indicating a policy managed network. | 1038 * Element for indicating a policy managed network. |
1026 * @constructor | 1039 * @constructor |
1027 * @extends {options.ControlledSettingIndicator} | 1040 * @extends {options.ControlledSettingIndicator} |
1028 */ | 1041 */ |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1136 } | 1149 } |
1137 | 1150 |
1138 /** | 1151 /** |
1139 * Create a callback function that adds a new connection of the given type. | 1152 * Create a callback function that adds a new connection of the given type. |
1140 * @param {string} type An ONC network type | 1153 * @param {string} type An ONC network type |
1141 * @return {function()} The created callback. | 1154 * @return {function()} The created callback. |
1142 * @private | 1155 * @private |
1143 */ | 1156 */ |
1144 function createAddConnectionCallback_(type) { | 1157 function createAddConnectionCallback_(type) { |
1145 return function() { | 1158 return function() { |
| 1159 if (type == 'WiFi') |
| 1160 sendChromeMetricsAction('Options_NetworkJoinOtherWifi'); |
| 1161 else if (type == 'VPN') |
| 1162 sendChromeMetricsAction('Options_NetworkJoinOtherVPN'); |
1146 chrome.send('networkCommand', [type, '', 'add']); | 1163 chrome.send('networkCommand', [type, '', 'add']); |
1147 }; | 1164 }; |
1148 } | 1165 } |
1149 | 1166 |
1150 /** | 1167 /** |
1151 * Whether the Network list is disabled. Only used for display purpose. | 1168 * Whether the Network list is disabled. Only used for display purpose. |
1152 * @type {boolean} | 1169 * @type {boolean} |
1153 */ | 1170 */ |
1154 cr.defineProperty(NetworkList, 'disabled', cr.PropertyKind.BOOL_ATTR); | 1171 cr.defineProperty(NetworkList, 'disabled', cr.PropertyKind.BOOL_ATTR); |
1155 | 1172 |
1156 // Export | 1173 // Export |
1157 return { | 1174 return { |
1158 NetworkList: NetworkList | 1175 NetworkList: NetworkList |
1159 }; | 1176 }; |
1160 }); | 1177 }); |
OLD | NEW |