Commit Graph

5406 Commits

Author SHA1 Message Date
TreeHugger Robot
aedd857b68 Merge "Logging for DisplayPowerController SuspendBlockers" into tm-dev 2022-06-03 17:59:53 +00:00
Antony Sargent
725dad7d71 Prevent deadlocks during VirtualDisplay creation
When creating a VirtualDisplay for a VirtualDevice, we need to do some
extra work like setting up for input injection, creating a
DisplayWindowPolicyController, and grabbing a wakelock to keep the
display awake. Some parts of this extra work end up calling back into
the DisplayManagerService from another thread, but since we're already
holding the mSyncRoot lock we sometimes get into situations where
those threads get blocked trying to acquire mSyncRoot, while holding a
lock that another thread ends up needing like the global window
manager one, so we get deadlock.

The fix in this CL is to break up the extra work the
VirtualDeviceManagerService needs to do into two parts: one part that
happens before the VirtualDisplay is created, and one part
after. Neither of these needs mSyncRoot to be held.

Fixes: 230544802
Test: atest CreateVirtualDisplayTest
Change-Id: I6a6e03f816567579510b3f1ef0705375549a3c88
2022-05-29 11:18:36 -07:00
Santos Cordon
1fe8fe5b7b Logging for DisplayPowerController SuspendBlockers
Bug: 213407479
Test: Manually verify via 'adb shell dumpsys display'
Change-Id: I2948319fc0354adf6e25b30ca11654c368c1e1d5
2022-05-28 17:13:20 +00:00
TreeHugger Robot
d5b0c3f163 Merge "Add ALL_INCLUDING_DISPLAYS category for getDisplays()" into tm-dev 2022-05-25 02:40:34 +00:00
Emilian Peev
f25e9aec2a Merge "Camera: Pass shared outputs during advanced extension configuration" into tm-dev 2022-05-24 22:20:42 +00:00
Santos Cordon
3be5498e61 Add ALL_INCLUDING_DISPLAYS category for getDisplays()
Add a category for DisplayManager#getDisplays() that includes
disabled/inaccessible/temporary displays in the set of returned
Displays.

Bug: 221071695
Test: adb shell cmd display get-displays \
      android.hardware.display.category.ALL_INCLUDING_DISABLED
Change-Id: If06f7f8b7f9ba4779a19d24d76fb49e95a908afc
2022-05-20 11:27:45 +00:00
yuanjiahsu
fc06fc5cb1 Defines flag to disable touch feedback on display
Define FLAG_TOUCH_FEEDBACK_DISABLED to disable touch sound and haptic feedback when creating virtual display.

Bug: 185558698
Test: atest FrameworksCoreTests:ViewRootImplTest, manual testing
Change-Id: Ida67f4027f2636e004218595b3bf088c06194522
2022-05-19 06:01:55 +00:00
Shuzhen Wang
23767f998d Camera: Add videoStabilizationMode to Camera session stats
Test: ./out/host/linux-x86/bin/statsd_testdrive 227
Bug: 224639088
Change-Id: I2a7b0965662b729585d0aa6e6a1e6407e448ddfe
2022-05-17 14:20:53 -07:00
Prabir Pradhan
648717a3b1 Merge "Consolidate testing for input changes" into tm-dev 2022-05-16 13:22:00 +00:00
TreeHugger Robot
b15596cb67 Merge "Camera: Update doc to describe tradeoff of DEFAULT timestamp base" into tm-dev 2022-05-14 18:05:10 +00:00
Brian Duddie
73d4b0f98f Add note about Sensor.TYPE_HEAD_TRACKER visibility
In Android 13, this sensor type is generally not expected to be used by
apps.

Bug: 224619073
Test: compile; comment change only
Change-Id: Ic6f56b6d354777dcf608d34314d6e4e7b7af36b8
2022-05-13 20:47:08 +00:00
Shuzhen Wang
bca2a32c73 Camera: Update doc to describe tradeoff of DEFAULT timestamp base
Describe the tradeoffs of preview jitter reduction, and mention that
the application can turn off jitter reduction for better latency.

Test: Build
Bug: 195025014
Change-Id: I68f99efe6a35ae9db0f4cdf75ef31879f8550ff8
2022-05-13 10:47:37 -07:00
Prabir Pradhan
0f9ea02be0 Reland: Change input injection security model
This reverts commit 6b3c6cae3f.

Changes from revert:
- Explicitly maintain the same behavior as previous versions of Android,
  where injection is allowed into all window if the caller has the
  INJECT_EVENTS permission, even if it is targeting a certain uid. This
  fallback will be removed separately in b/228161340.
- Clear the calling identity before checking if the injection source has
  a permisssion to avoid hitting blanket-checks in PackageManager that
  denys permissions in some cases, such as if the permission check call
  is coming from an instant app (b/228319794).
- Leave the existing IInputManager#injectInputEvent method signature
  unchanged, and add a new input method injectInputEventToTarget to
  perform targeted injection. This makes it so that tools or apps
  relying on the @UnsupportedAppUsage injection method will not be
  broken by a change in the method's signature (b/228583652).

Bug: 207667844
Bug: 194952792
Test: Run tests affected by b/228319794 and its duplicates using
cts-tradefed, so that they are also run as instant apps.
Test: Test scrcpy tool works locally

Change-Id: I503e4f087501e3aecf2c18b4b1d27e51ecda59ac
Merged-In: I503e4f087501e3aecf2c18b4b1d27e51ecda59ac
2022-05-10 18:40:32 +00:00
Emilian Peev
c7f3fa1920 Camera: Pass shared outputs during advanced extension configuration
Shared outputs are not expected to be part of the main output
configuration list. Expect to receive the shared surfaces only
as part of the corresponding shared list.

Bug: 231636379
Test: Camera CTS
Change-Id: I67547a38ed97d55c8270196403d4af5d62795351
2022-05-09 11:10:48 -07:00
TreeHugger Robot
4d2ae2655e Merge "Camera: Propagate extension results in case of dropped frames" into tm-dev 2022-05-05 23:11:58 +00:00
Prabir Pradhan
9c54e12337 Consolidate testing for input changes
Make sure a consistent and comprehensive set of tests run when parts of
the input pipeline are changed.

Bug: 231623960
Test: presubmit
Change-Id: I08cd9966d436d21694e26b81aaf9c141cea47595
2022-05-05 21:19:15 +00:00
Prabir Pradhan
dd2c72a65d Merge changes from topics "presubmit-am-e1ccffb4201944be9e638acb9f6f4dfc", "presubmit-am-e6236e948fb14688bc4afb3adb9e745b" into tm-dev
* changes:
  Synchronize pointer display change requests
  Make virtual input device creation synchronous
2022-05-05 19:21:40 +00:00
Evan Severson
7935bf8b27 Merge "Make the authentication requirement configurable for toggles" into tm-dev 2022-05-05 16:28:13 +00:00
Prabir Pradhan
d4fd3a112b Synchronize pointer display change requests
Previously, when InputManagerService requests for PointerController to
change the pointer display, there was no way to know when the request
was completed or whether it succeeded. This could lead to a few issues:

- WM's MousePositionTracker's coordinates would not be updated until the
  next mouse event was generated, meaning the position would be out of
  sync.
- The creation of a virtual mouse device moves the pointer to a specific
  displayId. In order to test this behavior, we would need to sleep in
  the test code to wait for the system to update the pointer display and
  position, resulting in generally flaky tests.

Here, we add a way to synchonize changes to the pointer display so that
InputMangerService can know the current pointer display with certainty.
PointerController, which is updated in the InputReader thread, is the
source of truth of the pointer display. We add a policy call to notify
IMS when the pointer display changes.

When the pointer display is changed, the cursor position on the updated
display is also updated so that the VirtualMouse#getCursorPosition() API
is synchronized to the pointer display change.

Bug: 216792538
Test: atest FrameworksServicesTests:InputManagerServiceTests
Test: atest PointerIconTest
Change-Id: I578fd1aba9335e2e078d749321e55a6d05299f3b
Merged-In: I578fd1aba9335e2e078d749321e55a6d05299f3b
2022-05-05 14:20:45 +00:00
Ilya Matyukhin
de84e3f019 Merge "Respect halControlsIllumination provided by the HAL" into tm-dev 2022-05-05 00:09:00 +00:00
Shuzhen Wang
b1d13ce6bd Merge "Camera: Fix typos and bad format in docs" into tm-dev 2022-05-05 00:01:18 +00:00
Ilya Matyukhin
59d49a4238 Respect halControlsIllumination provided by the HAL
Bug: 224573604
Test: atest SystemUITests:com.android.systemui.biometrics
Change-Id: I665b8c6a131ff3fd66701fea7ca6368e33b39c13
Merged-In: I665b8c6a131ff3fd66701fea7ca6368e33b39c13
2022-05-04 21:35:42 +00:00
Shuzhen Wang
2e3e00ee63 Camera: Fix typos and bad format in docs
Test: Build
Bug: 231252657
Change-Id: I3006f124baab76aa011c5b91d346b871ed6eea22
2022-05-04 12:07:47 -07:00
Evan Severson
75821bfd72 Make the authentication requirement configurable for toggles
Test: Manual && CtsSensorPrivacyTestCases
Fixes: 227517111
Change-Id: Id7ee5d8ca9ee264c18d2f7e1975e0d4fcb6210ab
2022-05-03 21:04:35 +00:00
Emilian Peev
ceb6591e53 Camera: Propagate extension results in case of dropped frames
Capture results can be present and can be safely passed back to
client in case of frame drops within the source image reader.
Detect cases where results will get discarded, filter the tags
and notify clients accordingly.

Bug: 230790669
Test: Camera CTS
Change-Id: Ia3f77d9398165663073c01bdf8d3421fd86a67c4
2022-05-03 13:16:14 -07:00
TreeHugger Robot
0927574f3f Merge "Remove the usage of device_config flag: DisplayManagerService.KEY_ALLOW_ALWAYS_UNLOCKED_VIRTUAL_DISPLAYS." into tm-dev 2022-05-03 19:29:34 +00:00
Shuzhen Wang
c1a0dc2c61 Merge "Camera: Update timestamp base doc for SurfaceTexture" into tm-dev 2022-04-29 17:27:23 +00:00
Zixuan Qu
0fce6f2150 Remove the usage of device_config flag: DisplayManagerService.KEY_ALLOW_ALWAYS_UNLOCKED_VIRTUAL_DISPLAYS.
Test:  atest  DisplayManagerServiceTest
Bug: 227384335
Change-Id: I125761acfd6f91a362484abacd6bc92cdfbd9a52
2022-04-27 11:36:55 +00:00
Joe Bolinger
50941f8b9c Merge "Do not clear calling identify when using BiometricPrompt from FingerprintService." into tm-dev 2022-04-22 19:16:48 +00:00
Ilya Matyukhin
559244bd5e Merge "Enable RRS (FHD<->QHD) support for UDFPS" into tm-dev 2022-04-21 05:55:03 +00:00
Emilian Peev
50a87aa8b1 Merge "Camera: Add support for client requests&results for advanced extensions" into tm-dev 2022-04-20 22:36:16 +00:00
Ilya Matyukhin
84438ca22b Enable RRS (FHD<->QHD) support for UDFPS
UDFPS position and assets are configured in pixels in native
resolution. This CL adds a mechanism to detect a runtime resolution
change and scale the UDFPS coordinates accordingly.

Bug: 223342274
Test: atest SystemUITests:com.android.systemui.biometrics
Change-Id: Iaa1f3d633b50019d06bdecb5063490ad6eb11272
2022-04-20 21:15:14 +00:00
Shuzhen Wang
96619bc7c5 Camera: Update timestamp base doc for SurfaceTexture
Test: Build
Bug: 195025014
Change-Id: Idff78a881fa5575f4ffea85408529a930d3b247a
2022-04-19 10:24:08 -07:00
Ilya Matyukhin
861744dde9 Refactor FingerprintStateListener to BiometricStateListener
This will allow to reuse the logic around onEnrollmentsChanged for face.

Face doesn't have a mechanism to cache the enrollment state, and there
is nothing fingerprint-specific in FingerprintStateListener, so it's an
obvious choice the refactor this class to support all biometrics.

Bug: 221037350
Test: atest com.android.server.biometrics
Test: atest com.android.systemui.biometrics
Test: atest KeyguardUpdateMonitorTest
Test: com.android.server.biometrics
Change-Id: Id039136c8fb01627de5a0f3e92d2f9fd89500539
2022-04-14 20:08:52 +00:00
Shuzhen Wang
9f832f33c0 Merge "Camera: Add user tag field to CameraActionEvent" into tm-dev 2022-04-14 01:50:57 +00:00
TreeHugger Robot
7af7fcbeb0 Merge "Camera: Improve documentation for 3A regions" into tm-dev 2022-04-12 23:38:05 +00:00
Shuzhen Wang
1d6b7ec2bc Camera: Add user tag field to CameraActionEvent
Test: ./out/host/linux-x86/bin/statsd_testdrive 227
Bug: 223671217
Change-Id: Ia3af0ba5f249a0cabbbdc8668a041632342fc8b6
2022-04-12 13:25:48 -07:00
Emilian Peev
d6b3ab77a0 Camera: Add support for client requests&results for advanced extensions
Allow camera clients to query for any orthogonal camera parameters that
can be applied during advanced extension capture sessions.
Enable capture result callbacks in the same scenario as well as single
catpure requests to the preview client surface.

Bug: 198447410
Test: Camera CTS

Change-Id: Ia51cc0813a93963d628ea73beb54ed080f4696e7
2022-04-11 15:33:31 -07:00
Prabir Pradhan
6b3c6cae3f Revert "Change input injection security model to require INJECT_..."
Revert "Update WindowInputTests after changing injection permiss..."

Revert "Change input injection security model to require INJECT_..."

Revert submission 17125748-require-inject-events-permission

Reason for revert: b/228203157, b/228194124, b/228583652
Reverted Changes:
Ib0d66eff3:Change input injection security model to require I...
Ief1a2f10c:Update WindowInputTests after changing injection p...
Ie2d8d0c3d:Change input injection security model to require I...

Change-Id: I4e77238f00ccd6379486ba77613430fbf166821c
2022-04-08 17:49:17 +00:00
TreeHugger Robot
94bba02785 Merge "Check that InputDevice isn't null and add annotations" into tm-dev 2022-04-07 00:20:58 +00:00
Joe Bolinger
9b3c3a949b Do not clear calling identify when using BiometricPrompt from FingerprintService.
Bug: 214261879
Test: atest AuthControllerTest FaceAuthenticationClientTest FingerprintAuthenticationClientTest
Test: Manually verify with test apps in bug
Change-Id: I8ae9f2b8a970bf7e5d32121dc358f7d0f0d060b8
2022-04-06 23:21:18 +00:00
Shuzhen Wang
868bff5d75 Merge "Camera: Validate physical setting map in OutputConfiguration.writeParcel" into tm-dev 2022-04-06 17:37:45 +00:00
Shuzhen Wang
231f7b67ff Camera: Validate physical setting map in OutputConfiguration.writeParcel
If the physical camera settings map doesn't contain a key for the
logical camera id, throws an exception.

Test: LogicalCameraDeviceTest
Bug: 220730433
Change-Id: I716fa4b81a6e48538aebfac41b96d5d21fdb6a2e
2022-04-05 23:13:51 +00:00
Prabir Pradhan
0df8e9cedd Merge "Change input injection security model to require INJECT_EVENTS permission" into tm-dev 2022-04-05 11:04:50 +00:00
Alex Buynytskyy
b1b99c28cf Temporary NPE mitigation.
To unblock failing presubmit. The team is working on the real fix.

Bug: 223905476
Test: presubmit
Change-Id: I713eac26f375ced798c9d02a47841645e39c907e
2022-04-04 23:22:43 +00:00
Prabir Pradhan
edff385132 Change input injection security model to require INJECT_EVENTS permission
Previously, any app could inject input events into the system via the
IInputManager#injectInputEvent API. The injection was only allowed if
the input event targeted a window owned by the same UID as that of the
process calling the API. This had drawbacks metioned in the bug.

Here, we change the input injection security model so that the signature
permission INJECT_EVENTS is required to inject events. This permission
is given to the system and the shell, so input injection can still be
done through the 'adb shell input' command. We also allow injection from
instrumeted processes where the instrumentation source has the
permission. For exmaple, running a test from the shell allows for the
test to inject events.

We also add support for a targeted injection mode, where the input
injection succeeds only if the target window for the event is owned by
the provided UID. This allows us to support injection from the
Instrumentation class, which only allows for injection into windows
owned by the same UID. In contrast to this, injection from the
UiAutomation class will target all windows, including system and spy
windows.

Bug: 207667844
Bug: 194952792
Test: atest inputflinger_tests
Test: atest WindowInputTests
Test: manual with test app: app cannot inject navigation gestures
Change-Id: Ib0d66eff3fc2f061e7c0d3b7e139a841a9bcebc7
2022-04-04 19:22:51 +00:00
Siarhei Vishniakou
8970010a5e Check that InputDevice isn't null and add annotations
The API 'getDevice' can return null. Let's make sure null isn't
dereferenced. Also, add nullability annotations to make it easier to
follow.

Bug: 227733127
Test: build only
Change-Id: Ice514f27d4347528d009969174f09078dfa2afac
2022-04-04 17:30:09 +00:00
Grace Cheng
3c984e8bf5 Merge "Remove all GHBM logic" into tm-dev 2022-04-04 16:07:33 +00:00
Yuri Ufimtsev
b27e211943 Merge "Provide a valid ComponentName for testing Parental Controls" into tm-dev 2022-04-04 10:33:09 +00:00
TreeHugger Robot
c7daca4990 Merge "Asynchronous the resetUsbPort" into tm-dev 2022-04-02 01:12:15 +00:00