* Fix sort indicator for DataTables
As per material spec ascending order should be shown via an upward arrow
This commit changes the displayed arrows accordingly.
* Test sort indicator orientation in DataTable
Remove globals and testbed to simplify test cases, using the existing environment configuration. This is some pre-factoring work to make landing #63610 easier
* 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 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.