Merge "Don't turn on prox when wirelessly charging." into rvc-d1-dev

This commit is contained in:
Lucas Dupin
2020-07-21 00:25:17 +00:00
committed by Android (Google) Code Review
10 changed files with 92 additions and 28 deletions

View File

@@ -22,7 +22,6 @@ import android.content.Context;
import android.hardware.SensorManager; import android.hardware.SensorManager;
import android.net.Uri; import android.net.Uri;
import android.provider.DeviceConfig; import android.provider.DeviceConfig;
import android.util.DisplayMetrics;
import android.view.MotionEvent; import android.view.MotionEvent;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
@@ -62,7 +61,7 @@ public class FalsingManagerProxy implements FalsingManager, Dumpable {
private static final String PROXIMITY_SENSOR_TAG = "FalsingManager"; private static final String PROXIMITY_SENSOR_TAG = "FalsingManager";
private final ProximitySensor mProximitySensor; private final ProximitySensor mProximitySensor;
private final DisplayMetrics mDisplayMetrics; private final FalsingDataProvider mFalsingDataProvider;
private FalsingManager mInternalFalsingManager; private FalsingManager mInternalFalsingManager;
private DeviceConfig.OnPropertiesChangedListener mDeviceConfigListener; private DeviceConfig.OnPropertiesChangedListener mDeviceConfigListener;
private final DeviceConfigProxy mDeviceConfig; private final DeviceConfigProxy mDeviceConfig;
@@ -74,18 +73,19 @@ public class FalsingManagerProxy implements FalsingManager, Dumpable {
@Inject @Inject
FalsingManagerProxy(Context context, PluginManager pluginManager, @Main Executor executor, FalsingManagerProxy(Context context, PluginManager pluginManager, @Main Executor executor,
DisplayMetrics displayMetrics, ProximitySensor proximitySensor, ProximitySensor proximitySensor,
DeviceConfigProxy deviceConfig, DockManager dockManager, DeviceConfigProxy deviceConfig, DockManager dockManager,
KeyguardUpdateMonitor keyguardUpdateMonitor, KeyguardUpdateMonitor keyguardUpdateMonitor,
DumpManager dumpManager, DumpManager dumpManager,
@UiBackground Executor uiBgExecutor, @UiBackground Executor uiBgExecutor,
StatusBarStateController statusBarStateController) { StatusBarStateController statusBarStateController,
mDisplayMetrics = displayMetrics; FalsingDataProvider falsingDataProvider) {
mProximitySensor = proximitySensor; mProximitySensor = proximitySensor;
mDockManager = dockManager; mDockManager = dockManager;
mKeyguardUpdateMonitor = keyguardUpdateMonitor; mKeyguardUpdateMonitor = keyguardUpdateMonitor;
mUiBgExecutor = uiBgExecutor; mUiBgExecutor = uiBgExecutor;
mStatusBarStateController = statusBarStateController; mStatusBarStateController = statusBarStateController;
mFalsingDataProvider = falsingDataProvider;
mProximitySensor.setTag(PROXIMITY_SENSOR_TAG); mProximitySensor.setTag(PROXIMITY_SENSOR_TAG);
mProximitySensor.setDelay(SensorManager.SENSOR_DELAY_GAME); mProximitySensor.setDelay(SensorManager.SENSOR_DELAY_GAME);
mDeviceConfig = deviceConfig; mDeviceConfig = deviceConfig;
@@ -143,7 +143,7 @@ public class FalsingManagerProxy implements FalsingManager, Dumpable {
mInternalFalsingManager = new FalsingManagerImpl(context, mUiBgExecutor); mInternalFalsingManager = new FalsingManagerImpl(context, mUiBgExecutor);
} else { } else {
mInternalFalsingManager = new BrightLineFalsingManager( mInternalFalsingManager = new BrightLineFalsingManager(
new FalsingDataProvider(mDisplayMetrics), mFalsingDataProvider,
mKeyguardUpdateMonitor, mKeyguardUpdateMonitor,
mProximitySensor, mProximitySensor,
mDeviceConfig, mDeviceConfig,

View File

@@ -132,7 +132,9 @@ public class BrightLineFalsingManager implements FalsingManager {
} }
private void registerSensors() { private void registerSensors() {
mProximitySensor.register(mSensorEventListener); if (!mDataProvider.isWirelessCharging()) {
mProximitySensor.register(mSensorEventListener);
}
} }
private void unregisterSensors() { private void unregisterSensors() {

View File

@@ -22,10 +22,13 @@ import android.view.MotionEvent.PointerCoords;
import android.view.MotionEvent.PointerProperties; import android.view.MotionEvent.PointerProperties;
import com.android.systemui.classifier.Classifier; import com.android.systemui.classifier.Classifier;
import com.android.systemui.statusbar.policy.BatteryController;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.inject.Inject;
/** /**
* Acts as a cache and utility class for FalsingClassifiers. * Acts as a cache and utility class for FalsingClassifiers.
*/ */
@@ -36,6 +39,7 @@ public class FalsingDataProvider {
private final int mWidthPixels; private final int mWidthPixels;
private final int mHeightPixels; private final int mHeightPixels;
private final BatteryController mBatteryController;
private final float mXdpi; private final float mXdpi;
private final float mYdpi; private final float mYdpi;
@@ -50,11 +54,13 @@ public class FalsingDataProvider {
private MotionEvent mFirstRecentMotionEvent; private MotionEvent mFirstRecentMotionEvent;
private MotionEvent mLastMotionEvent; private MotionEvent mLastMotionEvent;
public FalsingDataProvider(DisplayMetrics displayMetrics) { @Inject
public FalsingDataProvider(DisplayMetrics displayMetrics, BatteryController batteryController) {
mXdpi = displayMetrics.xdpi; mXdpi = displayMetrics.xdpi;
mYdpi = displayMetrics.ydpi; mYdpi = displayMetrics.ydpi;
mWidthPixels = displayMetrics.widthPixels; mWidthPixels = displayMetrics.widthPixels;
mHeightPixels = displayMetrics.heightPixels; mHeightPixels = displayMetrics.heightPixels;
mBatteryController = batteryController;
FalsingClassifier.logInfo("xdpi, ydpi: " + getXdpi() + ", " + getYdpi()); FalsingClassifier.logInfo("xdpi, ydpi: " + getXdpi() + ", " + getYdpi());
FalsingClassifier.logInfo("width, height: " + getWidthPixels() + ", " + getHeightPixels()); FalsingClassifier.logInfo("width, height: " + getWidthPixels() + ", " + getHeightPixels());
@@ -177,6 +183,11 @@ public class FalsingDataProvider {
return mLastMotionEvent.getY() < mFirstRecentMotionEvent.getY(); return mLastMotionEvent.getY() < mFirstRecentMotionEvent.getY();
} }
/** Returns true if phone is being charged without a cable. */
boolean isWirelessCharging() {
return mBatteryController.isWirelessCharging();
}
private void recalculateData() { private void recalculateData() {
if (!mDirty) { if (!mDirty) {
return; return;

View File

@@ -399,10 +399,13 @@ public class DozeTriggers implements DozeMachine.Part {
break; break;
case DOZE_PULSING: case DOZE_PULSING:
case DOZE_PULSING_BRIGHT: case DOZE_PULSING_BRIGHT:
case DOZE_AOD_DOCKED:
mWantProx = true; mWantProx = true;
mWantTouchScreenSensors = false; mWantTouchScreenSensors = false;
break; break;
case DOZE_AOD_DOCKED:
mWantProx = false;
mWantTouchScreenSensors = false;
break;
case DOZE_PULSE_DONE: case DOZE_PULSE_DONE:
mDozeSensors.requestTemporaryDisable(); mDozeSensors.requestTemporaryDisable();
// A pulse will temporarily disable sensors that require a touch screen. // A pulse will temporarily disable sensors that require a touch screen.

View File

@@ -140,6 +140,10 @@ public abstract class SysuiTestCase {
return null; return null;
} }
protected FakeBroadcastDispatcher getFakeBroadcastDispatcher() {
return mFakeBroadcastDispatcher;
}
public SysuiTestableContext getContext() { public SysuiTestableContext getContext() {
return mContext; return mContext;
} }

View File

@@ -29,8 +29,8 @@ import androidx.test.filters.SmallTest;
import com.android.internal.logging.testing.UiEventLoggerFake; import com.android.internal.logging.testing.UiEventLoggerFake;
import com.android.keyguard.KeyguardUpdateMonitor; import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.classifier.brightline.BrightLineFalsingManager; import com.android.systemui.classifier.brightline.BrightLineFalsingManager;
import com.android.systemui.classifier.brightline.FalsingDataProvider;
import com.android.systemui.dock.DockManager; import com.android.systemui.dock.DockManager;
import com.android.systemui.dock.DockManagerFake; import com.android.systemui.dock.DockManagerFake;
import com.android.systemui.dump.DumpManager; import com.android.systemui.dump.DumpManager;
@@ -42,6 +42,8 @@ import com.android.systemui.util.DeviceConfigProxyFake;
import com.android.systemui.util.concurrency.FakeExecutor; import com.android.systemui.util.concurrency.FakeExecutor;
import com.android.systemui.util.sensors.ProximitySensor; import com.android.systemui.util.sensors.ProximitySensor;
import com.android.systemui.util.time.FakeSystemClock; import com.android.systemui.util.time.FakeSystemClock;
import com.android.systemui.utils.leaks.FakeBatteryController;
import com.android.systemui.utils.leaks.LeakCheckedTest;
import org.junit.After; import org.junit.After;
import org.junit.Before; import org.junit.Before;
@@ -52,7 +54,7 @@ import org.mockito.MockitoAnnotations;
@SmallTest @SmallTest
@RunWith(AndroidTestingRunner.class) @RunWith(AndroidTestingRunner.class)
public class FalsingManagerProxyTest extends SysuiTestCase { public class FalsingManagerProxyTest extends LeakCheckedTest {
@Mock(stubOnly = true) @Mock(stubOnly = true)
PluginManager mPluginManager; PluginManager mPluginManager;
@Mock(stubOnly = true) @Mock(stubOnly = true)
@@ -62,7 +64,7 @@ public class FalsingManagerProxyTest extends SysuiTestCase {
@Mock DumpManager mDumpManager; @Mock DumpManager mDumpManager;
private FalsingManagerProxy mProxy; private FalsingManagerProxy mProxy;
private DeviceConfigProxy mDeviceConfig; private DeviceConfigProxy mDeviceConfig;
private DisplayMetrics mDisplayMetrics = new DisplayMetrics(); private FalsingDataProvider mFalsingDataProvider;
private FakeExecutor mExecutor = new FakeExecutor(new FakeSystemClock()); private FakeExecutor mExecutor = new FakeExecutor(new FakeSystemClock());
private FakeExecutor mUiBgExecutor = new FakeExecutor(new FakeSystemClock()); private FakeExecutor mUiBgExecutor = new FakeExecutor(new FakeSystemClock());
private DockManager mDockManager = new DockManagerFake(); private DockManager mDockManager = new DockManagerFake();
@@ -75,6 +77,8 @@ public class FalsingManagerProxyTest extends SysuiTestCase {
mDeviceConfig = new DeviceConfigProxyFake(); mDeviceConfig = new DeviceConfigProxyFake();
mDeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI, mDeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI,
BRIGHTLINE_FALSING_MANAGER_ENABLED, "false", false); BRIGHTLINE_FALSING_MANAGER_ENABLED, "false", false);
mFalsingDataProvider = new FalsingDataProvider(
new DisplayMetrics(), new FakeBatteryController(getLeakCheck()));
} }
@After @After
@@ -86,9 +90,9 @@ public class FalsingManagerProxyTest extends SysuiTestCase {
@Test @Test
public void test_brightLineFalsingManagerDisabled() { public void test_brightLineFalsingManagerDisabled() {
mProxy = new FalsingManagerProxy(getContext(), mPluginManager, mExecutor, mDisplayMetrics, mProxy = new FalsingManagerProxy(getContext(), mPluginManager, mExecutor,
mProximitySensor, mDeviceConfig, mDockManager, mKeyguardUpdateMonitor, mProximitySensor, mDeviceConfig, mDockManager, mKeyguardUpdateMonitor,
mDumpManager, mUiBgExecutor, mStatusBarStateController); mDumpManager, mUiBgExecutor, mStatusBarStateController, mFalsingDataProvider);
assertThat(mProxy.getInternalFalsingManager(), instanceOf(FalsingManagerImpl.class)); assertThat(mProxy.getInternalFalsingManager(), instanceOf(FalsingManagerImpl.class));
} }
@@ -97,17 +101,17 @@ public class FalsingManagerProxyTest extends SysuiTestCase {
mDeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI, mDeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI,
BRIGHTLINE_FALSING_MANAGER_ENABLED, "true", false); BRIGHTLINE_FALSING_MANAGER_ENABLED, "true", false);
mExecutor.runAllReady(); mExecutor.runAllReady();
mProxy = new FalsingManagerProxy(getContext(), mPluginManager, mExecutor, mDisplayMetrics, mProxy = new FalsingManagerProxy(getContext(), mPluginManager, mExecutor,
mProximitySensor, mDeviceConfig, mDockManager, mKeyguardUpdateMonitor, mProximitySensor, mDeviceConfig, mDockManager, mKeyguardUpdateMonitor,
mDumpManager, mUiBgExecutor, mStatusBarStateController); mDumpManager, mUiBgExecutor, mStatusBarStateController, mFalsingDataProvider);
assertThat(mProxy.getInternalFalsingManager(), instanceOf(BrightLineFalsingManager.class)); assertThat(mProxy.getInternalFalsingManager(), instanceOf(BrightLineFalsingManager.class));
} }
@Test @Test
public void test_brightLineFalsingManagerToggled() throws InterruptedException { public void test_brightLineFalsingManagerToggled() throws InterruptedException {
mProxy = new FalsingManagerProxy(getContext(), mPluginManager, mExecutor, mDisplayMetrics, mProxy = new FalsingManagerProxy(getContext(), mPluginManager, mExecutor,
mProximitySensor, mDeviceConfig, mDockManager, mKeyguardUpdateMonitor, mProximitySensor, mDeviceConfig, mDockManager, mKeyguardUpdateMonitor,
mDumpManager, mUiBgExecutor, mStatusBarStateController); mDumpManager, mUiBgExecutor, mStatusBarStateController, mFalsingDataProvider);
assertThat(mProxy.getInternalFalsingManager(), instanceOf(FalsingManagerImpl.class)); assertThat(mProxy.getInternalFalsingManager(), instanceOf(FalsingManagerImpl.class));
mDeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI, mDeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI,

View File

@@ -17,6 +17,7 @@
package com.android.systemui.classifier.brightline; package com.android.systemui.classifier.brightline;
import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.reset; import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
@@ -27,7 +28,6 @@ import android.util.DisplayMetrics;
import com.android.internal.logging.testing.UiEventLoggerFake; import com.android.internal.logging.testing.UiEventLoggerFake;
import com.android.keyguard.KeyguardUpdateMonitor; import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.dock.DockManager; import com.android.systemui.dock.DockManager;
import com.android.systemui.dock.DockManagerFake; import com.android.systemui.dock.DockManagerFake;
import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.StatusBarState;
@@ -37,6 +37,8 @@ import com.android.systemui.util.DeviceConfigProxy;
import com.android.systemui.util.DeviceConfigProxyFake; import com.android.systemui.util.DeviceConfigProxyFake;
import com.android.systemui.util.sensors.ProximitySensor; import com.android.systemui.util.sensors.ProximitySensor;
import com.android.systemui.util.sensors.ThresholdSensor; import com.android.systemui.util.sensors.ThresholdSensor;
import com.android.systemui.utils.leaks.FakeBatteryController;
import com.android.systemui.utils.leaks.LeakCheckedTest;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@@ -47,7 +49,7 @@ import org.mockito.MockitoAnnotations;
@SmallTest @SmallTest
@RunWith(AndroidTestingRunner.class) @RunWith(AndroidTestingRunner.class)
@TestableLooper.RunWithLooper @TestableLooper.RunWithLooper
public class BrightLineFalsingManagerTest extends SysuiTestCase { public class BrightLineFalsingManagerTest extends LeakCheckedTest {
@Mock @Mock
@@ -55,23 +57,26 @@ public class BrightLineFalsingManagerTest extends SysuiTestCase {
@Mock @Mock
private ProximitySensor mProximitySensor; private ProximitySensor mProximitySensor;
private SysuiStatusBarStateController mStatusBarStateController; private SysuiStatusBarStateController mStatusBarStateController;
private FalsingDataProvider mFalsingDataProvider;
private FakeBatteryController mFakeBatteryController;
private BrightLineFalsingManager mFalsingManager; private BrightLineFalsingManager mFalsingManager;
@Before @Before
public void setup() { public void setup() {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
mFakeBatteryController = new FakeBatteryController(getLeakCheck());
DisplayMetrics dm = new DisplayMetrics(); DisplayMetrics dm = new DisplayMetrics();
dm.xdpi = 100; dm.xdpi = 100;
dm.ydpi = 100; dm.ydpi = 100;
dm.widthPixels = 100; dm.widthPixels = 100;
dm.heightPixels = 100; dm.heightPixels = 100;
FalsingDataProvider falsingDataProvider = new FalsingDataProvider(dm); mFalsingDataProvider = new FalsingDataProvider(dm, mFakeBatteryController);
DeviceConfigProxy deviceConfigProxy = new DeviceConfigProxyFake(); DeviceConfigProxy deviceConfigProxy = new DeviceConfigProxyFake();
DockManager dockManager = new DockManagerFake(); DockManager dockManager = new DockManagerFake();
mStatusBarStateController = new StatusBarStateControllerImpl(new UiEventLoggerFake()); mStatusBarStateController = new StatusBarStateControllerImpl(new UiEventLoggerFake());
mStatusBarStateController.setState(StatusBarState.KEYGUARD); mStatusBarStateController.setState(StatusBarState.KEYGUARD);
mFalsingManager = new BrightLineFalsingManager(falsingDataProvider, mFalsingManager = new BrightLineFalsingManager(mFalsingDataProvider,
mKeyguardUpdateMonitor, mProximitySensor, deviceConfigProxy, dockManager, mKeyguardUpdateMonitor, mProximitySensor, deviceConfigProxy, dockManager,
mStatusBarStateController); mStatusBarStateController);
} }
@@ -82,6 +87,13 @@ public class BrightLineFalsingManagerTest extends SysuiTestCase {
verify(mProximitySensor).register(any(ThresholdSensor.Listener.class)); verify(mProximitySensor).register(any(ThresholdSensor.Listener.class));
} }
@Test
public void testNoProximityWhenWirelessCharging() {
mFakeBatteryController.setWirelessCharging(true);
mFalsingManager.onScreenTurningOn();
verify(mProximitySensor, never()).register(any(ThresholdSensor.Listener.class));
}
@Test @Test
public void testUnregisterSensor() { public void testUnregisterSensor() {
mFalsingManager.onScreenTurningOn(); mFalsingManager.onScreenTurningOn();

View File

@@ -21,29 +21,30 @@ import static com.android.systemui.classifier.Classifier.UNLOCK;
import android.util.DisplayMetrics; import android.util.DisplayMetrics;
import android.view.MotionEvent; import android.view.MotionEvent;
import com.android.systemui.SysuiTestCase; import com.android.systemui.utils.leaks.FakeBatteryController;
import com.android.systemui.utils.leaks.LeakCheckedTest;
import org.junit.After; import org.junit.After;
import org.junit.Before;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
public class ClassifierTest extends SysuiTestCase { public class ClassifierTest extends LeakCheckedTest {
private FalsingDataProvider mDataProvider; private FalsingDataProvider mDataProvider;
private List<MotionEvent> mMotionEvents = new ArrayList<>(); private List<MotionEvent> mMotionEvents = new ArrayList<>();
private float mOffsetX = 0; private float mOffsetX = 0;
private float mOffsetY = 0; private float mOffsetY = 0;
private FakeBatteryController mFakeBatteryController;
@Before
public void setup() { public void setup() {
DisplayMetrics displayMetrics = new DisplayMetrics(); DisplayMetrics displayMetrics = new DisplayMetrics();
displayMetrics.xdpi = 100; displayMetrics.xdpi = 100;
displayMetrics.ydpi = 100; displayMetrics.ydpi = 100;
displayMetrics.widthPixels = 1000; displayMetrics.widthPixels = 1000;
displayMetrics.heightPixels = 1000; displayMetrics.heightPixels = 1000;
mDataProvider = new FalsingDataProvider(displayMetrics); mFakeBatteryController = new FakeBatteryController(getLeakCheck());
mDataProvider = new FalsingDataProvider(displayMetrics, mFakeBatteryController);
mDataProvider.setInteractionType(UNLOCK); mDataProvider.setInteractionType(UNLOCK);
} }
@@ -56,6 +57,10 @@ public class ClassifierTest extends SysuiTestCase {
return mDataProvider; return mDataProvider;
} }
FakeBatteryController getFakeBatteryController() {
return mFakeBatteryController;
}
void setOffsetX(float offsetX) { void setOffsetX(float offsetX) {
mOffsetX = offsetX; mOffsetX = offsetX;
} }

View File

@@ -26,6 +26,8 @@ import android.view.MotionEvent;
import androidx.test.filters.SmallTest; import androidx.test.filters.SmallTest;
import com.android.systemui.utils.leaks.FakeBatteryController;
import org.junit.After; import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@@ -37,17 +39,19 @@ import java.util.List;
@RunWith(AndroidTestingRunner.class) @RunWith(AndroidTestingRunner.class)
public class FalsingDataProviderTest extends ClassifierTest { public class FalsingDataProviderTest extends ClassifierTest {
private FakeBatteryController mFakeBatteryController;
private FalsingDataProvider mDataProvider; private FalsingDataProvider mDataProvider;
@Before @Before
public void setup() { public void setup() {
super.setup(); super.setup();
mFakeBatteryController = new FakeBatteryController(getLeakCheck());
DisplayMetrics displayMetrics = new DisplayMetrics(); DisplayMetrics displayMetrics = new DisplayMetrics();
displayMetrics.xdpi = 100; displayMetrics.xdpi = 100;
displayMetrics.ydpi = 100; displayMetrics.ydpi = 100;
displayMetrics.widthPixels = 1000; displayMetrics.widthPixels = 1000;
displayMetrics.heightPixels = 1000; displayMetrics.heightPixels = 1000;
mDataProvider = new FalsingDataProvider(displayMetrics); mDataProvider = new FalsingDataProvider(displayMetrics, mFakeBatteryController);
} }
@After @After
@@ -246,4 +250,12 @@ public class FalsingDataProviderTest extends ClassifierTest {
assertThat(mDataProvider.isUp(), is(false)); assertThat(mDataProvider.isUp(), is(false));
mDataProvider.onSessionEnd(); mDataProvider.onSessionEnd();
} }
@Test
public void test_isWirelessCharging() {
assertThat(mDataProvider.isWirelessCharging(), is(false));
mFakeBatteryController.setWirelessCharging(true);
assertThat(mDataProvider.isWirelessCharging(), is(true));
}
} }

View File

@@ -25,6 +25,8 @@ import java.io.PrintWriter;
public class FakeBatteryController extends BaseLeakChecker<BatteryStateChangeCallback> public class FakeBatteryController extends BaseLeakChecker<BatteryStateChangeCallback>
implements BatteryController { implements BatteryController {
private boolean mWirelessCharging;
public FakeBatteryController(LeakCheck test) { public FakeBatteryController(LeakCheck test) {
super(test, "battery"); super(test, "battery");
} }
@@ -58,4 +60,13 @@ public class FakeBatteryController extends BaseLeakChecker<BatteryStateChangeCal
public boolean isAodPowerSave() { public boolean isAodPowerSave() {
return false; return false;
} }
@Override
public boolean isWirelessCharging() {
return mWirelessCharging;
}
public void setWirelessCharging(boolean wirelessCharging) {
mWirelessCharging = wirelessCharging;
}
} }