Merge "Make EuiccService un-disable-able."
This commit is contained in:
committed by
Android (Google) Code Review
commit
e69ef50ba2
@@ -33,6 +33,7 @@ import android.text.TextUtils;
|
||||
import android.util.ArraySet;
|
||||
|
||||
import com.android.internal.telephony.SmsApplication;
|
||||
import com.android.internal.telephony.euicc.EuiccConnector;
|
||||
import com.android.settings.R;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -141,6 +142,12 @@ public class ApplicationFeatureProviderImpl implements ApplicationFeatureProvide
|
||||
keepEnabledPackages.add(defaultSms.getPackageName());
|
||||
}
|
||||
|
||||
// Keep Euicc Service enabled.
|
||||
final ComponentInfo euicc = EuiccConnector.findBestComponent(mPm);
|
||||
if (euicc != null) {
|
||||
keepEnabledPackages.add(euicc.packageName);
|
||||
}
|
||||
|
||||
keepEnabledPackages.addAll(getEnabledPackageWhitelist());
|
||||
|
||||
final LocationManager locationManager =
|
||||
|
@@ -27,6 +27,7 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.ActivityInfo;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
import android.content.pm.ComponentInfo;
|
||||
import android.content.pm.IPackageManager;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.ResolveInfo;
|
||||
@@ -36,11 +37,12 @@ import android.os.Build;
|
||||
import android.os.UserHandle;
|
||||
import android.os.UserManager;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.internal.telephony.euicc.EuiccConnector;
|
||||
import com.android.settings.testutils.ApplicationTestUtils;
|
||||
import com.android.settingslib.testutils.shadow.ShadowDefaultDialerManager;
|
||||
import com.android.settingslib.testutils.shadow.ShadowSmsApplication;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
@@ -49,6 +51,8 @@ import org.mockito.MockitoAnnotations;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
import org.robolectric.RuntimeEnvironment;
|
||||
import org.robolectric.annotation.Config;
|
||||
import org.robolectric.annotation.Implementation;
|
||||
import org.robolectric.annotation.Implements;
|
||||
import org.robolectric.shadows.ShadowApplication;
|
||||
import org.robolectric.util.ReflectionHelpers;
|
||||
|
||||
@@ -105,6 +109,12 @@ public final class ApplicationFeatureProviderImplTest {
|
||||
mPackageManagerService, mDevicePolicyManager);
|
||||
}
|
||||
|
||||
@After
|
||||
@Config(shadows = {ShadowEuiccConnector.class})
|
||||
public void tearDown() {
|
||||
ShadowEuiccConnector.reset();
|
||||
}
|
||||
|
||||
private void verifyCalculateNumberOfPolicyInstalledApps(boolean async) {
|
||||
setUpUsersAndInstalledApps();
|
||||
|
||||
@@ -165,7 +175,7 @@ public final class ApplicationFeatureProviderImplTest {
|
||||
.thenReturn(PackageManager.INSTALL_REASON_POLICY);
|
||||
|
||||
mAppCount = -1;
|
||||
mProvider.calculateNumberOfAppsWithAdminGrantedPermissions(new String[] {PERMISSION}, async,
|
||||
mProvider.calculateNumberOfAppsWithAdminGrantedPermissions(new String[]{PERMISSION}, async,
|
||||
(num) -> mAppCount = num);
|
||||
if (async) {
|
||||
ShadowApplication.runBackgroundTasks();
|
||||
@@ -202,7 +212,7 @@ public final class ApplicationFeatureProviderImplTest {
|
||||
.thenReturn(PackageManager.INSTALL_REASON_POLICY);
|
||||
|
||||
mAppList = null;
|
||||
mProvider.listAppsWithAdminGrantedPermissions(new String[] {PERMISSION},
|
||||
mProvider.listAppsWithAdminGrantedPermissions(new String[]{PERMISSION},
|
||||
(list) -> mAppList = list);
|
||||
assertThat(mAppList).isNotNull();
|
||||
assertThat(mAppList.size()).isEqualTo(2);
|
||||
@@ -251,10 +261,10 @@ public final class ApplicationFeatureProviderImplTest {
|
||||
new ApplicationInfo(app2.activityInfo.applicationInfo)));
|
||||
|
||||
assertThat(mProvider.findPersistentPreferredActivities(MAIN_USER_ID,
|
||||
new Intent[] {viewIntent, editIntent, sendIntent}))
|
||||
new Intent[]{viewIntent, editIntent, sendIntent}))
|
||||
.isEqualTo(expectedMainUserActivities);
|
||||
assertThat(mProvider.findPersistentPreferredActivities(MANAGED_PROFILE_ID,
|
||||
new Intent[] {viewIntent, editIntent, sendIntent}))
|
||||
new Intent[]{viewIntent, editIntent, sendIntent}))
|
||||
.isEqualTo(expectedManagedUserActivities);
|
||||
}
|
||||
|
||||
@@ -282,6 +292,33 @@ public final class ApplicationFeatureProviderImplTest {
|
||||
assertThat(keepEnabledPackages).containsAllIn(expectedPackages);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Config(shadows = {ShadowSmsApplication.class, ShadowDefaultDialerManager.class,
|
||||
ShadowEuiccConnector.class})
|
||||
public void getKeepEnabledPackages_hasEuiccComponent_shouldContainEuiccPackage() {
|
||||
final String testDialer = "com.android.test.defaultdialer";
|
||||
final String testSms = "com.android.test.defaultsms";
|
||||
final String testLocationHistory = "com.android.test.location.history";
|
||||
final String testEuicc = "com.android.test.euicc";
|
||||
|
||||
ShadowSmsApplication.setDefaultSmsApplication(new ComponentName(testSms, "receiver"));
|
||||
ShadowDefaultDialerManager.setDefaultDialerApplication(testDialer);
|
||||
final ComponentInfo componentInfo = new ComponentInfo();
|
||||
componentInfo.packageName = testEuicc;
|
||||
ShadowEuiccConnector.setBestComponent(componentInfo);
|
||||
|
||||
// Spy the real context to mock LocationManager.
|
||||
Context spyContext = spy(RuntimeEnvironment.application);
|
||||
when(mLocationManager.getExtraLocationControllerPackage()).thenReturn(testLocationHistory);
|
||||
when(spyContext.getSystemService(Context.LOCATION_SERVICE)).thenReturn(mLocationManager);
|
||||
|
||||
ReflectionHelpers.setField(mProvider, "mContext", spyContext);
|
||||
|
||||
final Set<String> keepEnabledPackages = mProvider.getKeepEnabledPackages();
|
||||
|
||||
assertThat(keepEnabledPackages).contains(testEuicc);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Config(shadows = {ShadowSmsApplication.class, ShadowDefaultDialerManager.class})
|
||||
public void getKeepEnabledPackages_shouldContainSettingsIntelligence() {
|
||||
@@ -354,4 +391,23 @@ public final class ApplicationFeatureProviderImplTest {
|
||||
resolveInfo.activityInfo = activityInfo;
|
||||
return resolveInfo;
|
||||
}
|
||||
|
||||
@Implements(EuiccConnector.class)
|
||||
public static class ShadowEuiccConnector {
|
||||
|
||||
private static ComponentInfo sBestComponent;
|
||||
|
||||
@Implementation
|
||||
protected static ComponentInfo findBestComponent(PackageManager packageManager) {
|
||||
return sBestComponent;
|
||||
}
|
||||
|
||||
public static void setBestComponent(ComponentInfo componentInfo) {
|
||||
sBestComponent = componentInfo;
|
||||
}
|
||||
|
||||
public static void reset() {
|
||||
sBestComponent = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user