Make IME visiblity stable without unexpected hidden when setControl
2 reasons that may unexpectly calls hideMySoftInput from IME: 1) When requesting show IME on the activity, before receiving the control from server side, the null control might received from the relayoutWindow, if initially in consumer side didn't get the control yet, we should not hide the IME immediately to broke the on-going show request. 2) When ImeInsetsSourceConsumer#onWindowFocusGained, if we don't set mIsRequestedVisibleAwaitingControl as true if it has requested IME visible but not yet get control, it also could possble mistakenly hide IME when ImeInsetsSourceConsumer#setControl. As the result, we should prevent both case with 1) add returned value for InsetsSourceConsumer#setControl to see whether the control has changed from the server, if the control didn't change like receiving a duplicated null control callback, then in ImeInsetsConsumer didn't have to do anything. 2) set mIsRequestedVisibleAwaitingControl as true when receiving onWindowFocusGained and the host is waiting the control to make IME visibility reliable. Bug: 227142436 Bug: 204524304 Test: atest FlickerTests:LaunchAppShowImeAndDialogThemeAppTest --rerun-until-failure 10 Change-Id: If4b09f5b52bc96cf3429aaa912961f3ac4e326f2
Loading
Please register or sign in to comment