[Android] Return keyboard pressed state by bleroux · Pull Request #41695 · flutter/engine

@bleroux

dnfield

justinmc

@bleroux

@bleroux

dkwingsmt

@bleroux bleroux deleted the android_listen_and_answer_to_keyboard_pressed_state_queries branch

May 18, 2023 21:51

auto-submit bot pushed a commit to flutter/flutter that referenced this pull request

May 18, 2023

CaseyHillers pushed a commit to CaseyHillers/flutter that referenced this pull request

May 24, 2023

dkwingsmt added a commit that referenced this pull request

Jun 7, 2023

dkwingsmt added a commit that referenced this pull request

Jun 7, 2023
Reverts #41695 due to internal bug report b/284945818.

cc @bleroux let's investigate some day.

CaseyHillers pushed a commit to CaseyHillers/engine that referenced this pull request

Jun 8, 2023

CaseyHillers pushed a commit that referenced this pull request

Jun 8, 2023
Reverts #41695 due to internal bug report b/284945818.

b/286341060

Co-authored-by: Tong Mu <dkwingsmt@users.noreply.github.com>

@bleroux bleroux restored the android_listen_and_answer_to_keyboard_pressed_state_queries branch

June 8, 2023 19:14

CaseyHillers pushed a commit to CaseyHillers/engine that referenced this pull request

Jun 13, 2023

XilaiZhang pushed a commit to XilaiZhang/engine that referenced this pull request

Jun 13, 2023

CaseyHillers pushed a commit that referenced this pull request

Jun 13, 2023
Reverts #41695 due to internal bug
report b/284945818.

cherry pick request was filed at b/287043578

Co-authored-by: Tong Mu <dkwingsmt@users.noreply.github.com>

auto-submit bot pushed a commit that referenced this pull request

Jun 21, 2023
## Description

This PR updates the Android engine in order to answer to keyboard pressed state queries from the framework (as implemented in flutter/flutter#122885).

This is a rework of #41695 which was reverted in #42346.

This issue with #41695 was that the framework side did not get an answer when the channel was setup in the engine without registering a handler (on the engine side) to handle framework requests. The issue was reproducible when the engine initialization was managed by the app (see flutter/flutter#122441 (comment) for a repro).

This PR fixes this issue by changing `flutter/keyboard` lifecycle: the engine now creates the channel and registers a handler just after the channel creation.
In order to avoid regression, this PR also updates the channel implemenation (see `KeyboardChannel`) to return an empty `HashMap` when there is no handler registered.

## Related Issue

Android engine implementation for flutter/flutter#87391
(see #42346 for Linux implementation)
Fixes flutter/flutter#122441

## Tests

Adds 3 tests.