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