Add null check for vrManager
If VrManagerService is not started, vrManager will be null. Need
add check for it.
Test: robotests
Bug: 116427118
Change-Id: I899337bb5a996efffe82970fa690f2c5d59c1bb5
Merged-In: I899337bb5a996efffe82970fa690f2c5d59c1bb5
diff --git a/src/com/android/settings/display/BrightnessLevelPreferenceController.java b/src/com/android/settings/display/BrightnessLevelPreferenceController.java
index 4bb0a99..f45bde6 100644
--- a/src/com/android/settings/display/BrightnessLevelPreferenceController.java
+++ b/src/com/android/settings/display/BrightnessLevelPreferenceController.java
@@ -151,12 +151,20 @@
}
@VisibleForTesting
+ IVrManager safeGetVrManager() {
+ return IVrManager.Stub.asInterface(ServiceManager.getService(
+ Context.VR_SERVICE));
+ }
+
+ @VisibleForTesting
boolean isInVrMode() {
- try {
- return IVrManager.Stub.asInterface(ServiceManager.getService(Context.VR_SERVICE))
- .getVrModeState();
- } catch (RemoteException e) {
- Log.e(TAG, "Failed to check vr mode!", e);
+ IVrManager vrManager = safeGetVrManager();
+ if (vrManager != null) {
+ try {
+ return vrManager.getVrModeState();
+ } catch (RemoteException e) {
+ Log.e(TAG, "Failed to check vr mode!", e);
+ }
}
return false;
}
diff --git a/tests/robotests/src/com/android/settings/display/BrightnessLevelPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/BrightnessLevelPreferenceControllerTest.java
index e29ded0..ee20d57 100644
--- a/tests/robotests/src/com/android/settings/display/BrightnessLevelPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/display/BrightnessLevelPreferenceControllerTest.java
@@ -82,6 +82,12 @@
}
@Test
+ public void isInVrMode_noVrManager_shouldAlwaysReturnFalse() {
+ doReturn(null).when(mController).safeGetVrManager();
+ assertThat(mController.isInVrMode()).isFalse();
+ }
+
+ @Test
public void onStart_shouldRegisterObserver() {
BrightnessLevelPreferenceController controller =
new BrightnessLevelPreferenceController(mContext, null);