Merge "Add an API hint for metered multipath traffic."
diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java
index 8223cdf..9dde3e2 100644
--- a/services/core/java/com/android/server/ConnectivityService.java
+++ b/services/core/java/com/android/server/ConnectivityService.java
@@ -1303,13 +1303,16 @@
@Override
public LinkProperties getLinkProperties(Network network) {
enforceAccessPermission();
- NetworkAgentInfo nai = getNetworkAgentInfoForNetwork(network);
- if (nai != null) {
- synchronized (nai) {
- return new LinkProperties(nai.linkProperties);
- }
+ return getLinkProperties(getNetworkAgentInfoForNetwork(network));
+ }
+
+ private LinkProperties getLinkProperties(NetworkAgentInfo nai) {
+ if (nai == null) {
+ return null;
}
- return null;
+ synchronized (nai) {
+ return new LinkProperties(nai.linkProperties);
+ }
}
private NetworkCapabilities getNetworkCapabilitiesInternal(NetworkAgentInfo nai) {
@@ -3145,7 +3148,8 @@
enforceAccessPermission();
enforceInternetPermission();
- NetworkAgentInfo nai;
+ // TODO: execute this logic on ConnectivityService handler.
+ final NetworkAgentInfo nai;
if (network == null) {
nai = getDefaultNetwork();
} else {
@@ -3156,21 +3160,24 @@
return;
}
// Revalidate if the app report does not match our current validated state.
- if (hasConnectivity == nai.lastValidated) return;
+ if (hasConnectivity == nai.lastValidated) {
+ return;
+ }
final int uid = Binder.getCallingUid();
if (DBG) {
log("reportNetworkConnectivity(" + nai.network.netId + ", " + hasConnectivity +
") by " + uid);
}
- synchronized (nai) {
- // Validating a network that has not yet connected could result in a call to
- // rematchNetworkAndRequests() which is not meant to work on such networks.
- if (!nai.everConnected) return;
-
- if (isNetworkWithLinkPropertiesBlocked(nai.linkProperties, uid, false)) return;
-
- nai.networkMonitor.sendMessage(NetworkMonitor.CMD_FORCE_REEVALUATION, uid);
+ // Validating a network that has not yet connected could result in a call to
+ // rematchNetworkAndRequests() which is not meant to work on such networks.
+ if (!nai.everConnected) {
+ return;
}
+ LinkProperties lp = getLinkProperties(nai);
+ if (isNetworkWithLinkPropertiesBlocked(lp, uid, false)) {
+ return;
+ }
+ nai.networkMonitor.sendMessage(NetworkMonitor.CMD_FORCE_REEVALUATION, uid);
}
private ProxyInfo getDefaultProxy() {
diff --git a/tests/net/java/com/android/server/connectivity/IpConnectivityEventBuilderTest.java b/tests/net/java/com/android/server/connectivity/IpConnectivityEventBuilderTest.java
index 011e505..8c16dbb 100644
--- a/tests/net/java/com/android/server/connectivity/IpConnectivityEventBuilderTest.java
+++ b/tests/net/java/com/android/server/connectivity/IpConnectivityEventBuilderTest.java
@@ -58,8 +58,6 @@
String want = joinLines(
"dropped_events: 0",
"events <",
- " time_ms: 1",
- " transport: 0",
" default_network_event <",
" network_id <",
" network_id: 102",
@@ -72,6 +70,8 @@
" transport_types: 2",
" transport_types: 3",
" >",
+ " time_ms: 1",
+ " transport: 0",
">",
"version: 2");
@@ -89,13 +89,14 @@
String want = joinLines(
"dropped_events: 0",
"events <",
- " time_ms: 1",
- " transport: 0",
" dhcp_event <",
" duration_ms: 192",
+ " error_code: 0",
" if_name: \"wlan0\"",
" state_transition: \"SomeState\"",
" >",
+ " time_ms: 1",
+ " transport: 0",
">",
"version: 2");
@@ -112,13 +113,14 @@
String want = joinLines(
"dropped_events: 0",
"events <",
- " time_ms: 1",
- " transport: 0",
" dhcp_event <",
" duration_ms: 0",
- " if_name: \"wlan0\"",
" error_code: 50397184",
+ " if_name: \"wlan0\"",
+ " state_transition: \"\"",
" >",
+ " time_ms: 1",
+ " transport: 0",
">",
"version: 2");
@@ -137,8 +139,6 @@
String want = joinLines(
"dropped_events: 0",
"events <",
- " time_ms: 1",
- " transport: 0",
" dns_lookup_batch <",
" event_types: 1",
" event_types: 1",
@@ -168,6 +168,8 @@
" return_codes: 200",
" return_codes: 178",
" >",
+ " time_ms: 1",
+ " transport: 0",
">",
"version: 2");
@@ -185,13 +187,13 @@
String want = joinLines(
"dropped_events: 0",
"events <",
- " time_ms: 1",
- " transport: 0",
" ip_provisioning_event <",
" event_type: 1",
" if_name: \"wlan0\"",
" latency_ms: 5678",
" >",
+ " time_ms: 1",
+ " transport: 0",
">",
"version: 2");
@@ -208,12 +210,12 @@
String want = joinLines(
"dropped_events: 0",
"events <",
- " time_ms: 1",
- " transport: 0",
" ip_reachability_event <",
" event_type: 512",
" if_name: \"wlan0\"",
" >",
+ " time_ms: 1",
+ " transport: 0",
">",
"version: 2");
@@ -231,8 +233,6 @@
String want = joinLines(
"dropped_events: 0",
"events <",
- " time_ms: 1",
- " transport: 0",
" network_event <",
" event_type: 5",
" latency_ms: 20410",
@@ -240,6 +240,8 @@
" network_id: 100",
" >",
" >",
+ " time_ms: 1",
+ " transport: 0",
">",
"version: 2");
@@ -287,8 +289,6 @@
String want = joinLines(
"dropped_events: 0",
"events <",
- " time_ms: 1",
- " transport: 0",
" apf_program_event <",
" current_ras: 9",
" drop_multicast: true",
@@ -297,6 +297,8 @@
" lifetime: 200",
" program_length: 2048",
" >",
+ " time_ms: 1",
+ " transport: 0",
">",
"version: 2");
@@ -319,8 +321,6 @@
String want = joinLines(
"dropped_events: 0",
"events <",
- " time_ms: 1",
- " transport: 0",
" apf_statistics <",
" dropped_ras: 2",
" duration_ms: 45000",
@@ -331,6 +331,8 @@
" received_ras: 10",
" zero_lifetime_ras: 1",
" >",
+ " time_ms: 1",
+ " transport: 0",
">",
"version: 2");
@@ -351,8 +353,6 @@
String want = joinLines(
"dropped_events: 0",
"events <",
- " time_ms: 1",
- " transport: 0",
" ra_event <",
" dnssl_lifetime: -1",
" prefix_preferred_lifetime: 300",
@@ -361,6 +361,8 @@
" route_info_lifetime: -1",
" router_lifetime: 2000",
" >",
+ " time_ms: 1",
+ " transport: 0",
">",
"version: 2");
diff --git a/tests/net/java/com/android/server/connectivity/IpConnectivityMetricsTest.java b/tests/net/java/com/android/server/connectivity/IpConnectivityMetricsTest.java
index 450653c..9a33cde 100644
--- a/tests/net/java/com/android/server/connectivity/IpConnectivityMetricsTest.java
+++ b/tests/net/java/com/android/server/connectivity/IpConnectivityMetricsTest.java
@@ -158,25 +158,24 @@
String want = joinLines(
"dropped_events: 0",
"events <",
- " time_ms: 100",
- " transport: 0",
" ip_reachability_event <",
" event_type: 512",
" if_name: \"wlan0\"",
" >",
+ " time_ms: 100",
+ " transport: 0",
">",
"events <",
- " time_ms: 200",
- " transport: 0",
" dhcp_event <",
" duration_ms: 192",
+ " error_code: 0",
" if_name: \"wlan0\"",
" state_transition: \"SomeState\"",
" >",
+ " time_ms: 200",
+ " transport: 0",
">",
"events <",
- " time_ms: 300",
- " transport: 0",
" default_network_event <",
" network_id <",
" network_id: 102",
@@ -189,15 +188,17 @@
" transport_types: 2",
" transport_types: 3",
" >",
+ " time_ms: 300",
+ " transport: 0",
">",
"events <",
- " time_ms: 400",
- " transport: 0",
" ip_provisioning_event <",
" event_type: 1",
" if_name: \"wlan0\"",
" latency_ms: 5678",
" >",
+ " time_ms: 400",
+ " transport: 0",
">",
"events <",
" time_ms: 500",
@@ -212,8 +213,6 @@
" >",
">",
"events <",
- " time_ms: 600",
- " transport: 0",
" apf_statistics <",
" dropped_ras: 2",
" duration_ms: 45000",
@@ -224,10 +223,10 @@
" received_ras: 10",
" zero_lifetime_ras: 1",
" >",
+ " time_ms: 600",
+ " transport: 0",
">",
"events <",
- " time_ms: 700",
- " transport: 0",
" ra_event <",
" dnssl_lifetime: -1",
" prefix_preferred_lifetime: 300",
@@ -236,6 +235,8 @@
" route_info_lifetime: -1",
" router_lifetime: 2000",
" >",
+ " time_ms: 700",
+ " transport: 0",
">",
"version: 2");
diff --git a/tests/net/java/com/android/server/connectivity/NetdEventListenerServiceTest.java b/tests/net/java/com/android/server/connectivity/NetdEventListenerServiceTest.java
index 97afa60..6c8babb 100644
--- a/tests/net/java/com/android/server/connectivity/NetdEventListenerServiceTest.java
+++ b/tests/net/java/com/android/server/connectivity/NetdEventListenerServiceTest.java
@@ -212,8 +212,6 @@
IpConnectivityEvent got = events.get(0);
String want = joinLines(
- "time_ms: 0",
- "transport: 0",
"connect_statistics <",
" connect_count: 12",
" errnos_counters <",
@@ -247,7 +245,10 @@
" latencies_ms: 67",
" latencies_ms: 110",
" latencies_ms: 214",
- " latencies_ms: 523");
+ " latencies_ms: 523",
+ ">",
+ "time_ms: 0",
+ "transport: 0");
verifyConnectEvent(want, got);
}