This is the first step of eliminating SynchronizedPool for a11y ojbects.
The patch doesn't stop recycling, but allows service developers to
choose whether or not to.
Since recycling a11y node info is stopped in the cache, but the nodes
are still holding pooled collection/item/range info objects. Here it
goes away with public constructors except those refreshed one.
Bug: 117999988
Test: m update-api; m checkapi; m ds-docs
Test: atest --test-mapping $ANDROID_BUILD_TOP/frameworks/base/core/java/android/view/accessibility:postsubmit
Change-Id: I12304662f216b5e443785939f231893abdfa07d5
It says it's set when the tool type is a mouse or trackpad, but the fact
is the tool type is TOOL_TYPE_FINGER on trackpads. Therefore remove
trackpad from Android doc.
Bug: 145135609
Test: N/A
Change-Id: Ife91ba032f9f0a8e7359425b415409ac609cdb25
This adds other parts of the window lifecycle (eg. ViewRoot
death, window removal, layout update). Some of the lifecycle
controls are just utilities, but are needed so that they
can be performed out-of-package.
It also shows/hides the surface based on underlying view
visibility. In actual WM, the surface is actually created/
destroyed based on visibility, but this breaks continuity
in WWM because the WWM user should have full control over
it.
Also made this public so it can be subclassed.
Bug: 133381284
Test: manual test in later CLs
Change-Id: Ibd7792c3f52c216089d9b498e3770e100ff24642
Bug: 142507213
Test: 1. Manually verified refresh rate switching behavior on a phone
with refresh rate switching.
2. Wrote a new test file, DisplayModeDirectorTest.java, to verify the
behavior of the display mode voting algorithm.
Change-Id: Iceac6fd74e6528ddb2302f4d7eb926753e4ffd19
Adds reporting per-display configuration changes to
hierarchy listeners. On system-ui's side, the
DisplayWindowController then dispatches to other registrants
within the process.
Bug: 133381284
Test: Added testDisplayWindowListener
Change-Id: I68c4e9e229b97a9e91ad0d4f5276447a947c413b
This CL adds the following trace points.
1) a synchronous trace point for "deliverInputEvent", which can include
some additional metadata w/o spamming systrace and perfetto UI. Note
this trace ends when either an asynchornous input stage defers the input
event, which is earlier than the asynchronous "deliverInputEvent".
2) a trace point for consistency verifier and unhandled key manager
each.
3) onProcess() of each input stage. It doesn't include the actual
process time of asynchronous input stages, but it's not hard to get a
sense of it when looking at all trace points together.
Bug: 142003033
Test: systrace includes traces for input stages for both touch events
(touchscreen) and key events (keyboard).
Change-Id: I1b416423d37486df9ff23856c676bc7dab7765be
Read framework resources and call the new SurfaceControl#setGlobalShadowSettings
API to set global shadow settings. Some of these settings can be overrided by
apps but for shadows drawn by SurfaceFlinger to be applied on surfaces, as opposed
to app content, we will keep all settings constant.
Bug: 136561771
Test: go/wm-smoke
Change-Id: I6f759479352e6923b883cae67f9b089d82978d30
go/cleanup-greylist-txt
These have already been greylisted, however due to bugs/omissions in the tooling have been kept in go/greylist-txt instead of being annotated in the code.
This is partial merge of aosp/Id6c1f5e403a0e66edb1102ee45f3bf19f244fb09. Telephony greylist cleanup has been done separately. Note that annotations outside of frameworks/base/ have been merged from AOSP.
Bug: 137350495
Test: m
Exempt-From-Owner-Approval: merge
Change-Id: I015c466e8b69cc0fed5e9d394ba865aad11d8ba6
Refactor the insets APIs:
- Remove top/side in the names of types
- Add a type for the caption bar
- Rename InsetSide to InternalInsetsSide which is a enumeration, so that
we can have a public @InsetsSide which is a bit-wise variable
- Fix the naming about insets: inset --> insets
Bug: 118118435
Test: atest InsetsSourceProviderTest InsetsStateControllerTest
InsetsPolicyTest WindowStateTests CommandQueueTest
RegisterStatusBarResultTest InsetsFlagsTest
LightBarControllerTest RegisterStatusBarResultTest
Change-Id: I27a066299eea9927ce61f6cb5d489ad79bca42ba
This is to address the concern from API council for accessibility state
api. See b/143652980 for more details.
Bug: 143652980
Test: not needed for javadoc change
Change-Id: I3f219b7838b72fda86a957ebd14c063175657d47
Since InputConnection#deleteSurroundingText the design is to delete the
text before the selection start and after the selection end range,
it would be possible that the exception may happened when the obsolete
selection range which is not aligned with the current text content.
Add a check to make sure the text will be deleted when the number of
text before / selection the selection is > 0.
Also, skip the delection when the selection is not yet attached
Bug: 130979263
Test: atest BaseInputConnectionTest
Change-Id: I93b69b71531bcab4ae204c1c1287b8fbe0224ea8
Any pending windowGainedFocus future should be cancelled when IME is
switched/unbound.
Additinally, startInputInner() inside synchronized block blocked
WINDOW_FOCUS_GAIN from executing. Its fine to remove synchronization
here since startInputInner() already has relevant synchronized blocks.
Change-Id: I98cb044d8cbfb80480312a3923f168aefa9b7e7d
Fix: 144103599
Bug: 139806621
Test: Manually using the steps in bug.
Bug: 123338864
Bug: 135150273
Test: run app-launch-perf test (go/platform-startup)
Test: launch apps manually and measure the execution time of
snapshotTask(), writeBuffer(), and loadTask()
Change-Id: I9841c6dad99b1f4d4ba0044b7fe06fe021c295a0
In some cases privileged clients want to add embedded windows without requiring a host
window. Client with INTERNAL_SYSTEM_WINDOW can add such a window. The system
will still blame the calling PID if the embedded process stops responding but will ignore
pointerDownOutsideFocus events to this embedded window since it has no host.
Fixes: 144250438
Test: atest CtsWindowManagerDeviceTestCases:WindowlessWmTests
Test:
1. cherry-pick ag/9618804
2. adb shell content insert --uri content://settings/secure --bind name:s:window_magnification --bind value:s:1
Change-Id: Iceef70020c6ecd31b10e92a535c27458505c9ef0
Also remove WindowManagerStressTest because that has been replaced
with proper perf test.
Test: Boots
Bug: 143255833
Change-Id: I1d293cda7c82d0aa1c3a6cc694c74bf7d10cc974
This adds support for registering a single DisplayRotationController
to WMS. It gives a chance for the controller to suggest some
task changes to be executed along with a display rotation. There
is only one because it's a 2-way communication and there is only
intended to be one client for now.
This allows us to move Split and PiP presentation/layout logic out
of WM into systemui because WM no-longer needs to be the one
calculating the new bounds of everything during rotation.
This uses the windowcontainer transaction because all the
configuration changes and the display rotation need to happen
synchronously; otherwise, relayouts can occur after the display
is rotated, but before the configuration changes are applied.
When this happens, apps get incorrect bounds/insets which can
trigger erroneous lifecycle events in the app.
The flow is like this:
1. DisplayContent/Rotation freezes screen
2. DisplayRotationController is notified of a rotation and provided a
callback.
3. The Controller then evaluates/queues some task changes in
a transaction and, when done, fires the provided callback.
4. The callback applies the config change transaction and continues
the rest of the rotation synchronously.
The DisplayWindowController is sys-ui piece that serves as an
interface between system-ui components and display-related wm
logic. For now it just facilitates the rotation calculation, but
in the future it will have more general utility for display logic
like inset/bounds calculation.
Bug: 124011688
Bug: 133381284
Test: Added some wmtests and coretests.
Change-Id: If10695f44fa076725ba17746842f6fbd64da5d20
Currenly when motionEvent is injected,
current logic makes touchmode false even if the event's source is STYLUS or MOUSE event,
which seems not an intended behavior that leaving touchMode.
Hence, modify the logic to make sure touchMode is ture only when event source is TOUCHSCREEN.
Bug: b/135752906
Test : run android.view.cts.ViewTest#testTouchMode
(cherry picked from commit 12b99ea7f108ec3b240f6bd569a5c6ab0f925071)