Sends the flutter/settings update message to the engine after starting
it. For now values other than 24-hour time preference are hard-coded,
but dark mode support can be added later.
Fixes https://github.com/flutter/flutter/issues/65590
This change contains a couple of changes that should have been in
github.com/flutter/engine/commit/3105db8ee856ffef281d018774d21a6164c81236
but fell through the cracks
First one lifts the initialization of the flutter::RunConfiguration so that
the asset manager gets set on the persistant cache before the shader
warmup happens. I'm not sure how this didnt end up in the first PR I
think it got mangled during merge conflict resolution. no test coverage
for that code because its in the middle of a 400 line constructor
Second one fixes a race condition that the tests dont catch because the
tests are single threaded. This change restructures the test that missed
this bug so that it would have caught that bug and will catch comparable
bugs.
Instead of synchronousResizing flag which in some cases seems to be set too early, synchronous resizing is postponed until framework produces a frame so ResizeSynchronizer knows for sure that the engine is up and running.
* Revert "Remove GetExternalViewEmbedder from surface (#22272)"
This reverts commit 5419f70f173db1c9f2d5db4c289560e68ce9b77b.
* Revert "Rasterizer is initialized with an external view embedder (#22405)"
This reverts commit f95df42e6e3d80f17c2024e9956768be9416717f.
This reverts commit 0d5f2e901d1953d04eb45004666d34a4537a0060.
Due to merge conflicts, this also reverts #22275:
Revert "Do not involve external_view_embedder in submit frame process if threads are not merged. (#22275)"
This reverts commit 016fbde1bb275288242e2cf097b52af1dd66ab06.
This (mostly) re-lands #21163, which was reverted in #22321
This switches from using onKeyDown to using dispatchKeyEvent on Android so that keys can be intercepted handled by the framework and not continue to be dispatched to other controls.
It also now intercepts key events sent to InputConnection.sendKeyEvent, as some IMEs do (e.g. the Hacker's Keyboard), and sends them to Flutter.
This fixes the problem where (for example) pressing TAB on a hardware keyboard sends the tab to both the text field and to the focus traversal system.
Note that we still can't intercept all keystrokes given to a soft keyboard, only those which the soft keyboard decides to send to InputConnection.sendKeyEvent, and system keys (like the back button) are only received if the IME doesn't eat them.