summaryrefslogtreecommitdiffstats
path: root/libs/WifiTrackerLib/src
diff options
context:
space:
mode:
authorQuang Luong <qal@google.com>2020-05-06 21:05:56 -0700
committerQuang Luong <qal@google.com>2020-05-11 10:05:08 -0700
commitce106d20d4bb71ab13f4f351a41ab0481ae49609 (patch)
tree366a0c161563777b2a26d9dc0868465e5e5ca51f /libs/WifiTrackerLib/src
parent18ae05a8368df5d55b2f7ead4fd5cb862d2f46a2 (diff)
downloadframeworks_opt_net_wifi-ce106d20d4bb71ab13f4f351a41ab0481ae49609.tar.gz
frameworks_opt_net_wifi-ce106d20d4bb71ab13f4f351a41ab0481ae49609.tar.bz2
frameworks_opt_net_wifi-ce106d20d4bb71ab13f4f351a41ab0481ae49609.zip
[WifiTrackerLib] Use open wifi package name for app label if applicable
App label of an open wifi network should use the open wifi package name instead of the active scorer name. Bug: 153352576 Test: manual visual verification that connected open wifi network uses the open wifi package name instead of the active scorer name Change-Id: I1e5dd068a5e9086143b928e3f16fec86b23b89b3
Diffstat (limited to 'libs/WifiTrackerLib/src')
-rw-r--r--libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java3
-rw-r--r--libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java6
-rw-r--r--libs/WifiTrackerLib/src/com/android/wifitrackerlib/Utils.java65
3 files changed, 28 insertions, 46 deletions
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java
index 350580250..8b66fd5e8 100644
--- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java
+++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java
@@ -21,7 +21,6 @@ import static android.net.wifi.WifiInfo.sanitizeSsid;
import static androidx.core.util.Preconditions.checkNotNull;
import static com.android.wifitrackerlib.Utils.getAppLabel;
-import static com.android.wifitrackerlib.Utils.getAppLabelForWifiConfiguration;
import static com.android.wifitrackerlib.Utils.getAutoConnectDescription;
import static com.android.wifitrackerlib.Utils.getAverageSpeedFromScanResults;
import static com.android.wifitrackerlib.Utils.getBestScanResultByLevel;
@@ -167,7 +166,7 @@ public class PasspointWifiEntry extends WifiEntry {
getSubIdForConfig(mContext, mWifiConfig));
sj.add(mContext.getString(R.string.available_via_app, carrierName != null
? carrierName
- : getAppLabelForWifiConfiguration(mContext, mWifiConfig)));
+ : getAppLabel(mContext, mWifiConfig.creatorName)));
} else {
sj.add(mContext.getString(R.string.wifi_remembered));
}
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java
index 06b27656a..5518a39bb 100644
--- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java
+++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java
@@ -25,8 +25,6 @@ import static android.net.wifi.WifiInfo.sanitizeSsid;
import static androidx.core.util.Preconditions.checkNotNull;
import static com.android.wifitrackerlib.Utils.getAppLabel;
-import static com.android.wifitrackerlib.Utils.getAppLabelForSavedNetwork;
-import static com.android.wifitrackerlib.Utils.getAppLabelForWifiConfiguration;
import static com.android.wifitrackerlib.Utils.getAutoConnectDescription;
import static com.android.wifitrackerlib.Utils.getAverageSpeedFromScanResults;
import static com.android.wifitrackerlib.Utils.getBestScanResultByLevel;
@@ -196,7 +194,7 @@ public class StandardWifiEntry extends WifiEntry {
StringJoiner sj = new StringJoiner(mContext.getString(R.string.summary_separator));
if (!concise && mForSavedNetworksPage && isSaved()) {
- final CharSequence appLabel = getAppLabelForSavedNetwork(mContext, this);
+ final CharSequence appLabel = getAppLabel(mContext, mWifiConfig.creatorName);
if (!TextUtils.isEmpty(appLabel)) {
sj.add(mContext.getString(R.string.saved_network, appLabel));
}
@@ -214,7 +212,7 @@ public class StandardWifiEntry extends WifiEntry {
getSubIdForConfig(mContext, mWifiConfig));
sj.add(mContext.getString(R.string.available_via_app, carrierName != null
? carrierName
- : getAppLabelForWifiConfiguration(mContext, mWifiConfig)));
+ : getAppLabel(mContext, mWifiConfig.creatorName)));
} else if (isSaved()) {
sj.add(mContext.getString(R.string.wifi_remembered));
}
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/Utils.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/Utils.java
index ced1d81bd..1125e086c 100644
--- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/Utils.java
+++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/Utils.java
@@ -37,15 +37,14 @@ import static com.android.wifitrackerlib.WifiEntry.Speed;
import static java.util.Comparator.comparingInt;
import static java.util.stream.Collectors.groupingBy;
-import android.app.AppGlobals;
import android.content.Context;
import android.content.pm.ApplicationInfo;
-import android.content.pm.IPackageManager;
import android.content.pm.PackageManager;
import android.net.NetworkCapabilities;
import android.net.NetworkInfo;
import android.net.NetworkInfo.DetailedState;
import android.net.NetworkKey;
+import android.net.NetworkScoreManager;
import android.net.ScoredNetwork;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiConfiguration;
@@ -53,8 +52,8 @@ import android.net.wifi.WifiConfiguration.NetworkSelectionStatus;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiNetworkScoreCache;
import android.os.PersistableBundle;
-import android.os.RemoteException;
import android.os.UserHandle;
+import android.provider.Settings;
import android.telephony.CarrierConfigManager;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
@@ -83,6 +82,15 @@ import java.util.StringJoiner;
* Utility methods for WifiTrackerLib.
*/
class Utils {
+ private static NetworkScoreManager sNetworkScoreManager;
+
+ private static String getActiveScorerPackage(@NonNull Context context) {
+ if (sNetworkScoreManager == null) {
+ sNetworkScoreManager = context.getSystemService(NetworkScoreManager.class);
+ }
+ return sNetworkScoreManager.getActiveScorerPackage();
+ }
+
// Returns the ScanResult with the best RSSI from a list of ScanResults.
@Nullable
static ScanResult getBestScanResultByLevel(@NonNull List<ScanResult> scanResults) {
@@ -360,51 +368,28 @@ class Utils {
}
}
+ /**
+ * Get the app label for a suggestion/specifier package name.
+ */
static CharSequence getAppLabel(Context context, String packageName) {
try {
+ String openWifiPackageName = Settings.Global.getString(context.getContentResolver(),
+ Settings.Global.USE_OPEN_WIFI_PACKAGE);
+ if (!TextUtils.isEmpty(openWifiPackageName) && TextUtils.equals(packageName,
+ getActiveScorerPackage(context))) {
+ packageName = openWifiPackageName;
+ }
+
ApplicationInfo appInfo = context.getPackageManager().getApplicationInfoAsUser(
packageName,
0 /* flags */,
UserHandle.getUserId(UserHandle.USER_CURRENT));
return appInfo.loadLabel(context.getPackageManager());
} catch (PackageManager.NameNotFoundException e) {
- // Do nothing.
- }
- return "";
- }
-
- static CharSequence getAppLabelForSavedNetwork(@NonNull Context context,
- @NonNull WifiEntry wifiEntry) {
- return getAppLabelForWifiConfiguration(context, wifiEntry.getWifiConfiguration());
- }
-
- static CharSequence getAppLabelForWifiConfiguration(@NonNull Context context,
- @NonNull WifiConfiguration config) {
- if (context == null || config == null) {
- return "";
- }
-
- final PackageManager pm = context.getPackageManager();
- final String systemName = pm.getNameForUid(android.os.Process.SYSTEM_UID);
- final int userId = UserHandle.getUserId(config.creatorUid);
- ApplicationInfo appInfo = null;
- if (config.creatorName != null && config.creatorName.equals(systemName)) {
- appInfo = context.getApplicationInfo();
- } else {
- try {
- final IPackageManager ipm = AppGlobals.getPackageManager();
- appInfo = ipm.getApplicationInfo(config.creatorName, 0 /* flags */, userId);
- } catch (RemoteException rex) {
- // Do nothing.
- }
- }
- if (appInfo != null
- && !appInfo.packageName.equals(context.getString(R.string.settings_package))
- && !appInfo.packageName.equals(
- context.getString(R.string.certinstaller_package))) {
- return appInfo.loadLabel(pm);
- } else {
- return "";
+ // The packageName should come from a suggestion/specifier which is guaranteed to
+ // have an associated app label. If there is a concurrency issue between the current
+ // connection and the suggestion being removed, we should fall back to the packageName.
+ return packageName;
}
}