Commit 552d7b75 authored by Trent Begin's avatar Trent Begin Committed by Commit Bot

network-health: add signal strength to network health snapshot

This change adds a new field to the network snapshot, signal strength.
It is populated with the signal strength of wireless network devices as
measured from the device. The value ranges from 0 - 100. This value is
also added to the network health summary UI and feedback reports.

Bug: chromium:1128460
Test: checked chrome://network for signal strength
Change-Id: I447d5753b16ca79d9383543bb16a669eb7b80184
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2412216
Commit-Queue: Trent Begin <tbegin@chromium.org>
Reviewed-by: default avatarSteven Bennetts <stevenjb@chromium.org>
Reviewed-by: default avatarDaniel Cheng <dcheng@chromium.org>
Cr-Commit-Position: refs/heads/master@{#809997}
parent 092e7812
......@@ -9,6 +9,7 @@
#include "chromeos/network/network_event_log.h"
#include "chromeos/services/network_config/in_process_instance.h"
#include "chromeos/services/network_config/public/cpp/cros_network_config_util.h"
#include "chromeos/services/network_config/public/mojom/cros_network_config.mojom.h"
#include "chromeos/services/network_health/public/mojom/network_health.mojom.h"
......@@ -69,6 +70,11 @@ mojom::NetworkPtr CreateNetwork(
net->state = ConnectionStateToNetworkState(net_prop->connection_state);
net->name = net_prop->name;
net->guid = net_prop->guid;
if (chromeos::network_config::NetworkTypeMatchesType(
net_prop->type, network_config::mojom::NetworkType::kWireless)) {
net->signal_strength = network_health::mojom::UInt32Value::New(
network_config::GetWirelessSignalStrength(net_prop.get()));
}
} else {
net->state = DeviceStateToNetworkState(device_prop->device_state);
}
......
......@@ -8,6 +8,7 @@
#include <string>
#include "base/bind.h"
#include "base/strings/string_number_conversions.h"
#include "chrome/browser/chromeos/net/network_health/network_health_service.h"
#include "chromeos/network/network_event_log.h"
#include "content/public/browser/browser_thread.h"
......@@ -34,6 +35,11 @@ std::string GetFormattedString(
output << "Type: " << net->type << "\n";
output << "State: " << net->state << "\n";
output << "Signal Strength: "
<< (net->signal_strength
? base::NumberToString(net->signal_strength->value)
: "N/A")
<< "\n";
output << "MAC Address: " << net->mac_address.value_or("N/A") << "\n";
output << "\n";
}
......
......@@ -31,6 +31,13 @@ enum NetworkState {
kOnline,
};
// Wrapper for optional uint32. // TODO(https://crbug.com/657632): Remove this
// once Mojo properly supports this.
struct UInt32Value {
// The value of the uint64.
uint32 value;
};
// Contains information for a single network connection and underlying
// network technology e.g WiFi.
struct Network {
......@@ -42,6 +49,11 @@ struct Network {
string? name;
// Optional string for the network's mac_address.
string? mac_address;
// Signal strength of the network provided only for wireless networks. Values
// are normalized between 0 to 100 inclusive. Values less than 30 are
// considered potentially problematic for the connection. See
// src/platform2/shill/doc/service-api.txt for more details.
UInt32Value? signal_strength;
};
// Aggregate structure for all of the network health state.
......
......@@ -31,6 +31,7 @@
<td>[[i18n('OncName')]]</td>
<td>[[i18n('OncType')]]</td>
<td>[[i18n('NetworkHealthState')]]</td>
<td>[[i18n('OncWiFi-SignalStrength')]]</td>
<td>[[i18n('OncMacAddress')]]</td>
</tr>
<hr>
......@@ -40,6 +41,7 @@
<td>[[network.name]]</td>
<td>[[getNetworkTypeString_(network.type)]]</td>
<td>[[getNetworkStateString_(network.state)]]</td>
<td>[[getSignalStrengthString_(network.signalStrength)]]</td>
<td>[[network.macAddress]]</td>
</tr>
</template>
......
......@@ -91,4 +91,14 @@ Polymer({
getNetworkTypeString_(type) {
return this.i18n('OncType' + OncMojo.getNetworkTypeString(type));
},
/**
* Returns a string for the given signal strength.
* @private
* @param {?chromeos.networkHealth.mojom.UInt32Value} signalStrength
* @return {string}
*/
getSignalStrengthString_(signalStrength) {
return signalStrength ? signalStrength.value.toString() : '';
},
});
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