Fixed Settings Crash
Fixes: 137319680
Test: Manual
Change-Id: I0e22bd561787b1a141bf2e3060b23fe70a6d96ce
diff --git a/src/com/android/settings/homepage/contextualcards/slices/FaceSetupSlice.java b/src/com/android/settings/homepage/contextualcards/slices/FaceSetupSlice.java
index 3153950..112f655 100644
--- a/src/com/android/settings/homepage/contextualcards/slices/FaceSetupSlice.java
+++ b/src/com/android/settings/homepage/contextualcards/slices/FaceSetupSlice.java
@@ -54,7 +54,7 @@
@Override
public Slice getSlice() {
- final FaceManager faceManager = mContext.getSystemService(FaceManager.class);
+ final FaceManager faceManager = Utils.getFaceManagerOrNull(mContext);
if (faceManager == null || faceManager.hasEnrolledTemplates(UserHandle.myUserId())) {
return null;
}
diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/FaceSetupSliceTest.java b/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/FaceSetupSliceTest.java
index 5e364c0..71b5c7a 100644
--- a/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/FaceSetupSliceTest.java
+++ b/tests/robotests/src/com/android/settings/homepage/contextualcards/slices/FaceSetupSliceTest.java
@@ -23,6 +23,7 @@
import static com.google.common.truth.Truth.assertThat;
import android.content.Context;
+import android.content.pm.PackageManager;
import android.hardware.face.FaceManager;
import android.os.UserHandle;
@@ -31,6 +32,7 @@
import androidx.slice.widget.SliceLiveData;
import com.android.settings.R;
+import com.android.settings.Utils;
import org.junit.Before;
import org.junit.Test;
@@ -38,22 +40,24 @@
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
-
@RunWith(RobolectricTestRunner.class)
public class FaceSetupSliceTest {
private Context mContext;
+ private PackageManager mPackageManager;
@Before
public void setUp() {
// Set-up specs for SliceMetadata.
SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS);
mContext = spy(RuntimeEnvironment.application);
+ mPackageManager = mock(PackageManager.class);
+ when(mContext.getPackageManager()).thenReturn(mPackageManager);
}
@Test
public void getSlice_noFaceManager_shouldReturnNull() {
- when(mContext.getSystemService(FaceManager.class)).thenReturn(null);
+ when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_FACE)).thenReturn(false);
final FaceSetupSlice setupSlice = new FaceSetupSlice(mContext);
assertThat(setupSlice.getSlice()).isNull();
}
@@ -61,8 +65,9 @@
@Test
public void getSlice_faceEnrolled_shouldReturnNull() {
final FaceManager faceManager = mock(FaceManager.class);
- when(mContext.getSystemService(FaceManager.class)).thenReturn(faceManager);
+ when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_FACE)).thenReturn(true);
when(faceManager.hasEnrolledTemplates(UserHandle.myUserId())).thenReturn(true);
+ when(mContext.getSystemService(Context.FACE_SERVICE)).thenReturn(faceManager);
final FaceSetupSlice setupSlice = new FaceSetupSlice(mContext);
assertThat(setupSlice.getSlice()).isNull();
}
@@ -70,8 +75,9 @@
@Test
public void getSlice_faceNotEnrolled_shouldReturnNonNull() {
final FaceManager faceManager = mock(FaceManager.class);
- when(mContext.getSystemService(FaceManager.class)).thenReturn(faceManager);
+ when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_FACE)).thenReturn(true);
when(faceManager.hasEnrolledTemplates(UserHandle.myUserId())).thenReturn(false);
+ when(mContext.getSystemService(Context.FACE_SERVICE)).thenReturn(faceManager);
final FaceSetupSlice setupSlice = new FaceSetupSlice(mContext);
assertThat(setupSlice.getSlice()).isNotNull();
}