diff --git a/src/com/android/settings/display/BrightnessLevelPreferenceController.java b/src/com/android/settings/display/BrightnessLevelPreferenceController.java index 5fd29d1ad14..407cf366929 100644 --- a/src/com/android/settings/display/BrightnessLevelPreferenceController.java +++ b/src/com/android/settings/display/BrightnessLevelPreferenceController.java @@ -151,13 +151,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 36190e8facb..0ea6d8f48a0 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 @@ 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 =