PIP window cant be ime target.

Check both Task and ActivityRecord windowing mode to make sure
PIP window can't become IME target.

Bug: 156915118
Test: Manually using steps mentioned in bug.
Change-Id: Ie6de7f31c36978fe8ec5aef2105b5e7edff5fa32
This commit is contained in:
Taran Singh
2020-05-26 13:16:44 -07:00
parent fc8443cf9d
commit b38e5406b0

View File

@@ -2198,10 +2198,13 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
@Override
boolean isFocusable() {
return super.isFocusable() && (canReceiveKeys() || isAlwaysFocusable());
}
boolean canReceiveKeys() {
// TODO(156521483): Propagate the state down the hierarchy instead of checking the parent
boolean canReceiveKeys = getWindowConfiguration().canReceiveKeys()
&& getTask().getWindowConfiguration().canReceiveKeys();
return super.isFocusable() && (canReceiveKeys || isAlwaysFocusable());
return getWindowConfiguration().canReceiveKeys()
&& (task == null || task.getWindowConfiguration().canReceiveKeys());
}
boolean isResizeable() {
@@ -2370,10 +2373,10 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
// For the apps below Q, there can be only one app which has the focused window per
// process, because legacy apps may not be ready for a multi-focus system.
return false;
}
}
return (getWindowConfiguration().canReceiveKeys() || isAlwaysFocusable())
&& getDisplay() != null;
return (canReceiveKeys() || isAlwaysFocusable()) && getDisplay() != null;
}
/**