Skip to content

Commit f3717d7

Browse files
Enable Windows platform_channel test (#106973)
1 parent 5ca39a2 commit f3717d7

File tree

4 files changed

+25
-9
lines changed

4 files changed

+25
-9
lines changed

.ci.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3994,7 +3994,6 @@ targets:
39943994
["devicelab", "hostonly"]
39953995
task_name: platform_channel_sample_test_windows
39963996
scheduler: luci
3997-
bringup: true
39983997

39993998
- name: Windows plugin_dependencies_test
40003999
recipe: devicelab/devicelab_drone

examples/platform_channel/lib/main.dart

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,12 @@ class _PlatformChannelState extends State<PlatformChannel> {
2828
try {
2929
final int? result = await methodChannel.invokeMethod('getBatteryLevel');
3030
batteryLevel = 'Battery level: $result%.';
31-
} on PlatformException {
32-
batteryLevel = 'Failed to get battery level.';
31+
} on PlatformException catch (e) {
32+
if (e.code == 'NO_BATTERY') {
33+
batteryLevel = 'No battery.';
34+
} else {
35+
batteryLevel = 'Failed to get battery level.';
36+
}
3337
}
3438
setState(() {
3539
_batteryLevel = batteryLevel;

examples/platform_channel/test_driver/button_tap_test.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,11 @@ void main() {
3131
batteryLevel = await driver.getText(batteryLevelLabel);
3232
}
3333

34-
expect(batteryLevel.contains('%'), isTrue);
34+
// Allow either a battery percentage or "No battery" since it will vary
35+
// by device; either indicates that a known response came from the host
36+
// implementation.
37+
expect(batteryLevel.contains('%') || batteryLevel.contains('No battery'),
38+
isTrue);
3539
});
3640
});
3741
}

examples/platform_channel/windows/runner/flutter_window.cpp

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,17 @@
1616

1717
#include "flutter/generated_plugin_registrant.h"
1818

19+
static constexpr int kBatteryError = -1;
20+
static constexpr int kNoBattery = -2;
21+
1922
static int GetBatteryLevel() {
2023
SYSTEM_POWER_STATUS status;
21-
if (GetSystemPowerStatus(&status) == 0 || status.BatteryLifePercent == 255) {
22-
return -1;
24+
if (GetSystemPowerStatus(&status) == 0) {
25+
return kBatteryError;
26+
} else if (status.BatteryFlag == 128) {
27+
return kNoBattery;
28+
} else if (status.BatteryLifePercent == 255) {
29+
return kBatteryError;
2330
}
2431
return status.BatteryLifePercent;
2532
}
@@ -59,10 +66,12 @@ bool FlutterWindow::OnCreate() {
5966
if (call.method_name() == "getBatteryLevel") {
6067
int battery_level = GetBatteryLevel();
6168

62-
if (battery_level != -1) {
63-
result->Success(battery_level);
64-
} else {
69+
if (battery_level == kBatteryError) {
6570
result->Error("UNAVAILABLE", "Battery level not available.");
71+
} else if (battery_level == kNoBattery) {
72+
result->Error("NO_BATTERY", "Device does not have a battery.");
73+
} else {
74+
result->Success(battery_level);
6675
}
6776
} else {
6877
result->NotImplemented();

0 commit comments

Comments
 (0)