* Add native stacktrace field for PlatformException
* Mute the readValue check for stacktrace.
* polish
* Add unit test and further polish
* Added more comments
* remove unnecessary import
* fill in stacktrace to JSONMethodCodec and fix tests
* fix style
* Fix format
* Remove unnecessary TODO since not all explicitly declared errors have stacktrace in it from native side.
* Handle case for exception without stacktrace on jsonMethodCodec
* Add more unit tests
* format test
Co-authored-by: Ben Li <libe@google.com>
This reverts #62710, since it has a noSuchMethodError in some circumstances.
This isn't just a straight git revert, because I had to resolve the conflicts in the reverted pubspec.yaml files and re-run flutter update-packages --force-upgrade to make the checksums match.
* Update prod builders.
This is to make the builders show up in the flutter dashboard.
Bug:
https://github.com/flutter/flutter/issues/63256
* Add mac and windows bots.
* Fix flaky flag.
* Rename taskName as task_name.
This makes the processing of RawKeyboardEventData.getModifierSide consistent among the platforms.
Before this change, some platforms (Android) didn't handle the case where the "either" flag was set, but no side flag was set (e.g. "shift" was set, but not "shift left"), and instead said that no keys were down by returning null (which was wrong).
Some platforms (Linux, Windows) also returned KeyboardSide.any from getModifierSide, when the contract says that it will never return KeyboardSide.any. Those methods now return KeyboardSide.all in the case where no side is specified, as macOS and Fuchsia already did.
Now, all platforms will return KeyboardSide.all from getModifierSide when it's not clear which side the key was on.
This adds an assert in RawKeyboard that catches the case where it tries to send a key down event, but (after synchronizing modifiers) there are no keys in keysPressed. This state can occur if the modifier flags are not set properly for the platform.
Also prevents shortcuts attempting to handle a key down when no keys are pressed at the moment (which was causing a crash in release mode).
It now uses the scroll metrics as they stood at the end of the last frame.
It previously used a weird combination of the old extents and the newish position, which led to some weird effects when the position had been changed in expectation of a viewport or content dimension change.