All insets side may want to animate with transparency with or without
insets. This change allows any side to do that.
Also, this CL adds fade to IME when its not controlled by app.
This tries to replicate original IME animation.
Bug: 111084606
Test: Manually using test app.
Change-Id: I1ecd4715336a58cd904b2898bb36462e5ce2b6ab
Fixed a clear copy/paste error, docs had said "call getHeight() to
get the width" when it should have been "...to get the height".
Skipping staging since it's a simple text change.
Change-Id: Ic06557ac38517f409943585054835d774240ccf3
Test: make ds-docs
Exempt-from-owner-approval: Docs-only change
Bug: 144537947
- Rename WindowInsetsAnimationListener to
WindowInsetsAnimationCallback
- Make onAnimation WindowInsetsAnimationCallback.onStarted
hierarchical by giving the client a chance to consume
AnimationBounds, which then will be dispatched to its children.
- Clarify that WindowInsetsAnimationController insets are always
relative to the window.
- Introduce progress variable for inset animations. Since
DecorView will be consuming insets, apps still need a way to
calculate the full progress. Instead of also dispatching the root
insets, we offer a animation progress instead.
Bug: 111084606
Test: CTS will be added in the future
Change-Id: I7df27581d01c1db0118eef469ec089249012ba5f
Introduce new APIs in Window/WindowManager.LayoutParams for developers
to decide which types of insets at which side a window should avoid:
setFitWindowInsetsTypes(@InsetsType int types)
setFitWindowInsetsSides(@InsetsSide int sides)
setFitIgnoreVisibility(boolean ignore)
The existing logic in DisplayPolicy.layoutWindowLw uses combinations of
window types, window flags, and system UI flags to decide what frames a
window should have, which is very complex, difficult to maintain, and
should be replaced with the new APIs.
Bug: 118118435
Test: atest InsetsSourceProviderTest InsetsStateControllerTest
InsetsPolicyTest WindowStateTests CommandQueueTest
RegisterStatusBarResultTest InsetsFlagsTest
LightBarControllerTest RegisterStatusBarResultTest
ViewRootImplTest DisplayPolicyLayoutTests
DisplayPolicyInsetsTests DisplayPolicyTests
TaskSnapshotSurfaceTest
Change-Id: I06ddc9d0d2887ba4ded7bb8adbf9c9c0da4bf7b4
Any window that sets FLAG_NOT_FOCUSABLE should not be considered IME target.
IME subsystem starts input on a window when it receives focus, if window never
intended to receive focus, it should not considered an IME target either.
Also, fix the broken javadoc for ALT_FOCUSABLE_IM.
Certain apps try to manually synchronize app window to IME insets by
using ADJUST_NOTHING in main window and introducing a transparent window
on top with FLAG_NOT_FOCUSABLE & ALT_FOCUS_IM to listen for IME insets.
We will support this use case until new focus management takes care of
it.
Fix: 143898978
Bug: 140641950
Bug: 145812508
Bug: 141738570
Bug: 144619551
Test: atest WindowStateTests
atest FocusHandlingTest
atest WindowManager_LayoutParamsTest
Also manually using steps:
1. Launch gmail compose activity
2. start typing in receipient field
3. verify that suggestions popup window w/ FLAG_NOT_FOCUSABLE doesn't
become IME target.
Change-Id: I941571c97145d77b0a59d030cf2a8c8318f3b59f
Based on Forrest run with earlier base build 6069142, the build with this submission failed apct/bluetooth/instrumentation_test
Reason for revert: Break tests
Bug: 146198238
Change-Id: I65060ca389bf3ae1f107552ca828bfc1e7baa7c1
userId is a new field added in ag/8350816, and it is written in between
some old fields when we parcelize it.
That breaks AiAi because some of its code rely on the implementation
details of SelectionEvent.writeToParcel.
In the long run, we may want to update AiAi such that it works
without this assumption, but before that, let's fix that in platform
for now.
Bug: 145962464
Bug: 123232892
Test: atest FrameworksCoreTests:android.view.textclassifier.SelectionEventTest
Merged-In: I98137a095cddf0fb4c600e1e09eef507bb750528
Change-Id: I66f65ac4c81ca964f710404fd081496355276435
Enables SystemUI to create/position its own ui elements.
First of all, this adds, to WM, the concept of a ShellRoot
which represents a piece of the hierarchy that a client shell can
do whatever it needs with. For now, multiple of these roots can
be registered at various "levels" (which correspond to window
types for now). This is needed because not everything will live
in this piece of the hierarchy, so handling z-order will still
be a shared effort between the Shell and WM for a while.
On the SystemUI side, a new Dependency called SystemWindows
provides simplistic window management for these system-ui
windows via WindowlessWindowManagers per-display-per-layer.
The benefit of this is that manipulation of these windows lives
entirely in SystemUI making synchronization easier and making
it possible to move a lot of the special handling code out
of wm (eg. DOCK_DIVIDER). As a result, SystemUI becomes
more customizable and WM becomes simpler.
Early clients of this are going to be display-level IME
handling and Split-screen.
Bug: 133381284
Test: manual test after later CLs
Change-Id: I1602d9b9b69d38b9ff15806e509cc8128c837748
Instead of clearing all cache, refreshing the accessibility windows
and the nodes.
Bug: 145562808
Test: a11y CTS & unit tests
Change-Id: I3048bffeb970712e43b82843acd452c147ca5054
Instead of display overlays being a SurfaceControl that can only have
child surfaces, it now is a WindowContainer that can have windows.
Specifically, windows with the type TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY
will be placed in the display overlays layer
This is the first step to allow window magnification to use real windows
on the display.
Test: go/wm-smoke
Bug: 136250281
Change-Id: Idad98db7a85f68ba49557c0efb83b9a1be089609
HdrCapablities in adb shell dumpsys display and in log messages appear
as android.view.Display$HdrCapabilities@49f9cd26. This change adds a
toString() method so HDR Capabilities are visualized in a nice way.
Test: adb shell dumpsys display
Change-Id: I0800ac4f615ca733d0901654184d884dd2b81752
userId is a new field added in ag/8350816, and it is written in between
some old fields when we parcelize it.
That breaks AiAi because some of its code rely on the implementation
details of SelectionEvent.writeToParcel.
In the long run, we may want to update AiAi such that it works
without this assumption, but before that, let's fix that in platform
for now.
Bug: 145962464
Bug: 123232892
Test: atest FrameworksCoreTests:android.view.textclassifier.SelectionEventTest
hange-Id: I98137a095cddf0fb4c600e1e09eef507bb750528
ConfigParser was introduced mostly for reading both legacy Settings and
DeviceConfig lazily. We are ready to migrate to DeviceConfig and no
longer read legacy Settings, and thus we don't need this class.
DeviceConfig invalidates cache whenenver any config in the same namespace
is changed, and thus we don't need a listener.
No performance issue observed after testing TextClassificationManagerPerfTest.
Bug: 143585708
Test: atest FrameworksCoreTests:android.view.textclassifier
Test: atest android.view.textclassifier.cts.TextClassifierServiceSwapTest
Test: frameworks/base/apct-tests/perftests/textclassifier/run.sh
Test: adb shell cmd device_config put textclassifier <key> <value> and
adb shell dumpsys textclassification monitor the value change.
Test: Dynamic switch TCS and make sure the service status is expected.
Change-Id: I3c07ef4b16cd1f81c6aa60a0b9b26cac1a3bb5c0
- Adds support for magnification and multiple shortcut targets assigned
to accessibility shortcut key in AccessibilityManagerService.
- New extra field in ACTION_CHOOSE_ACCESSIBILITY_BUTTON intent to
support accessibility shortcut key.
Bug: 136293963
Test: atest AccessibilityShortcutControllerTest
Test: atest AccessibilityUserStateTest
Test: atest AccessibilityShortcutTest
Change-Id: If0a446dfd269e82ec0d09db92e86f859cdae50d8