Commit Graph

18316 Commits

Author SHA1 Message Date
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
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
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
Yohei Yukawa
538f36937d Merge "Let A11yIME use its own IPC definitions" into tm-dev 2022-04-20 17:42:55 +00:00
shawnlin
bcea9fd89e Support scaled cutout & roundedcorners when resolution is overridden
In current desgin, the confgis for cutout and rounded corner are based
on the original display size. If the display resolution is overridden,
cutous and rounded corners will be drawn in incorrect places with
incorrect size.

We should load the cutout & rounded corners with the orignal display
size and then scale the results with the display ratio which is
calculated by dividing current size with original size.

Bug: 209592558
Test: manual:
      1. Go Settings-> Display-> Screen Resolution
      2. Switch between FHD+ and QHD+
      3. Check if the cutout and rounded corner looks the same as they
	 are in the original display size.
Test: manual:
      1. adb shell wm size 1080x2340
      2. Check if the cutout and rounded corner looks the same as they
         are in the original display size.
Test: atest DisplayCutoutTest LocalDisplayAdapterTest
          ScreenDecorationsTest RoundedCornerResDelegateTest
Change-Id: Iea42b73c0276b82983c1ddbce9455355afdc164d
2022-04-20 10:03:19 +08:00
TYM Tsai
1f5c147eb5 Auto append password hint for TextView
Some TextViews are made as password via input type but does not
contain autofill password hint. This change auto append a hint
for autofill to identify.

Bug: 219844915
Test: atest android.autofillservice.cts.dialog.LoginActivityTest
Change-Id: Ifd18c56ffe788a601821d178ace41413f9e0454e
2022-04-20 03:55:33 +08:00
TYM Tsai
bbf0074056 Use device config to control hints allow list for fill dialog
For the performance consideration, we don't prefer to trigger a
FillRequest for autofill dialog at the Activity starting. We only do
that if one of the fields is a password or contains the allowed
AutofillHints for fill dialog.

Bug: 219844915
Test: set device config, check whether do a fill request at starting
Change-Id: I8cc8c99d1f0e716ad293fa612f65aa2a8d23b028
2022-04-20 02:13:28 +08:00
Hongwei Wang
9e5b4ec816 Revert "Remove getSfInstance usage from ViewRootImpl"
This reverts commit a825a5c0d9.

Reason for revert: regression as b/228282275

Bug: 222696368
Bug: 228282275
Change-Id: Iba99b5a9ab53a829ce4928cccc47293e62f76162
2022-04-19 11:09:27 -07:00
Rob Carr
23e043e977 Merge "SurfaceControlViewHost: Allow updating of WindowContext used for SCVH" into tm-dev 2022-04-19 15:47:26 +00:00
Ryan Lin
6a435bb6bb Merge "Fix InlineFilteringTest#testFiltering_filtersByPrefix" into tm-dev 2022-04-19 02:35:08 +00:00
ryanlwlin
9f226ba4c4 Fix InlineFilteringTest#testFiltering_filtersByPrefix
The window matrix of the embedded window is not updated if the second
host SurfaceView  doesn't have any offset. To esnure the window matrix
is up-to-date, we force to update the matrix when the embedded hierarchy
is initialized.

Bug: 229178859
Test: atest InlineFilteringTest#testFiltering_filtersByPrefix
      atest android.accessibilityservice.cts
Change-Id: Ib23af520fcbaa1788e3ef22a1086b90a0801375c
2022-04-19 10:31:49 +08:00
Robert Carr
2fd500488a SurfaceControlViewHost: Allow updating of WindowContext used for SCVH
Our initial attempt to allow updating the configuration of
SurfaceControlViewHost was insufficient when the SurfaceControlViewHost
is using a service context. This service context will always be
on the global configuration, and ViewRoot won't be able to override it.
We add some documentation suggesting the user use a window context,
and wire up SurfaceControlViewHost VRI so that they are the authority
on configuration (and propagate the change in to the context).

Bug: 215204813
Test: SurfaceControlViewHostTests. Manual in game overlay+split-screen
Change-Id: I24c0309593b7fddaeab8db355f63a5f6bd763562
2022-04-18 22:11:10 +00:00
Yohei Yukawa
c60176c1f3 Let A11yIME use its own IPC definitions
This is a follow up CL to our previuos CL [1], which enabled
AccessibilityService to use a subset of InputConnection APIs.

In that CL we have reused existing AIDL interfaces that were designed
and maintained for IMEs for simplicity, where a non trivial amount of
unnecessary IPC endpoints were included.

From the security and maintainability viewpoints, however, exposing
unnecessary IPC endpoints is discouraged in general.  To address such
concerns this CL introduces a set of dedicated IPC definitions for
A11yIME so that we do not need to reuse IPCs for IMEs.

This CL also stops passing InputBinding object to A11yIME process as
it contains IInputContext Binder Proxy, which can still be used to
directly invoke fallback InputConnection.  This is doable now because
A11yIME no longer relies on fallback InputConnection [2].

This CL is should not have any observable changes in the semantics.
End-to-end CTS tests guarantee that everything is still working as
intended now and in the future.

 [1]: Ia651a811093a939d00c081be1961e24ed3ad0356
      fb17e5ae7a
 [2]: I2af3cd50444d8ddf25aa0f6479238156914e6fff
      dc635efb68

Fix: 215633021
Fix: 215636776
Test: atest CtsInputMethodTestCases:AccessibilityInputMethodTest
Test: atest CtsAccessibilityServiceTestCases:AccessibilityInputConnectionTest
Test: atest CtsAccessibilityServiceTestCases:AccessibilityImeTest
Change-Id: I5ff2e804cbcf90828370a0612ff54111130bdff4
2022-04-18 08:59:44 -07:00
Robert Carr
1e780ab02d SurfaceView: Ensure position update listener sets at least once
If we destroy and recreate a SurfaceView in the same frame its
possible for positionChanged for the new surface to arrive
before positionLost for the old surface. In this case we
won't clear mRtLastReportedPosition, and so we won't set
any position at all on the new surface.

Bug: 229052731
Test: Existing tests pass
Change-Id: I896496afa5b05848f96b20697d33911cae9639a7
2022-04-14 16:12:01 -07:00
Chavi Weingarten
700cdec45b Merge "Set mSyncBuffer to true when VRI did not initiate the sync request" into tm-dev 2022-04-14 14:19:43 +00:00
Ryan Lin
565d2b1b85 Merge changes from topic "nodebounds" into tm-dev
* changes:
  remove embeddedMatrix usage for PIP menu
  Change node bounds procedure based on SufaceFlinger Callback
2022-04-14 01:55:04 +00:00
chaviw
2e09cb3188 Set mSyncBuffer to true when VRI did not initiate the sync request
VRI can initiate syncs, but they can also happen from other places when
using SurfaceSyncer. When VRI initiates the sync, sometimes the buffer
needs to be synced. Other times, we just want to know the buffer has
drawn, but don't actually need to sync the buffer.

When a sync is initiated from outside VRI, using SurfaceSyncer, we
always want to sync the buffer. This change ensures that if the sync was
started from an outside request, it will set mSyncBuffer to true.

An additional part to clarify the sync logic, renamed mLastSyncId to
mSyncId and renamed isInSync to isInLocalSync to clarify that the
mSyncId only represents VRI initiated syncs.

Test: Internet Dialog syncs buffer
Fixes: 229098223
Change-Id: I99e9e6341a487d59c33a33a61e442be7909518c2
2022-04-13 15:41:45 -05:00
Tiger Huang
e467b6e722 Fix InsetsState#calculateVisibleInsets
Before the new insets system, a window wouldn't receive visible insets
if it:
 - has FLAG_LAYOUT_NO_LIMITS,
 - is not TYPE_WALLPAPER or TYPE_SYSTEM_ERROR, and
 - is not in multi-window mode.

This CL makes the visible insets compatible with the legacy insets
system.

Fix: 223536648
Test: atest InsetsStateTest
Change-Id: Ia73142cfae701d0532a9a397366c50aeef82abb2
2022-04-13 18:13:52 +08:00
TreeHugger Robot
36d012ca1c Merge "Extend providedInternalInsets to be type specific" into tm-dev 2022-04-13 01:53:07 +00:00
Yurii Zubrytskyi
bb014567f5 frameworks/base - Tiramisu is now 33
Removed deprecated at birth APIs

Test: build and boot
Bug: 225745567
Change-Id: I8a40f4a08e521a7c9632d7652ff1f51fb137b34d
2022-04-12 08:25:15 -07:00
ryanlwlin
7bdc82af7c Change node bounds procedure based on SufaceFlinger Callback
The attachInfo from ViewRootImpl is not reliable
for DisplayArea manipulation or windowless window.

To fix this problem, we use the transform matrix of
InputWindowHandle, which could transform the bounds
from window coorindate to screen coordinate. We also
transfrom the bounds to logical display coordinates
with the associated display matrix.

Besides, we also record the magnification spec of the window,
which could get the bounds before magnification. We use
this value to decide the property 'visibleToUser'.

Bug: 200797785
Test: atest android.accessibilityservice.cts WindowInfoTest
      atest com.android.server.accessibility
Change-Id: I0917b04fe8b027fb2bd932a6f0604ba1449ebc66
2022-04-12 22:24:21 +08:00
Jorim Jaggi
331f163d20 Merge "Fix doc issue linking internal class" into tm-dev 2022-04-12 12:50:54 +00:00
Jorim Jaggi
4e87d6ff0a Fix doc issue linking internal class
Fixes: 148043444
Change-Id: If43ebe0ec38cc00379d8db79481ef2c3116ce867
2022-04-11 22:25:56 +02:00
Tiger Huang
ed3f2e3803 Fix WindowInsets#getStableInsets
WindowInsets#getStableInsets should return system bar insets as if
system bars are visible, regardless of the window flags.

Fix: 228807465
Test: See if a window with FLAG_LAYOUT_NO_LIMITS or FLAG_FULLSCREEN can
      receive all the system bar insets.
Change-Id: Ib8fff5ba78c8f52141a048027821ef182d2f7992
2022-04-11 17:53:21 +08:00
Tony Huang
9074b73ec7 Merge "Remove getSfInstance usage from ViewRootImpl" into tm-dev 2022-04-08 06:41:24 +00:00
Shan Huang
be460cbac4 Merge "Create OnBackInvokedCallbackInfo to wrap callback and its priority." into tm-dev 2022-04-08 04:07:53 +00:00
Tony Huang
a825a5c0d9 Remove getSfInstance usage from ViewRootImpl
The getSfInstance usage on ViewRootImpl is target to reduce jank
when moving split divider, but legacy split is going to be depracated
and it didn't used on new split too so we can remove whole related
codes safely.

Bug: 222696368
Test: build pass
Change-Id: Icf9b543bdd1d4bee54efb3be852722f247d1bd47
2022-04-07 18:15:27 +08:00
TreeHugger Robot
579f8a6234 Merge "Allowing SurfaceViewHost to show up in layout inspector" into tm-dev 2022-04-07 09:28:47 +00:00
Riddle Hsu
a3348272e7 Merge "Pass background color from transition info to remote animation" into tm-dev 2022-04-07 08:41:17 +00:00
Shan Huang
b353af0387 Create OnBackInvokedCallbackInfo to wrap callback and its priority.
Main motivation is to store a back callback's exact priority value in WM. This is required by the IME migration (ag/17076160) to compare the priority levels of IME window callback and focused window callback in BackNavigationController.

This also consolidates the WindowState#mSystemOnBackInvokedCallback and WindowState#mApplicationOnBackInvokedCallback fields into one field, as tracking two fields for one callback was error prone. We had to remember to clear the application / system field when the other field is set, and failing to do so has resulted in bugs such as b/222675481.


Bug: 224856664
Test: atest BackNavigationControllerTest
Test: atest WindowOnBackInvokedDispatcherTest
Test: m -j and test back behavior throughout the system on apps that
opted in and out.

Change-Id: Ic57113610d934f33d2c9ca4cef59f39a9b87e832
2022-04-07 05:11:42 +00:00
Tiger Huang
88fdb7aa46 Merge "Update touch mode regardless of mStopped" into tm-dev 2022-04-07 02:17:08 +00:00
Sunny Goyal
87ec28b2ed Allowing SurfaceViewHost to show up in layout inspector
Bug: 191298629
Test: Verified on device
Change-Id: I83c74423b6f33f45cdd93926badb2cad32c7a86d
2022-04-07 00:37:17 +00:00
TreeHugger Robot
8d96a38173 Merge changes from topic "presubmit-am-28395e19f737446e92e70dc9b28f2424" into sc-v2-dev-plus-aosp
* changes:
  [automerge] DO NOT MERGE: SurfaceControlViewHost: Restrict disclosure of input token 2p: 0cfda55b95
  DO NOT MERGE: SurfaceControlViewHost: Restrict disclosure of input token
2022-04-06 18:40:40 +00:00
Shan Huang
d47a172963 Merge "Dispatch KEYCODE_BACK to the full input pipeline in compat callback." into tm-dev 2022-04-06 17:38:38 +00:00
joneckenrode
f8ee4049b6 Revised the API documentation for overloaded methods getRawX, getRawY, getX, and getY of MotionEvent.
Bug: 172573621
Test: Built API documentation
Signed-off-by: joneckenrode <joneckenrode@google.com>
Change-Id: I87006493a3876da1338694120c92ec3f0ea6c3cf
2022-04-06 16:34:48 +00:00
Tiger Huang
df309af84e Update touch mode regardless of mStopped
The very first state of touch mode is obtained from addToDisplay. It
should be applied in the first performTraversal regardless of mStopped.
In this way, when an app window is re-created at the background, the
touch mode state can still be up-to-date.

Fix: 227843343
Test: 1. Open Chrome and go to the homepage.
      2. Change the theme via the 3-dot menu > Settings > Theme.
      3. Go back to the homepage and see if any button is focused.
      Expected behavior: no button looks focused.
Change-Id: I2681e2436dd265abe9cd9bdd56ee5799fa30d89b
2022-04-06 18:26:27 +08:00
Yunfan Chen
72e2997f31 Extend providedInternalInsets to be type specific
This change will change the providedInternalInsets from a single insets
to a insets array. The one adding the insets can make use of the array
to apply different insets to the window when calculating the provided
insets by the window for different insets types.

With that, the task bar can provide zero insets for the tappable element
type when stashed.

Bug: 215411414
Test: DisplayPolicyTests
Change-Id: I84cd7ef6a2bc19229d3c09f752f65c83eb5c7dde
2022-04-06 16:55:54 +09:00
Rob Carr
169f3d8c61 Merge "ViewRootImpl: Ensure seqId only increases" into tm-dev 2022-04-06 04:53:55 +00:00
Haoyu Zhang
ef233d0fad Merge "Scribe: fix handwriting is not initiated in WebView" into tm-dev 2022-04-06 00:18:12 +00:00
Robert Carr
faac19df96 DO NOT MERGE: WM: Call Transaction#sanitize am: 20303e05bf
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/16811293

Change-Id: Ic9ef9b4e3b852abad4f48db78c9b24a560ebf5d8
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-04-05 22:30:27 +00:00
Presubmit Automerger Backend
18bd9876ce [automerge] DO NOT MERGE: SurfaceControlViewHost: Restrict disclosure of input token 2p: 0cfda55b95
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17562439

Bug: 215912712
Change-Id: I3ba5c200fb3266a21b98909b5faa288a75c9fda6
2022-04-05 19:22:04 +00:00
Robert Carr
0cfda55b95 DO NOT MERGE: SurfaceControlViewHost: Restrict disclosure of input token
Currently we send the input (channel) token from the embedded
view hierarchy to the remote embedding process via SurfacePackage.
This is used to call grantEmbeddedWindowFocus. However this could also
allow the host process to invoke updateInputChannel, which is not
desirable. To fix this we rework updateInputChannel to work in terms
of a focusGrantToken, which only carries this 1 capability.
SurfacePackage is modified to not include the input token, but rather
include this focus grant token.

Bug: 215912712
Test: SurfaceControlViewHostTests
Change-Id: Ie278f678f12f50c32f142a4260ff7d1c2a9ca57c
(cherry picked from commit 501ee91b95)
2022-04-05 19:21:55 +00:00