Support Samsung phone when getting device wakefulness status (#98146)

This commit is contained in:
keyonghan 2022-02-11 12:05:18 -08:00 committed by GitHub
parent e907b03ca9
commit e8bc5c5ace
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 1 deletions

View File

@ -505,7 +505,10 @@ class AndroidDevice extends Device {
/// See: https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/os/PowerManagerInternal.java
Future<String> _getWakefulness() async {
final String powerInfo = await shellEval('dumpsys', <String>['power']);
final String wakefulness = grep('mWakefulness=', from: powerInfo).single.split('=')[1].trim();
// A motoG4 phone returns `mWakefulness=Awake`.
// A Samsung phone returns `getWakefullnessLocked()=Awake`.
final RegExp wakefulnessRegexp = RegExp(r'.*(mWakefulness=|getWakefulnessLocked\(\)=).*');
final String wakefulness = grep(wakefulnessRegexp, from: powerInfo).single.split('=')[1].trim();
return wakefulness;
}

View File

@ -40,6 +40,12 @@ void main() {
expect(await device.isAsleep(), isFalse);
});
test('reads Awake - samsung devices', () async {
FakeDevice.pretendAwakeSamsung();
expect(await device.isAwake(), isTrue);
expect(await device.isAsleep(), isFalse);
});
test('reads Asleep', () async {
FakeDevice.pretendAsleep();
expect(await device.isAwake(), isFalse);
@ -190,6 +196,12 @@ class FakeDevice extends AndroidDevice {
''';
}
static void pretendAwakeSamsung() {
output = '''
getWakefulnessLocked()=Awake
''';
}
static void pretendAsleep() {
output = '''
mWakefulness=Asleep