Add Display.getPreferredWideGamutColorSpace() to return the preferred wide
color space that the rendering and composition pipeline prefers.
BUG: 120904891
Test: atest android.display.cts.DisplayTest#testGetPreferredWideGamutColorSpace
Change-Id: I1bcd9db72689a734b2a7c097b99a01464810994a
onProvideContentCaptureStructure() doesn't take much for only 1 view, but it's called for all views
the first time the view hiearchy is laid off, which could acccumulative delay the
initial layout. Hence, we're postponing it to a later stage - it might still cost a
lost frame (or more), but that jank cost would only happen after the 1st layout.
Using this change, the impact on cold-dropcache-test dropped about 50% (from ~2ms to ~1ms).
Bug: 123307965
Bug: 121039624
Test: atest ContentCaptureSession
Test: atest google/perf/app-startup/benchmark-app-hermetic/cold-dropcache-test
Change-Id: I68b98b2894d23309af90d87cc99280f133557252
Pre-render input method views and window when EditText receives focus.
This is a pre-requisite for implementing better IME transitions.
Strategy:
Once EditText receives focus, startInput is called. If optimization is
available, IME views and window (SoftInputWindow) are created and
rendered. Until user taps on EditText or showSoftInput() is called, IME
window remains invisible. This pre-rendered window is kept around until
EditorInfo changes or new connection is started (onStartInput).
IME window's visibility will be set using new Insets controller API
rather than conventional client-side dialog.show().
Behavior:
- This is just IME side preparation CL. No performance improvements yet.
- There should be no user perceptible behavior change.
- As long as IME developers were following official lifecycle, they
shouldn't perceive any behavior change.
Availability:
This optimization, once fully implemented, will be available when:
- Device is not "Low memory"
- AND Master flag DebugFlags.FLAG_PRE_RENDER_IME_VIEWS is set.
- ViewRootImpl.USE_NEW_INSETS_API is enabled
Bug: 118599175
Bug: 111084606
Test: atest CtsInputMethodTestCases
Test: atest CtsInputMethodServiceHostTestCases
Test: atest ActivityManagerMultiDisplayTests
Test: Tested with 4 IMEs and didn't preceive any behavior change.
Scenarios tested:
1. With and without hardware keyboard
2. Screen rotation w/ fullscreen mode.
3. split-screen
Change-Id: I1a6300fe167eb205ee2b4214a6e270a52ebae062
This method was meant to optimize the ContentCaptureManager lookup, but it was not recursively
callign itself....
With this change and using System.out / System.nanotime() to measure:
$ adb shell am start android.contentcaptureservice.cts/.BlankWithTitleActivity
16 calls, taking 260.051us before and 30.311us after
$ adb shell am start android.contentcaptureservice.cts/.LoginActivity
24 calls, taking 290.261us before and 41.403us after
Bug: 123307965
Bug: 121039624
Test: atest ContentCaptureSession
Test: manual verification using system.out for timing
Change-Id: Ida5015ed117cae8ab4484a55f74cbc20fdc6df7f
This CL adds a display-level fallback for remoteanimation overrides
and a property to RemoteAnimationAdapter specifying whether it needs
a snapshot for change transitions or not.
During a mode-change, this check for an override and then asks it
whether it needs a snapshot before creating one.
Bug: 113252739
Test: Added AppChangeTransitionTests
Change-Id: I47c933bd08fe512dc6cf029607819e2c908ab4cd
Since we are not going to allow multiple types, it makes sense to
create a specialized method instead of exposing the general ones.
Test: CTS will be added once API is properly exposed
Bug: 111084606
Change-Id: Idcd3b17f46fbc05c9ac60fa2bba7dd6305d0529e
1. Add get/setScore, so we can see how do scores affect the CTR and
eventually tune the threshold based on it.
2. Convert get/setEntity to get/setEntityTypes.
Some events like TYPE_ACTIONS_GENERATED and TYPE_ACTIONS_SHOWN
will need to have a list of entity types. Also, as TRON does not
support a field of list type. And thus workaround this by having
3 separate fields in TRON.
4. The result id of action is too easy to clash now as only messages
are taking into account. Use timestamp and the person object as
the input to the hash now.
5. Changes in TRON:
a) We will put conversation_action / language detection, etc to
category. And we will put the views to subtype.
b) As suggested by the TRON team, we should not reuse existing fields
in the clients directly. But we should rather introduce new fields,
and map them to existing fields in the server. So, TRON team could
suppress just the new logging if it goes wrong and not affect
existing loggings.
Test: atest TextClassifierEventTest.java
Tests: atest TextClassifierEventTronLoggerTest.java
BUG: 120803809
Change-Id: I2e71436b323a200beec57ea7c1a8bcc96c9c552f
If a force press is detected, the MotionEvent will have a classification
of CLASSIFICATION_DEEP_PRESS. When this type is detected, dispatch the long
press event immediately.
Bug: 62940136
Test: "force" press on home screen and see the logcat message about
accelerating the long press action, see the menu appear sooner than the
typical timeout for long press.
Change-Id: Ifcd953356f42248c1d3c6674877b84b3aaf01299
This adds a new transition classification for apps which are
switching between 2 visible states. The primary example of this
is windowing-mode change.
This new classification is mChangingApps in DisplayContent and
there is a transition type for TASK_CHANGE_WINDOWING_MODE.
The mode-change transition is scheduled when AppWindowToken
detects a windowing-mode change. It immediately creates
a snapshot and temporary leash to "freeze" the visuals of
the app until the animation starts (all transitioning apps
are ready).
The transition itself is a blend of fading, scaling, and
cropping based on whether the end-state is bigger than the
start state.
The RemoteAnimationTarget now includes a startBounds and an
extra "snapshot" leash for controlling the snapshot overlay
relative to the AppWindowToken. If either of those is
populated, the client of the RemoteAnimation can assume it
is animating a change and is responsible for transforming
the leash from the startBounds to its final state.
Bug: 113253723
Bug: 111762928
Test: go/wm-smoke + RemoteAnimationControllerTests
Change-Id: I8654656124b888950e55e31d88ce7a4101e935f8
InputMethodManager#setCurrentInputMethodSubtype(), which was
introduced in Android 4.0 ICS [1], was probably mistakenly exposed as
a public API, because it has required WRITE_SECURE_SETTINGS that
typical applications cannot have.
This CL marks InputMethodManager#setCurrentInputMethodSubtype()
deprecated. There is no actual implementation change at this moment,
but developers should avoid relying on this API in general not only on
futuer versions of Android but also on existing devices.
[1]: I55daa19ba924999def544bf841f00bf54852f3e1
b66d287e30
Fix: 123249820
Test: make -j checkbuild
Change-Id: Ia31df87ad2182484d7335503c5d87cb93540fd17
Currently, the checkForLongClick function receives an argument that
later gets subtracted from some default value, but it is confusing to
use such a function. The natural computation is to provide the time
delay directly.
Minor refactor of View.java here to simplify the math.
Bug: none
Test: none
Change-Id: Ic237e8edac5bd2c7608215f20706a4a67a194b4b
It's just a wapper for SparseArray, but the builder makes it easier to
work with in code-gen, and provide an immutability guarantee.
Test: atest android.view.inspector.cts
Bug: 123295401
Change-Id: I479d7d3c5ebf4f7e3d82aa05f4e566db844d43ba
- Drop Content Capture events when the session is disabled, otherwise sessions
on this state might never finish.
- Fixed PII leak.
- Created helper class for common stuff.
- Improved logging.
Test: manually chenged VERBOSE to true, restarted system_server, and watched logcat - without
this change, launcher's session would never die because it kept re-scheduling flush
requests.
Test: atest CtsContentCaptureServiceTestCases
Bug: 122959591
Change-Id: Idcc1bbb12763d1cf98149164c68c2712834d5112
This can be used by alternate front-ends to associate
surfaces with tasks.
Bug: 122925737
Test: phone boots and surfaces still fling
Change-Id: Ic4cdd9742aa987c59f472b9db78b3c0eb6183e9a
This adds a key/value metadata storage mechanism to
surfaces that allows the windowmanager to pass information
to the surfaceflinger frontend.
This then moves the existing metadata (window type and
ownerUID) into this metadata structure.
Bug: 122925737
Test: Phone boots and surfaces fling.
Change-Id: I59739ec5198d815e03811ef659628e45d09721a1
This is a preparation to mark
InputMethodManager#setCurrentInputMethodSubtype() deprecated.
InputMethodManager#setCurrentInputMethodSubtype(), which was
introduced in Android 4.0 ICS [1], was probably mistakenly exposed as
a public API, because it has required WRITE_SECURE_SETTINGS that
typical applications cannot have.
Keeping maintaining InputMethodManager#setCurrentInputMethodSubtype()
is not that simple because now we are about to enable per-profile IME
mode, where this method needs to have a more clear spec about what
"Current" means.
An ideal solution is just removing this method, because if the caller
already has WRITE_SECURE_SETTINGS permission, they can just directly
update Settings.Secure.SELECTED_INPUT_METHOD_SUBTYPE to achieve the
same goal. However, given that this has been a public API, it would
probably make sense to provide a fallback implementation like I did
for null IME token in InputMethodManager#setInputMethod() [2].
Either way, InputMethodManager#setCurrentInputMethodSubtype() will be
marked as deprecated in a subsequent CL.
[1]: I55daa19ba924999def544bf841f00bf54852f3e1
b66d287e30
[2]: I42dd0325b01c527009bf85566ca8ba0766b2294e
0c1ebffdb3
Bug: 123249820
Test: manually done with a test app that has WRITE_SECURE_SETTINGS
Change-Id: I76da83c57cffc6b73defccfd4a1b5734c958a97e