Fix the system gender in ActivityRecord objects
There are two sources of the Configuration objects for each
process - one in WindowProcessController and one in
ActivityRecord. Inside each of those objects there are two kinds
of the configuration - one is the copy of the global config,
and another one is a local override, only filling in the fields
that are supposed to take precedence over the global one.
This CL reimplments the way system-global grammatical gender
is propagated to the running processes:
1. AR and WPC reimplement setOverrideGender() to apply the
per-process visibility logic
2. Per-process configuration settings are now explicitly
applied even when there are none yet, with nulls in all
arguments. This way the code can recalculate per-process
gender value even with no app override.
3. Global configuration never leaves the gender value unset,
making sure UNDEFINED is only used for overrides. This
prevents the processes getting spurious config updates with
the value being either undefined or not_specified, which is
effectively the same
4. Set up a proper grammatical manager service mock in WmTests
to not rely on external device config or even developer
settings.
+ Small refactoring in GrammaticalInflectionManager
+ fix the backup helper cache clearing to not skip the next
record
Bug: 332955145
Test: atest WmTests + manual privileged/regular app installation
Change-Id: I60edb71f3fae6360f7e7a09b37ecd0e6bfe84db6
11 files changed