diff --git a/src/com/android/settings/development/MockLocationAppPreferenceController.java b/src/com/android/settings/development/MockLocationAppPreferenceController.java index 45d6be8c682..48038436559 100644 --- a/src/com/android/settings/development/MockLocationAppPreferenceController.java +++ b/src/com/android/settings/development/MockLocationAppPreferenceController.java @@ -27,6 +27,7 @@ import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.text.TextUtils; +import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; import com.android.settings.R; @@ -86,6 +87,12 @@ public class MockLocationAppPreferenceController extends DeveloperOptionsPrefere return true; } + @Override + public void onDeveloperOptionsDisabled() { + super.onDeveloperOptionsDisabled(); + removeAllMockLocations(); + } + private void updateMockLocation() { final String mockLocationApp = getCurrentMockLocationApp(); @@ -151,7 +158,8 @@ public class MockLocationAppPreferenceController extends DeveloperOptionsPrefere } } - private String getCurrentMockLocationApp() { + @VisibleForTesting + String getCurrentMockLocationApp() { final List packageOps = mAppsOpsManager.getPackagesForOps( MOCK_LOCATION_APP_OPS); if (packageOps != null) { diff --git a/tests/robotests/src/com/android/settings/development/MockLocationAppPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/MockLocationAppPreferenceControllerTest.java index 0a8f7d6aaa2..504909e7995 100644 --- a/tests/robotests/src/com/android/settings/development/MockLocationAppPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/development/MockLocationAppPreferenceControllerTest.java @@ -1,7 +1,6 @@ package com.android.settings.development; -import static com.android.settings.development.DevelopmentOptionsActivityRequestCodes - .REQUEST_MOCK_LOCATION_APP; +import static com.android.settings.development.DevelopmentOptionsActivityRequestCodes.REQUEST_MOCK_LOCATION_APP; import static com.google.common.truth.Truth.assertThat; @@ -20,7 +19,6 @@ import android.content.Context; import android.content.Intent; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; -import android.util.Pair; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; @@ -145,6 +143,15 @@ public class MockLocationAppPreferenceControllerTest { assertThat(mController.handlePreferenceTreeClick(mPreference)).isFalse(); } + @Test + public void onDeveloperOptionsDisabled_currentMockLocationApp_shouldBeNull() { + mController.onDeveloperOptionsDisabled(); + + final String appName = mController.getCurrentMockLocationApp(); + + assertThat(appName).isNull(); + } + private AppOpsManager.OpEntry createOpEntry(int opMode) { return new OpEntry(0, opMode, Collections.emptyMap()); }