diff --git a/src/com/android/settings/display/BrightnessLevelPreferenceController.java b/src/com/android/settings/display/BrightnessLevelPreferenceController.java index be79f66b556..07882d84881 100644 --- a/src/com/android/settings/display/BrightnessLevelPreferenceController.java +++ b/src/com/android/settings/display/BrightnessLevelPreferenceController.java @@ -150,13 +150,21 @@ public class BrightnessLevelPreferenceController extends AbstractPreferenceContr return (value - min) / (max - min); } + @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 b758531fb49..6932d6d00c0 100644 --- a/tests/robotests/src/com/android/settings/display/BrightnessLevelPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/display/BrightnessLevelPreferenceControllerTest.java @@ -81,6 +81,12 @@ public class BrightnessLevelPreferenceControllerTest { assertThat(mController.isAvailable()).isTrue(); } + @Test + public void isInVrMode_noVrManager_shouldAlwaysReturnFalse() { + doReturn(null).when(mController).safeGetVrManager(); + assertThat(mController.isInVrMode()).isFalse(); + } + @Test public void onStart_shouldRegisterObserver() { BrightnessLevelPreferenceController controller =