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() {
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.
* @param {string} path The service path of the network.
* @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) {
if (!checkbox.hidden && !checkbox.disabled)
function sendCheckedIfEnabled(path, message, checkboxId, opt_action) {
var checkbox = assertInstanceof($(checkboxId), HTMLInputElement);
if (!checkbox.hidden && !checkbox.disabled) {
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() {
!$('proxy-use-pac-url').checked;
$('auto-proxy-parms').hidden = !$('auto-proxy').checked;
$('manual-proxy-parms').hidden = !$('manual-proxy').checked;
chrome.send('coreOptionsUserMetricsAction',
['Options_NetworkManualProxy_Disable']);
sendChromeMetricsAction('Options_NetworkManualProxy_Disable');
},
/**
......@@ -577,8 +609,7 @@ cr.define('options.internet', function() {
$('proxy-pac-url').disabled = true;
$('auto-proxy-parms').hidden = !$('auto-proxy').checked;
$('manual-proxy-parms').hidden = !$('manual-proxy').checked;
chrome.send('coreOptionsUserMetricsAction',
['Options_NetworkManualProxy_Enable']);
sendChromeMetricsAction('Options_NetworkManualProxy_Enable');
},
/**
......@@ -947,8 +978,7 @@ cr.define('options.internet', function() {
updateHidden('#details-internet-page .action-area', true);
detailsPage.updateControls();
detailsPage.visible = true;
chrome.send('coreOptionsUserMetricsAction',
['Options_NetworkShowProxyTab']);
sendChromeMetricsAction('Options_NetworkShowProxyTab');
};
/**
......@@ -997,6 +1027,10 @@ cr.define('options.internet', function() {
DetailsInternetPage.loginFromDetails = function() {
var detailsPage = DetailsInternetPage.getInstance();
if (detailsPage.type_ == 'WiFi')
sendChromeMetricsAction('Options_NetworkConnectToWifi');
else if (detailsPage.type_ == 'VPN')
sendChromeMetricsAction('Options_NetworkConnectToVPN');
chrome.send('networkCommand',
[detailsPage.type_, detailsPage.servicePath_, 'connect']);
PageManager.closeOverlay();
......@@ -1004,6 +1038,10 @@ cr.define('options.internet', function() {
DetailsInternetPage.disconnectNetwork = function() {
var detailsPage = DetailsInternetPage.getInstance();
if (detailsPage.type_ == 'WiFi')
sendChromeMetricsAction('Options_NetworkDisconnectWifi');
else if (detailsPage.type_ == 'VPN')
sendChromeMetricsAction('Options_NetworkDisconnectVPN');
chrome.send('networkCommand',
[detailsPage.type_, detailsPage.servicePath_, 'disconnect']);
PageManager.closeOverlay();
......@@ -1030,23 +1068,31 @@ cr.define('options.internet', function() {
var type = detailsPage.type_;
var servicePath = detailsPage.servicePath_;
if (type == 'WiFi') {
sendCheckedIfEnabled(servicePath, 'setPreferNetwork',
assertInstanceof($('prefer-network-wifi'), HTMLInputElement));
sendCheckedIfEnabled(servicePath, 'setAutoConnect',
assertInstanceof($('auto-connect-network-wifi'), HTMLInputElement));
sendCheckedIfEnabled(servicePath,
'setPreferNetwork',
'prefer-network-wifi',
'Options_NetworkSetPrefer');
sendCheckedIfEnabled(servicePath,
'setAutoConnect',
'auto-connect-network-wifi',
'Options_NetworkAutoConnect');
} else if (type == 'Wimax') {
sendCheckedIfEnabled(servicePath, 'setAutoConnect',
assertInstanceof($('auto-connect-network-wimax'), HTMLInputElement));
sendCheckedIfEnabled(servicePath,
'setAutoConnect',
'auto-connect-network-wimax',
'Options_NetworkAutoConnect');
} else if (type == 'Cellular') {
sendCheckedIfEnabled(servicePath, 'setAutoConnect',
assertInstanceof($('auto-connect-network-cellular'),
HTMLInputElement));
sendCheckedIfEnabled(servicePath,
'setAutoConnect',
'auto-connect-network-cellular',
'Options_NetworkAutoConnect');
} else if (type == 'VPN') {
chrome.send('setServerHostname',
[servicePath,
$('inet-server-hostname').value]);
sendCheckedIfEnabled(servicePath, 'setAutoConnect',
assertInstanceof($('auto-connect-network-vpn'), HTMLInputElement));
[servicePath, $('inet-server-hostname').value]);
sendCheckedIfEnabled(servicePath,
'setAutoConnect',
'auto-connect-network-vpn',
'Options_NetworkAutoConnect');
}
var nameServerTypes = ['automatic', 'google', 'user'];
......@@ -1141,6 +1187,8 @@ cr.define('options.internet', function() {
detailsPage.type_ = type;
detailsPage.servicePath_ = data.servicePath;
sendShowDetailsMetrics(type, onc.getActiveValue('ConnectionState'));
detailsPage.populateHeader_();
detailsPage.updateConnectionButtonVisibilty_();
detailsPage.updateDetails_(data);
......
......@@ -116,6 +116,13 @@ cr.define('options.network', function() {
return el;
}
/**
* @param {string} action An action to send to coreOptionsUserMetricsAction.
*/
function sendChromeMetricsAction(action) {
chrome.send('coreOptionsUserMetricsAction', [action]);
}
/**
* Decorate an element as a NetworkListItem.
* @param {!Element} el The element to decorate.
......@@ -442,18 +449,19 @@ cr.define('options.network', function() {
Menu.decorate(menu);
var addendum = [];
if (this.data_.key == 'WiFi') {
addendum.push({label: loadTimeData.getString('joinOtherNetwork'),
command: 'add',
data: {Type: 'WiFi', servicePath: ''}});
addendum.push({
label: loadTimeData.getString('joinOtherNetwork'),
command: createAddConnectionCallback_('WiFi'),
data: {}
});
} else if (this.data_.key == 'Cellular') {
if (cellularEnabled_ && cellularSupportsScan_) {
entry = {
addendum.push({
label: loadTimeData.getString('otherCellularNetworks'),
command: createAddConnectionCallback_('Cellular'),
addClass: ['other-cellulars'],
data: {}
};
addendum.push(entry);
});
}
var label = enableDataRoaming_ ? 'disableDataRoaming' :
......@@ -484,8 +492,7 @@ cr.define('options.network', function() {
var dialog = options.PreferredNetworks.getInstance();
PageManager.showPageByName('preferredNetworksPage', false);
dialog.update(list);
chrome.send('coreOptionsUserMetricsAction',
['Options_NetworkShowPreferred']);
sendChromeMetricsAction('Options_NetworkShowPreferred');
};
addendum.push({label: loadTimeData.getString('preferredNetworks'),
command: callback,
......@@ -502,11 +509,15 @@ cr.define('options.network', function() {
this.createNetworkOptionsCallback_(networkGroup, data);
if (data.ConnectionState == 'Connected') {
if (data.Type == 'VPN') {
var disconnectCallback = function() {
sendChromeMetricsAction('Options_NetworkDisconnectVPN');
chrome.send('networkCommand',
['VPN', data.servicePath, 'disconnect']);
};
// Add separator
addendum.push({});
var i18nKey = 'disconnectNetwork';
addendum.push({label: loadTimeData.getString(i18nKey),
command: 'disconnect',
addendum.push({label: loadTimeData.getString('disconnectNetwork'),
command: disconnectCallback,
data: data});
}
}
......@@ -518,6 +529,7 @@ cr.define('options.network', function() {
if (this.data_.key == 'WiFi') {
addendum.push({label: loadTimeData.getString('turnOffWifi'),
command: function() {
sendChromeMetricsAction('Options_NetworkWifiToggle');
chrome.send('disableWifi');
},
data: {}});
......@@ -724,8 +736,7 @@ cr.define('options.network', function() {
var type = data.Type;
var path = data.servicePath;
callback = function() {
chrome.send('networkCommand',
[type, path, command]);
chrome.send('networkCommand', [type, path, command]);
closeMenu_();
};
} else if (command != null) {
......@@ -1014,13 +1025,15 @@ cr.define('options.network', function() {
* @param {string} icon Type of icon (WiFi or Cellular).
* @private
*/
function addEnableNetworkButton_(name, command, icon) {
function addEnableNetworkButton_(type, command, icon) {
var subtitle = loadTimeData.getString('networkDisabled');
var enableNetwork = function() {
if (type == 'WiFi')
sendChromeMetricsAction('Options_NetworkWifiToggle');
chrome.send(command);
};
var networkList = $('network-list');
networkList.update({key: name,
networkList.update({key: type,
subtitle: subtitle,
iconType: icon,
command: enableNetwork});
......@@ -1148,6 +1161,10 @@ cr.define('options.network', function() {
*/
function createAddConnectionCallback_(type) {
return function() {
if (type == 'WiFi')
sendChromeMetricsAction('Options_NetworkJoinOtherWifi');
else if (type == 'VPN')
sendChromeMetricsAction('Options_NetworkJoinOtherVPN');
chrome.send('networkCommand', [type, '', 'add']);
};
}
......
......@@ -49,7 +49,6 @@
#include "chromeos/network/onc/onc_translator.h"
#include "chromeos/network/onc/onc_utils.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_ui.h"
#include "grit/ui_chromeos_resources.h"
......@@ -406,14 +405,12 @@ void InternetOptionsHandler::RegisterMessages() {
}
void InternetOptionsHandler::EnableWifiCallback(const base::ListValue* args) {
content::RecordAction(base::UserMetricsAction("Options_NetworkWifiToggle"));
NetworkHandler::Get()->network_state_handler()->SetTechnologyEnabled(
NetworkTypePattern::WiFi(), true,
base::Bind(&ShillError, "EnableWifiCallback"));
}
void InternetOptionsHandler::DisableWifiCallback(const base::ListValue* args) {
content::RecordAction(base::UserMetricsAction("Options_NetworkWifiToggle"));
NetworkHandler::Get()->network_state_handler()->SetTechnologyEnabled(
NetworkTypePattern::WiFi(), false,
base::Bind(&ShillError, "DisableWifiCallback"));
......@@ -712,7 +709,6 @@ void InternetOptionsHandler::SetPreferNetworkCallback(
NOTREACHED();
return;
}
content::RecordAction(base::UserMetricsAction("Options_NetworkSetPrefer"));
int priority = (prefer_network_str == kTagTrue) ? kPreferredPriority : 0;
SetNetworkProperty(service_path,
shill::kPriorityProperty,
......@@ -728,7 +724,6 @@ void InternetOptionsHandler::SetAutoConnectCallback(
NOTREACHED();
return;
}
content::RecordAction(base::UserMetricsAction("Options_NetworkAutoConnect"));
bool auto_connect = auto_connect_str == kTagTrue;
SetNetworkProperty(service_path,
shill::kAutoConnectProperty,
......@@ -850,29 +845,6 @@ void InternetOptionsHandler::PopulateDictionaryDetailsCallback(
scoped_ptr<base::DictionaryValue> dictionary =
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
web_ui()->CallJavascriptFunction(kShowDetailedInfoFunction, *dictionary);
}
......@@ -927,22 +899,8 @@ void InternetOptionsHandler::NetworkCommandCallback(
weak_factory_.GetWeakPtr()),
base::Bind(&ShillError, "NetworkCommand: " + command));
} 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());
} 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(
service_path,
base::Bind(&base::DoNothing),
......@@ -962,12 +920,8 @@ void InternetOptionsHandler::NetworkCommandCallback(
void InternetOptionsHandler::AddConnection(const std::string& type) {
if (type == shill::kTypeWifi) {
content::RecordAction(
base::UserMetricsAction("Options_NetworkJoinOtherWifi"));
NetworkConfigView::ShowForType(shill::kTypeWifi, GetNativeWindow());
} else if (type == shill::kTypeVPN) {
content::RecordAction(
base::UserMetricsAction("Options_NetworkJoinOtherVPN"));
NetworkConfigView::ShowForType(shill::kTypeVPN, GetNativeWindow());
} else if (type == shill::kTypeCellular) {
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