Commit Graph

18359 Commits

Author SHA1 Message Date
Jernej Virag
cfbbd755ff Merge "Trace Window relayout reasons" into tm-dev 2022-05-03 06:45:30 +00:00
TreeHugger Robot
f4adad3636 Merge "Removed extraneous comment delimiter from the getDefaultFocusHighlightEnabled method." into tm-dev 2022-05-02 17:13:17 +00:00
Jernej Virag
c48601b0af Trace Window relayout reasons
Window relayouts (and subsequent binder calls) are common performance issues
and the reason for relayout can be hard to determine in Perfetto traces.

This adds reason for triggered window relayout to the trace
if View tracing is currently enabled.

Bug: 231121537
Test: Using perfetto, see https://screenshot.googleplex.com/AgsM2pfidDAav7j
Change-Id: Ib1d9b673517eb80b09c6bacedd34e26cb502877b
2022-05-02 12:45:39 +00:00
Jacqueline Bronger
936456aebc Merge "Handle PiP params changes in onTaskInfoChanged" into tm-dev 2022-05-02 08:35:59 +00:00
Robert Horvath
c11507f96c Merge "Rate limit calls from apps to reportKeepClearAreaChanged" into tm-dev 2022-05-02 08:05:26 +00:00
TreeHugger Robot
f9ccda5c78 Merge "Adds perfetto tracing to ScrollCaptureConnection" into tm-dev 2022-04-30 00:57:52 +00:00
TreeHugger Robot
0be3f09073 Merge "Fix colorSpace lose during screen rotation." into tm-dev 2022-04-29 23:17:53 +00:00
Sally Qi
195ff67523 Fix colorSpace lose during screen rotation.
- setColorSpace only supports Display_p3 and sRGB

Bug: 229735367
Test: test picture rotation and check log
Change-Id: If2d6ab965be28d35a3adf330e7050e16e40f9620
2022-04-29 13:19:37 -07:00
Mark Renouf
2088e50967 Adds perfetto tracing to ScrollCaptureConnection
Change-Id: I7d018fa7c4e4eb3261a75165713303756b271520
2022-04-29 16:11:27 -04:00
Taran Singh
d5bb81348c Merge "Fix InputConnection creation callback" into tm-dev 2022-04-29 18:58:36 +00:00
TreeHugger Robot
5b22099c1c Merge "Allow rapid request/release of pointer capture" into tm-dev 2022-04-29 16:58:10 +00:00
Leon Scroggins
866f67dc94 Merge "Propagate HDR information to screenshot animation." into tm-dev 2022-04-29 15:16:21 +00:00
Ming-Shin Lu
e6a860a747 Merge changes I96b17c78,If4b09f5b into tm-dev
* changes:
  Make DialogThemedActivity main window is not focusable
  Make IME visiblity stable without unexpected hidden when setControl
2022-04-29 14:19:28 +00:00
Jacqueline Bronger
bb2980a0e0 Handle PiP params changes in onTaskInfoChanged
Before, there were two paths for listening to pip params changes, either
via onTaskInfoChanged (only handle aspect ratio changes the same way for
all form factors) and PinnedTaskListener.
Now all PiP params changes are handled in onTaskInfoChanged and use
similar listeners to allow for different behavior for different form
factors.
Also adds a TvPipTaskOrganizer so that only relevant params are checked.

Bug: 218456378
Bug: 220042536
Bug: 228854691
Test: atest PinnedStackTests

Change-Id: I673ab69ee9253db782c41da96695b5a374345086
2022-04-29 11:25:44 +02:00
Naomi Musgrave
86e40f73a0 Only return ROTATION_0 for WM#getPossibleMaximumWindowMetrics
Do not return every rotation for window metrics.

Bug: 228288352
Test: atest WmTests:PossibleDisplayInfoMapperTests
Change-Id: I756b079bfce09cf618500f3d07547ec94ac60694
2022-04-29 09:02:20 +00:00
Rachel Lee
fa426b9d49 Merge "Remove getLatestVsyncEventData in Choreographer." into tm-dev 2022-04-28 21:29:54 +00:00
Josh Tsuji
50f19f212e Merge changes Iee97d469,Ica1b552a into tm-dev
* changes:
  fadeInSurfaceBehind() when the remote animation starts.
  Clear task snapshot when we showSurfaceBehindKeyguard.
2022-04-28 17:52:10 +00:00
Taran Singh
fc6d5e91b7 Fix InputConnection creation callback
As noted in the linked bug, in certain scenarios IC established callback
is not always called. As a fix, we make sure we don't return early when
MSG_BIND callback is received from IME

Fix: 228105257
Bug: 217971553

Test: atest StylusHandwritingTest#testHandwritingEndToEnd

Change-Id: I780327003f7145c4f9b9df4dc5243227d7e67d92
2022-04-28 15:26:00 +00:00
Shawn Lin
8f1320d8a9 Merge "Fixed cts failure of WindowInsetsControllerTests" into tm-dev 2022-04-28 13:11:10 +00:00
shawnlin
6db481e079 Fixed cts failure of WindowInsetsControllerTests
If the device is a tablet, the navigation bar will be taskbar, and it
will draw fake rounded corners above itself when it's shown and
unstashed. When apps request to hide taskbar from such state, it will
cause an extra window insets change from server side.

Move the calculation of rounded corner inset to client side so that we
can make the window insets change come only once.

Bug: 229825307
Test: atest WindowInsetsControllerTests ActivityRecordTests
Change-Id: I081142facbe0fe676b89c8883fa690ba5ae13d79
2022-04-28 17:25:49 +08:00
TreeHugger Robot
1fc50caf0e Merge "Revised API docs of overloaded getGlobalVisibleRect methods and getLocalVisibleRect method. Fixed punctuation of "x and y coordinates" in getLocationOnScreen, getLocationInWindow, and getLocationInSurface." into tm-dev 2022-04-27 23:25:00 +00:00
Alec Mouri
3d03ed3626 Propagate HDR information to screenshot animation.
The screenshot animation must know whether the screenshot contains HDR
layers so that it can correctly inform SurfaceFlinger whether its layer
can be dimmed.

This is due to the interplay of the following:
1. Devices are now able to configure DisplayManager to send
   significantly lower SDR white points relative to display brightness
   to SurfaceFlinger when HDR is simultaneously on-screen.
2. AIDL composer is required to support per-layer dimming, so that SDR
   layers may be dimmed to preserve the relative luminance of HDR video
   content.
3. Because the screenshot does not contain an HDR transfer function,
   SurfaceFlinger will treat the layer as SDR, and attempt to dim it.
4. Screen rotations containing HDR layers must request SurfaceFlinger to
   present the rotated screenshot at display brightness, to override
   (3) above. Otherwise, HDR content captured in the screenshot will
   suddenly dim during the rotation animation.
5. Also due to (3), DisplayManager no longer thinks that there is HDR
   content on screen, so a prior patch treated layers that requested to
   to be dimmed to be reported as HDR
   (I1d1b0dcaf230300ca34b84ea407d0817feb2c664). Otherwise, the display
   brightness will decrease during the animation and ramp back up
   afterwards.
6. But because of (5), screenshots that only contained SDR layers were
   incorrectly treated as HDR, which caused the display brightness to
   ramp up during the animation.

This patch fixes (6) by allowing for the screenshot animation to learn
whether the screenshot contains HDR layers, and request dimming
capabilities accordingly.

Bug: 230068567
Test: screen rotation
Change-Id: I6bbb2433f976e368bfe2c04e084e110cfb551c15
2022-04-27 21:43:48 +00:00
Josh Tsuji
927a236a80 Clear task snapshot when we showSurfaceBehindKeyguard.
To prevent extra blocking calls to ActivityManager,
rather than calling
ActivityManagerWrapper#invalidateHomeTaskSnapshot,
add a transit flag to have ActivityTaskManager
handle this as part of the goingAway call.

Bug: 229890190
Test: atest SystemUITests
Change-Id: Ica1b552a332d0c946d6008965c1a2881b646e365
2022-04-27 16:12:17 -04:00
Ming-Shin Lu
28b9201e18 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
2022-04-27 15:59:35 +00:00
Robert Horvath
480e230e47 Rate limit calls from apps to reportKeepClearAreaChanged
Only allows keep clear area changes to be reported every 100ms.
Helpful to keep IPC from app to WindowManager to SystemUI lower during
animations, when Views marked as preferKeepClear change position a lot.

Bug: 226583836
Test: atest KeepClearRectsTests
Change-Id: I9f6c86c5345218c9ee40f50a74d4357dd4e94dc7
2022-04-27 17:24:15 +02:00
Rachel Lee
ab7a63680a Remove getLatestVsyncEventData in Choreographer.
Manually "revert" ag/17188552 due to jank caused by
getLatestVsyncEventData as new blocking binder call on the main thread.

Test: manual open and close app to/from home.
Test: perfetto trace
Test: atest ChoreographerTest
Bug: 229987086
Change-Id: Idcab776f3f249cc9fd609a6438e29a50a1edaaf2
2022-04-26 16:26:44 -07:00
Tiger Huang
c15af2cb87 Merge "Don't set animation pending when gaining fake control" into tm-dev 2022-04-26 12:47:42 +00:00
joneckenrode
37f8a92e4d Revised API docs of overloaded getGlobalVisibleRect methods and getLocalVisibleRect method. Fixed punctuation of "x and y coordinates" in getLocationOnScreen, getLocationInWindow, and getLocationInSurface.
Test: Built API docs
Bug: 172571756
Signed-off-by: joneckenrode <joneckenrode@google.com>
Change-Id: I45f21521350accba4227f6d328e53c52ffcce80a
2022-04-26 00:06:01 +00:00
joneckenrode
d71db3b7ac Removed extraneous comment delimiter from the getDefaultFocusHighlightEnabled method.
Test: Built API docs
Bug: 230035680
Signed-off-by: joneckenrode <joneckenrode@google.com>
Change-Id: I25a36c218442a528a4caae08d4ae2d704793a7b7
2022-04-25 20:58:09 +00:00
Rachel Lee
c2c8ac85ea Merge "Add check for empty vsync data in Choreographer." into tm-dev 2022-04-25 18:03:56 +00:00
Naomi Musgrave
6d4b050f10 Merge ""Revert "Temporarily exclude Launcher from sandboxing; to be reverted once""" into tm-dev 2022-04-25 14:22:54 +00:00
Jon Eckenrode
d2b8731f93 Merge "Revised API documentation of getLocationOnScreen, getLocationInWindow, and getLocationInSurface to include multiple-screen behavior and remove mentions of "global" coordinate space." into tm-dev 2022-04-25 13:48:48 +00:00
TreeHugger Robot
b49c8b3a3a Merge "Advise use of InputDeviceListener when using pointer capture" into tm-dev 2022-04-25 11:42:16 +00:00
joneckenrode
f71eddec34 Revised API documentation of getLocationOnScreen, getLocationInWindow, and getLocationInSurface to include multiple-screen behavior and remove mentions of "global" coordinate space.
Test: Built API docs
Bug: 172573956
Signed-off-by: joneckenrode <joneckenrode@google.com>
Change-Id: If2200f9daebaa7eb106340bcc5707c20a3df34e6
2022-04-25 10:06:14 +00:00
Rachel Lee
3ac2e435a6 Add check for empty vsync data in Choreographer.
Currently there is a codepath in native DisplayEventDispatcher
introduced by aosp fc690e2a2d1d3cf08d71a02c4ecd14665c0f2039.
It accounts for vsync timeout. Here in java choreographer, we don't want
to divide by zero for logging messages so a check is added. There are no
real logic changes.

Test: atest ChoreographerTest
Bug: 229685140
Change-Id: I80f24abb89b9d961b017aca93340b1b02af6f66c
2022-04-22 14:35:38 -07:00
Sally Yuen
c98812f8f5 Merge "Remove recycling references in A11yNodeInfo" into tm-dev 2022-04-22 16:52:05 +00:00
Alex Johnston
c170d9adf0 Merge "Make screen capture per-device DO and COPE" into tm-dev 2022-04-22 09:29:12 +00:00
Mark Punzalan
ac9ae5d960 Merge changes from topic "b192331240-singleInvoke" into tm-dev
* changes:
  Rename translationActivityUid to translatedAppUid.
  Reduce duplicate UiTranslationStateCallback calls.
2022-04-22 07:01:15 +00:00
Kohsuke Yatoh
eae7ca8165 Do not cleanup IME window if show is requested.
This CL fixes a race condition for IMM#showSoftInput, which surfaces
when it's called during an IME hide animation.
IMM#showSoftInput ends up calling WIC#show asynchronously, but at that
time the running IME hide animation may have already been finished
successfully, and WIC#show may fail to cancel the hide animation
(then the cleanup IMM#notifyImeHidden hides the IME again disruptively).

I think a clean fix is to have IMM#showSoftInput call WIC#show
synchronously. However, this requires a significant refactoring.

As a short term fix, this CL adds a boolean field indicating whether or
not IMM#showSoftInput has been called. If it's called, we skip calling
IMM#notifyImeHidden.

Bug: 221483132
Bug: 225674038
Test: atest InputMethodStressTest
Test: atest CtsInputMethodTestCases
Test: atest WindowInsetsAnimationControllerTests
Change-Id: I36d570630085d0bc34097a2433208601dc9cb0fd
(cherry picked from commit 4c607982ed)
Merged-In: I36d570630085d0bc34097a2433208601dc9cb0fd
2022-04-21 21:34:31 +00:00
Kohsuke Yatoh
4844170377 Notify IMMS synchronously on IME insets hidden.
Currently, IMMS will be notified asynchronously when an IME hide
animation finishes, via message dispatching through IMS
(IMM#notifyImeHidden -> IMS#notifyImeHidden -> IMMS#hideMySoftInput).
This creates a race condition when IMM#showSoftInput or WIC#show is
called around the end of hide animation.

This CL fixes the race condition by synchronously and directly
calling IMMS#hideSoftInput from IMM#notifyImeHidden.

Note that there is still another race condition for IMM#showSoftInput
(not WIC#show) if it's called during an IME hide animation;
IMM#showSoftInput ended up calling WIC#show asynchronously, but at that
time the running IME hide animation may have already been finished
successfully and WIC#show may fail to cancel the hide animation
(then the cleanup IMM#notifyImeHidden hides the IME again disruptively).
I will fix the latter issue in a separate CL.

Bug: 221483132
Bug: 225674038
Test: atest InputMethodStressTest
Test: atest CtsInputMethodTestCases
Test: atest WindowInsetsAnimationControllerTests
Change-Id: I7c71dc5a1d6b61aa79d1666f0e257e6401e4adb2
(cherry picked from commit 9065310f81)
Merged-In: I7c71dc5a1d6b61aa79d1666f0e257e6401e4adb2
2022-04-21 21:34:24 +00:00
Sally
daf03e85c3 Remove recycling references in A11yNodeInfo
Notably eliminate references in RangeInfo and CollectionInfo class
descriptions. We've just deprecated obtain and recycle, so keeping
outdated docs is confusing.

Test: builds
Bug: 229991765
Change-Id: Ia2d7963bf572740052e0da03950398d016a3caa4
2022-04-21 18:06:20 +00:00
Mark Punzalan
94ed570f35 Reduce duplicate UiTranslationStateCallback calls.
We don't invoke methods when translation state doesn't change (e.g.,
for consecutive startTranslation() calls).

Bug: 192331240
Test: atest UiTranslationManagerTest
Change-Id: I96def427b1fcabb7b83cb188c4b1ee017b5882a9
2022-04-21 17:43:42 +00:00
Simranjit Kohli
727ee17577 Merge "[Autofill Crash]: Fix NPE in AutofillManager." into tm-dev 2022-04-21 14:04:00 +00:00
Alex Johnston
af6b08b09a Make screen capture per-device DO and COPE
Test cases:
- DO
  - Verify disabled for entire device
  - Verify still disabled after restart
  - Verify no longer disabled when DO is removed
- COPE
  - parent
     - Verify disabled for entire device
     - Verify still disabled after restart
     - Verify no longer disabled when COPE PO is removed
  - not-parent
     - Verify disabled for user
     - Verify disabled after restart
     - Verify disabled when PO is removed

Bug: 217558483
Test: DevicePolicyManagerTest
      OrgOwnedProfileOwnerTest#testScreenCaptureDisabled
      ScreenCaptureDisabledTest
Change-Id: I977eb18619da46e1cfc5d0a8d351ea80d3ea7205
2022-04-21 13:29:42 +01:00
TYM Tsai
2ab23eed06 Merge "Auto append password hint for TextView" into tm-dev 2022-04-21 08:13:10 +00:00
TYM Tsai
bd72a95c1f Merge "Use device config to control hints allow list for fill dialog" into tm-dev 2022-04-21 02:01:13 +00:00
Simranjit Kohli
1b57e4cc4c [Autofill Crash]: Fix NPE in AutofillManager.
Bug: 227192989
Test: atest android.autofillservice.cts.dropdown.AuthenticationTest#testFillResponseAuthServiceHasNoDataWithEmptyResponse
Change-Id: If56d690882e8d4ad0dba1534f127478089c4d04f
2022-04-20 18:10:23 -07:00
Jon Eckenrode
19270f18c5 Merge "Revised the API documentation for overloaded methods getRawX, getRawY, getX, and getY of MotionEvent." am: 29b6451cef am: ad75b0c0f6 am: 5db658b8f3
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/2034083

Change-Id: I6eec0cb2d7dc0dd3fd9c0b42bef603806af3d41d
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-04-20 23:21:22 +00:00
Jon Eckenrode
ad75b0c0f6 Merge "Revised the API documentation for overloaded methods getRawX, getRawY, getX, and getY of MotionEvent." am: 29b6451cef
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/2034083

Change-Id: I8d793753a9e0f5679aa4539b07fdd3b7df4773fa
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-04-20 22:41:18 +00:00
Hongwei Wang
cf168898be Merge "Revert "Remove getSfInstance usage from ViewRootImpl"" into tm-dev 2022-04-20 19:31:59 +00:00