fixes#112207
## What's new?
- Added a `view_id` on `UpdateSemantics`
- Added a `view_id` on `DispatchSemanticsAction`
- Piped the `view_id` all over creation
- Updated tests for these actions across the different platforms
- Added `FlutterEngineSendSemanticsAction` to the embedder API in order
to not break `FlutterEngineDispatchSemanticsAction`
- Using this view ID properly on the Windows platform (see
`engine/src/flutter/shell/platform/windows/flutter_windows_engine.cc`)
## How to test
1. Checkout
[foundation-plus-framework](https://github.com/canonical/flutter/pull/36)
from canonical/flutter
2. Merge this branch into it
3. Enable the "Narrator" screen reader on windows
4. Run the Multi window reference app (see
[PR](https://github.com/canonical/flutter/pull/36) for details)
5. Open up another window, and note that the right buttons and things
are being highlighted, as the screenreader would expect 🎉
## Pre-launch Checklist
- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.
The 2 enum classes `impeller::BlendMode` and `flutter::DlBlendMode` were
essentially identical so they were merged.
The names were consolidated to the ui.BlendMode/DlBlendMode versions and
the implementation is shared from Impeller to DisplayList via a `using`
directive. No conversion is needed any more to describe blend modes
between DisplayList and Impeller.
Work towards https://github.com/flutter/flutter/issues/162033
- barriers for render pass are not correct, but only causes a problem on
powervr/imagination. Added new external subpass dependencies that have
better descriptions for what they do. We now use the subpass to
transition images that are sampled to the final shaderReadOnlylayout,
while keeping swapchain images in eGeneral.
- missing cache for render pass objects when using non-msaa passes. This
mostly impacts powervr hardware because render pass construction is much
slower there.
The skia_conversions sources and namespace have been filled with methods
that are no longer used now that the DisplayList has its own complete
set of APIs and is now mostly obsolete.
There are different ways to iterate over an SkPath or an impeller::Path
and various points in the engine source tree we have boilerplate
duplicates of this code to transfer the contents of the DlPath wrapper
object into some platform-specific path. This PR adds a
dispatch/receiver mechanism to read back the contents of a DlPath -
independent of whether it is backed by an SkPath or an impeller::Path -
in a simpler form that avoids potential mistakes in the various
conversion methods.
See DlPathReceiver and DlPath::Dispatch in the dl_path.h file
When we return to the foreground the swapchain is reconstructed anyway.
Eagerly tearing the old one down releases memory faster. Highlighted by
a regression in a customer: money benchmark.
Fixes https://github.com/flutter/flutter/issues/161283
When generating mipmaps, as soon as we hit a dimension (x,y) of 1, stop
generating mipmaps. This is done by changing the mip computation to use
min instead of max - but also adds a short circuit too.
## Description
This PR fixes a crash on Android related to specific keyboard events.
It is very similar to http://github.com/flutter/engine/issues/35924
which was related to down events. This PR fixes the similar logic
related to repeat events.
## Related Issue
Fixes [Flutter 3.29 Fatal crash with
java.lang.AssertionError](https://github.com/flutter/flutter/issues/164626)
## Tests
Adds 1 test.