Wifi Notifiers: remove duplicate logic for finding Settings package name
Migrate to FrameworkFacade#getSettingsPackageName.
Bug: 176395913
Test: atest FrameworksWifiTests
Change-Id: I83c15c65092b26d439cc6868019f77f86d21f6ec
diff --git a/service/java/com/android/server/wifi/EapFailureNotifier.java b/service/java/com/android/server/wifi/EapFailureNotifier.java
index f10f0c5..60ead08 100644
--- a/service/java/com/android/server/wifi/EapFailureNotifier.java
+++ b/service/java/com/android/server/wifi/EapFailureNotifier.java
@@ -16,29 +16,23 @@
package com.android.server.wifi;
-import android.app.ActivityManager;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
import android.content.res.Resources;
import android.graphics.drawable.Icon;
import android.net.wifi.WifiConfiguration;
-import android.os.UserHandle;
import android.provider.Settings;
import android.service.notification.StatusBarNotification;
import android.telephony.SubscriptionManager;
import android.text.TextUtils;
-import android.util.Log;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.messages.nano.SystemMessageProto.SystemMessage;
-import java.util.List;
-
/**
* This class may be used to launch notifications when EAP failure occurs.
*/
@@ -93,26 +87,13 @@
return true;
}
- private String getSettingsPackageName() {
- Intent intent = new Intent(Settings.ACTION_WIFI_SETTINGS);
- List<ResolveInfo> resolveInfos = mContext.getPackageManager().queryIntentActivitiesAsUser(
- intent, PackageManager.MATCH_SYSTEM_ONLY | PackageManager.MATCH_DEFAULT_ONLY,
- UserHandle.of(ActivityManager.getCurrentUser()));
- if (resolveInfos == null || resolveInfos.isEmpty()) {
- Log.e(TAG, "Failed to resolve wifi settings activity");
- return null;
- }
- // Pick the first one if there are more than 1 since the list is ordered from best to worst.
- return resolveInfos.get(0).activityInfo.packageName;
- }
-
/**
* Display eap error notification which defined by carrier.
*
* @param ssid Error Message which defined by carrier
*/
private void showNotification(String errorMessage, String ssid) {
- String settingsPackage = getSettingsPackageName();
+ String settingsPackage = mFrameworkFacade.getSettingsPackageName(mContext);
if (settingsPackage == null) return;
Intent intent = new Intent(Settings.ACTION_WIFI_SETTINGS)
.setPackage(settingsPackage);
diff --git a/service/java/com/android/server/wifi/SimRequiredNotifier.java b/service/java/com/android/server/wifi/SimRequiredNotifier.java
index 8152c66..d114535 100644
--- a/service/java/com/android/server/wifi/SimRequiredNotifier.java
+++ b/service/java/com/android/server/wifi/SimRequiredNotifier.java
@@ -16,24 +16,17 @@
package com.android.server.wifi;
-import android.app.ActivityManager;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
import android.graphics.drawable.Icon;
import android.net.wifi.WifiConfiguration;
-import android.os.UserHandle;
import android.provider.Settings;
-import android.util.Log;
import com.android.internal.messages.nano.SystemMessageProto.SystemMessage;
import com.android.wifi.resources.R;
-import java.util.List;
-
/**
* Helper class to generate SIM required notification
*
@@ -72,21 +65,8 @@
mNotificationManager.cancel(null, SystemMessage.NOTE_ID_WIFI_SIM_REQUIRED);
}
- private String getSettingsPackageName() {
- Intent intent = new Intent(Settings.ACTION_WIFI_SETTINGS);
- List<ResolveInfo> resolveInfos = mContext.getPackageManager().queryIntentActivitiesAsUser(
- intent, PackageManager.MATCH_SYSTEM_ONLY | PackageManager.MATCH_DEFAULT_ONLY,
- UserHandle.of(ActivityManager.getCurrentUser()));
- if (resolveInfos == null || resolveInfos.isEmpty()) {
- Log.e(TAG, "Failed to resolve wifi settings activity");
- return null;
- }
- // Pick the first one if there are more than 1 since the list is ordered from best to worst.
- return resolveInfos.get(0).activityInfo.packageName;
- }
-
private void showNotification(String ssid, String carrier) {
- String settingsPackage = getSettingsPackageName();
+ String settingsPackage = mFrameworkFacade.getSettingsPackageName(mContext);
if (settingsPackage == null) return;
Intent intent = new Intent(Settings.ACTION_WIRELESS_SETTINGS)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
diff --git a/service/tests/wifitests/src/com/android/server/wifi/EapFailureNotifierTest.java b/service/tests/wifitests/src/com/android/server/wifi/EapFailureNotifierTest.java
index 17eae38..99f9169 100644
--- a/service/tests/wifitests/src/com/android/server/wifi/EapFailureNotifierTest.java
+++ b/service/tests/wifitests/src/com/android/server/wifi/EapFailureNotifierTest.java
@@ -18,20 +18,15 @@
import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.*;
-import android.app.ActivityManager;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
-import android.content.pm.ActivityInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
import android.content.res.Resources;
import android.net.wifi.WifiConfiguration;
-import android.os.UserHandle;
import android.provider.Settings;
import android.service.notification.StatusBarNotification;
import android.telephony.SubscriptionManager;
@@ -47,18 +42,15 @@
import org.mockito.MockitoAnnotations;
import org.mockito.MockitoSession;
-import java.util.Arrays;
-
/**
* Unit tests for {@link com.android.server.wifi.EapFailureNotifier}.
*/
@SmallTest
public class EapFailureNotifierTest extends WifiBaseTest {
- private static final String TEST_SETTINGS_PACKAGE = "android";
+ private static final String TEST_SETTINGS_PACKAGE = "test.com.android.settings";
@Mock WifiContext mContext;
@Mock Resources mResources;
- @Mock PackageManager mPackageManager;
@Mock NotificationManager mNotificationManager;
@Mock FrameworkFacade mFrameworkFacade;
@Mock Notification mNotification;
@@ -75,7 +67,6 @@
private static final String UNDEFINED_ERROR_RESOURCE_NAME = "wifi_eap_error_message_code_12345";
private MockitoSession mStaticMockSession = null;
-
EapFailureNotifier mEapFailureNotifier;
/**
@@ -84,26 +75,16 @@
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
- ResolveInfo settingsResolveInfo = new ResolveInfo();
- settingsResolveInfo.activityInfo = new ActivityInfo();
- settingsResolveInfo.activityInfo.packageName = TEST_SETTINGS_PACKAGE;
- when(mPackageManager.queryIntentActivitiesAsUser(
- argThat(((intent) -> intent.getAction().equals(Settings.ACTION_WIFI_SETTINGS))),
- anyInt(), any()))
- .thenReturn(Arrays.asList(settingsResolveInfo));
// static mocking
mStaticMockSession = mockitoSession()
.mockStatic(SubscriptionManager.class)
- .mockStatic(ActivityManager.class, withSettings().lenient())
.startMocking();
- when(ActivityManager.getCurrentUser()).thenReturn(UserHandle.USER_SYSTEM);
when(mContext.getSystemService(NotificationManager.class))
.thenReturn(mNotificationManager);
when(mWifiCarrierInfoManager.getBestMatchSubscriptionId(mWifiConfiguration)).thenReturn(0);
lenient().when(SubscriptionManager.getResourcesForSubId(eq(mContext), anyInt()))
.thenReturn(mResources);
when(mContext.getResources()).thenReturn(mResources);
- when(mContext.getPackageManager()).thenReturn(mPackageManager);
when(mResources.getIdentifier(eq(DEFINED_ERROR_RESOURCE_NAME), anyString(),
anyString())).thenReturn(1);
when(mResources.getIdentifier(eq(UNDEFINED_ERROR_RESOURCE_NAME), anyString(),
@@ -112,6 +93,7 @@
when(mResources.getString(eq(1), anyString())).thenReturn("Error Message");
when(mContext.createPackageContext(anyString(), eq(0))).thenReturn(mContext);
when(mContext.getWifiOverlayApkPkgName()).thenReturn("test.com.android.wifi.resources");
+ when(mFrameworkFacade.getSettingsPackageName(any())).thenReturn(TEST_SETTINGS_PACKAGE);
mEapFailureNotifier =
new EapFailureNotifier(mContext, mFrameworkFacade, mWifiCarrierInfoManager);
}