Merge "Make location history package not disableable."

This commit is contained in:
TreeHugger Robot
2018-12-15 05:10:30 +00:00
committed by Android (Google) Code Review
2 changed files with 23 additions and 3 deletions

View File

@@ -25,6 +25,7 @@ import android.content.pm.IPackageManager;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo; import android.content.pm.ResolveInfo;
import android.content.pm.UserInfo; import android.content.pm.UserInfo;
import android.location.LocationManager;
import android.os.RemoteException; import android.os.RemoteException;
import android.os.UserManager; import android.os.UserManager;
import android.telecom.DefaultDialerManager; import android.telecom.DefaultDialerManager;
@@ -142,6 +143,12 @@ public class ApplicationFeatureProviderImpl implements ApplicationFeatureProvide
// Keep Settings intelligence enabled, otherwise search feature will be disabled. // Keep Settings intelligence enabled, otherwise search feature will be disabled.
keepEnabledPackages.add( keepEnabledPackages.add(
mContext.getString(R.string.config_settingsintelligence_package_name)); mContext.getString(R.string.config_settingsintelligence_package_name));
final LocationManager locationManager =
(LocationManager) mContext.getSystemService(Context.LOCATION_SERVICE);
final String locationHistoryPackage = locationManager.getLocationControllerExtraPackage();
if (locationHistoryPackage != null) {
keepEnabledPackages.add(locationHistoryPackage);
}
return keepEnabledPackages; return keepEnabledPackages;
} }

View File

@@ -18,6 +18,7 @@ package com.android.settings.applications;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import android.app.admin.DevicePolicyManager; import android.app.admin.DevicePolicyManager;
@@ -30,6 +31,7 @@ import android.content.pm.IPackageManager;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo; import android.content.pm.ResolveInfo;
import android.content.pm.UserInfo; import android.content.pm.UserInfo;
import android.location.LocationManager;
import android.os.Build; import android.os.Build;
import android.os.UserHandle; import android.os.UserHandle;
import android.os.UserManager; import android.os.UserManager;
@@ -83,6 +85,8 @@ public final class ApplicationFeatureProviderImplTest {
private IPackageManager mPackageManagerService; private IPackageManager mPackageManagerService;
@Mock @Mock
private DevicePolicyManager mDevicePolicyManager; private DevicePolicyManager mDevicePolicyManager;
@Mock
private LocationManager mLocationManager;
private ApplicationFeatureProvider mProvider; private ApplicationFeatureProvider mProvider;
@@ -95,6 +99,7 @@ public final class ApplicationFeatureProviderImplTest {
when(mContext.getApplicationContext()).thenReturn(mContext); when(mContext.getApplicationContext()).thenReturn(mContext);
when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager); when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
when(mContext.getSystemService(Context.LOCATION_SERVICE)).thenReturn(mLocationManager);
mProvider = new ApplicationFeatureProviderImpl(mContext, mPackageManager, mProvider = new ApplicationFeatureProviderImpl(mContext, mPackageManager,
mPackageManagerService, mDevicePolicyManager); mPackageManagerService, mDevicePolicyManager);
@@ -255,19 +260,27 @@ public final class ApplicationFeatureProviderImplTest {
@Test @Test
@Config(shadows = {ShadowSmsApplication.class, ShadowDefaultDialerManager.class}) @Config(shadows = {ShadowSmsApplication.class, ShadowDefaultDialerManager.class})
public void getKeepEnabledPackages_shouldContainDefaultPhoneAndSms() { public void getKeepEnabledPackages_shouldContainDefaultPhoneAndSmsAndLocationHistory() {
final String testDialer = "com.android.test.defaultdialer"; final String testDialer = "com.android.test.defaultdialer";
final String testSms = "com.android.test.defaultsms"; final String testSms = "com.android.test.defaultsms";
final String testLocationHistory = "com.android.test.location.history";
final String settingsIntelligence = RuntimeEnvironment.application.getString( final String settingsIntelligence = RuntimeEnvironment.application.getString(
R.string.config_settingsintelligence_package_name); R.string.config_settingsintelligence_package_name);
ShadowSmsApplication.setDefaultSmsApplication(new ComponentName(testSms, "receiver")); ShadowSmsApplication.setDefaultSmsApplication(new ComponentName(testSms, "receiver"));
ShadowDefaultDialerManager.setDefaultDialerApplication(testDialer); ShadowDefaultDialerManager.setDefaultDialerApplication(testDialer);
ReflectionHelpers.setField(mProvider, "mContext", RuntimeEnvironment.application);
// Spy the real context to mock LocationManager.
Context spyContext = spy(RuntimeEnvironment.application);
when(mLocationManager.getLocationControllerExtraPackage()).thenReturn(testLocationHistory);
when(spyContext.getSystemService(Context.LOCATION_SERVICE)).thenReturn(mLocationManager);
ReflectionHelpers.setField(mProvider, "mContext", spyContext);
final Set<String> keepEnabledPackages = mProvider.getKeepEnabledPackages(); final Set<String> keepEnabledPackages = mProvider.getKeepEnabledPackages();
final List<String> expectedPackages = Arrays.asList(testDialer, testSms, final List<String> expectedPackages = Arrays.asList(testDialer, testSms,
settingsIntelligence); settingsIntelligence, testLocationHistory);
assertThat(keepEnabledPackages).containsExactlyElementsIn(expectedPackages); assertThat(keepEnabledPackages).containsExactlyElementsIn(expectedPackages);
} }