Organize the code so that it is easier to read.
Add lots of display-related tests.
Test: atest com.android.server.display
Bug: 168208162
Change-Id: I72a4eb6677e346f615e4730f4888d56333645844
This change includes a series of API review changes. The most
significant update is the addition of cancellation signals to
API methods where needed.
Renames some internal classes and interfaces to support the
API changes and to simplify tests and improve quality.
Test: numerous presubmits
Bug: 175830670
CTS-Coverage-Bug: 180419562
Change-Id: I9b1b950a2779fc902ecf4d6394e3c35171926700
The PositionUpdateListener in BackgroundBlurDrawable is called from
a thread pool to update the position of the BlurRegion. After that,
in frame drawing callback (RenderThread), the Aggregator takes all
the settings in BackgroundBlurDrawable and dispatches them to SF.
However, while the RenderThread is working on frame N, the Ui thread
is working on frame N+1. So when the frame drawing callback is
called on RenderThread for frame N, BackgroundBlurDrawable
might already be holding settings for frame N+1.
In this CL, we fix that by making BackgroundBlurDrawable work only on Ui
thread, while BlurRegion lives only on RenderThread. Just before
drawing, we copy the state of BackgroundBlurDrawable into a BlurRegion.
So when render thread starts doing its thing for frame N, Ui thread can
start setting up BackgroundBlurDrawable for frame N+1. The settings for
frame N are already copied over to BlurRegion. In frame drawing
callback, we take the blur regions if there is a pending update and send
them to SF.
Bug: 167166562
Test: m && atest BlurAggregatorTest
Change-Id: Icec0fa8e97de30b7bad15b97f848ae642076652f
The Parcel read/write speed of MergedConfiguration/InsetsSource
becomes 4x+ faster.
Because writeParcelable sends additional type info which is
unnecessary if the type is known on the reading side, replace
the usages to writeTypedObject and well-written readFromParcel.
That saves the time of class lookup and object creation.
Bug: 181025587
Test: vogar --mode app_process --benchmark \
frameworks/base/core/tests/benchmarks/src/android/os/ParcelableBenchmark.java
Change-Id: I29548ce6c2e5886f0e90a5dc70d8e9ecc0fb25a8
Revert "Adding aidl file to share deviceProductInfo constants bw..."
Revert "Changes in tvsystem/ DeviceProductInfo to mirror changes..."
Revert "Adding new CTS test for the API display#getDeviceProductInfo"
Revert submission 13552775-expose DisplayInfo.deviceProductInfo
Reason for revert: broken test android.compat.sjp.cts.StrictJavaPackagesTest#testBootClassPathAndSystemServerClasspath_nonDuplicateClasses
on git_sc-dev on cf_x86_64_phone-userdebug at 7162420
Bug: 181021245
Reverted Changes:
Id6767127f:Adding aidl file to share deviceProductInfo consta...
I6959d2829:Adding public API to expose DisplayInfo.deviceProd...
I720dbfe84:Adding new CTS test for the API display#getDeviceP...
I6c726e12c:Changes in tvsystem/ DeviceProductInfo to mirror c...
Change-Id: I4c8545c651d1e399ed3ca5061d1ef5f526c3929a
In this CL we move ALLM and game contnet type support
to DynamicDisplayInfo and change LocalDisplayAdapter
to update them on hotplug. Unit tests for this scenario
are added.
Bug: 180108954
Test: atest LocalDisplayAdapterTest
Change-Id: Ida74d2782804f113fda784bdde00457ec3c80a2c
When feature_autofill is not present on device IAutoFillManager
service could be null. It is proposed to check service for null
before trying to add client to prevent NPE.
Bug: 180913556
Test: cts-tradefed run cts-dev -m CtsWidgetTestCases \
-t android.widget.cts.DatePickerTest#testPartsVisibilityInSpinnerMode
Test: atest CtsAutoFillServiceTestCases
Change-Id: I4d65fe4f664e37115d653e981094f1a52c1d97e8
When feature_autofill is not present on device IAutoFillManager service could be null.
It is proposed to check service for null before trying to add client to prevent NPE.
Bug: 174444980
Test: cts-tradefed run cts-dev -m CtsWidgetTestCases \
-t android.widget.cts.DatePickerTest#testPartsVisibilityInSpinnerMode
Signed-off-by: Artem Radchenko <artem.radchenko@globallogic.com>
Change-Id: Id6bad7e652452343ed674e4a7452a1b8231f72c5
Merged-In: I10ce988603f47117d0efddcc014ec51b72d3b3b4
Changing class DeviceProductInfo to public class with hidden ctor to expose via
Display#getDeviceProductInfo. Removing the relative address and changing
to connectionToSinkType.
Bug: 179775994
Test: atest CtsDisplayTestCases
Change-Id: I6959d2829f7ff9ba609f9e4e3cb7b52e0f555c3f
Present time is available to apps, but is not currently stored inside
FrameInfo. In this CL, we add a location for storing the present time inside
FrameInfo.
Currently, the metrics reporter is triggered after the buffer is sent to
SurfaceFlinger. That means, metrics for anything that happens after gpu
draw completes are currently not available.
In a future CL, we will populate the 'presentTime' field.
In a future CL, we will register a metrics observer inside ViewRootImpl
in order to send this data to InputDispatcher. This will enable
end-to-end touch latency metrics collection.
Bug: 169866723
Test: printed present time inside FrameTimeline.cpp (surfaceflinger
side) and compared to the values printed inside a metrics observer
registered in ViewRootImpl (not done in this CL)
Test: atest ViewFrameInfoTest
Change-Id: I7d0f8c5d7b5a2572abdc4e107123e8938a36f582
This CL only updates mAboveInsetsState while the z-order of a window is
changed or the display info has been updated.
This can be a step to make client compute its window frame locally.
Bug: 161810301
Bug: 175861127
Test: atest DisplayPolicyTests DisplayPolicyLayoutTests
Change-Id: Ic202ca82ae3b0aeaf4d95ba6d0847970aa9896a6
Handle onConfigurationChanged() in order to prevent restarting
InputMethodService everytime. We introduce a new API attribute
"configChanges" in InputMethod(attrs.xml) which when declared
by IME, will be responsible for handling mentioned
configuration changes.
Bug: 167948419
Test: atest InputMethodServiceTest
Manually:
1. Patch Ie91e7a8e06b80864ef9409031e8543858552d70d to use dual
display area.
2. Open applications with editors on both display areas.
3. Attach a debug point for IMS#onConfigurationChanged().
4. Make sure IMS#resetStateForNewConfiguration() is not called
when IME moves between these two identical DisplayAreas
Change-Id: Iff88b768c6b06cf5cf1fe9e97ee97f8f78e6f0bd
In this CL we introduce SurfaceContorl.getDynamicDisplayInfo
which replaces the current seprate calls for supported and
active display mode, supproted and active color modes and
HDR capabilities.
This way display capabilities can be queried atomically.
Additionally this CL pipes an DisplayMode IDs from
SurfaceFlinger and updates LocalDislayAdapter to use
IDs instead of array indices.
Test: presubmit
Bug: 159590486
Bug: 175678215
Change-Id: I169e3055d07905e2330e11f158b61ffd366f97e6
If FLAG_HARDWARE_ACCELERATED is not set, view
framework will not use hw rendering and the shadows
will not be rendered.
Fix this by adding the flag when setting the view in
SurfaceControlViewHost. The public api already sets this
flag, so this brings parity to the internal api as well.
Test: Embedded window can draw shadows
Fixes: 180613222
Change-Id: Ife84ea9e09d415679fdf973bbc572eda360921e4
This "undoes" the rotation in incoming displayviewports
so that inputflinger always works in the orientation the display
grew-up in
It also modifies existing gesture-monitors to deal with unrotated
coordinates
This is behind a flag:
adb shell setprop persist.debug.per_window_input_rotation 1
Bug: 179274888
Test: phone should work like normal
atest MotionEventTest (coretests)
Change-Id: Iaa7ff7d62e9f756af2c9c622ec508c5e538ec8bd