Currently, DreamService#finish exits early if the window is not
attached. The unbind from the dream overlay service follows this
condition. As a result, it is possible that the service is not
unbound if the window was never attached. This changelist addresses
This potential connection leak by having the unbind precede the
check.
Fixed: 227498355
Test: manual
Change-Id: I7a73258cea5219bea96f4de3b90b4b5a66478fde
This change allows for the active VoiceInteractionService to create any
number of unique DSP-based AlwaysOnHotwordDetectors in parallel. This
change also allows for a SoftwareHotwordDetector to be created alongside
the DSP-based detector(s).
When a implementation of VoiceInteractionService has a target SDK lower
than Android T SDK version, there is no behavior change, and the
application will only be able to use a single HotwordDetector at a given
time.
Test: atest VoiceInteractionSystemApiTest
Bug: 193232191
Change-Id: I4bc7211884d2d63dc7fcda059384f3a8233a41a8
A few updates to throwing exceptions in AOHD:
- overrideAvailability throws exception when overriding to ENROLLED
state without an enrolled model
- APIs no longer throw runtime exceptions when it could be due to
system server modifying the detector state without the caller's
knowledge. In cases where a RuntimeException was thrown, a checked
exception is thrown instead.
Bug: 226355112
Test: atest AlwaysOnHotwordDetectorTest
Test: atest AlwaysOnHotwordDetectorSystemApiTest
Change-Id: Id6884a325a1cd79f1cc880f370a0a97e4ab0ec04
In practice, the value of this xml attribute is always going to a
function of whether or not getTargetActivityPendingIntent() is null--
when a QuickAccessWalletService sends us a PendingIntent, we will use
that instead of the SystemUI card switcher activity.
If the PendingIntent is null, we then fall back to our old behavior:
* If the wallet is not currently showing any cards, launch the activity
specified by getWalletIntent() (this is hardcoded in XML metadata).
* If the wallet is currently showing cards, launch the SysUI
switcher activity.
Test: atest CtsQuickAccessWalletTestCases --retry-any-failure
Test: atest QuickAccessWalletControllerTest
Fixes: 218860062
Change-Id: I62f7ca507ebce29b03d6ce76bccaa6d736720a86
Merged-In: I4cfaa5b6035499c47a0ed8b1a4a5f3e1f0f50860
In practice, the value of this xml attribute is always going to a
function of whether or not getTargetActivityPendingIntent() is null--
when a QuickAccessWalletService sends us a PendingIntent, we will use
that instead of the SystemUI card switcher activity.
If the PendingIntent is null, we then fall back to our old behavior:
* If the wallet is not currently showing any cards, launch the activity
specified by getWalletIntent() (this is hardcoded in XML metadata)
* If the wallet is currently showing cards, launch the SysUI
switcher activity
Test: atest CtsQuickAccessWalletTestCases --retry-any-failure
Test: atest QuickAccessWalletControllerTest
Bug: 218860062
Change-Id: I4cfaa5b6035499c47a0ed8b1a4a5f3e1f0f50860
In some cases, the InsetsState and the window frame can be changed at
the same time (such as orientation changed). Reporting them separately
might produce incorrect insets.
When the window layout is moved to the client, it uses the configuration
and the InsetsState to compute the window frame. They need to be
reported together as well.
Bug: 161810301
Bug: 160732586
Test: atest ActivityRecordTests WindowStateTests
Test: Add logs to check if we dispatch the correct insets to apps while
rotating the display.
Change-Id: I5c9f628eda40932def97c5caf968cb62db128e80
The call is protected by the signature permission
START_ACTIVITY_AS_CALLER. This will remove the need for additional data
to be passed from system server.
Bug: 222082547
Bug: 226354782
Test: atest ActivityTaskManagerServiceTests, atest ChooserActivityTest,
manual testing
Change-Id: I94f34a68e390569ec14dfebb1902a7c30558864f
Make to show fill dialog only if IME is not showing. And if the field
will show fill dialog, ignore to show ime when clicks on the field.
Bug: 210926084
Test: Manual
launch sample and click on password field -> show fill dialog
click on username field (no fill dialog) -> show fill UI and IME
IME is showing and click on password field -> show fill UI
Test: atest android.autofillservice.cts.dialog.LoginActivityTest
Test: atest android.widget.cts.EditTextTest
Change-Id: I6080510d87c50969d85fd9ed746ceba7e3c1c685
GateKeeperResponse has inconsistent writeToParcel() and
createFromParcel() methods, making it possible for a malicious app to
create a Bundle that changes contents after reserialization. Such
Bundles can be used to execute Intents with system privileges.
We fixed related issues previously for GateKeeperResponse class, but
one of the case was remaining when payload is byte array of size 0,
Fixing this case now.
Bug: 220303465
Test: With the POC provided in the bug.
Change-Id: Ida28d611edd674e76ed39dd8037f52abcba82586
Merged-In: Ida28d611edd674e76ed39dd8037f52abcba82586
(cherry picked from commit 46653a91c3)
Change-Id: I486348c7a01c6f59c952b20fb4a36429fff22958
This is a step to let the client layout its window locally. The ultimate
goal is to reduce the jank while laying out the window.
With the new AIDL methods, we can divide IWindowSession.relayout into:
- IWindowSession#updateVisibility (synchronized binder call)
- To get or update the surface
- To fetch the latest factors about window-layout
- Only called when the view visibility is changed
- WindowLayout#computeFrames (local function call)
- To compute the window frames
- IWindowSession#updateLayout (one way binder call)
- To report the result of layout to the server
In this way, if the view visibility is not changed, the UI thread of
the client won't be blocked by the binder call during relayout.
The local layout project won't be done in a single CL. In order not to
break the existing logic, this CL introduces a flag: LOCAL_LAYOUT. The
flag will be enabled when the logic of local layout is ready.
Bug: 161810301
Bug: 175861051
Test: presubmit (no behavior change)
Change-Id: Ic4b2fc78a318f3a68e1ef8a35d8f3ab705856702
Context#bindService can take unreasonably long to execute, causing API
clients to miss frames.
Test: atest TestQuickAccessWalletService
Test: atest QuickAccessWalletControllerTest
Fixes: 218323803
Change-Id: If0278a531b4eb07aad713986315118ac91337b0b