This CL rewrites my previous CLs [1][2], which were written with an
incorrect assumption that config_imeDrawsImeNavBar was overlaid for
the entire profile group.
While SysUI's navigation mode is dynamically configurable with Runtime
Resource Overlay (RRO), it turns out that we currently configure RRO
only for the profile parent user. This means that processes run under
other profile users continue seeing the base resource value regardless
of how RRO is configured for the profile parent user. This is the
root cause of Bug 219604375.
To work around this limitation, this CL uses InputMethodManagerService
to monitor the value of config_imeDrawsImeNavBar for the profile
parent user then to propagate it to the IME process. Luckily we have
already been doing a similar thing for the IME switcher visibility.
What this CL does is 1) adding a new flag to InputMethodNavButtonFlags
then 2) just using the flag sent from IMMS instead of directly reading
config_imeDrawsImeNavBar
NavigationBarController.
Alternative solutions considered:
* Set RRO for profile users
One of straightforward ways to address this problem is letting the
Setting app apply the same RRO for other profile users. However,
this could be tricky when 1) the user changes navigation mode then
2) sets up a new profile, because the Settings app is not an
always-running process. While we might be able to rely on
com.android.settings.SettingsInitialize#onReceive()
to do so, the profile user's state could be left in a broken state
if that method was somehow interrupted. To minimize the risk, we
decided to not take this approach for T.
* Make OverlayManager be aware of profile groups
Given how RRO is used in SysUI, it's make more sense if
OverlayManager natively supports resource overlay for the entire
profile group. However, introducing such a new concept is too late
for Android T. We have filed Bug 221443458 to see if we can do this
in a future version of Android.
[1]: I3e7e1f83554444131e2765dc159617bb9e2337c7
ff7b453ca8
[2]: Id0cfa44cce5de515dc5d28254e1d41bdfc01e201
177e4aafdb
Fix: 219820813
Test: Manually verified as follows
1. Build aosp_coral-userdebug then flash it.
2. adb root
3. adb shell setprop persist.sys.ime.can_render_gestural_nav_buttons true
4. adb reboot
5. adb install -r TestDPC-normalv8001.apk
6. adb shell am start -n com.afwsamples.testdpc/.SetupManagementLaunchActivity
7. Set up work-profile
8. make -j EditTextVariations
9. adb install -r \
$ANDROID_TARGET_OUT_TESTCASES/EditTextVariations/arm64/EditTextVariations.apk
10. adb shell am start --user 0 -n \
com.android.inputmethod.tools.edittextvariations/.EditTextVariations
11. adb shell dumpsys input_method | grep mNavigation
-> "mNavigationBarController={mImeDrawsImeNavBar=false, ..."
12. Enable gesture navigation
13. adb shell dumpsys input_method | grep mNavigation
-> "mNavigationBarController={mImeDrawsImeNavBar=true, ..."
14. adb shell am start --user 10 -n \
com.android.inputmethod.tools.edittextvariations/.EditTextVariations
15. adb shell dumpsys input_method | grep mNavigation
-> "mNavigationBarController={mImeDrawsImeNavBar=true, ..."
Change-Id: Id3d6a71d8ba1bfa49131350b68aa8d3424eca381
This CL reworks my previous CL [1], which let
InputMethodManagerService report whether the IME switcher icon needs
to be shown or not to the IME process by using IInputMethod IPCs.
It turns out that we need to propagate one more boolean value in order
to address Bug 219820813. It'd be much clearer if we use bit flags
rather than adding a new boolean parameter to each IPC method. Thus
this CL rewrites my previous CL by using a bit flag defined in a newly
introduced InputMethodNavButtonFlags.
This is a purely mechanical refactroing. There should be no behavior
change.
[1]: I5de9ac0dc8670842edf66306bb4c281c77cea376
75b935a12b
Bug: 215551357
Bug: 219820813
Test: Manually verified with for the following scenarios:
* Enabling/disabling multiple IMEs
* Attaching/detaching a hardware keyboard
* Showing/hinding the IME switcher
* Showing an IME on the lock screen
Change-Id: I81cb062a08d484ec8ce5d7b2fea64ce19028f82e
This doesn't need to be blocking (as far as me and a colleague can tell)
and was causing ANRs.
Bug: 204160836
Test: tbd
Change-Id: I16f7e20ddbcdb7546038273aede545a920fce87e
(cherry picked from commit 340cf6fdad)
Add a field in the VpnConfig to store local route exclusion
bit from VpnProfile, and set the value into the networkAgent
of VPN network.
Bug: 184750836
Test: atest FrameworksNetTests HostsideVpnTests
Change-Id: I22b9a5990a3dab0418b44ec19d2996ead6529231
* Move the BitmapUtil to com.android.internal package
* Remove bitmap result from GameSession#takeScreenshot API
Bug: 219992742
Test: atest GameServiceProviderInstanceImplTest
Change-Id: I4bf29d623f781434ec7ffe4443e658880c31e619
Move the BitmapUtil to com.android.internal package
Content recording relies upon a class describing current state.
rather than passing around details from media > display > wm.
WMService keeps track of the session in ContentRecordingController.
ContentRecordingController manages hand-off between different
DisplayContent instances, as the session details are changed.
Manually tested that fold/unfold handling when screen recording
from QS tile still works, and that taking over a screen cast
with a screen recording works.
Refactoring logic from DisplayContent into new recording
delegate will come in a future change.
Bug: 216756854
Test: atest FrameworksCoreTests:ContentRecordingSessionTest
Test: atest WmTests:DisplayContentTests
Test: atest WmTests:ContentRecordingControllerTests
Change-Id: Ib4f125dd703d362ac13fcbe469d00b345827e706
Originally, View was implementing onBackInvokedDisptacherOwner, but now
only Activity and Dialog and since back event are related to the
window, it makes sense to move them into the android.window package
This follow up comment at:
ag/c/platform/frameworks/base/+/16764116/comments/e131f3ef_e3e1d2e0
Test: atest BackNavigationTests
Bug: 221401221
Change-Id: Ia2f26162beb6a41b6e162b31e599e882f8bf7320
When starting a handwriting session, update the handwriting input window
so that it is configured with the IME's pid and uid. This means any ANRs
that occur due to the handwriting input window will be directed to the
IME process.
Since oneway binder calls do not have pid information, we cannot use
Binder.getCallingPid() to get the pid of the IME. Instead, we report the
pid from IMS when starting handwriting.
Bug: 210978621
Test: manual with custom IME, verify ANR is directed to IME.
Change-Id: Ia6963eb02cad22c7f604896e6c78ed31c84e32f6
Merged-In: Ia6963eb02cad22c7f604896e6c78ed31c84e32f6
(cherry picked from commit 58df52232a)
* changes:
Temporarily disable some biometric prompt tests.
Add Face and Fingerprint (Co-Ex) support to biometric prompt.
Remove face to fingerprint multi-sensor behavior.
Remove duplicated UDFPS view into single fingerprint view.
- Add callbacks to observer service lifecycle events to ServiceConnector.
- Leverage callbacks to avoid re-binding to GameService in order to
send disconnected event
- Leverage callbacks to detect when GameSessionService process dies and
destroy all GameSessions.
Test: Manually verified GameSession overlays are removed when
GameSession process crashes. Added unit test covering behavior.
Bug: 220204229
Bug: 215599171
Change-Id: Idda96f221e40c88f0f80c95bea94556275da5166
In support of sharesheet unbundling:
This code directly accesses private platform config resources
and cannot be used outside of system_server.
This was originally added during the Q->R transition as app
prediction service was ramping up [See b/138595943].
Incorrect versions would cause increased latency in opening
the sharesheet, app prediction missing but no crash.
If there is a problem with AiAi version configuration, that
should be addressed directly and not covered over by silently
disabling functionality.
At this time the package name returned from the system call
PackageManager#getAppPredictionServicePackageName() is passed
through the function "ensureSystemPackage" before being
returned this is sufficient to satisfy and availability checks.
Bug: 220895016
Test: manual; share content from app, verify share targets
Change-Id: I11aebe4fba1d96b543ba89482313668ce55b8ca4
This change fixes a number of interconnected issues in memory safety
(MTE, GWP-ASan, nativeHeapZeroInit) runtime flags.
* Exported services use the hosting app UID to locate the process
definition, and fail 100% of the time. Use the defining app UID and
package name instead.
* Isolated services process name does not match the name in the defining
app manifest, because it includes a class name and an instance number.
Pass the defining process name in HostingRecord to address this.
* Exported service ApplicationInfo.packageName refers to the hosting
app, again. As a result, wrong compat feature overrides are applied.
This has been fixed before for AppZygote services; extend the fix to all
external services.
* Pass correct memory runtimeFlags to WebViewZygote. This is important
because both MTE and GWP-ASan have a one-way disable switch; they are
enabled in the Zygote and disabled in the apps that do not opt-in.
Passing 0 runtimeFlags to WebViewZygote (and AppZygote) makes it
impossible to enable these features later in their child processes.
This change moves runtimeFlags logic from ProcessList to os.Zygote to
make it available to WebViewZygote.
Bug: 208910418
Test: CtsTaggingHostTestCases
Test: atest in frameworks/base
Test: CtsWebkitTestCases
Test: manual install WebView with android:memtagMode tag
Change-Id: I232d35344f4cd34226ff11324421904b35251525
* changes:
Ignore vendor apex priv-app permission allowlists
Add test for parsing apex allowlists
Ignore prebuilt shared library if it doesn't exist on device
Rename updatable-library to apex-library
Parse new xml attributes used for updatable shared libraries
Create XML parser only once.
Migrate simple views to Kotlin & remove useless test. Will add new tests in a follow up change.
Bug: 217393533
Test: atest com.android.systemui.biometrics com.android.server.biometrics CommandQueueTest
Test: manual (via BP test app)
Change-Id: Ic8c80344d75f34f4b5f65ef14b61bbb5cddb0349