Commit Graph

554 Commits

Author SHA1 Message Date
Heemin Seog
d1bbc14732 Merge "Replace TYPE_STATUS_BAR_PANEL with TYPE_STATUS_BAR_ADDITIONAL" into rvc-dev 2020-03-04 17:06:50 +00:00
Jacky Kao
4082aa2e19 Drop the hardware buffer
Closing the hardware buffer after sending over to the requesting app,
and adding the document that the app developer has to close the buffer
ASAP.

Bug: 150174095
Test: atest AccessibilityTakeScreenshotTest
Change-Id: I8e759a7d83c0a9adfd1b37d0bbf515c9babde7a4
2020-03-02 08:21:47 +08:00
Jacky Kao
979600dce1 Add a rate limitation of takeScreenshot() API
Adding the rate limitation of takeScreenshot() API is one time
per second to avoid the system health impact.

Bug: 149968870
Test: a11y CTS & unit tests
Change-Id: Iaedafda9b9a5a56941952df54e62d76a92936b1d
2020-03-02 08:21:11 +08:00
Heemin Seog
2cf45dd224 Replace TYPE_STATUS_BAR_PANEL with TYPE_STATUS_BAR_ADDITIONAL
Deprecate TYPE_STATUS_BAR_PANEL. Currently
TYPE_STATUS_BAR_ADDITIONAL maps to the same z order as
TYPE_NOTIFICATION_SHADE. This will be updated in a subsequent CL.

Also move everything in TYPE_STATUS_BAR_PANEL to
TYPE_STATUS_BAR_SUB_PANEL so that it remains above the notification
shade / keyguard layer. TYPE_STATUS_BAR_PANEL will no longer be valid.

As part of the work on having more flexible inset mapping (for Android
Automotive) we want to use the TYPE_STATUS_BAR_ADDITIONAL to be used
for system bars in different places (i.e. Status Bar on the left side of
the screen).

Bug: 140423092
Bug: 145242835
Test: boot (sdk_gphone_x86, hawk), existing tests (atest SystemUITests)
Change-Id: I0ce3c4152fd05a948c06ed1a96c3ba279bd7097a
2020-02-26 14:11:53 -08:00
TreeHugger Robot
fd33a24650 Merge "Fix failure in postsubmit" 2020-02-19 09:45:20 +00:00
Ryan Lin
687fb4bcc1 Merge "Don't notify display removed if it's a private virtual display" 2020-02-19 09:42:56 +00:00
ryanlwlin
6a34da5a64 Don't notify display removed if it's a private virtual display
Some operation will be done When displays are removed/Added,
but virtual private display should be excluded.

Bug: 148760652
Test: manual test:1.Enable the magnification from a11y setting
2. Enable the select to speak and read text on images
3.Tap the a11y shortcut to select to speak the content
4. check if the content is selected correctly.
Change-Id: I8e0fbc4da7cbb6b9c5bf5366115b3863be5243bb
2020-02-19 15:15:10 +08:00
Jackal Guo
1eac68b121 Fix failure in postsubmit
There are some package-pricate classes and methods in a11y framework
so we use DexmakerShareClassLoaderRule to mock them. However, this
results in some unexpected excpetions during testing. Change some of
them to public with @VisibleForTesting annotation, and remove the
DexmakerShareClassLoaderRule to avoid the exception.

Bug: 149362507
Test: atest FrameworksServicesTests:com.android.server.accessibility
Change-Id: I1e526ca79cf14b3d394ee132480dcd8c226ae69a
2020-02-19 13:57:36 +08:00
Ameer Armaly
cc13292c06 Add passthrough functionality for touch exploration and gesture detection.
Bug: 136131815:
Test: atest GestureManifoldTest AccessibilityGestureDetectorTest TouchExplorerTest
Change-Id: I8c6b7a333dcb9a4949387a7a683e2dc229d2b18f
2020-02-18 23:52:44 +00:00
Minche Li
bd73dfa88e Merge "Update the current user id for MagnificationController" 2020-02-18 11:56:47 +00:00
mincheli
acf5b57d0a Update the current user id for MagnificationController
If the cached user ID is not updated after switching user,
the persistent magnification scale setting would be the
last user's manginification scale setting.

Bug: 148831149
Test: atest MagnificationControllerTest
Change-Id: Icef2834cb482bef753191feaf988b28831a2e691
2020-02-15 16:44:33 +08:00
Jacky Kao
075a8094b4 Merge "Improvement for takeScreenshot() API" 2020-02-14 04:35:01 +00:00
Jacky Kao
5519738da5 Improvement for takeScreenshot() API
1. Modify the related documentations.
2. Make the timestamp got from framework side.
3. Use the ParcelableColorSpace class.

Bug: 149271120
Test: a11y CTS & unit tests
Change-Id: I2aedf67f8ed7d949322b23b59eaa383e53ecb594
2020-02-14 09:36:00 +08:00
Ameer Armaly
259daddeea Add multi-finger double tap and hold gestures.
This CL includes two, three and four finger double-tap and hold.

Bug: 136131815
Test: atest GestureManifoldTest TouchExplorerTest AccessibilityGestureDetectorTest
Change-Id: I4c0a95a4ac2d13e0a7e2c7920df619063ec1cfc0
2020-02-13 11:23:36 -08:00
Jackal Guo
a459b199c1 Support accessibility on embedded hierarchies (2/n)
Introduce AccessibilityEmbeddedConnection. This interface provides
to the host view to the latter can interact with the view hierarchy
in SurfaceControlViewHost.

Bug: 137593247
Test: a11y CTS & unit tests
Change-Id: I9c4f5478c5ecd3bda7f688fa23660f372b59512b
2020-02-11 08:56:10 +08:00
Jacky Kao
76c7f54d15 Merge "Changing the return type of takeScreenshot() (2/n)" 2020-02-07 00:01:49 +00:00
Jacky Kao
2fffd22b76 Changing the return type of takeScreenshot() (2/n)
Implementing the new return type for A11y services to take
the screenshot of the specified display.
boolean takeScreenshot(int displayId,
@NonNull @CallbackExecutor Executor executor,
@NonNull Consumer<ScreenshotResult> callback)
The return type is a new class, ScreenshotResult, including
hardwareBuffer, colorSpace, and timestamp. A11y services could
use the method, Bitmap#wrapHardwareBuffer, to obtain the bitmap.

Bug: 10931661
Test: a11y CTS & unit tests
Change-Id: I03eae10f0970d0e11e02c9d3f4031c4096b7b5b4
2020-02-06 16:29:05 +08:00
Ameer Armaly
ec5eb82a6d Add four-finger gestures.
This CL includes the following gestures:
1) Four-finger single / double / triple tap.
2) Four-finger swipe up / down / left / right.

Bug: 136131815
Test: atest GestureManifoldTest AccessibilityGestureDetectorTest TouchExplorerTest
Change-Id: If5b4bfc680423f0672452b9aa440c8f18333f565
2020-02-05 11:13:12 -08:00
Ameer Armaly
6dc501b986 Fix crash when a motion event doesn't include locations for all pointers.
When performing a multi-finger gesture, if one finger goes up before the rest of the fingers have finished moving, we need to account for that finger not being present in subsequent motion events.

Bug: 148880038
Bug:136131815
Test: Enable talkback. Enable debugging in TouchExplorer. Perform multi-finger gestures in such a way that one finger goes up just before the other fingers finish moving. Inspect logs.
Test: atest GestureManifoldTest AccessibilityGestureDetectorTest TouchExplorerTest
Change-Id: Ic3158301be657f39232db9f5b3006f87d8d83c4f
2020-02-05 11:12:25 -08:00
Phil Weaver
a8486be97d Merge "Add tests for ending TouchExplorer dragging" 2020-02-03 18:41:41 +00:00
Ameer Armaly
b66d226377 One-finger swipe: remove unnecessary allocations.
Part of the old swipe code, which was copied over to the new swipe detector, used GesturePoint objects because it needed to track the time of each entry in the gesture path. This is no longer necessary because we use handlers to cancel the gesture on a delay. This change makes the whole class use PointF which avoids allocating a new PointF for some subset of the GesturePoints during the gesture recognition process.

Bug: 136131815
Test: atest GestureManifoldTest AccessibilityGestureDetectorTest TouchExplorerTest
Change-Id: I1c89122d7f27b52a25e777667e34fec246d5c21f
2020-02-02 03:56:29 +00:00
Ameer Armaly
8fa1dd2aad Add one-direction multi-finger swipes.
Bug: 136131815
Bug: 142277518
Bug: 142277280
Test: atest GestureManifoldTest AccessibilityGestureDetectorTest TouchExplorerTest
Change-Id: I3e6997c863d50e3f2d8638ca57b508676f0909a1
2020-02-02 03:56:05 +00:00
Phil Weaver
a5bfdb2df5 Add tests for ending TouchExplorer dragging
Increasing test coverage.

In the process, found a bug in dispatching up events for
multiple fingers. It was sending an action_up for each
pointer rather than a pointer up.

Bug: 148690104
Test: atest TouchExplorerTest
Change-Id: I04353bd4ad222d6bc4096a62de48b1fe00363b3a
2020-01-31 17:40:45 -08:00
Hongming Jin
6b62158ad5 Allow recents components to register/unregister system action.
Bug: 136286274
Test: atest AccessibilityManagerServiceTest
      atest AccessibilitySecurityPolicyTest
Change-Id: I8926f8c52995d6997c7ed601ebe30d1a1f209347
2020-01-29 13:38:08 -08:00
Dieter Hsu
3cbd098e7a Implement multi-finger multi-tap gesture matchers for accessibility
This matcher would detect following gestures when accessibility flag
flagRequestMultiFingerGestures enabled:

- 2-finger single tap
- 2-finger double tap
- 2-finger triple tap
- 3-finger single tap
- 3-finger double tap
- 3-finger triple tap

Bug: 142277684
Bug: 142276516
Bug: 136131815
Test: atest AccessibilityGestureDetectorTest TouchExplorerTest GestureManifoldTest

Change-Id: I0aa6e858520d0b36c81df6fe08fd86d7d0803d5a
2020-01-28 13:24:12 -08:00
Ameer Armaly
bb9b8d4d5a Add flag for services to request multi-finger gestures.
Bug: 136131815

Test: atest GestureManifoldTest AccessibilityGestureDetectorTest TouchExplorerTest
Change-Id: Ia6eac44f467963856ca7b8ba561794fa5e49b953
2020-01-24 15:41:52 -08:00
Ameer Armaly
ab60f20fda Add flag for accessibility services to request that double tap gestures be dispatched to the service.
When disabled, double tap and double tap and hold will be handled by the framework. Specifically, they will perform ACTION_CLICK and ACTION_LONG_CLICK on the item with accessibility focus.

Bug: 136131815
Test:  atest GestureManifoldTest TouchExplorerTest  AccessibilityGestureDetectorTest
Change-Id: I19f8f2650e383f136ae9f4d0423d86721c27265b
2020-01-24 15:41:52 -08:00
Ryan Lin
e21d279ba8 Merge "Gesture detection for window magnification (1/n)" 2020-01-21 02:48:56 +00:00
Charles Chen
eb0ebddc1a Merge "Split status bar window (1/N)" 2020-01-20 17:23:36 +00:00
Hongming Jin
60d32dbf5d Merge "API on AccessibilityService side to support customized system actions." 2020-01-17 19:09:11 +00:00
wilsonshih
e832194dd0 Split status bar window (1/N)
This is the first step to create another new window for status bar.

Small window => TYPE_STATUS_BAR: The bar on top of screen.
Large window => TYPE_NOTIFICATION_SHADE: Anything else.

Bug: 136993073
Test: build then flash
Test: atest WmTests SystemUITests
Test: atest RegisterStatusBarResultTest InsetsFlagsTest

Manual Test:
- Bouncer can show when leave showWhenLocked activity.
- StatusBar can show when comes HUN in fullscreen mode.
- StatusBar can play enter/leave animation in fullscreen mode.
- Able to drag notification panel when bubble/glow existing.
- Switch to market launcher, and run above tests.
- Drag notification panel from launcher several times and observe it
  works fine.

Change-Id: Id9f72cd0e21f01b50d57f02ea60f97c6460926b7
2020-01-17 15:33:56 +00:00
Rhed Jao
18dcc695de Merge "Fix a11y shortcut failed to be disabled by the warning dialog." 2020-01-17 08:11:56 +00:00
Ryan Lin
be69a3b62f Merge "Added an interface between Sysui and system_server" 2020-01-17 07:40:04 +00:00
Hongming Jin
8302c6cd85 API on AccessibilityService side to support customized system actions.
Test: atest AbstractAccessibilityServiceConnectionTest
      atest AccessibilityServiceTest
      atest AccessibilityManagerServiceTest
Bug: 136286274
Change-Id: I6810cc9d2fff3f81f76b63fb075a68973e9757c8
2020-01-17 01:35:27 +00:00
PETER LIANG
6c3d66e313 Merge "Fix intent extra into showAccessibilityTargetsSelection function." 2020-01-16 16:41:39 +00:00
Ameer Armaly
da9a56b5fb Merge "Single-finger multi-tap: complete immediately rather than after a delay." 2020-01-15 18:54:40 +00:00
Rhed Jao
f3fbcf5d43 Fix a11y shortcut failed to be disabled by the warning dialog.
Bug: 147330765
Test: atest AccessibilityShortcutControllerTest
Change-Id: I0eed04c7892a22be3721ca08562fb9121a257847
2020-01-15 21:44:22 +08:00
Peter_Liang
c856e032ed Fix intent extra into showAccessibilityTargetsSelection function.
AccessibilityButtonChooserActivity can't get the
  extra value to display the corresponding dialog.

Test: manual test
Change-Id: I551416ba206170ca3f21a7ac9537592440c31444
2020-01-15 21:42:03 +08:00
ryanlwlin
6259298cd8 Gesture detection for window magnification (1/n)
To change the gesturehandler easily for different magnification mode,
we rename MagnificationGestureHandler to FullScreenMagnificationGestureHandler
and add a common class MagnificationGestureHandler. We will create
different MagnificationGestureHandler based on magnification mode.

Bug: 146400227
Test:FullScreenMagnificationGestureHandlerTest
Test: AccessibilityInputFilterTest.java
Change-Id: Ib7a45300a1f1323e1005b89694bb66932b22ab1b
2020-01-15 21:18:57 +08:00
ryanlwlin
2cc1d117a8 Added an interface between Sysui and system_server
This interface is used to interact between system UI and system
server for winodow magnification. When magnification mode is window
mode, system UI will set the connection to AccessibilityManagerService
to manipulate window magnification.

Bug: 146400227
Test: WindowMagnificationConnectionWrapperTest
Test: AccessibilityManagerTest
Test: WindowMagnificationManagerTest
Change-Id: I64b22eac3a7be2e1dbced0573988fe75ace921f6
2020-01-15 17:24:43 +08:00
Jacky Kao
873cbc0e14 Merge "Implementing new API : takeScreenshot()" 2020-01-15 08:29:49 +00:00
Jacky Kao
09789e4168 Implementing new API : takeScreenshot()
Implementing the new API for A11y services to take the screenshot
of the specified display.
Bitmap takeScreenshot(int displayId)
1. The main codes is moved from the UiAutomationConnection class and
let the UiAutomation change to use this API.
2. Add a capability at metadata to check whether the A11y services could use this
API or not.
3. This API is a async one for A11y services, but is a sync one for
UiAutomation.

Bug: 10931661
Test: a11y CTS & unit tests
Change-Id: I478bd93c60d4742bef20ae0e423ca9de1bda55d2
2020-01-15 16:23:52 +08:00
Rhed Jao
70cb293d44 Merge changes from topic "A11yShortcut_NeedWithUi"
* changes:
  Accessibility shortcut improvement (10/n)
  Accessibility shortcut improvement (9/n)
  Accessibility shortcut improvement (8/n)
2020-01-15 07:22:32 +00:00
Jackal Guo
7fd8e937bf Merge "Support accessibility on embedded hierarchies (1/n)" 2020-01-15 05:40:36 +00:00
Ameer Armaly
bb3cb2dad2 Single-finger multi-tap: complete immediately rather than after a delay.
We will not be implementing single-finger triple-tap for now.

Bug: 136131815
Test: atest GestureManifoldTest TouchExplorerTest  AccessibilityGestureDetectorTest
Change-Id: I8a9bd62963bab86ba26bfa46e6f871105dca6d35
2020-01-14 16:49:04 -08:00
Rhed Jao
f526c9995b Accessibility shortcut improvement (10/n)
Update AccessibilityManagerService:
 - Enable multiple shortcut targets support for accessibility button.
 - Remove navibar magnification enabled setting key.

Bug: 136293963
Test: atest AccessibilityShortcutTest
Test: atest AccessibilityUserStateTest
Test: atest AccessibilityShortcutControllerTest
Change-Id: I69facd958307a22f3a0193dd769e595cef324f9f
2020-01-14 12:15:23 +08:00
Jackal Guo
79b182e752 Support accessibility on embedded hierarchies (1/n)
To support embedded hierarchies (leash):
1. Add new APIs for leashed child in AccessibilityNodeInfo.
2. SurfaceView needs to use this API to add such child when
   initializing the AccessibilityNodeInfo.

Bug: 137593247
Test: a11y CTS & unit tests
Change-Id: Ieaa57c6ad65f4c199175d929c3bcba7fb7e6ef26
2020-01-14 10:29:54 +08:00
Minche Li
b95dfee332 Merge "Add new switchToInputMethod API" 2020-01-13 02:31:53 +00:00
mincheli
850892b7fa Add new switchToInputMethod API
Make accessibility service able to set the current input method
for current user.

Bug: 145710994
Test: atest AccessibilitySoftKeyboardTest
   1. Get current enabled IMEs
   $ adb shell settings get secure enabled_input_methods
   com.google.android.googlequicksearchbox/com.google.android.voicesearch.ime.VoiceInputMethodService
   com.google.android.inputmethod.latin/com.android.inputmethod.latin.LatinIME
   2. Get current default IME
   $ adb shell settings get secure default_input_method
   3. Set current default IME
   $ adb shell settings put secure default_input_method
     com.google.android.googlequicksearchbox/com.google.android.voicesearch.ime.VoiceInputMethodService
Change-Id: I00aa2170ef2fcc4daf50d09a57b8e2ad16c0a6cb
2020-01-10 16:58:12 +08:00
Hongming Jin
bc76112e0b System action registration API for SystemUI
Bug: 136286274
Test: atest AccessibilityManagerTest
      atest AccessibilityManagerServiceTest
Change-Id: I6bbdf3627bfc9b39551cc7809dda1cf43d1d6ea4
2020-01-08 11:22:48 -08:00