From f15a9720faf3fc6fbd3da9c1632fab4155c319fd Mon Sep 17 00:00:00 2001 From: Roshan Pius Date: Wed, 23 Jan 2019 09:07:20 -0800 Subject: [PATCH] WifiConfiguration: App attribution for suggestion/request Add new field to mark a WifiConfiguration as created from a network specifier or suggestion. WifiConfiguration.creatorName for such networks will contain the package name of the app that added the corresponding specifier/suggestion. This can be used by the settings app to display the app's name in the wifi picker summary. Bug: 115504887 Bug: 113878056 Test: ./frameworks/base/wifi/tests/runtests.sh Change-Id: Ic0ae2292930628dc38c668777c7de4f19af4e925 --- .../android/net/wifi/WifiConfiguration.java | 25 ++++++++++++++++++- .../net/wifi/WifiConfigurationTest.java | 4 +++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/wifi/java/android/net/wifi/WifiConfiguration.java b/wifi/java/android/net/wifi/WifiConfiguration.java index d2d711f109445..96493de69673e 100644 --- a/wifi/java/android/net/wifi/WifiConfiguration.java +++ b/wifi/java/android/net/wifi/WifiConfiguration.java @@ -786,6 +786,18 @@ public class WifiConfiguration implements Parcelable { */ public boolean trusted; + /** + * This Wifi configuration is created from a {@link WifiNetworkSuggestion} + * @hide + */ + public boolean fromWifiNetworkSuggestion; + + /** + * This Wifi configuration is created from a {@link WifiNetworkSpecifier} + * @hide + */ + public boolean fromWifiNetworkSpecifier; + /** * Indicates if the creator of this configuration has expressed that it * should be considered metered. @@ -1668,6 +1680,8 @@ public class WifiConfiguration implements Parcelable { ephemeral = false; osu = false; trusted = true; // Networks are considered trusted by default. + fromWifiNetworkSuggestion = false; + fromWifiNetworkSpecifier = false; meteredHint = false; meteredOverride = METERED_OVERRIDE_NONE; useExternalScores = false; @@ -1779,10 +1793,13 @@ public class WifiConfiguration implements Parcelable { if (this.ephemeral) sbuf.append(" ephemeral"); if (this.osu) sbuf.append(" osu"); if (this.trusted) sbuf.append(" trusted"); + if (this.fromWifiNetworkSuggestion) sbuf.append(" fromWifiNetworkSuggestion"); + if (this.fromWifiNetworkSpecifier) sbuf.append(" fromWifiNetworkSpecifier"); if (this.meteredHint) sbuf.append(" meteredHint"); if (this.useExternalScores) sbuf.append(" useExternalScores"); if (this.didSelfAdd || this.selfAdded || this.validatedInternetAccess - || this.ephemeral || this.trusted || this.meteredHint || this.useExternalScores) { + || this.ephemeral || this.trusted || this.fromWifiNetworkSuggestion + || this.fromWifiNetworkSpecifier || this.meteredHint || this.useExternalScores) { sbuf.append("\n"); } if (this.meteredOverride != METERED_OVERRIDE_NONE) { @@ -2270,6 +2287,8 @@ public class WifiConfiguration implements Parcelable { ephemeral = source.ephemeral; osu = source.osu; trusted = source.trusted; + fromWifiNetworkSuggestion = source.fromWifiNetworkSuggestion; + fromWifiNetworkSpecifier = source.fromWifiNetworkSpecifier; meteredHint = source.meteredHint; meteredOverride = source.meteredOverride; useExternalScores = source.useExternalScores; @@ -2347,6 +2366,8 @@ public class WifiConfiguration implements Parcelable { dest.writeInt(isLegacyPasspointConfig ? 1 : 0); dest.writeInt(ephemeral ? 1 : 0); dest.writeInt(trusted ? 1 : 0); + dest.writeInt(fromWifiNetworkSuggestion ? 1 : 0); + dest.writeInt(fromWifiNetworkSpecifier ? 1 : 0); dest.writeInt(meteredHint ? 1 : 0); dest.writeInt(meteredOverride); dest.writeInt(useExternalScores ? 1 : 0); @@ -2418,6 +2439,8 @@ public class WifiConfiguration implements Parcelable { config.isLegacyPasspointConfig = in.readInt() != 0; config.ephemeral = in.readInt() != 0; config.trusted = in.readInt() != 0; + config.fromWifiNetworkSuggestion = in.readInt() != 0; + config.fromWifiNetworkSpecifier = in.readInt() != 0; config.meteredHint = in.readInt() != 0; config.meteredOverride = in.readInt(); config.useExternalScores = in.readInt() != 0; diff --git a/wifi/tests/src/android/net/wifi/WifiConfigurationTest.java b/wifi/tests/src/android/net/wifi/WifiConfigurationTest.java index 7bff68aaaa972..449423f44a354 100644 --- a/wifi/tests/src/android/net/wifi/WifiConfigurationTest.java +++ b/wifi/tests/src/android/net/wifi/WifiConfigurationTest.java @@ -60,6 +60,8 @@ public class WifiConfigurationTest { config.setPasspointManagementObjectTree(cookie); config.trusted = false; config.updateIdentifier = "1234"; + config.fromWifiNetworkSpecifier = true; + config.fromWifiNetworkSuggestion = true; MacAddress macBeforeParcel = config.getOrCreateRandomizedMacAddress(); Parcel parcelW = Parcel.obtain(); config.writeToParcel(parcelW, 0); @@ -76,6 +78,8 @@ public class WifiConfigurationTest { assertEquals(macBeforeParcel, reconfig.getOrCreateRandomizedMacAddress()); assertEquals(config.updateIdentifier, reconfig.updateIdentifier); assertFalse(reconfig.trusted); + assertTrue(config.fromWifiNetworkSpecifier); + assertTrue(config.fromWifiNetworkSuggestion); Parcel parcelWW = Parcel.obtain(); reconfig.writeToParcel(parcelWW, 0);