Loading api/current.txt +15 −0 Original line number Diff line number Diff line Loading @@ -28712,6 +28712,18 @@ package android.net { method public long getReportTimestamp(); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.net.ConnectivityDiagnosticsManager.ConnectivityReport> CREATOR; field public static final String KEY_NETWORK_PROBES_ATTEMPTED_BITMASK = "networkProbesAttemped"; field public static final String KEY_NETWORK_PROBES_SUCCEEDED_BITMASK = "networkProbesSucceeded"; field public static final String KEY_NETWORK_VALIDATION_RESULT = "networkValidationResult"; field public static final int NETWORK_PROBE_DNS = 4; // 0x4 field public static final int NETWORK_PROBE_FALLBACK = 32; // 0x20 field public static final int NETWORK_PROBE_HTTP = 8; // 0x8 field public static final int NETWORK_PROBE_HTTPS = 16; // 0x10 field public static final int NETWORK_PROBE_PRIVATE_DNS = 64; // 0x40 field public static final int NETWORK_VALIDATION_RESULT_INVALID = 0; // 0x0 field public static final int NETWORK_VALIDATION_RESULT_PARTIALLY_VALID = 2; // 0x2 field public static final int NETWORK_VALIDATION_RESULT_SKIPPED = 3; // 0x3 field public static final int NETWORK_VALIDATION_RESULT_VALID = 1; // 0x1 } public static final class ConnectivityDiagnosticsManager.DataStallReport implements android.os.Parcelable { Loading @@ -28725,6 +28737,9 @@ package android.net { field @NonNull public static final android.os.Parcelable.Creator<android.net.ConnectivityDiagnosticsManager.DataStallReport> CREATOR; field public static final int DETECTION_METHOD_DNS_EVENTS = 1; // 0x1 field public static final int DETECTION_METHOD_TCP_METRICS = 2; // 0x2 field public static final String KEY_DNS_CONSECUTIVE_TIMEOUTS = "dnsConsecutiveTimeouts"; field public static final String KEY_TCP_METRICS_COLLECTION_PERIOD_MILLIS = "tcpMetricsCollectionPeriodMillis"; field public static final String KEY_TCP_PACKET_FAIL_RATE = "tcpPacketFailRate"; } public class ConnectivityManager { core/java/android/net/ConnectivityDiagnosticsManager.java +169 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package android.net; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.StringDef; import android.content.Context; import android.os.Parcel; import android.os.Parcelable; Loading Loading @@ -79,6 +80,128 @@ public class ConnectivityDiagnosticsManager { /** Class that includes connectivity information for a specific Network at a specific time. */ public static final class ConnectivityReport implements Parcelable { /** * The overall status of the network is that it is invalid; it neither provides * connectivity nor has been exempted from validation. */ public static final int NETWORK_VALIDATION_RESULT_INVALID = 0; /** * The overall status of the network is that it is valid, this may be because it provides * full Internet access (all probes succeeded), or because other properties of the network * caused probes not to be run. */ // TODO: link to INetworkMonitor.NETWORK_VALIDATION_RESULT_VALID public static final int NETWORK_VALIDATION_RESULT_VALID = 1; /** * The overall status of the network is that it provides partial connectivity; some * probed services succeeded but others failed. */ // TODO: link to INetworkMonitor.NETWORK_VALIDATION_RESULT_PARTIAL; public static final int NETWORK_VALIDATION_RESULT_PARTIALLY_VALID = 2; /** * Due to the properties of the network, validation was not performed. */ public static final int NETWORK_VALIDATION_RESULT_SKIPPED = 3; /** @hide */ @IntDef( prefix = {"NETWORK_VALIDATION_RESULT_"}, value = { NETWORK_VALIDATION_RESULT_INVALID, NETWORK_VALIDATION_RESULT_VALID, NETWORK_VALIDATION_RESULT_PARTIALLY_VALID, NETWORK_VALIDATION_RESULT_SKIPPED }) @Retention(RetentionPolicy.SOURCE) public @interface NetworkValidationResult {} /** * The overall validation result for the Network being reported on. * * <p>The possible values for this key are: * {@link #NETWORK_VALIDATION_RESULT_INVALID}, * {@link #NETWORK_VALIDATION_RESULT_VALID}, * {@link #NETWORK_VALIDATION_RESULT_PARTIALLY_VALID}, * {@link #NETWORK_VALIDATION_RESULT_SKIPPED}. * * @see android.net.NetworkCapabilities#CAPABILITY_VALIDATED */ @NetworkValidationResult public static final String KEY_NETWORK_VALIDATION_RESULT = "networkValidationResult"; /** DNS probe. */ // TODO: link to INetworkMonitor.NETWORK_VALIDATION_PROBE_DNS public static final int NETWORK_PROBE_DNS = 0x04; /** HTTP probe. */ // TODO: link to INetworkMonitor.NETWORK_VALIDATION_PROBE_HTTP public static final int NETWORK_PROBE_HTTP = 0x08; /** HTTPS probe. */ // TODO: link to INetworkMonitor.NETWORK_VALIDATION_PROBE_HTTPS; public static final int NETWORK_PROBE_HTTPS = 0x10; /** Captive portal fallback probe. */ // TODO: link to INetworkMonitor.NETWORK_VALIDATION_FALLBACK public static final int NETWORK_PROBE_FALLBACK = 0x20; /** Private DNS (DNS over TLS) probd. */ // TODO: link to INetworkMonitor.NETWORK_VALIDATION_PROBE_PRIVDNS public static final int NETWORK_PROBE_PRIVATE_DNS = 0x40; /** @hide */ @IntDef( prefix = {"NETWORK_PROBE_"}, value = { NETWORK_PROBE_DNS, NETWORK_PROBE_HTTP, NETWORK_PROBE_HTTPS, NETWORK_PROBE_FALLBACK, NETWORK_PROBE_PRIVATE_DNS }) @Retention(RetentionPolicy.SOURCE) public @interface NetworkProbe {} /** * A bitmask of network validation probes that succeeded. * * <p>The possible bits values reported by this key are: * {@link #NETWORK_PROBE_DNS}, * {@link #NETWORK_PROBE_HTTP}, * {@link #NETWORK_PROBE_HTTPS}, * {@link #NETWORK_PROBE_FALLBACK}, * {@link #NETWORK_PROBE_PRIVATE_DNS}. */ @NetworkProbe public static final String KEY_NETWORK_PROBES_SUCCEEDED_BITMASK = "networkProbesSucceeded"; /** * A bitmask of network validation probes that were attempted. * * <p>These probes may have failed or may be incomplete at the time of this report. * * <p>The possible bits values reported by this key are: * {@link #NETWORK_PROBE_DNS}, * {@link #NETWORK_PROBE_HTTP}, * {@link #NETWORK_PROBE_HTTPS}, * {@link #NETWORK_PROBE_FALLBACK}, * {@link #NETWORK_PROBE_PRIVATE_DNS}. */ @NetworkProbe public static final String KEY_NETWORK_PROBES_ATTEMPTED_BITMASK = "networkProbesAttemped"; /** @hide */ @StringDef(prefix = {"KEY_"}, value = { KEY_NETWORK_VALIDATION_RESULT, KEY_NETWORK_PROBES_SUCCEEDED_BITMASK, KEY_NETWORK_PROBES_ATTEMPTED_BITMASK}) @Retention(RetentionPolicy.SOURCE) public @interface ConnectivityReportBundleKeys {} /** The Network for which this ConnectivityReport applied */ @NonNull private final Network mNetwork; Loading Loading @@ -246,6 +369,49 @@ public class ConnectivityDiagnosticsManager { value = {DETECTION_METHOD_DNS_EVENTS, DETECTION_METHOD_TCP_METRICS}) public @interface DetectionMethod {} /** * This key represents the period in milliseconds over which other included TCP metrics * were measured. * * <p>This key will be included if the data stall detection method is * {@link #DETECTION_METHOD_TCP_METRICS}. * * <p>This value is an int. */ public static final String KEY_TCP_METRICS_COLLECTION_PERIOD_MILLIS = "tcpMetricsCollectionPeriodMillis"; /** * This key represents the fail rate of TCP packets when the suspected data stall was * detected. * * <p>This key will be included if the data stall detection method is * {@link #DETECTION_METHOD_TCP_METRICS}. * * <p>This value is an int percentage between 0 and 100. */ public static final String KEY_TCP_PACKET_FAIL_RATE = "tcpPacketFailRate"; /** * This key represents the consecutive number of DNS timeouts that have occurred. * * <p>The consecutive count will be reset any time a DNS response is received. * * <p>This key will be included if the data stall detection method is * {@link #DETECTION_METHOD_DNS_EVENTS}. * * <p>This value is an int. */ public static final String KEY_DNS_CONSECUTIVE_TIMEOUTS = "dnsConsecutiveTimeouts"; /** @hide */ @Retention(RetentionPolicy.SOURCE) @StringDef(prefix = {"KEY_"}, value = { KEY_TCP_PACKET_FAIL_RATE, KEY_DNS_CONSECUTIVE_TIMEOUTS }) public @interface DataStallReportBundleKeys {} /** The Network for which this DataStallReport applied */ @NonNull private final Network mNetwork; Loading Loading @@ -315,6 +481,9 @@ public class ConnectivityDiagnosticsManager { /** * Returns a PersistableBundle with additional info for this report. * * <p>Gets a bundle with details about the suspected data stall including information * specific to the monitoring method that detected the data stall. * * @return PersistableBundle that may contain additional information on the suspected data * stall */ Loading Loading
api/current.txt +15 −0 Original line number Diff line number Diff line Loading @@ -28712,6 +28712,18 @@ package android.net { method public long getReportTimestamp(); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.net.ConnectivityDiagnosticsManager.ConnectivityReport> CREATOR; field public static final String KEY_NETWORK_PROBES_ATTEMPTED_BITMASK = "networkProbesAttemped"; field public static final String KEY_NETWORK_PROBES_SUCCEEDED_BITMASK = "networkProbesSucceeded"; field public static final String KEY_NETWORK_VALIDATION_RESULT = "networkValidationResult"; field public static final int NETWORK_PROBE_DNS = 4; // 0x4 field public static final int NETWORK_PROBE_FALLBACK = 32; // 0x20 field public static final int NETWORK_PROBE_HTTP = 8; // 0x8 field public static final int NETWORK_PROBE_HTTPS = 16; // 0x10 field public static final int NETWORK_PROBE_PRIVATE_DNS = 64; // 0x40 field public static final int NETWORK_VALIDATION_RESULT_INVALID = 0; // 0x0 field public static final int NETWORK_VALIDATION_RESULT_PARTIALLY_VALID = 2; // 0x2 field public static final int NETWORK_VALIDATION_RESULT_SKIPPED = 3; // 0x3 field public static final int NETWORK_VALIDATION_RESULT_VALID = 1; // 0x1 } public static final class ConnectivityDiagnosticsManager.DataStallReport implements android.os.Parcelable { Loading @@ -28725,6 +28737,9 @@ package android.net { field @NonNull public static final android.os.Parcelable.Creator<android.net.ConnectivityDiagnosticsManager.DataStallReport> CREATOR; field public static final int DETECTION_METHOD_DNS_EVENTS = 1; // 0x1 field public static final int DETECTION_METHOD_TCP_METRICS = 2; // 0x2 field public static final String KEY_DNS_CONSECUTIVE_TIMEOUTS = "dnsConsecutiveTimeouts"; field public static final String KEY_TCP_METRICS_COLLECTION_PERIOD_MILLIS = "tcpMetricsCollectionPeriodMillis"; field public static final String KEY_TCP_PACKET_FAIL_RATE = "tcpPacketFailRate"; } public class ConnectivityManager {
core/java/android/net/ConnectivityDiagnosticsManager.java +169 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package android.net; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.StringDef; import android.content.Context; import android.os.Parcel; import android.os.Parcelable; Loading Loading @@ -79,6 +80,128 @@ public class ConnectivityDiagnosticsManager { /** Class that includes connectivity information for a specific Network at a specific time. */ public static final class ConnectivityReport implements Parcelable { /** * The overall status of the network is that it is invalid; it neither provides * connectivity nor has been exempted from validation. */ public static final int NETWORK_VALIDATION_RESULT_INVALID = 0; /** * The overall status of the network is that it is valid, this may be because it provides * full Internet access (all probes succeeded), or because other properties of the network * caused probes not to be run. */ // TODO: link to INetworkMonitor.NETWORK_VALIDATION_RESULT_VALID public static final int NETWORK_VALIDATION_RESULT_VALID = 1; /** * The overall status of the network is that it provides partial connectivity; some * probed services succeeded but others failed. */ // TODO: link to INetworkMonitor.NETWORK_VALIDATION_RESULT_PARTIAL; public static final int NETWORK_VALIDATION_RESULT_PARTIALLY_VALID = 2; /** * Due to the properties of the network, validation was not performed. */ public static final int NETWORK_VALIDATION_RESULT_SKIPPED = 3; /** @hide */ @IntDef( prefix = {"NETWORK_VALIDATION_RESULT_"}, value = { NETWORK_VALIDATION_RESULT_INVALID, NETWORK_VALIDATION_RESULT_VALID, NETWORK_VALIDATION_RESULT_PARTIALLY_VALID, NETWORK_VALIDATION_RESULT_SKIPPED }) @Retention(RetentionPolicy.SOURCE) public @interface NetworkValidationResult {} /** * The overall validation result for the Network being reported on. * * <p>The possible values for this key are: * {@link #NETWORK_VALIDATION_RESULT_INVALID}, * {@link #NETWORK_VALIDATION_RESULT_VALID}, * {@link #NETWORK_VALIDATION_RESULT_PARTIALLY_VALID}, * {@link #NETWORK_VALIDATION_RESULT_SKIPPED}. * * @see android.net.NetworkCapabilities#CAPABILITY_VALIDATED */ @NetworkValidationResult public static final String KEY_NETWORK_VALIDATION_RESULT = "networkValidationResult"; /** DNS probe. */ // TODO: link to INetworkMonitor.NETWORK_VALIDATION_PROBE_DNS public static final int NETWORK_PROBE_DNS = 0x04; /** HTTP probe. */ // TODO: link to INetworkMonitor.NETWORK_VALIDATION_PROBE_HTTP public static final int NETWORK_PROBE_HTTP = 0x08; /** HTTPS probe. */ // TODO: link to INetworkMonitor.NETWORK_VALIDATION_PROBE_HTTPS; public static final int NETWORK_PROBE_HTTPS = 0x10; /** Captive portal fallback probe. */ // TODO: link to INetworkMonitor.NETWORK_VALIDATION_FALLBACK public static final int NETWORK_PROBE_FALLBACK = 0x20; /** Private DNS (DNS over TLS) probd. */ // TODO: link to INetworkMonitor.NETWORK_VALIDATION_PROBE_PRIVDNS public static final int NETWORK_PROBE_PRIVATE_DNS = 0x40; /** @hide */ @IntDef( prefix = {"NETWORK_PROBE_"}, value = { NETWORK_PROBE_DNS, NETWORK_PROBE_HTTP, NETWORK_PROBE_HTTPS, NETWORK_PROBE_FALLBACK, NETWORK_PROBE_PRIVATE_DNS }) @Retention(RetentionPolicy.SOURCE) public @interface NetworkProbe {} /** * A bitmask of network validation probes that succeeded. * * <p>The possible bits values reported by this key are: * {@link #NETWORK_PROBE_DNS}, * {@link #NETWORK_PROBE_HTTP}, * {@link #NETWORK_PROBE_HTTPS}, * {@link #NETWORK_PROBE_FALLBACK}, * {@link #NETWORK_PROBE_PRIVATE_DNS}. */ @NetworkProbe public static final String KEY_NETWORK_PROBES_SUCCEEDED_BITMASK = "networkProbesSucceeded"; /** * A bitmask of network validation probes that were attempted. * * <p>These probes may have failed or may be incomplete at the time of this report. * * <p>The possible bits values reported by this key are: * {@link #NETWORK_PROBE_DNS}, * {@link #NETWORK_PROBE_HTTP}, * {@link #NETWORK_PROBE_HTTPS}, * {@link #NETWORK_PROBE_FALLBACK}, * {@link #NETWORK_PROBE_PRIVATE_DNS}. */ @NetworkProbe public static final String KEY_NETWORK_PROBES_ATTEMPTED_BITMASK = "networkProbesAttemped"; /** @hide */ @StringDef(prefix = {"KEY_"}, value = { KEY_NETWORK_VALIDATION_RESULT, KEY_NETWORK_PROBES_SUCCEEDED_BITMASK, KEY_NETWORK_PROBES_ATTEMPTED_BITMASK}) @Retention(RetentionPolicy.SOURCE) public @interface ConnectivityReportBundleKeys {} /** The Network for which this ConnectivityReport applied */ @NonNull private final Network mNetwork; Loading Loading @@ -246,6 +369,49 @@ public class ConnectivityDiagnosticsManager { value = {DETECTION_METHOD_DNS_EVENTS, DETECTION_METHOD_TCP_METRICS}) public @interface DetectionMethod {} /** * This key represents the period in milliseconds over which other included TCP metrics * were measured. * * <p>This key will be included if the data stall detection method is * {@link #DETECTION_METHOD_TCP_METRICS}. * * <p>This value is an int. */ public static final String KEY_TCP_METRICS_COLLECTION_PERIOD_MILLIS = "tcpMetricsCollectionPeriodMillis"; /** * This key represents the fail rate of TCP packets when the suspected data stall was * detected. * * <p>This key will be included if the data stall detection method is * {@link #DETECTION_METHOD_TCP_METRICS}. * * <p>This value is an int percentage between 0 and 100. */ public static final String KEY_TCP_PACKET_FAIL_RATE = "tcpPacketFailRate"; /** * This key represents the consecutive number of DNS timeouts that have occurred. * * <p>The consecutive count will be reset any time a DNS response is received. * * <p>This key will be included if the data stall detection method is * {@link #DETECTION_METHOD_DNS_EVENTS}. * * <p>This value is an int. */ public static final String KEY_DNS_CONSECUTIVE_TIMEOUTS = "dnsConsecutiveTimeouts"; /** @hide */ @Retention(RetentionPolicy.SOURCE) @StringDef(prefix = {"KEY_"}, value = { KEY_TCP_PACKET_FAIL_RATE, KEY_DNS_CONSECUTIVE_TIMEOUTS }) public @interface DataStallReportBundleKeys {} /** The Network for which this DataStallReport applied */ @NonNull private final Network mNetwork; Loading Loading @@ -315,6 +481,9 @@ public class ConnectivityDiagnosticsManager { /** * Returns a PersistableBundle with additional info for this report. * * <p>Gets a bundle with details about the suspected data stall including information * specific to the monitoring method that detected the data stall. * * @return PersistableBundle that may contain additional information on the suspected data * stall */ Loading