summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2020-05-11 21:12:50 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2020-05-11 21:12:50 +0000
commit73a607348813b0733f17cd34cf536e19e489944a (patch)
treec54d0b4967112a8c621949335d6477d06dfdbb69
parentb6ef9646566c02792d6c0e765d28669453c4d7b3 (diff)
parentce106d20d4bb71ab13f4f351a41ab0481ae49609 (diff)
Merge "[WifiTrackerLib] Use open wifi package name for app label if applicable" into rvc-dev
-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
-rw-r--r--libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/UtilsTest.java25
4 files changed, 28 insertions, 71 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;
}
}
diff --git a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/UtilsTest.java b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/UtilsTest.java
index de4b6903c..5532a2304 100644
--- a/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/UtilsTest.java
+++ b/libs/WifiTrackerLib/tests/src/com/android/wifitrackerlib/UtilsTest.java
@@ -19,7 +19,6 @@ package com.android.wifitrackerlib;
import static com.android.wifitrackerlib.StandardWifiEntry.ssidAndSecurityToStandardWifiEntryKey;
import static com.android.wifitrackerlib.StandardWifiEntry.wifiConfigToStandardWifiEntryKey;
import static com.android.wifitrackerlib.TestUtils.buildScanResult;
-import static com.android.wifitrackerlib.Utils.getAppLabelForSavedNetwork;
import static com.android.wifitrackerlib.Utils.getAutoConnectDescription;
import static com.android.wifitrackerlib.Utils.getBestScanResultByLevel;
import static com.android.wifitrackerlib.Utils.getCarrierNameForSubId;
@@ -43,8 +42,6 @@ import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
import android.content.Context;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.net.NetworkInfo;
import android.net.NetworkScoreManager;
@@ -193,28 +190,6 @@ public class UtilsTest {
}
@Test
- public void testGetAppLabelForSavedNetwork_returnAppLabel() {
- final PackageManager mockPackageManager = mock(PackageManager.class);
- when(mMockContext.getPackageManager()).thenReturn(mockPackageManager);
- when(mockPackageManager.getNameForUid(android.os.Process.SYSTEM_UID))
- .thenReturn(SYSTEM_UID_APP_NAME);
- final ApplicationInfo mockApplicationInfo = mock(ApplicationInfo.class);
- when(mMockContext.getApplicationInfo()).thenReturn(mockApplicationInfo);
- mockApplicationInfo.packageName = SYSTEM_UID_APP_NAME;
- when(mockApplicationInfo.loadLabel(mockPackageManager)).thenReturn(APP_LABEL);
- final WifiConfiguration config = new WifiConfiguration();
- config.SSID = "\"ssid\"";
- config.creatorName = SYSTEM_UID_APP_NAME;
- final StandardWifiEntry entry = getStandardWifiEntry(config);
- when(mMockResources.getString(R.string.settings_package))
- .thenReturn(SETTINGS_APP_NAME);
-
- final CharSequence appLabel = getAppLabelForSavedNetwork(mMockContext, entry);
-
- assertThat(appLabel.toString()).isEqualTo(APP_LABEL);
- }
-
- @Test
public void testGetAutoConnectDescription_autoJoinEnabled_returnEmptyString() {
final WifiConfiguration config = new WifiConfiguration();
config.SSID = "\"ssid\"";