Remove VR features from apps

Bug: 260555143
Test: atest com.android.server.power
Change-Id: I7d1938363dacb06f93cea69672a710ccbb76012e
This commit is contained in:
Rupesh Bansal
2022-12-06 13:42:47 +00:00
parent 39b4cbbc1a
commit bc255db77a
3 changed files with 4 additions and 97 deletions

View File

@@ -30,15 +30,9 @@ import android.hardware.display.DisplayManager.DisplayListener;
import android.net.Uri; import android.net.Uri;
import android.os.Handler; import android.os.Handler;
import android.os.Looper; import android.os.Looper;
import android.os.PowerManager;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.provider.Settings.System; import android.provider.Settings.System;
import android.service.vr.IVrManager;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log;
import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference; import androidx.preference.Preference;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
@@ -58,11 +52,8 @@ public class BrightnessLevelPreferenceController extends AbstractPreferenceContr
private static final String TAG = "BrightnessPrefCtrl"; private static final String TAG = "BrightnessPrefCtrl";
private static final String KEY_BRIGHTNESS = "brightness"; private static final String KEY_BRIGHTNESS = "brightness";
private static final Uri BRIGHTNESS_FOR_VR_URI;
private static final Uri BRIGHTNESS_ADJ_URI; private static final Uri BRIGHTNESS_ADJ_URI;
private final float mMinVrBrightness;
private final float mMaxVrBrightness;
private final ContentResolver mContentResolver; private final ContentResolver mContentResolver;
private final Handler mHandler = new Handler(Looper.getMainLooper()); private final Handler mHandler = new Handler(Looper.getMainLooper());
private final DisplayManager mDisplayManager; private final DisplayManager mDisplayManager;
@@ -70,7 +61,6 @@ public class BrightnessLevelPreferenceController extends AbstractPreferenceContr
private Preference mPreference; private Preference mPreference;
static { static {
BRIGHTNESS_FOR_VR_URI = System.getUriFor(System.SCREEN_BRIGHTNESS_FOR_VR);
BRIGHTNESS_ADJ_URI = System.getUriFor(System.SCREEN_AUTO_BRIGHTNESS_ADJ); BRIGHTNESS_ADJ_URI = System.getUriFor(System.SCREEN_AUTO_BRIGHTNESS_ADJ);
} }
@@ -105,12 +95,6 @@ public class BrightnessLevelPreferenceController extends AbstractPreferenceContr
if (lifecycle != null) { if (lifecycle != null) {
lifecycle.addObserver(this); lifecycle.addObserver(this);
} }
final PowerManager powerManager = context.getSystemService(PowerManager.class);
mMinVrBrightness = powerManager.getBrightnessConstraint(
PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MINIMUM_VR);
mMaxVrBrightness = powerManager.getBrightnessConstraint(
PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MAXIMUM_VR);
mContentResolver = mContext.getContentResolver(); mContentResolver = mContext.getContentResolver();
} }
@@ -137,7 +121,6 @@ public class BrightnessLevelPreferenceController extends AbstractPreferenceContr
@Override @Override
public void onStart() { public void onStart() {
mContentResolver.registerContentObserver(BRIGHTNESS_FOR_VR_URI, false, mBrightnessObserver);
mContentResolver.registerContentObserver(BRIGHTNESS_ADJ_URI, false, mBrightnessObserver); mContentResolver.registerContentObserver(BRIGHTNESS_ADJ_URI, false, mBrightnessObserver);
mDisplayManager.registerDisplayListener(mDisplayListener, mHandler, mDisplayManager.registerDisplayListener(mDisplayListener, mHandler,
DisplayManager.EVENT_FLAG_DISPLAY_BRIGHTNESS); DisplayManager.EVENT_FLAG_DISPLAY_BRIGHTNESS);
@@ -174,16 +157,10 @@ public class BrightnessLevelPreferenceController extends AbstractPreferenceContr
private double getCurrentBrightness() { private double getCurrentBrightness() {
int value = 0; int value = 0;
if (isInVrMode()) { final BrightnessInfo info = mContext.getDisplay().getBrightnessInfo();
value = convertLinearToGammaFloat(System.getFloat(mContentResolver, if (info != null) {
System.SCREEN_BRIGHTNESS_FOR_VR_FLOAT, mMaxVrBrightness), value = convertLinearToGammaFloat(info.brightness, info.brightnessMinimum,
mMinVrBrightness, mMaxVrBrightness); info.brightnessMaximum);
} else {
final BrightnessInfo info = mContext.getDisplay().getBrightnessInfo();
if (info != null) {
value = convertLinearToGammaFloat(info.brightness, info.brightnessMinimum,
info.brightnessMaximum);
}
} }
return getPercentage(value, GAMMA_SPACE_MIN, GAMMA_SPACE_MAX); return getPercentage(value, GAMMA_SPACE_MIN, GAMMA_SPACE_MAX);
} }
@@ -197,23 +174,4 @@ public class BrightnessLevelPreferenceController extends AbstractPreferenceContr
} }
return (value - min) / (max - min); return (value - min) / (max - min);
} }
@VisibleForTesting
IVrManager safeGetVrManager() {
return IVrManager.Stub.asInterface(ServiceManager.getService(
Context.VR_SERVICE));
}
@VisibleForTesting
boolean isInVrMode() {
IVrManager vrManager = safeGetVrManager();
if (vrManager != null) {
try {
return vrManager.getVrModeState();
} catch (RemoteException e) {
Log.e(TAG, "Failed to check vr mode!", e);
}
}
return false;
}
} }

View File

@@ -21,7 +21,6 @@ import static android.content.Context.POWER_SERVICE;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy; import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
@@ -82,16 +81,11 @@ public class BrightnessLevelPreferenceControllerTest {
PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MINIMUM)).thenReturn(0.0f); PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MINIMUM)).thenReturn(0.0f);
when(mPowerManager.getBrightnessConstraint( when(mPowerManager.getBrightnessConstraint(
PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MAXIMUM)).thenReturn(1.0f); PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MAXIMUM)).thenReturn(1.0f);
when(mPowerManager.getBrightnessConstraint(
PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MINIMUM_VR)).thenReturn(0.0f);
when(mPowerManager.getBrightnessConstraint(
PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MAXIMUM_VR)).thenReturn(1.0f);
ShadowApplication.getInstance().setSystemService(POWER_SERVICE, ShadowApplication.getInstance().setSystemService(POWER_SERVICE,
mPowerManager); mPowerManager);
when(mScreen.findPreference(anyString())).thenReturn(mPreference); when(mScreen.findPreference(anyString())).thenReturn(mPreference);
when(mContext.getDisplay()).thenReturn(mDisplay); when(mContext.getDisplay()).thenReturn(mDisplay);
mController = spy(new BrightnessLevelPreferenceController(mContext, null)); mController = spy(new BrightnessLevelPreferenceController(mContext, null));
doReturn(false).when(mController).isInVrMode();
} }
@Test @Test
@@ -99,12 +93,6 @@ public class BrightnessLevelPreferenceControllerTest {
assertThat(mController.isAvailable()).isTrue(); assertThat(mController.isAvailable()).isTrue();
} }
@Test
public void isInVrMode_noVrManager_shouldAlwaysReturnFalse() {
doReturn(null).when(mController).safeGetVrManager();
assertThat(mController.isInVrMode()).isFalse();
}
@Test @Test
public void onStart_shouldRegisterObserver() { public void onStart_shouldRegisterObserver() {
BrightnessLevelPreferenceController controller = BrightnessLevelPreferenceController controller =
@@ -113,8 +101,6 @@ public class BrightnessLevelPreferenceControllerTest {
controller.onStart(); controller.onStart();
assertThat(shadowContentResolver.getContentObservers(
System.getUriFor(System.SCREEN_BRIGHTNESS_FOR_VR))).isNotEmpty();
assertThat(shadowContentResolver.getContentObservers( assertThat(shadowContentResolver.getContentObservers(
System.getUriFor(System.SCREEN_AUTO_BRIGHTNESS_ADJ))).isNotEmpty(); System.getUriFor(System.SCREEN_AUTO_BRIGHTNESS_ADJ))).isNotEmpty();
} }
@@ -129,8 +115,6 @@ public class BrightnessLevelPreferenceControllerTest {
controller.onStart(); controller.onStart();
controller.onStop(); controller.onStop();
assertThat(shadowContentResolver.getContentObservers(
System.getUriFor(System.SCREEN_BRIGHTNESS_FOR_VR_FLOAT))).isEmpty();
assertThat(shadowContentResolver.getContentObservers( assertThat(shadowContentResolver.getContentObservers(
System.getUriFor(System.SCREEN_AUTO_BRIGHTNESS_ADJ))).isEmpty(); System.getUriFor(System.SCREEN_AUTO_BRIGHTNESS_ADJ))).isEmpty();
} }
@@ -150,19 +134,8 @@ public class BrightnessLevelPreferenceControllerTest {
verify(mPreference).setSummary("87%"); verify(mPreference).setSummary("87%");
} }
@Test
public void updateState_inVrMode_shouldSetSummaryToVrBrightness() {
doReturn(true).when(mController).isInVrMode();
System.putFloat(mContentResolver, System.SCREEN_BRIGHTNESS_FOR_VR_FLOAT, 0.6f);
mController.updateState(mPreference);
verify(mPreference).setSummary("91%");
}
@Test @Test
public void updateState_autoBrightness_shouldSetSummaryToAutoBrightness() { public void updateState_autoBrightness_shouldSetSummaryToAutoBrightness() {
doReturn(false).when(mController).isInVrMode();
System.putInt(mContentResolver, System.SCREEN_BRIGHTNESS_MODE, System.putInt(mContentResolver, System.SCREEN_BRIGHTNESS_MODE,
System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC); System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
@@ -177,7 +150,6 @@ public class BrightnessLevelPreferenceControllerTest {
@Test @Test
public void updateState_manualBrightness_shouldSetSummaryToScreenBrightness() { public void updateState_manualBrightness_shouldSetSummaryToScreenBrightness() {
doReturn(false).when(mController).isInVrMode();
System.putInt(mContentResolver, System.SCREEN_BRIGHTNESS_MODE, System.putInt(mContentResolver, System.SCREEN_BRIGHTNESS_MODE,
System.SCREEN_BRIGHTNESS_MODE_MANUAL); System.SCREEN_BRIGHTNESS_MODE_MANUAL);
@@ -190,20 +162,6 @@ public class BrightnessLevelPreferenceControllerTest {
verify(mPreference).setSummary("87%"); verify(mPreference).setSummary("87%");
} }
@Test
public void updateState_brightnessOutOfRange_shouldSetSummaryInRange() {
// VR mode
doReturn(true).when(mController).isInVrMode();
System.putFloat(mContentResolver, System.SCREEN_BRIGHTNESS_FOR_VR_FLOAT, 1.05f);
mController.updateState(mPreference);
verify(mPreference).setSummary("100%");
System.putFloat(mContentResolver, System.SCREEN_BRIGHTNESS_FOR_VR_FLOAT, -20f);
mController.updateState(mPreference);
verify(mPreference).setSummary("0%");
}
@Test @Test
public void handlePreferenceTreeClick_transitionTypeNone_shouldPassToNextActivity() { public void handlePreferenceTreeClick_transitionTypeNone_shouldPassToNextActivity() {
final Activity activity = Robolectric.setupActivity(Activity.class); final Activity activity = Robolectric.setupActivity(Activity.class);

View File

@@ -35,13 +35,4 @@ public class ShadowPowerManager {
return 0; return 0;
} }
@Implementation
protected int getMinimumScreenBrightnessForVrSetting() {
return 0;
}
@Implementation
protected int getMaximumScreenBrightnessForVrSetting() {
return 0;
}
} }