Commit 0bd565a3 authored by stevenjb's avatar stevenjb Committed by Commit bot

Move network settings metrics to JS

BUG=279351

Review URL: https://codereview.chromium.org/570743002

Cr-Commit-Position: refs/heads/master@{#295001}
parent 00319744
...@@ -93,15 +93,48 @@ cr.define('options.internet', function() { ...@@ -93,15 +93,48 @@ cr.define('options.internet', function() {
return value ? String(value) : ''; return value ? String(value) : '';
} }
/**
* @param {string} action An action to send to coreOptionsUserMetricsAction.
*/
function sendChromeMetricsAction(action) {
chrome.send('coreOptionsUserMetricsAction', [action]);
}
/** /**
* Sends the 'checked' state of a control to chrome for a network. * Sends the 'checked' state of a control to chrome for a network.
* @param {string} path The service path of the network. * @param {string} path The service path of the network.
* @param {string} message The message to send to chrome. * @param {string} message The message to send to chrome.
* @param {HTMLInputElement} checkbox The checkbox storing the value to send. * @param {string} checkboxId The id of the checkbox with the value to send.
* @param {string=} opt_action Optional action to record.
*/ */
function sendCheckedIfEnabled(path, message, checkbox) { function sendCheckedIfEnabled(path, message, checkboxId, opt_action) {
if (!checkbox.hidden && !checkbox.disabled) var checkbox = assertInstanceof($(checkboxId), HTMLInputElement);
if (!checkbox.hidden && !checkbox.disabled) {
chrome.send(message, [path, checkbox.checked ? 'true' : 'false']); chrome.send(message, [path, checkbox.checked ? 'true' : 'false']);
if (opt_action)
sendChromeMetricsAction(opt_action);
}
}
/**
* Send metrics to Chrome when the detailed page is opened.
* @param {string} type The ONC type of the network being shown.
* @param {string} state The ONC network state.
*/
function sendShowDetailsMetrics(type, state) {
if (type == 'WiFi') {
sendChromeMetricsAction('Options_NetworkShowDetailsWifi');
if (state != 'NotConnected')
sendChromeMetricsAction('Options_NetworkShowDetailsWifiConnected');
} else if (type == 'Cellular') {
sendChromeMetricsAction('Options_NetworkShowDetailsCellular');
if (state != 'NotConnected')
sendChromeMetricsAction('Options_NetworkShowDetailsCellularConnected');
} else if (type == 'VPN') {
sendChromeMetricsAction('Options_NetworkShowDetailsVPN');
if (state != 'NotConnected')
sendChromeMetricsAction('Options_NetworkShowDetailsVPNConnected');
}
} }
/** /**
...@@ -546,8 +579,7 @@ cr.define('options.internet', function() { ...@@ -546,8 +579,7 @@ cr.define('options.internet', function() {
!$('proxy-use-pac-url').checked; !$('proxy-use-pac-url').checked;
$('auto-proxy-parms').hidden = !$('auto-proxy').checked; $('auto-proxy-parms').hidden = !$('auto-proxy').checked;
$('manual-proxy-parms').hidden = !$('manual-proxy').checked; $('manual-proxy-parms').hidden = !$('manual-proxy').checked;
chrome.send('coreOptionsUserMetricsAction', sendChromeMetricsAction('Options_NetworkManualProxy_Disable');
['Options_NetworkManualProxy_Disable']);
}, },
/** /**
...@@ -577,8 +609,7 @@ cr.define('options.internet', function() { ...@@ -577,8 +609,7 @@ cr.define('options.internet', function() {
$('proxy-pac-url').disabled = true; $('proxy-pac-url').disabled = true;
$('auto-proxy-parms').hidden = !$('auto-proxy').checked; $('auto-proxy-parms').hidden = !$('auto-proxy').checked;
$('manual-proxy-parms').hidden = !$('manual-proxy').checked; $('manual-proxy-parms').hidden = !$('manual-proxy').checked;
chrome.send('coreOptionsUserMetricsAction', sendChromeMetricsAction('Options_NetworkManualProxy_Enable');
['Options_NetworkManualProxy_Enable']);
}, },
/** /**
...@@ -947,8 +978,7 @@ cr.define('options.internet', function() { ...@@ -947,8 +978,7 @@ cr.define('options.internet', function() {
updateHidden('#details-internet-page .action-area', true); updateHidden('#details-internet-page .action-area', true);
detailsPage.updateControls(); detailsPage.updateControls();
detailsPage.visible = true; detailsPage.visible = true;
chrome.send('coreOptionsUserMetricsAction', sendChromeMetricsAction('Options_NetworkShowProxyTab');
['Options_NetworkShowProxyTab']);
}; };
/** /**
...@@ -997,6 +1027,10 @@ cr.define('options.internet', function() { ...@@ -997,6 +1027,10 @@ cr.define('options.internet', function() {
DetailsInternetPage.loginFromDetails = function() { DetailsInternetPage.loginFromDetails = function() {
var detailsPage = DetailsInternetPage.getInstance(); var detailsPage = DetailsInternetPage.getInstance();
if (detailsPage.type_ == 'WiFi')
sendChromeMetricsAction('Options_NetworkConnectToWifi');
else if (detailsPage.type_ == 'VPN')
sendChromeMetricsAction('Options_NetworkConnectToVPN');
chrome.send('networkCommand', chrome.send('networkCommand',
[detailsPage.type_, detailsPage.servicePath_, 'connect']); [detailsPage.type_, detailsPage.servicePath_, 'connect']);
PageManager.closeOverlay(); PageManager.closeOverlay();
...@@ -1004,6 +1038,10 @@ cr.define('options.internet', function() { ...@@ -1004,6 +1038,10 @@ cr.define('options.internet', function() {
DetailsInternetPage.disconnectNetwork = function() { DetailsInternetPage.disconnectNetwork = function() {
var detailsPage = DetailsInternetPage.getInstance(); var detailsPage = DetailsInternetPage.getInstance();
if (detailsPage.type_ == 'WiFi')
sendChromeMetricsAction('Options_NetworkDisconnectWifi');
else if (detailsPage.type_ == 'VPN')
sendChromeMetricsAction('Options_NetworkDisconnectVPN');
chrome.send('networkCommand', chrome.send('networkCommand',
[detailsPage.type_, detailsPage.servicePath_, 'disconnect']); [detailsPage.type_, detailsPage.servicePath_, 'disconnect']);
PageManager.closeOverlay(); PageManager.closeOverlay();
...@@ -1030,23 +1068,31 @@ cr.define('options.internet', function() { ...@@ -1030,23 +1068,31 @@ cr.define('options.internet', function() {
var type = detailsPage.type_; var type = detailsPage.type_;
var servicePath = detailsPage.servicePath_; var servicePath = detailsPage.servicePath_;
if (type == 'WiFi') { if (type == 'WiFi') {
sendCheckedIfEnabled(servicePath, 'setPreferNetwork', sendCheckedIfEnabled(servicePath,
assertInstanceof($('prefer-network-wifi'), HTMLInputElement)); 'setPreferNetwork',
sendCheckedIfEnabled(servicePath, 'setAutoConnect', 'prefer-network-wifi',
assertInstanceof($('auto-connect-network-wifi'), HTMLInputElement)); 'Options_NetworkSetPrefer');
sendCheckedIfEnabled(servicePath,
'setAutoConnect',
'auto-connect-network-wifi',
'Options_NetworkAutoConnect');
} else if (type == 'Wimax') { } else if (type == 'Wimax') {
sendCheckedIfEnabled(servicePath, 'setAutoConnect', sendCheckedIfEnabled(servicePath,
assertInstanceof($('auto-connect-network-wimax'), HTMLInputElement)); 'setAutoConnect',
'auto-connect-network-wimax',
'Options_NetworkAutoConnect');
} else if (type == 'Cellular') { } else if (type == 'Cellular') {
sendCheckedIfEnabled(servicePath, 'setAutoConnect', sendCheckedIfEnabled(servicePath,
assertInstanceof($('auto-connect-network-cellular'), 'setAutoConnect',
HTMLInputElement)); 'auto-connect-network-cellular',
'Options_NetworkAutoConnect');
} else if (type == 'VPN') { } else if (type == 'VPN') {
chrome.send('setServerHostname', chrome.send('setServerHostname',
[servicePath, [servicePath, $('inet-server-hostname').value]);
$('inet-server-hostname').value]); sendCheckedIfEnabled(servicePath,
sendCheckedIfEnabled(servicePath, 'setAutoConnect', 'setAutoConnect',
assertInstanceof($('auto-connect-network-vpn'), HTMLInputElement)); 'auto-connect-network-vpn',
'Options_NetworkAutoConnect');
} }
var nameServerTypes = ['automatic', 'google', 'user']; var nameServerTypes = ['automatic', 'google', 'user'];
...@@ -1141,6 +1187,8 @@ cr.define('options.internet', function() { ...@@ -1141,6 +1187,8 @@ cr.define('options.internet', function() {
detailsPage.type_ = type; detailsPage.type_ = type;
detailsPage.servicePath_ = data.servicePath; detailsPage.servicePath_ = data.servicePath;
sendShowDetailsMetrics(type, onc.getActiveValue('ConnectionState'));
detailsPage.populateHeader_(); detailsPage.populateHeader_();
detailsPage.updateConnectionButtonVisibilty_(); detailsPage.updateConnectionButtonVisibilty_();
detailsPage.updateDetails_(data); detailsPage.updateDetails_(data);
......
...@@ -116,6 +116,13 @@ cr.define('options.network', function() { ...@@ -116,6 +116,13 @@ cr.define('options.network', function() {
return el; return el;
} }
/**
* @param {string} action An action to send to coreOptionsUserMetricsAction.
*/
function sendChromeMetricsAction(action) {
chrome.send('coreOptionsUserMetricsAction', [action]);
}
/** /**
* Decorate an element as a NetworkListItem. * Decorate an element as a NetworkListItem.
* @param {!Element} el The element to decorate. * @param {!Element} el The element to decorate.
...@@ -442,18 +449,19 @@ cr.define('options.network', function() { ...@@ -442,18 +449,19 @@ cr.define('options.network', function() {
Menu.decorate(menu); Menu.decorate(menu);
var addendum = []; var addendum = [];
if (this.data_.key == 'WiFi') { if (this.data_.key == 'WiFi') {
addendum.push({label: loadTimeData.getString('joinOtherNetwork'), addendum.push({
command: 'add', label: loadTimeData.getString('joinOtherNetwork'),
data: {Type: 'WiFi', servicePath: ''}}); command: createAddConnectionCallback_('WiFi'),
data: {}
});
} else if (this.data_.key == 'Cellular') { } else if (this.data_.key == 'Cellular') {
if (cellularEnabled_ && cellularSupportsScan_) { if (cellularEnabled_ && cellularSupportsScan_) {
entry = { addendum.push({
label: loadTimeData.getString('otherCellularNetworks'), label: loadTimeData.getString('otherCellularNetworks'),
command: createAddConnectionCallback_('Cellular'), command: createAddConnectionCallback_('Cellular'),
addClass: ['other-cellulars'], addClass: ['other-cellulars'],
data: {} data: {}
}; });
addendum.push(entry);
} }
var label = enableDataRoaming_ ? 'disableDataRoaming' : var label = enableDataRoaming_ ? 'disableDataRoaming' :
...@@ -484,8 +492,7 @@ cr.define('options.network', function() { ...@@ -484,8 +492,7 @@ cr.define('options.network', function() {
var dialog = options.PreferredNetworks.getInstance(); var dialog = options.PreferredNetworks.getInstance();
PageManager.showPageByName('preferredNetworksPage', false); PageManager.showPageByName('preferredNetworksPage', false);
dialog.update(list); dialog.update(list);
chrome.send('coreOptionsUserMetricsAction', sendChromeMetricsAction('Options_NetworkShowPreferred');
['Options_NetworkShowPreferred']);
}; };
addendum.push({label: loadTimeData.getString('preferredNetworks'), addendum.push({label: loadTimeData.getString('preferredNetworks'),
command: callback, command: callback,
...@@ -502,11 +509,15 @@ cr.define('options.network', function() { ...@@ -502,11 +509,15 @@ cr.define('options.network', function() {
this.createNetworkOptionsCallback_(networkGroup, data); this.createNetworkOptionsCallback_(networkGroup, data);
if (data.ConnectionState == 'Connected') { if (data.ConnectionState == 'Connected') {
if (data.Type == 'VPN') { if (data.Type == 'VPN') {
var disconnectCallback = function() {
sendChromeMetricsAction('Options_NetworkDisconnectVPN');
chrome.send('networkCommand',
['VPN', data.servicePath, 'disconnect']);
};
// Add separator // Add separator
addendum.push({}); addendum.push({});
var i18nKey = 'disconnectNetwork'; addendum.push({label: loadTimeData.getString('disconnectNetwork'),
addendum.push({label: loadTimeData.getString(i18nKey), command: disconnectCallback,
command: 'disconnect',
data: data}); data: data});
} }
} }
...@@ -518,6 +529,7 @@ cr.define('options.network', function() { ...@@ -518,6 +529,7 @@ cr.define('options.network', function() {
if (this.data_.key == 'WiFi') { if (this.data_.key == 'WiFi') {
addendum.push({label: loadTimeData.getString('turnOffWifi'), addendum.push({label: loadTimeData.getString('turnOffWifi'),
command: function() { command: function() {
sendChromeMetricsAction('Options_NetworkWifiToggle');
chrome.send('disableWifi'); chrome.send('disableWifi');
}, },
data: {}}); data: {}});
...@@ -724,8 +736,7 @@ cr.define('options.network', function() { ...@@ -724,8 +736,7 @@ cr.define('options.network', function() {
var type = data.Type; var type = data.Type;
var path = data.servicePath; var path = data.servicePath;
callback = function() { callback = function() {
chrome.send('networkCommand', chrome.send('networkCommand', [type, path, command]);
[type, path, command]);
closeMenu_(); closeMenu_();
}; };
} else if (command != null) { } else if (command != null) {
...@@ -1014,13 +1025,15 @@ cr.define('options.network', function() { ...@@ -1014,13 +1025,15 @@ cr.define('options.network', function() {
* @param {string} icon Type of icon (WiFi or Cellular). * @param {string} icon Type of icon (WiFi or Cellular).
* @private * @private
*/ */
function addEnableNetworkButton_(name, command, icon) { function addEnableNetworkButton_(type, command, icon) {
var subtitle = loadTimeData.getString('networkDisabled'); var subtitle = loadTimeData.getString('networkDisabled');
var enableNetwork = function() { var enableNetwork = function() {
if (type == 'WiFi')
sendChromeMetricsAction('Options_NetworkWifiToggle');
chrome.send(command); chrome.send(command);
}; };
var networkList = $('network-list'); var networkList = $('network-list');
networkList.update({key: name, networkList.update({key: type,
subtitle: subtitle, subtitle: subtitle,
iconType: icon, iconType: icon,
command: enableNetwork}); command: enableNetwork});
...@@ -1148,6 +1161,10 @@ cr.define('options.network', function() { ...@@ -1148,6 +1161,10 @@ cr.define('options.network', function() {
*/ */
function createAddConnectionCallback_(type) { function createAddConnectionCallback_(type) {
return function() { return function() {
if (type == 'WiFi')
sendChromeMetricsAction('Options_NetworkJoinOtherWifi');
else if (type == 'VPN')
sendChromeMetricsAction('Options_NetworkJoinOtherVPN');
chrome.send('networkCommand', [type, '', 'add']); chrome.send('networkCommand', [type, '', 'add']);
}; };
} }
......
...@@ -49,7 +49,6 @@ ...@@ -49,7 +49,6 @@
#include "chromeos/network/onc/onc_translator.h" #include "chromeos/network/onc/onc_translator.h"
#include "chromeos/network/onc/onc_utils.h" #include "chromeos/network/onc/onc_utils.h"
#include "components/onc/onc_constants.h" #include "components/onc/onc_constants.h"
#include "content/public/browser/user_metrics.h"
#include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents.h"
#include "content/public/browser/web_ui.h" #include "content/public/browser/web_ui.h"
#include "grit/ui_chromeos_resources.h" #include "grit/ui_chromeos_resources.h"
...@@ -406,14 +405,12 @@ void InternetOptionsHandler::RegisterMessages() { ...@@ -406,14 +405,12 @@ void InternetOptionsHandler::RegisterMessages() {
} }
void InternetOptionsHandler::EnableWifiCallback(const base::ListValue* args) { void InternetOptionsHandler::EnableWifiCallback(const base::ListValue* args) {
content::RecordAction(base::UserMetricsAction("Options_NetworkWifiToggle"));
NetworkHandler::Get()->network_state_handler()->SetTechnologyEnabled( NetworkHandler::Get()->network_state_handler()->SetTechnologyEnabled(
NetworkTypePattern::WiFi(), true, NetworkTypePattern::WiFi(), true,
base::Bind(&ShillError, "EnableWifiCallback")); base::Bind(&ShillError, "EnableWifiCallback"));
} }
void InternetOptionsHandler::DisableWifiCallback(const base::ListValue* args) { void InternetOptionsHandler::DisableWifiCallback(const base::ListValue* args) {
content::RecordAction(base::UserMetricsAction("Options_NetworkWifiToggle"));
NetworkHandler::Get()->network_state_handler()->SetTechnologyEnabled( NetworkHandler::Get()->network_state_handler()->SetTechnologyEnabled(
NetworkTypePattern::WiFi(), false, NetworkTypePattern::WiFi(), false,
base::Bind(&ShillError, "DisableWifiCallback")); base::Bind(&ShillError, "DisableWifiCallback"));
...@@ -712,7 +709,6 @@ void InternetOptionsHandler::SetPreferNetworkCallback( ...@@ -712,7 +709,6 @@ void InternetOptionsHandler::SetPreferNetworkCallback(
NOTREACHED(); NOTREACHED();
return; return;
} }
content::RecordAction(base::UserMetricsAction("Options_NetworkSetPrefer"));
int priority = (prefer_network_str == kTagTrue) ? kPreferredPriority : 0; int priority = (prefer_network_str == kTagTrue) ? kPreferredPriority : 0;
SetNetworkProperty(service_path, SetNetworkProperty(service_path,
shill::kPriorityProperty, shill::kPriorityProperty,
...@@ -728,7 +724,6 @@ void InternetOptionsHandler::SetAutoConnectCallback( ...@@ -728,7 +724,6 @@ void InternetOptionsHandler::SetAutoConnectCallback(
NOTREACHED(); NOTREACHED();
return; return;
} }
content::RecordAction(base::UserMetricsAction("Options_NetworkAutoConnect"));
bool auto_connect = auto_connect_str == kTagTrue; bool auto_connect = auto_connect_str == kTagTrue;
SetNetworkProperty(service_path, SetNetworkProperty(service_path,
shill::kAutoConnectProperty, shill::kAutoConnectProperty,
...@@ -850,29 +845,6 @@ void InternetOptionsHandler::PopulateDictionaryDetailsCallback( ...@@ -850,29 +845,6 @@ void InternetOptionsHandler::PopulateDictionaryDetailsCallback(
scoped_ptr<base::DictionaryValue> dictionary = scoped_ptr<base::DictionaryValue> dictionary =
PopulateConnectionDetails(network, onc_properties); PopulateConnectionDetails(network, onc_properties);
if (network->Matches(NetworkTypePattern::WiFi())) {
content::RecordAction(
base::UserMetricsAction("Options_NetworkShowDetailsWifi"));
if (network->IsConnectedState()) {
content::RecordAction(
base::UserMetricsAction("Options_NetworkShowDetailsWifiConnected"));
}
} else if (network->Matches(NetworkTypePattern::VPN())) {
content::RecordAction(
base::UserMetricsAction("Options_NetworkShowDetailsVPN"));
if (network->IsConnectedState()) {
content::RecordAction(
base::UserMetricsAction("Options_NetworkShowDetailsVPNConnected"));
}
} else if (network->Matches(NetworkTypePattern::Cellular())) {
content::RecordAction(
base::UserMetricsAction("Options_NetworkShowDetailsCellular"));
if (network->IsConnectedState()) {
content::RecordAction(base::UserMetricsAction(
"Options_NetworkShowDetailsCellularConnected"));
}
}
// Show details dialog // Show details dialog
web_ui()->CallJavascriptFunction(kShowDetailedInfoFunction, *dictionary); web_ui()->CallJavascriptFunction(kShowDetailedInfoFunction, *dictionary);
} }
...@@ -927,22 +899,8 @@ void InternetOptionsHandler::NetworkCommandCallback( ...@@ -927,22 +899,8 @@ void InternetOptionsHandler::NetworkCommandCallback(
weak_factory_.GetWeakPtr()), weak_factory_.GetWeakPtr()),
base::Bind(&ShillError, "NetworkCommand: " + command)); base::Bind(&ShillError, "NetworkCommand: " + command));
} else if (command == kTagConnect) { } else if (command == kTagConnect) {
const NetworkState* network = GetNetworkState(service_path);
if (network && network->type() == shill::kTypeWifi)
content::RecordAction(
base::UserMetricsAction("Options_NetworkConnectToWifi"));
else if (network && network->type() == shill::kTypeVPN)
content::RecordAction(
base::UserMetricsAction("Options_NetworkConnectToVPN"));
ash::network_connect::ConnectToNetwork(service_path, GetNativeWindow()); ash::network_connect::ConnectToNetwork(service_path, GetNativeWindow());
} else if (command == kTagDisconnect) { } else if (command == kTagDisconnect) {
const NetworkState* network = GetNetworkState(service_path);
if (network && network->type() == shill::kTypeWifi)
content::RecordAction(
base::UserMetricsAction("Options_NetworkDisconnectWifi"));
else if (network && network->type() == shill::kTypeVPN)
content::RecordAction(
base::UserMetricsAction("Options_NetworkDisconnectVPN"));
NetworkHandler::Get()->network_connection_handler()->DisconnectNetwork( NetworkHandler::Get()->network_connection_handler()->DisconnectNetwork(
service_path, service_path,
base::Bind(&base::DoNothing), base::Bind(&base::DoNothing),
...@@ -962,12 +920,8 @@ void InternetOptionsHandler::NetworkCommandCallback( ...@@ -962,12 +920,8 @@ void InternetOptionsHandler::NetworkCommandCallback(
void InternetOptionsHandler::AddConnection(const std::string& type) { void InternetOptionsHandler::AddConnection(const std::string& type) {
if (type == shill::kTypeWifi) { if (type == shill::kTypeWifi) {
content::RecordAction(
base::UserMetricsAction("Options_NetworkJoinOtherWifi"));
NetworkConfigView::ShowForType(shill::kTypeWifi, GetNativeWindow()); NetworkConfigView::ShowForType(shill::kTypeWifi, GetNativeWindow());
} else if (type == shill::kTypeVPN) { } else if (type == shill::kTypeVPN) {
content::RecordAction(
base::UserMetricsAction("Options_NetworkJoinOtherVPN"));
NetworkConfigView::ShowForType(shill::kTypeVPN, GetNativeWindow()); NetworkConfigView::ShowForType(shill::kTypeVPN, GetNativeWindow());
} else if (type == shill::kTypeCellular) { } else if (type == shill::kTypeCellular) {
ChooseMobileNetworkDialog::ShowDialog(GetNativeWindow()); ChooseMobileNetworkDialog::ShowDialog(GetNativeWindow());
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment