Use DisplayContext to obtain InputMethodManager in ViewRootImpl
Historically ViewRootImpl#mContext has been just pointing to the Context instance associated with whatever first View instance that is being added to a Window. In other words, ViewRootImpl#mContext is not owned by ViewRootImpl. This can become a problem if ViewRootImpl is moved from a display to another display with ViewRootImpl#updateInternalDisplay(), which was added last year to support multiple displays [1], because there is no guarantee that the target Contaxt that is pointed from ViewRootImpl#mContext is also updated to have the new display ID. In order to support multi-display we need to use the right Context at least when interacting with InputMethodManager. Hence as a short term solution this CL introduces ViewRootImpl#mDisplayContext so that the right instance of InputMethodManager can receive callback from ViewRootImpl. In this way, we can make sure that the behavior change in ViewRootImple is limited to how InputMethodManager instance is obtained. Longer term solution will be discussed in Bug 116349163. [1]: I9a9501cab788623ada15a31efb53e4b2378639fe b047b8bd Bug: 115893206 Test: atest ActivityManagerMultiDisplayTests Test: atest CtsInputMethodTestCases CtsInputMethodServiceHostTestCases Change-Id: Ifa0ca24e9cf764caf492ee065606680b6a06751a
Loading
Please register or sign in to comment