Merge "Use testable components to cleanup display tests a bit." into udc-dev am: 804ba1d45a
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/22162924 Change-Id: I1ef9ee75c6b34daaa45b92c6fba881751dd06ff0 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -31,13 +31,10 @@ import static org.mockito.Mockito.clearInvocations;
|
|||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
import static org.mockito.Mockito.never;
|
import static org.mockito.Mockito.never;
|
||||||
import static org.mockito.Mockito.reset;
|
import static org.mockito.Mockito.reset;
|
||||||
import static org.mockito.Mockito.spy;
|
|
||||||
import static org.mockito.Mockito.times;
|
import static org.mockito.Mockito.times;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
import android.content.ContentResolver;
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.ContextWrapper;
|
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.hardware.Sensor;
|
import android.hardware.Sensor;
|
||||||
import android.hardware.SensorEventListener;
|
import android.hardware.SensorEventListener;
|
||||||
@@ -48,18 +45,18 @@ import android.os.Handler;
|
|||||||
import android.os.Looper;
|
import android.os.Looper;
|
||||||
import android.os.PowerManager;
|
import android.os.PowerManager;
|
||||||
import android.os.SystemProperties;
|
import android.os.SystemProperties;
|
||||||
import android.os.UserHandle;
|
|
||||||
import android.os.test.TestLooper;
|
import android.os.test.TestLooper;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
|
import android.testing.TestableContext;
|
||||||
import android.util.FloatProperty;
|
import android.util.FloatProperty;
|
||||||
import android.view.Display;
|
import android.view.Display;
|
||||||
import android.view.DisplayInfo;
|
import android.view.DisplayInfo;
|
||||||
|
|
||||||
import androidx.test.core.app.ApplicationProvider;
|
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||||
import androidx.test.filters.SmallTest;
|
import androidx.test.filters.SmallTest;
|
||||||
import androidx.test.runner.AndroidJUnit4;
|
import androidx.test.platform.app.InstrumentationRegistry;
|
||||||
|
|
||||||
import com.android.dx.mockito.inline.extended.ExtendedMockito;
|
import com.android.server.ExtendedMockitoRule;
|
||||||
import com.android.server.LocalServices;
|
import com.android.server.LocalServices;
|
||||||
import com.android.server.am.BatteryStatsService;
|
import com.android.server.am.BatteryStatsService;
|
||||||
import com.android.server.display.RampAnimator.DualRampAnimator;
|
import com.android.server.display.RampAnimator.DualRampAnimator;
|
||||||
@@ -72,12 +69,12 @@ import com.android.server.testutils.OffsettableClock;
|
|||||||
|
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
|
import org.junit.Rule;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.ArgumentCaptor;
|
import org.mockito.ArgumentCaptor;
|
||||||
import org.mockito.Captor;
|
import org.mockito.Captor;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.MockitoSession;
|
|
||||||
import org.mockito.quality.Strictness;
|
import org.mockito.quality.Strictness;
|
||||||
import org.mockito.stubbing.Answer;
|
import org.mockito.stubbing.Answer;
|
||||||
|
|
||||||
@@ -95,11 +92,9 @@ public final class DisplayPowerController2Test {
|
|||||||
private static final String SECOND_FOLLOWER_UNIQUE_DISPLAY_ID = "unique_id_789";
|
private static final String SECOND_FOLLOWER_UNIQUE_DISPLAY_ID = "unique_id_789";
|
||||||
private static final float PROX_SENSOR_MAX_RANGE = 5;
|
private static final float PROX_SENSOR_MAX_RANGE = 5;
|
||||||
|
|
||||||
private MockitoSession mSession;
|
|
||||||
private OffsettableClock mClock;
|
private OffsettableClock mClock;
|
||||||
private TestLooper mTestLooper;
|
private TestLooper mTestLooper;
|
||||||
private Handler mHandler;
|
private Handler mHandler;
|
||||||
private Context mContextSpy;
|
|
||||||
private DisplayPowerControllerHolder mHolder;
|
private DisplayPowerControllerHolder mHolder;
|
||||||
private Sensor mProxSensor;
|
private Sensor mProxSensor;
|
||||||
|
|
||||||
@@ -116,40 +111,38 @@ public final class DisplayPowerController2Test {
|
|||||||
@Mock
|
@Mock
|
||||||
private PowerManager mPowerManagerMock;
|
private PowerManager mPowerManagerMock;
|
||||||
@Mock
|
@Mock
|
||||||
private Resources mResourcesMock;
|
|
||||||
@Mock
|
|
||||||
private ColorDisplayService.ColorDisplayServiceInternal mCdsiMock;
|
private ColorDisplayService.ColorDisplayServiceInternal mCdsiMock;
|
||||||
|
|
||||||
@Captor
|
@Captor
|
||||||
private ArgumentCaptor<SensorEventListener> mSensorEventListenerCaptor;
|
private ArgumentCaptor<SensorEventListener> mSensorEventListenerCaptor;
|
||||||
|
|
||||||
|
@Rule
|
||||||
|
public final TestableContext mContext = new TestableContext(
|
||||||
|
InstrumentationRegistry.getInstrumentation().getContext());
|
||||||
|
|
||||||
|
@Rule
|
||||||
|
public final ExtendedMockitoRule mExtendedMockitoRule =
|
||||||
|
new ExtendedMockitoRule.Builder(this)
|
||||||
|
.setStrictness(Strictness.LENIENT)
|
||||||
|
.spyStatic(SystemProperties.class)
|
||||||
|
.spyStatic(BatteryStatsService.class)
|
||||||
|
.build();
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
mSession = ExtendedMockito.mockitoSession()
|
|
||||||
.initMocks(this)
|
|
||||||
.strictness(Strictness.LENIENT)
|
|
||||||
.spyStatic(SystemProperties.class)
|
|
||||||
.spyStatic(LocalServices.class)
|
|
||||||
.spyStatic(BatteryStatsService.class)
|
|
||||||
.spyStatic(Settings.System.class)
|
|
||||||
.startMocking();
|
|
||||||
mContextSpy = spy(new ContextWrapper(ApplicationProvider.getApplicationContext()));
|
|
||||||
mClock = new OffsettableClock.Stopped();
|
mClock = new OffsettableClock.Stopped();
|
||||||
mTestLooper = new TestLooper(mClock::now);
|
mTestLooper = new TestLooper(mClock::now);
|
||||||
mHandler = new Handler(mTestLooper.getLooper());
|
mHandler = new Handler(mTestLooper.getLooper());
|
||||||
addLocalServiceMock(WindowManagerPolicy.class, mWindowManagerPolicyMock);
|
|
||||||
|
|
||||||
when(mContextSpy.getSystemService(eq(PowerManager.class))).thenReturn(mPowerManagerMock);
|
addLocalServiceMock(WindowManagerPolicy.class, mWindowManagerPolicyMock);
|
||||||
when(mContextSpy.getResources()).thenReturn(mResourcesMock);
|
addLocalServiceMock(ColorDisplayService.ColorDisplayServiceInternal.class,
|
||||||
|
mCdsiMock);
|
||||||
|
|
||||||
|
mContext.addMockSystemService(PowerManager.class, mPowerManagerMock);
|
||||||
|
|
||||||
doAnswer((Answer<Void>) invocationOnMock -> null).when(() ->
|
doAnswer((Answer<Void>) invocationOnMock -> null).when(() ->
|
||||||
SystemProperties.set(anyString(), any()));
|
SystemProperties.set(anyString(), any()));
|
||||||
doAnswer((Answer<ColorDisplayService.ColorDisplayServiceInternal>) invocationOnMock ->
|
|
||||||
mCdsiMock).when(() -> LocalServices.getService(
|
|
||||||
ColorDisplayService.ColorDisplayServiceInternal.class));
|
|
||||||
doAnswer((Answer<Void>) invocationOnMock -> null).when(BatteryStatsService::getService);
|
doAnswer((Answer<Void>) invocationOnMock -> null).when(BatteryStatsService::getService);
|
||||||
doAnswer((Answer<Boolean>) invocationOnMock -> true).when(() ->
|
|
||||||
Settings.System.putFloatForUser(any(), any(), anyFloat(), anyInt()));
|
|
||||||
|
|
||||||
setUpSensors();
|
setUpSensors();
|
||||||
mHolder = createDisplayPowerController(DISPLAY_ID, UNIQUE_ID);
|
mHolder = createDisplayPowerController(DISPLAY_ID, UNIQUE_ID);
|
||||||
@@ -157,8 +150,8 @@ public final class DisplayPowerController2Test {
|
|||||||
|
|
||||||
@After
|
@After
|
||||||
public void tearDown() {
|
public void tearDown() {
|
||||||
mSession.finishMocking();
|
|
||||||
LocalServices.removeServiceForTest(WindowManagerPolicy.class);
|
LocalServices.removeServiceForTest(WindowManagerPolicy.class);
|
||||||
|
LocalServices.removeServiceForTest(ColorDisplayService.ColorDisplayServiceInternal.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -419,11 +412,9 @@ public final class DisplayPowerController2Test {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testDisplayBrightnessFollowers_AutomaticBrightness() {
|
public void testDisplayBrightnessFollowers_AutomaticBrightness() {
|
||||||
doAnswer((Answer<Integer>) invocationOnMock ->
|
Settings.System.putInt(mContext.getContentResolver(),
|
||||||
Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC)
|
Settings.System.SCREEN_BRIGHTNESS_MODE,
|
||||||
.when(() -> Settings.System.getIntForUser(any(ContentResolver.class),
|
Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
|
||||||
eq(Settings.System.SCREEN_BRIGHTNESS_MODE), anyInt(),
|
|
||||||
eq(UserHandle.USER_CURRENT)));
|
|
||||||
final float brightness = 0.4f;
|
final float brightness = 0.4f;
|
||||||
final float nits = 300;
|
final float nits = 300;
|
||||||
final float ambientLux = 3000;
|
final float ambientLux = 3000;
|
||||||
@@ -540,11 +531,9 @@ public final class DisplayPowerController2Test {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSetScreenOffBrightnessSensorEnabled_DisplayIsOff() {
|
public void testSetScreenOffBrightnessSensorEnabled_DisplayIsOff() {
|
||||||
doAnswer((Answer<Integer>) invocationOnMock ->
|
Settings.System.putInt(mContext.getContentResolver(),
|
||||||
Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC)
|
Settings.System.SCREEN_BRIGHTNESS_MODE,
|
||||||
.when(() -> Settings.System.getIntForUser(any(ContentResolver.class),
|
Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
|
||||||
eq(Settings.System.SCREEN_BRIGHTNESS_MODE), anyInt(),
|
|
||||||
eq(UserHandle.USER_CURRENT)));
|
|
||||||
|
|
||||||
DisplayPowerRequest dpr = new DisplayPowerRequest();
|
DisplayPowerRequest dpr = new DisplayPowerRequest();
|
||||||
dpr.policy = DisplayPowerRequest.POLICY_OFF;
|
dpr.policy = DisplayPowerRequest.POLICY_OFF;
|
||||||
@@ -575,17 +564,14 @@ public final class DisplayPowerController2Test {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSetScreenOffBrightnessSensorEnabled_DisplayIsInDoze() {
|
public void testSetScreenOffBrightnessSensorEnabled_DisplayIsInDoze() {
|
||||||
doAnswer((Answer<Integer>) invocationOnMock ->
|
Settings.System.putInt(mContext.getContentResolver(),
|
||||||
Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC)
|
Settings.System.SCREEN_BRIGHTNESS_MODE,
|
||||||
.when(() -> Settings.System.getIntForUser(any(ContentResolver.class),
|
Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
|
||||||
eq(Settings.System.SCREEN_BRIGHTNESS_MODE), anyInt(),
|
|
||||||
eq(UserHandle.USER_CURRENT)));
|
|
||||||
|
|
||||||
DisplayPowerRequest dpr = new DisplayPowerRequest();
|
DisplayPowerRequest dpr = new DisplayPowerRequest();
|
||||||
dpr.policy = DisplayPowerRequest.POLICY_DOZE;
|
dpr.policy = DisplayPowerRequest.POLICY_DOZE;
|
||||||
when(mResourcesMock.getBoolean(
|
mContext.getOrCreateTestableResources().addOverride(
|
||||||
com.android.internal.R.bool.config_allowAutoBrightnessWhileDozing))
|
com.android.internal.R.bool.config_allowAutoBrightnessWhileDozing, true);
|
||||||
.thenReturn(true);
|
|
||||||
mHolder.dpc.requestPowerState(dpr, /* waitForNegativeProximity= */ false);
|
mHolder.dpc.requestPowerState(dpr, /* waitForNegativeProximity= */ false);
|
||||||
advanceTime(1); // Run updatePowerState
|
advanceTime(1); // Run updatePowerState
|
||||||
|
|
||||||
@@ -613,11 +599,9 @@ public final class DisplayPowerController2Test {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSetScreenOffBrightnessSensorDisabled_AutoBrightnessIsDisabled() {
|
public void testSetScreenOffBrightnessSensorDisabled_AutoBrightnessIsDisabled() {
|
||||||
doAnswer((Answer<Integer>) invocationOnMock ->
|
Settings.System.putInt(mContext.getContentResolver(),
|
||||||
Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL)
|
Settings.System.SCREEN_BRIGHTNESS_MODE,
|
||||||
.when(() -> Settings.System.getIntForUser(any(ContentResolver.class),
|
Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
|
||||||
eq(Settings.System.SCREEN_BRIGHTNESS_MODE), anyInt(),
|
|
||||||
eq(UserHandle.USER_CURRENT)));
|
|
||||||
|
|
||||||
DisplayPowerRequest dpr = new DisplayPowerRequest();
|
DisplayPowerRequest dpr = new DisplayPowerRequest();
|
||||||
dpr.policy = DisplayPowerRequest.POLICY_OFF;
|
dpr.policy = DisplayPowerRequest.POLICY_OFF;
|
||||||
@@ -630,11 +614,9 @@ public final class DisplayPowerController2Test {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSetScreenOffBrightnessSensorDisabled_DisplayIsDisabled() {
|
public void testSetScreenOffBrightnessSensorDisabled_DisplayIsDisabled() {
|
||||||
doAnswer((Answer<Integer>) invocationOnMock ->
|
Settings.System.putInt(mContext.getContentResolver(),
|
||||||
Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC)
|
Settings.System.SCREEN_BRIGHTNESS_MODE,
|
||||||
.when(() -> Settings.System.getIntForUser(any(ContentResolver.class),
|
Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
|
||||||
eq(Settings.System.SCREEN_BRIGHTNESS_MODE), anyInt(),
|
|
||||||
eq(UserHandle.USER_CURRENT)));
|
|
||||||
mHolder = createDisplayPowerController(DISPLAY_ID, UNIQUE_ID, /* isEnabled= */ false);
|
mHolder = createDisplayPowerController(DISPLAY_ID, UNIQUE_ID, /* isEnabled= */ false);
|
||||||
|
|
||||||
DisplayPowerRequest dpr = new DisplayPowerRequest();
|
DisplayPowerRequest dpr = new DisplayPowerRequest();
|
||||||
@@ -687,9 +669,9 @@ public final class DisplayPowerController2Test {
|
|||||||
public void testBrightnessNitsPersistWhenDisplayDeviceChanges() {
|
public void testBrightnessNitsPersistWhenDisplayDeviceChanges() {
|
||||||
float brightness = 0.3f;
|
float brightness = 0.3f;
|
||||||
float nits = 500;
|
float nits = 500;
|
||||||
when(mResourcesMock.getBoolean(
|
mContext.getOrCreateTestableResources().addOverride(
|
||||||
com.android.internal.R.bool.config_persistBrightnessNitsForDefaultDisplay))
|
com.android.internal.R.bool.config_persistBrightnessNitsForDefaultDisplay,
|
||||||
.thenReturn(true);
|
true);
|
||||||
mHolder = createDisplayPowerController(DISPLAY_ID, UNIQUE_ID);
|
mHolder = createDisplayPowerController(DISPLAY_ID, UNIQUE_ID);
|
||||||
when(mHolder.automaticBrightnessController.convertToNits(brightness)).thenReturn(nits);
|
when(mHolder.automaticBrightnessController.convertToNits(brightness)).thenReturn(nits);
|
||||||
|
|
||||||
@@ -809,7 +791,7 @@ public final class DisplayPowerController2Test {
|
|||||||
setUpDisplay(displayId, uniqueId, display, device, config, isEnabled);
|
setUpDisplay(displayId, uniqueId, display, device, config, isEnabled);
|
||||||
|
|
||||||
final DisplayPowerController2 dpc = new DisplayPowerController2(
|
final DisplayPowerController2 dpc = new DisplayPowerController2(
|
||||||
mContextSpy, injector, mDisplayPowerCallbacksMock, mHandler,
|
mContext, injector, mDisplayPowerCallbacksMock, mHandler,
|
||||||
mSensorManagerMock, mDisplayBlankerMock, display,
|
mSensorManagerMock, mDisplayBlankerMock, display,
|
||||||
mBrightnessTrackerMock, brightnessSetting, () -> {},
|
mBrightnessTrackerMock, brightnessSetting, () -> {},
|
||||||
hbmMetadata, /* bootCompleted= */ false);
|
hbmMetadata, /* bootCompleted= */ false);
|
||||||
|
|||||||
@@ -31,13 +31,10 @@ import static org.mockito.Mockito.clearInvocations;
|
|||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
import static org.mockito.Mockito.never;
|
import static org.mockito.Mockito.never;
|
||||||
import static org.mockito.Mockito.reset;
|
import static org.mockito.Mockito.reset;
|
||||||
import static org.mockito.Mockito.spy;
|
|
||||||
import static org.mockito.Mockito.times;
|
import static org.mockito.Mockito.times;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
import android.content.ContentResolver;
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.ContextWrapper;
|
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.hardware.Sensor;
|
import android.hardware.Sensor;
|
||||||
import android.hardware.SensorEventListener;
|
import android.hardware.SensorEventListener;
|
||||||
@@ -48,18 +45,18 @@ import android.os.Handler;
|
|||||||
import android.os.Looper;
|
import android.os.Looper;
|
||||||
import android.os.PowerManager;
|
import android.os.PowerManager;
|
||||||
import android.os.SystemProperties;
|
import android.os.SystemProperties;
|
||||||
import android.os.UserHandle;
|
|
||||||
import android.os.test.TestLooper;
|
import android.os.test.TestLooper;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
|
import android.testing.TestableContext;
|
||||||
import android.util.FloatProperty;
|
import android.util.FloatProperty;
|
||||||
import android.view.Display;
|
import android.view.Display;
|
||||||
import android.view.DisplayInfo;
|
import android.view.DisplayInfo;
|
||||||
|
|
||||||
import androidx.test.core.app.ApplicationProvider;
|
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||||
import androidx.test.filters.SmallTest;
|
import androidx.test.filters.SmallTest;
|
||||||
import androidx.test.runner.AndroidJUnit4;
|
import androidx.test.platform.app.InstrumentationRegistry;
|
||||||
|
|
||||||
import com.android.dx.mockito.inline.extended.ExtendedMockito;
|
import com.android.server.ExtendedMockitoRule;
|
||||||
import com.android.server.LocalServices;
|
import com.android.server.LocalServices;
|
||||||
import com.android.server.am.BatteryStatsService;
|
import com.android.server.am.BatteryStatsService;
|
||||||
import com.android.server.display.RampAnimator.DualRampAnimator;
|
import com.android.server.display.RampAnimator.DualRampAnimator;
|
||||||
@@ -72,12 +69,12 @@ import com.android.server.testutils.OffsettableClock;
|
|||||||
|
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
|
import org.junit.Rule;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.ArgumentCaptor;
|
import org.mockito.ArgumentCaptor;
|
||||||
import org.mockito.Captor;
|
import org.mockito.Captor;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.MockitoSession;
|
|
||||||
import org.mockito.quality.Strictness;
|
import org.mockito.quality.Strictness;
|
||||||
import org.mockito.stubbing.Answer;
|
import org.mockito.stubbing.Answer;
|
||||||
|
|
||||||
@@ -95,11 +92,9 @@ public final class DisplayPowerControllerTest {
|
|||||||
private static final String SECOND_FOLLOWER_UNIQUE_DISPLAY_ID = "unique_id_789";
|
private static final String SECOND_FOLLOWER_UNIQUE_DISPLAY_ID = "unique_id_789";
|
||||||
private static final float PROX_SENSOR_MAX_RANGE = 5;
|
private static final float PROX_SENSOR_MAX_RANGE = 5;
|
||||||
|
|
||||||
private MockitoSession mSession;
|
|
||||||
private OffsettableClock mClock;
|
private OffsettableClock mClock;
|
||||||
private TestLooper mTestLooper;
|
private TestLooper mTestLooper;
|
||||||
private Handler mHandler;
|
private Handler mHandler;
|
||||||
private Context mContextSpy;
|
|
||||||
private DisplayPowerControllerHolder mHolder;
|
private DisplayPowerControllerHolder mHolder;
|
||||||
private Sensor mProxSensor;
|
private Sensor mProxSensor;
|
||||||
|
|
||||||
@@ -116,41 +111,38 @@ public final class DisplayPowerControllerTest {
|
|||||||
@Mock
|
@Mock
|
||||||
private PowerManager mPowerManagerMock;
|
private PowerManager mPowerManagerMock;
|
||||||
@Mock
|
@Mock
|
||||||
private Resources mResourcesMock;
|
|
||||||
@Mock
|
|
||||||
private ColorDisplayService.ColorDisplayServiceInternal mCdsiMock;
|
private ColorDisplayService.ColorDisplayServiceInternal mCdsiMock;
|
||||||
|
|
||||||
@Captor
|
@Captor
|
||||||
private ArgumentCaptor<SensorEventListener> mSensorEventListenerCaptor;
|
private ArgumentCaptor<SensorEventListener> mSensorEventListenerCaptor;
|
||||||
|
|
||||||
|
@Rule
|
||||||
|
public final TestableContext mContext = new TestableContext(
|
||||||
|
InstrumentationRegistry.getInstrumentation().getContext());
|
||||||
|
|
||||||
|
@Rule
|
||||||
|
public final ExtendedMockitoRule mExtendedMockitoRule =
|
||||||
|
new ExtendedMockitoRule.Builder(this)
|
||||||
|
.setStrictness(Strictness.LENIENT)
|
||||||
|
.spyStatic(SystemProperties.class)
|
||||||
|
.spyStatic(BatteryStatsService.class)
|
||||||
|
.build();
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
mSession = ExtendedMockito.mockitoSession()
|
|
||||||
.initMocks(this)
|
|
||||||
.strictness(Strictness.LENIENT)
|
|
||||||
.spyStatic(SystemProperties.class)
|
|
||||||
.spyStatic(LocalServices.class)
|
|
||||||
.spyStatic(BatteryStatsService.class)
|
|
||||||
.spyStatic(Settings.System.class)
|
|
||||||
.startMocking();
|
|
||||||
mContextSpy = spy(new ContextWrapper(ApplicationProvider.getApplicationContext()));
|
|
||||||
mClock = new OffsettableClock.Stopped();
|
mClock = new OffsettableClock.Stopped();
|
||||||
mTestLooper = new TestLooper(mClock::now);
|
mTestLooper = new TestLooper(mClock::now);
|
||||||
mHandler = new Handler(mTestLooper.getLooper());
|
mHandler = new Handler(mTestLooper.getLooper());
|
||||||
|
|
||||||
addLocalServiceMock(WindowManagerPolicy.class, mWindowManagerPolicyMock);
|
addLocalServiceMock(WindowManagerPolicy.class, mWindowManagerPolicyMock);
|
||||||
|
addLocalServiceMock(ColorDisplayService.ColorDisplayServiceInternal.class,
|
||||||
|
mCdsiMock);
|
||||||
|
|
||||||
when(mContextSpy.getSystemService(eq(PowerManager.class))).thenReturn(mPowerManagerMock);
|
mContext.addMockSystemService(PowerManager.class, mPowerManagerMock);
|
||||||
when(mContextSpy.getResources()).thenReturn(mResourcesMock);
|
|
||||||
|
|
||||||
doAnswer((Answer<Void>) invocationOnMock -> null).when(() ->
|
doAnswer((Answer<Void>) invocationOnMock -> null).when(() ->
|
||||||
SystemProperties.set(anyString(), any()));
|
SystemProperties.set(anyString(), any()));
|
||||||
doAnswer((Answer<ColorDisplayService.ColorDisplayServiceInternal>) invocationOnMock ->
|
|
||||||
mCdsiMock).when(() -> LocalServices.getService(
|
|
||||||
ColorDisplayService.ColorDisplayServiceInternal.class));
|
|
||||||
doAnswer((Answer<Void>) invocationOnMock -> null).when(BatteryStatsService::getService);
|
doAnswer((Answer<Void>) invocationOnMock -> null).when(BatteryStatsService::getService);
|
||||||
doAnswer((Answer<Boolean>) invocationOnMock -> true).when(() ->
|
|
||||||
Settings.System.putFloatForUser(any(), any(), anyFloat(), anyInt()));
|
|
||||||
|
|
||||||
setUpSensors();
|
setUpSensors();
|
||||||
mHolder = createDisplayPowerController(DISPLAY_ID, UNIQUE_ID);
|
mHolder = createDisplayPowerController(DISPLAY_ID, UNIQUE_ID);
|
||||||
@@ -158,8 +150,8 @@ public final class DisplayPowerControllerTest {
|
|||||||
|
|
||||||
@After
|
@After
|
||||||
public void tearDown() {
|
public void tearDown() {
|
||||||
mSession.finishMocking();
|
|
||||||
LocalServices.removeServiceForTest(WindowManagerPolicy.class);
|
LocalServices.removeServiceForTest(WindowManagerPolicy.class);
|
||||||
|
LocalServices.removeServiceForTest(ColorDisplayService.ColorDisplayServiceInternal.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -422,11 +414,9 @@ public final class DisplayPowerControllerTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testDisplayBrightnessFollowers_AutomaticBrightness() {
|
public void testDisplayBrightnessFollowers_AutomaticBrightness() {
|
||||||
doAnswer((Answer<Integer>) invocationOnMock ->
|
Settings.System.putInt(mContext.getContentResolver(),
|
||||||
Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC)
|
Settings.System.SCREEN_BRIGHTNESS_MODE,
|
||||||
.when(() -> Settings.System.getIntForUser(any(ContentResolver.class),
|
Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
|
||||||
eq(Settings.System.SCREEN_BRIGHTNESS_MODE), anyInt(),
|
|
||||||
eq(UserHandle.USER_CURRENT)));
|
|
||||||
final float brightness = 0.4f;
|
final float brightness = 0.4f;
|
||||||
final float nits = 300;
|
final float nits = 300;
|
||||||
final float ambientLux = 3000;
|
final float ambientLux = 3000;
|
||||||
@@ -544,11 +534,9 @@ public final class DisplayPowerControllerTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSetScreenOffBrightnessSensorEnabled_DisplayIsOff() {
|
public void testSetScreenOffBrightnessSensorEnabled_DisplayIsOff() {
|
||||||
doAnswer((Answer<Integer>) invocationOnMock ->
|
Settings.System.putInt(mContext.getContentResolver(),
|
||||||
Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC)
|
Settings.System.SCREEN_BRIGHTNESS_MODE,
|
||||||
.when(() -> Settings.System.getIntForUser(any(ContentResolver.class),
|
Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
|
||||||
eq(Settings.System.SCREEN_BRIGHTNESS_MODE), anyInt(),
|
|
||||||
eq(UserHandle.USER_CURRENT)));
|
|
||||||
|
|
||||||
DisplayPowerRequest dpr = new DisplayPowerRequest();
|
DisplayPowerRequest dpr = new DisplayPowerRequest();
|
||||||
dpr.policy = DisplayPowerRequest.POLICY_OFF;
|
dpr.policy = DisplayPowerRequest.POLICY_OFF;
|
||||||
@@ -579,17 +567,14 @@ public final class DisplayPowerControllerTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSetScreenOffBrightnessSensorEnabled_DisplayIsInDoze() {
|
public void testSetScreenOffBrightnessSensorEnabled_DisplayIsInDoze() {
|
||||||
doAnswer((Answer<Integer>) invocationOnMock ->
|
Settings.System.putInt(mContext.getContentResolver(),
|
||||||
Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC)
|
Settings.System.SCREEN_BRIGHTNESS_MODE,
|
||||||
.when(() -> Settings.System.getIntForUser(any(ContentResolver.class),
|
Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
|
||||||
eq(Settings.System.SCREEN_BRIGHTNESS_MODE), anyInt(),
|
|
||||||
eq(UserHandle.USER_CURRENT)));
|
|
||||||
|
|
||||||
DisplayPowerRequest dpr = new DisplayPowerRequest();
|
DisplayPowerRequest dpr = new DisplayPowerRequest();
|
||||||
dpr.policy = DisplayPowerRequest.POLICY_DOZE;
|
dpr.policy = DisplayPowerRequest.POLICY_DOZE;
|
||||||
when(mResourcesMock.getBoolean(
|
mContext.getOrCreateTestableResources().addOverride(
|
||||||
com.android.internal.R.bool.config_allowAutoBrightnessWhileDozing))
|
com.android.internal.R.bool.config_allowAutoBrightnessWhileDozing, true);
|
||||||
.thenReturn(true);
|
|
||||||
mHolder.dpc.requestPowerState(dpr, /* waitForNegativeProximity= */ false);
|
mHolder.dpc.requestPowerState(dpr, /* waitForNegativeProximity= */ false);
|
||||||
advanceTime(1); // Run updatePowerState
|
advanceTime(1); // Run updatePowerState
|
||||||
|
|
||||||
@@ -617,11 +602,9 @@ public final class DisplayPowerControllerTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSetScreenOffBrightnessSensorDisabled_AutoBrightnessIsDisabled() {
|
public void testSetScreenOffBrightnessSensorDisabled_AutoBrightnessIsDisabled() {
|
||||||
doAnswer((Answer<Integer>) invocationOnMock ->
|
Settings.System.putInt(mContext.getContentResolver(),
|
||||||
Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL)
|
Settings.System.SCREEN_BRIGHTNESS_MODE,
|
||||||
.when(() -> Settings.System.getIntForUser(any(ContentResolver.class),
|
Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
|
||||||
eq(Settings.System.SCREEN_BRIGHTNESS_MODE), anyInt(),
|
|
||||||
eq(UserHandle.USER_CURRENT)));
|
|
||||||
|
|
||||||
DisplayPowerRequest dpr = new DisplayPowerRequest();
|
DisplayPowerRequest dpr = new DisplayPowerRequest();
|
||||||
dpr.policy = DisplayPowerRequest.POLICY_OFF;
|
dpr.policy = DisplayPowerRequest.POLICY_OFF;
|
||||||
@@ -634,11 +617,10 @@ public final class DisplayPowerControllerTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSetScreenOffBrightnessSensorDisabled_DisplayIsDisabled() {
|
public void testSetScreenOffBrightnessSensorDisabled_DisplayIsDisabled() {
|
||||||
doAnswer((Answer<Integer>) invocationOnMock ->
|
Settings.System.putInt(mContext.getContentResolver(),
|
||||||
Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC)
|
Settings.System.SCREEN_BRIGHTNESS_MODE,
|
||||||
.when(() -> Settings.System.getIntForUser(any(ContentResolver.class),
|
Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
|
||||||
eq(Settings.System.SCREEN_BRIGHTNESS_MODE), anyInt(),
|
|
||||||
eq(UserHandle.USER_CURRENT)));
|
|
||||||
mHolder = createDisplayPowerController(DISPLAY_ID, UNIQUE_ID, /* isEnabled= */ false);
|
mHolder = createDisplayPowerController(DISPLAY_ID, UNIQUE_ID, /* isEnabled= */ false);
|
||||||
|
|
||||||
DisplayPowerRequest dpr = new DisplayPowerRequest();
|
DisplayPowerRequest dpr = new DisplayPowerRequest();
|
||||||
@@ -691,9 +673,10 @@ public final class DisplayPowerControllerTest {
|
|||||||
public void testBrightnessNitsPersistWhenDisplayDeviceChanges() {
|
public void testBrightnessNitsPersistWhenDisplayDeviceChanges() {
|
||||||
float brightness = 0.3f;
|
float brightness = 0.3f;
|
||||||
float nits = 500;
|
float nits = 500;
|
||||||
when(mResourcesMock.getBoolean(
|
mContext.getOrCreateTestableResources().addOverride(
|
||||||
com.android.internal.R.bool.config_persistBrightnessNitsForDefaultDisplay))
|
com.android.internal.R.bool.config_persistBrightnessNitsForDefaultDisplay,
|
||||||
.thenReturn(true);
|
true);
|
||||||
|
|
||||||
mHolder = createDisplayPowerController(DISPLAY_ID, UNIQUE_ID);
|
mHolder = createDisplayPowerController(DISPLAY_ID, UNIQUE_ID);
|
||||||
when(mHolder.automaticBrightnessController.convertToNits(brightness)).thenReturn(nits);
|
when(mHolder.automaticBrightnessController.convertToNits(brightness)).thenReturn(nits);
|
||||||
|
|
||||||
@@ -812,7 +795,7 @@ public final class DisplayPowerControllerTest {
|
|||||||
setUpDisplay(displayId, uniqueId, display, device, config, isEnabled);
|
setUpDisplay(displayId, uniqueId, display, device, config, isEnabled);
|
||||||
|
|
||||||
final DisplayPowerController dpc = new DisplayPowerController(
|
final DisplayPowerController dpc = new DisplayPowerController(
|
||||||
mContextSpy, injector, mDisplayPowerCallbacksMock, mHandler,
|
mContext, injector, mDisplayPowerCallbacksMock, mHandler,
|
||||||
mSensorManagerMock, mDisplayBlankerMock, display,
|
mSensorManagerMock, mDisplayBlankerMock, display,
|
||||||
mBrightnessTrackerMock, brightnessSetting, () -> {},
|
mBrightnessTrackerMock, brightnessSetting, () -> {},
|
||||||
hbmMetadata, /* bootCompleted= */ false);
|
hbmMetadata, /* bootCompleted= */ false);
|
||||||
|
|||||||
Reference in New Issue
Block a user