Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(142)

Side by Side Diff: chrome/browser/resources/options/chromeos/network_list.js

Issue 570743002: Move network settings metrics to JS (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@issue_279351_internet_options_10b
Patch Set: Rebase Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
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
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 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698