Commit Graph

12805 Commits

Author SHA1 Message Date
Rob Carr
e6ffb72e55 Merge "Restore new SurfaceView background implementation." into qt-dev 2019-05-15 17:41:01 +00:00
Jorim Jaggi
c3371300eb Merge "Fix copying of insets" into qt-dev 2019-05-15 10:26:02 +00:00
Jorim Jaggi
7882548b92 Fix copying of insets
Test: WindowInsetsTests
Fixes: 132057323
Change-Id: I8836a9d81ab85ce64071c48f8407e5e96dbbb1da
2019-05-14 18:54:40 +02:00
Robert Carr
b923f543e4 Restore new SurfaceView background implementation.
A previous commit reverted the new SurfaceView background implementation
due to a Z-ordering issue (where previously the backgrounds were below
ALL SurfaceView rather than EACH SurfaceView). It's easier to solve this
with relative layering as this CL does, and then we can keep the new implementation.
The new implementation has some other bug fixes in it too (see linked bug
w.r.t to setZOrderOnTop) and so it's a win.

Bug: 132353087
Test: SurfaceViewSurfaceValidator
Change-Id: I07b6e601e57fce3adb8e5ea8e173c7d7904422ca
2019-05-13 14:51:09 -07:00
Tiger Huang
ed6794ece5 Fix a bug about the z-order of layers caused by merging transactions
Each WindowContainer has its own pending transaction. These transactions
may be merged to the global one within WindowContainer.prepareSurfaces()
in a hierarchy-based order, not in a time-based order. It may cause
that a later surface operation overwritten by an earlier surface
operation. For example, atokenA.setLayer(t1, 0) was called earlier, and
then atokenA.setLayer(t2, 1) was called later. However, the layer of
atokenA might eventually be 0 because t1 could be merged into the
global transaction later.

This CL uses a single transaction per display to solve this problem.

Fix: 120282809
Test: atest SurfaceAnimatorTest
Test: Manual test with the steps in the issue.
Change-Id: Idca57d01d8be884369510642c2d9345b6ee4e3b1
2019-05-13 20:38:32 +08:00
TreeHugger Robot
db2d535782 Merge "Fixed NPE when AutofillManager.getClient() returns null." into qt-dev 2019-05-10 13:54:19 +00:00
TreeHugger Robot
1806895bc6 Merge "Re-mark addPrivateFlags as UnsupportedAppUsage" into qt-dev 2019-05-09 22:31:49 +00:00
Philip P. Moltmann
88de965bfd Re-mark addPrivateFlags as UnsupportedAppUsage
it used to be in P and we have not removed all callers yet.

Fixes: 132356891
Test: None
Change-Id: I13b3bd3c791fedde4324bbc13ab5a413b7f4205f
2019-05-09 22:17:44 +00:00
John Reck
f97ca2d9ca Merge "Add back to greylist" into qt-dev 2019-05-09 21:07:46 +00:00
Felipe Leme
51cdec536b Merge "Fixed autofill workflow to handle manual requests after session became for augmented autofill only." into qt-dev 2019-05-09 00:18:56 +00:00
Felipe Leme
e5db59df2f Fixed autofill workflow to handle manual requests after session became for augmented autofill only.
Test: atest \
  AugmentedLoginActivityTest#testAutoFill_neitherServiceCanAutofill_manualRequest \
  AugmentedLoginActivityTest#testAutoFill_neitherServiceCanAutofill_thenManualRequest \
  AugmentedLoginActivityTest#testAugmentedAutoFill_mainServiceDisabled_manualRequest \
  AugmentedLoginActivityTest#testAugmentedAutoFill_mainServiceDisabled_autoThenManualRequest \
  AugmentedLoginActivityTest#AugmentedLoginNotImportantForAutofillActivityTest#testAutofill_manualRequest \
  AugmentedLoginActivityTest#AugmentedLoginNotImportantForAutofillActivityTest#testAutofill_autoThenManualRequests
Test: atest CtsAutoFillServiceTestCases # for sanity check

Fixes: 132119724

Change-Id: I500fabc8f9a5258ea1a6184d7e7712efb56714c0
2019-05-07 17:32:31 -07:00
Rob Carr
cd58d5a512 Merge "Revert SurfaceView background implementation." into qt-dev 2019-05-07 19:59:57 +00:00
Rob Carr
87b66465b6 Merge "WM/ViewRootImpl: Fix convertFromTranslucent to respect existing state." into qt-dev 2019-05-07 19:31:36 +00:00
Robert Carr
109a8663d1 Revert SurfaceView background implementation.
We changed the SurfaceView background to be a boundless
child layer. However this was a semantic change. Each SurfaceView now
has its own background behind it instead of the backgrounds being
behind all SurfaceView. This causes an issue with some apps which
have an invisible SurfaceView hanging out for no particular reason.

Revert "SurfaceView: Correct comparison operator.",
"SurfaceView: Only show background when behind ViewRoot.",
"SurfaceView: Check correct OPAQUE flag for background visibility.",
"Correct SurfaceView background visibility.",
"Replace SurfaceView background with boundless color layer."

Bug: 123920952
Test: SurfaceViewTest. SurfaceViewSurfaceValidatorTest
Change-Id: I88ff31542ee0139d15c84ed2d6791c5cd455604b
2019-05-06 18:19:44 -07:00
Felipe Leme
74d81b8f9d Fixed NPE when AutofillManager.getClient() returns null.
Test: atest CtsContentCaptureServiceTestCases # sanity check, issue is not easily reproducible

Fixes: 131924763

Change-Id: I5785a0b03eb1bc73b4e5d3a8da6e044dafac3012
2019-05-06 09:59:14 -07:00
TreeHugger Robot
23d047ab15 Merge "Reenable CursorAnchorInfo API with ActivityView" into qt-dev 2019-05-03 17:07:35 +00:00
TreeHugger Robot
0819556982 Merge changes from topic "check display id update" into qt-dev
* changes:
  Unify context in ViewRoot
  Add test API getDisplayId for cts test
2019-05-03 16:11:01 +00:00
TreeHugger Robot
0c8199dc59 Merge "Add an @hide way to adjust CursorAnchorInfo for another Matrix" into qt-dev 2019-05-03 15:56:32 +00:00
TreeHugger Robot
b5112587de Merge "Inject session id on all AutofillIds kept in the service." into qt-dev 2019-05-03 02:17:37 +00:00
TreeHugger Robot
0459aaab3b Merge "ContentCaptureManager is notified when FLAG_SECURE is set dynamically on windows." into qt-dev 2019-05-03 01:33:38 +00:00
TreeHugger Robot
a88da2b7c7 Merge "Revert change to force_dark property" into qt-dev 2019-05-03 00:21:38 +00:00
Adam He
43c0699042 ContentCaptureManager is notified when FLAG_SECURE is set dynamically on
windows.

Fixes: 130377514
Test: # manual verification
Change-Id: I18126de8284a0c95ff61107031ffff941ca26be7
2019-05-02 16:22:50 -07:00
TreeHugger Robot
77f574dfe9 Merge "New @TestApi: AutofillId.equalsIgnoreSession" into qt-dev 2019-05-02 22:49:24 +00:00
TreeHugger Robot
f1c4f30c54 Merge "Adjust SurfaceView visibility on parent change" into qt-dev 2019-05-02 21:11:43 +00:00
John Reck
0b5db0ee72 Revert change to force_dark property
Settings can't write to persist.* without special
selinux rules. Instead for debug simplicity just
switch back to debug.hwui.force_dark and let it
reset on reboot.

Fixes: 131697927
Test: toggle override-force dark in dev options
Change-Id: Ieac6edb2a7b444fc2f63d5d4f1b657bad6ead409
2019-05-02 12:59:40 -07:00
John Reck
0962d6012c Add back to greylist
No current alternative, kicking down the road

Bug: 131766820
Test: none
Change-Id: Id9c92c0a651d98e32880aeafaa713f4e2a761813
2019-05-02 10:28:32 -07:00
TreeHugger Robot
9829cf5451 Merge "Lazy-load textclassifier settings." into qt-dev 2019-05-02 16:44:15 +00:00
Yohei Yukawa
b4f328a2f3 Reenable CursorAnchorInfo API with ActivityView
With my previous CL [1], CursorAnchorInfo API was globally disabled
for cross-display scenario including ActivityView scenario.

This CL slightly relaxes the above condition so that IMEs can rely on
CursorAnchorInfo APIs again to interact with apps running inside
ActivityView.

The basic idea here is keeping reporting relevant information from
ActivityView to InputMethodManagerService (IMMS) so that IMMS can take
the display hierarchy because of ActivityView into account.  As long
as IMMS has the up-to-date hierarchical information, IMMS can tell
InputMethodManager (IMM) running in the IME client process about the
missing coordinate transformation information from the virtual display
space to the outer display space where the IME is actually shown.

Note that there was a similar fix for AccessibilityService that keeps
reporting ActivityView location to WindowManagerService (WMS) [2].
Ideally we should be able to share the logic, but to do so we need to
introduce a generalized callback mechanism into WMS so that IMMS can
be notified when a cetain coordinate transform matrix has changed.
For Q, this CL implements IMMS's own mechanism to keep track of
ActivityView hierarchy instead of introducing a direct dependency from
WMS to IMMS.

For R+, most likely we may want to reconsider how ActivityView should
be implemented.

There should be no behavior change in this CL if ActivityView is not
involved.

 [1]: Ie2f7a5117cff3a13ad5c5806fd4b3abef7569549
      3d2cc0fffd
 [2]: I38da5b84a11890bf0f4a57eb9d5b7e71bdcc16a9
      d8ec938609

Fix: 115693908
Test: atest CtsWindowManagerDeviceTestCases:ActivityViewTest#testInputMethod
Change-Id: Id0411a80456182111bb5b681c6d1230b58e7ec2e
2019-05-02 08:41:27 -07:00
Yohei Yukawa
e4410a135b Add an @hide way to adjust CursorAnchorInfo for another Matrix
This is a preparation to support CursorAnchorInfo API in ActivityView.

In order to enable the system to automatically adjust CursorAnchorInfo
object between the IME client and IME, there needs to be an @hide
method to create a new CursorAnchorInfo instance with applying an
additional coordinate transformation Matrix, which is what this CL
does.

This CL also cleans up CursorAnchorInfoTest.java as most of test there
were already moved to CTS [1].

Anyway, this is a mechanical change.  There should be no behavior
change in existing methods in CursorAnchorInfo.

 [1]: Ib758bddff34b4722b39c94e7ad4e8f8da2bb8b92
      c4ef1d6ec22dc2af2ed339fd4e78075903783be0

Bug: 115693908
Test: atest CtsInputMethodTestCases:CursorAnchorInfoTest
Test: atest FrameworksCoreTests:CursorAnchorInfoTest
Change-Id: Ic7f9057623ffc61ec7a6121735dc39adecf4649d
2019-05-02 06:52:02 -07:00
Abodunrinwa Toki
0634af3875 Lazy-load textclassifier settings.
Re-enables reading settings from device_config.
See: I6b7ab56e4015448ee068deb49e7f6fa133fea53c
Updates tests.
Updates documentation.

Bug: 129934185
Test: atest android.view.textclassifier
Test: (Performance) Test: frameworks/base/apct-tests/perftests/textclassifier/run.sh
      Compare performance results with ConfigParser.ENABLE_DEVICE_CONFIG
      set to true vs false. Trivial regression recorded i.e. 1.03x.
Test: (Manual) Change flags and see them reflected. e.g.
      adb shell cmd device_config put textclassifier system_textclassifier_enabled false
      Verify that app no longer uses the OEM TCS but the AOSP TC.
Change-Id: I4c6ff781c97fc2e3d3da55dc49123fa1d759670a
2019-05-02 12:55:58 +01:00
Tiger Huang
d8ec938609 Refine getTransformationMatrix for windows in a re-parented display
Currently, the translation of the transformation matrix computed by
WindowState.getTransformationMatrix is related to its own display.
However, if the display has been re-parented, the translation might
be misplaced to the visual result. This CL makes it return the global
transformation matrix.

Bug: 129098348
Test: atest WindowStateTests
Change-Id: I38da5b84a11890bf0f4a57eb9d5b7e71bdcc16a9
2019-05-02 12:53:55 +08:00
Felipe Leme
785777bb05 Inject session id on all AutofillIds kept in the service.
Android Q introduce the FLAG_DELAY_SAVE, which allows the autofill service to delay the SAVE UI by
keeping the session open. But this approach introduces a new problem, as fields from different
activities could have the same AutofillId.

Test: atest MultiScreenLoginTest#testSaveBothFieldsCustomDescription_sameIds
Test: atest AutofillIdTest
Test: atest CtsAutoFillServiceTestCases # sanity check

Fixes: 113593220

Change-Id: Ibd187f5c58c150f820972fcab6d88217294ffe2d
2019-05-01 18:10:00 -07:00
TreeHugger Robot
1d40ffcabf Merge "Fix NPE in findFrameMetricsObserver" into qt-dev 2019-05-02 00:59:30 +00:00
Felipe Leme
7b307ea7b2 New @TestApi: AutofillId.equalsIgnoreSession
Test: atest FrameworksCoreTests:android.view.autofill.AutofillIdTest
Bug: 113593220

Change-Id: I72c5727638558d3b8dc0c57045a8e43c1d506069
2019-05-01 17:04:37 -07:00
TreeHugger Robot
9f590ef1a9 Merge "Propogate disabled state to content capture session after changing user restrictions or on ccm.setContentCaptureEnabled()." into qt-dev 2019-05-01 23:50:58 +00:00
John Reck
d0abd668b3 Adjust SurfaceView visibility on parent change
Bug: 131239825
Test: manual testing in youtube, SurfaceViewSyncTests still pass

Change-Id: Ib1262f22b4be65ea2776ebfe930d7181b487bc99
2019-05-01 14:30:51 -07:00
Matt Pape
8e24abad64 Merge "Migrate usage of single property lister to multi prop listener." into qt-dev 2019-05-01 17:20:12 +00:00
Matt Pape
15769e2ffa Migrate usage of single property lister to multi prop listener.
Test: atest CtsViewTestCases:TextClassificationManagerTest
      atest FrameworksCoreTests:TextClassificationManagerTest
      atest ExtServicesUnitTests:AssistantSettingsTest
      atest SystemUITests:SmartReplyConstantsTest
      atest FrameworksServicesTests:AutofillManagerServiceTest
      atest FrameworksUiServicesTests:NotificationManagerServiceTest
Bug: 128902955
Change-Id: I00e524b615b3bd03b6b40535410ff7eb2ef6f8ee
2019-04-30 16:35:16 +00:00
lumark
9a72d2285c Don't allow showing IME on untrusted virtual displays
Sometimes users can have sensitive information in IME window, such as
predictions or custom background.

If app could create a virtual display with system decorations support,
the security leak may happen that app can read the text or image from
the surface.

Add a check if the display is trusted that owned by system
When showSoftInput requested, if the display is not trusted then
show IME on default display.

Note that we also modified ImeDisplayValidator to use dedicated API
IWindowManager#shouldShowIme for checking if IME support on a display.
(And add it as @TestApi for CTS to verify)

Fix: 129443632
Fix: 129881992
Test: atest MultiDisplaySystemDecorationTests

Change-Id: Icfd66689dad4b782c50b56a515194dd138d3b280
2019-04-30 16:43:09 +08:00
Robert Carr
7edecb35e6 WM/ViewRootImpl: Fix convertFromTranslucent to respect existing state.
Code-paths triggered by convertFromTranslucent end up setting an opaque
state both on the client side and the WindowManager side, without
appropriately checking to see if we were already non-opaque before we
were convertedToTranslucent.

Bug:126897750
Test: Manual
Change-Id: I2d19624be31330100b61615fabae04899d95cda9
2019-04-29 16:06:14 -07:00
John Reck
140ff5ea8e Fix NPE in findFrameMetricsObserver
Fixes: 120536278
Test: none
Change-Id: Ie32b10c5ab7e94367f8a21892dfe6d2be4d81d19
2019-04-29 13:13:01 -07:00
Charles Chen
5299ad093c Unify context in ViewRoot
To fix the issue that mContext is not updated when moved to another
display, we previously introduce mDisplayContext as a workaround in [1].
Change to use Context#updateDisplay(int) to unify mDisplayContext to
mContext.

[1]: Ifa0ca24e9cf764caf492ee065606680b6a06751a

Bug: 116349163
Change-Id: I3adbb32a584ac3405563904c1fd077e96e0807c1
Test: atest ActivityManagerMultiDisplayTests
Test: atest CtsInputMethodTestCases CtsInputMethodServiceHostTestCases
Test: atest InputMethodManagerTest
Test: atest InsetsControllerTest
Test: atest InsetsSourceConsumerTest
Test: atest ImeInsetsSourceConsumerTest
Test: atest CtsActivityManagerDeviceTestCases:MultiDisplayClientTests
2019-04-29 12:00:57 +08:00
Charles Chen
414820ecc2 Add test API getDisplayId for cts test
Bug: 130379901
Bug: 116349163
Test: atest MultiDisplayClientTests
Change-Id: I6f26c3b5a3abcd82945298e62015ea1259aea954
2019-04-29 11:57:39 +08:00
TreeHugger Robot
7f13e479bc Merge "Always instantiate DisplayAddress.Physical" into qt-dev 2019-04-27 00:01:01 +00:00
Adam He
6c0afca46a Propogate disabled state to content capture session after changing user
restrictions or on ccm.setContentCaptureEnabled().

Bug: 124127364
Test: # manual verification
Change-Id: Ic9688f33f8b9153ab967e5842f939a18fe85412e
2019-04-26 15:22:00 -07:00
John Reck
8538ceba82 Merge "Fix some force_dark prop behaviors" into qt-dev 2019-04-25 23:37:05 +00:00
John Reck
8915167a88 Fix some force_dark prop behaviors
* Make it persist.hwui.force_dark so the dev option
  survices reboots.

* Remove the internal super-override behavior it applied
  using only the intended ViewRootImpl theme-aware behavior.

Fixes: 127350499
Fixes: 130354206
Test: set dev option, verified nothing went dark. Set dark
theme, verified non-dark apps were force-darked. Rebooted
and verified property still set.

Change-Id: I43adcbc25320669510fb03b162c98cbd14612f55
2019-04-25 10:59:23 -07:00
Dominik Laskowski
0de02a8df4 Always instantiate DisplayAddress.Physical
In legacy multi-display mode with at most two physical displays,
physical display IDs reduce to the port IDs for the internal and
external connections.

This CL instantiates a DisplayAddress.Physical whose getModel method
returns null, such that port-dependent logic (e.g. display settings
and input association) works on legacy systems without EDID support.

Bug: 130672828
Test: dumpsys display
Change-Id: I12a40078c5e3666e59283623ec600e8d76493359
2019-04-25 10:19:40 -07:00
Chavi Weingarten
6ce572ec6c Merge "Added direct call to syncInputTransactions" into qt-dev 2019-04-25 16:27:37 +00:00
chaviw
84dec9f7c6 Added direct call to syncInputTransactions
Previously, there was only a way to inject input after syncing inputs.
However, some tests require a direct call to sync inputs since we need
to ensure the info was propagated to InputManager native before
continuing with the test. This exposes a method just to
syncInputTransactions.

Bug: 130695122
Test: ActivityLifecycleTopResumedStateTests
Test: MultiDisplayPolicyTests
Change-Id: Ie3115741a20d04c743fd854ac421dc3705332488
2019-04-24 17:01:31 -07:00