Ensure FakeSensorManager returns a fake ProximitySensor.

Bug: 142293105
Test: atest SystemUITests
Change-Id: If6d4c51fe27cf279eed9b430ba1d82d78e919246
This commit is contained in:
Dave Mankoff
2019-10-18 12:38:21 -04:00
parent 00e36a17d0
commit d94c96914a
7 changed files with 30 additions and 13 deletions

View File

@@ -53,13 +53,15 @@ public class DozeFactory {
private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;
private final DockManager mDockManager;
private final IWallpaperManager mWallpaperManager;
private final ProximitySensor mProximitySensor;
@Inject
public DozeFactory(FalsingManager falsingManager, DozeLog dozeLog,
DozeParameters dozeParameters, BatteryController batteryController,
AsyncSensorManager asyncSensorManager, AlarmManager alarmManager,
WakefulnessLifecycle wakefulnessLifecycle, KeyguardUpdateMonitor keyguardUpdateMonitor,
DockManager dockManager, IWallpaperManager wallpaperManager) {
DockManager dockManager, IWallpaperManager wallpaperManager,
ProximitySensor proximitySensor) {
mFalsingManager = falsingManager;
mDozeLog = dozeLog;
mDozeParameters = dozeParameters;
@@ -70,6 +72,7 @@ public class DozeFactory {
mKeyguardUpdateMonitor = keyguardUpdateMonitor;
mDockManager = dockManager;
mWallpaperManager = wallpaperManager;
mProximitySensor = proximitySensor;
}
/** Creates a DozeMachine with its parts for {@code dozeService}. */
@@ -126,7 +129,7 @@ public class DozeFactory {
boolean allowPulseTriggers = true;
return new DozeTriggers(context, machine, host, alarmManager, config, params,
sensorManager, handler, wakeLock, allowPulseTriggers, dockManager,
new ProximitySensor(context, sensorManager), dozeLog);
mProximitySensor, dozeLog);
}

View File

@@ -153,7 +153,7 @@ public class DozeSensors {
dozeLog),
};
mProximitySensor = new ProximitySensor(context, sensorManager);
mProximitySensor = new ProximitySensor(context.getResources(), sensorManager);
mProximitySensor.register(
proximityEvent -> {

View File

@@ -16,7 +16,7 @@
package com.android.systemui.util.sensors;
import android.content.Context;
import android.content.res.Resources;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
@@ -25,6 +25,7 @@ import android.os.Handler;
import android.util.Log;
import com.android.internal.annotations.VisibleForTesting;
import com.android.systemui.DependencyProvider;
import com.android.systemui.R;
import java.util.ArrayList;
@@ -64,9 +65,10 @@ public class ProximitySensor {
};
@Inject
public ProximitySensor(Context context, AsyncSensorManager sensorManager) {
public ProximitySensor(@DependencyProvider.MainResources Resources resources,
AsyncSensorManager sensorManager) {
mSensorManager = sensorManager;
Sensor sensor = findBrightnessSensor(context);
Sensor sensor = findBrightnessSensor(resources);
if (sensor == null) {
mUsingBrightnessSensor = false;
@@ -106,8 +108,8 @@ public class ProximitySensor {
registerInternal();
}
private Sensor findBrightnessSensor(Context context) {
String sensorType = context.getString(R.string.doze_brightness_sensor_type);
private Sensor findBrightnessSensor(Resources resources) {
String sensorType = resources.getString(R.string.doze_brightness_sensor_type);
List<Sensor> sensorList = mSensorManager.getSensorList(Sensor.TYPE_ALL);
Sensor sensor = null;
for (Sensor s : sensorList) {

View File

@@ -83,7 +83,7 @@ public class DozeTriggersTest extends SysuiTestCase {
mDockManagerFake = mock(DockManager.class);
AsyncSensorManager asyncSensorManager =
new AsyncSensorManager(mSensors, null, new Handler());
mProximitySensor = new FakeProximitySensor(getContext(), asyncSensorManager);
mProximitySensor = new FakeProximitySensor(getContext().getResources(), asyncSensorManager);
mTriggers = new DozeTriggers(mContext, mMachine, mHost, mAlarmManager, config, parameters,
asyncSensorManager, Handler.createAsync(Looper.myLooper()), wakeLock, true,

View File

@@ -16,14 +16,14 @@
package com.android.systemui.util.sensors;
import android.content.Context;
import android.content.res.Resources;
public class FakeProximitySensor extends ProximitySensor {
private boolean mAvailable;
private boolean mPaused;
public FakeProximitySensor(Context context, AsyncSensorManager sensorManager) {
super(context, sensorManager);
public FakeProximitySensor(Resources resources, AsyncSensorManager sensorManager) {
super(resources, sensorManager);
mAvailable = true;
}

View File

@@ -92,6 +92,18 @@ public class FakeSensorManager extends SensorManager {
if (s != null) {
return s;
}
switch(type) {
case Sensor.TYPE_PROXIMITY:
try {
return createSensor(Sensor.TYPE_PROXIMITY, null);
} catch (Exception e) {
// fall through
}
break;
default:
break;
}
// Our mock sensors aren't wakeup, and it's a pain to create them that way. Instead, just
// return non-wakeup sensors if we can't find a wakeup sensor.
return getDefaultSensor(type, false /* wakeup */);

View File

@@ -47,7 +47,7 @@ public class ProximitySensorTest extends SysuiTestCase {
AsyncSensorManager asyncSensorManager = new AsyncSensorManager(
sensorManager, null, new Handler());
mFakeProximitySensor = sensorManager.getFakeProximitySensor();
mProximitySensor = new ProximitySensor(getContext(), asyncSensorManager);
mProximitySensor = new ProximitySensor(getContext().getResources(), asyncSensorManager);
}
@Test