From bad519d0a45a3059886fa3f0f9ec7df4e2e1d5ef Mon Sep 17 00:00:00 2001 From: Rick Yiu Date: Tue, 28 Aug 2018 14:06:46 +0800 Subject: [PATCH] Add null check for vrManager If VrManagerService is not started, vrManager will be null. Need add check for it. Test: robotests Bug: 112064298 Change-Id: I899337bb5a996efffe82970fa690f2c5d59c1bb5 --- .../BrightnessLevelPreferenceController.java | 18 +++++++++++++----- ...rightnessLevelPreferenceControllerTest.java | 6 ++++++ 2 files changed, 19 insertions(+), 5 deletions(-) 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 =