Commit Graph

9348 Commits

Author SHA1 Message Date
Svet Ganov
00c771dc7d Add support for remote views backed auto-fill UI
Test: CTS and manual

Change-Id: Ia09f0208d78439491052e4886a0e71c387b73370
2017-02-20 00:37:33 -08:00
TreeHugger Robot
6f781be91e Merge "Minor improvements to help diagnose auth workflow." 2017-02-18 02:18:24 +00:00
TreeHugger Robot
cd1af32eda Merge "Add autoFillMode attribute to View" 2017-02-17 20:50:18 +00:00
Evan Rosky
1228e2cb83 Merge "Fixed default-cluster and empty-cluster navigation behavior" 2017-02-17 20:48:55 +00:00
TreeHugger Robot
a42ba85b0e Merge "Clarify extra data argument nullness." 2017-02-17 19:47:02 +00:00
Andrii Kulian
000fd43eec Merge "Report move to display for activities that handle config changes" 2017-02-17 18:27:29 +00:00
Felipe Leme
d633f07255 Minor improvements to help diagnose auth workflow.
BUG: 35348724
Test: CtsAutoFillServiceTestCases passes

Change-Id: I6ad3320faca8eed329b2cc4836281a547f57456a
2017-02-17 10:15:37 -08:00
Phil Weaver
d666953f57 Clarify extra data argument nullness.
Bug: 35098706
Test: Trivial change, so I just verified that it builds.
Change-Id: I234afe4f1e52ef1c4c64e44b486a539f0d46854c
2017-02-17 09:55:46 -08:00
Philip P. Moltmann
8f35ba4690 Add autoFillMode attribute to View
Bug: 34077687
Test: Ran ViewAttributesTest
Change-Id: I76cfd04efa63e30d2e7bb22ff59c4e7db7c620bb
2017-02-17 09:19:39 -08:00
Aaron Whyte
cdb8fcb611 Merge "Unhide InputDevice.SOURCE_ROTARY_ENCODER" 2017-02-17 16:40:51 +00:00
Andrii Kulian
b047b8bd7e Report move to display for activities that handle config changes
When activity that is moved between displays handles all configuration
changes, it won't be restarted. This CL adds a callback to the client
to notify it about display change. Usually it will be followed by
onConfigurationChanged, except when configuration didn't actually change.
When activity is recreated, it won't receive onMovedToDisplay.

Bug: 34862802
Test: android.server.cts.ActivityManagerDisplayTests
Test: #testOnMovedToDisplayCallback
Change-Id: I9a9501cab788623ada15a31efb53e4b2378639fe
2017-02-16 17:33:59 -08:00
TreeHugger Robot
209346faa0 Merge "Remove final from View.setTooltipText/getTooltipText" 2017-02-16 18:56:32 +00:00
TreeHugger Robot
89863ea4f6 Merge "Suppress a11y shortcut on emergency dialer" 2017-02-16 18:36:39 +00:00
TreeHugger Robot
15c4454970 Merge "Allow setImeWindowStatus with null startInputToken" 2017-02-16 17:29:36 +00:00
Felipe Leme
387f45d78f Merge "Add URL on ViewStructure." 2017-02-16 16:04:22 +00:00
Yohei Yukawa
ee2a7ed3d9 Allow setImeWindowStatus with null startInputToken
This is a follow up CL to my previous CL [1], which caused an unexpected
side effect that leads the current IME to crash due to a too strict
requiremnt.

It turns out that it was too early for us to start requiring non-null
StartInputToken in InputMethodManagerService#setImeWindowStatus()
because in many places we have assumed that an IME can show/hide its
software keyboard even before an IME target window is associated with
the IME.

There are two major cases that we missed:

 - InputMethodManager#showSoftInputFromInputMethod(IBinder, int):

   This method does not require that the calling IME is already bound
   to an IME target window.

 - InputMethodManager#showSoftInputUnchecked(int ,ResultReceiver):

   This @hide method allows the caller application to let current IME
   show the software keyboard with bypassing all the normal focus
   management tasks in InputMethodManager.  We should seriously
   consider to deprecate this @hide method, but to do that we have to
   clean up some internal components and SearchView in the support
   library that still rely on this method.

Bug 35395372 is triggered by the second scenario, but until we sort out
all the possible corner cases, we should allow null startInputToken as a
valid request, like we had have done so before the CL [1] introduced
such a validation.

 [1]: I9921b381e02106dbffff5e0b3d13f0a1245ce807
      6db3bfe33d

Test: Made sure Bug 35395372 is no longer reproducible, that is,
      1. Flash a new image and complete the setup wizard on a
         direct-boot unaware device.
      2. Set a device password and require it upon each device boot.
      3. adb reboot
      4. Observe the default IME does not crash because of
         InvalidParameterException thrown by IMMS.
Test: Made sure IMM#showSoftInputFromInputMethod(IBinder, int) does
      not throw an InvalidParameterException even in an extreme case.
      1. Rebuild LatinIME with the following code in LatinIME.java
       @Override
       public AbstractInputMethodImpl onCreateInputMethodInterface() {
           return new InputMethodService.InputMethodImpl() {
               @Override
               public void attachToken(IBinder token) {
                   super.attachToken(token);

                   final InputMethodManager imm =
                       getSystemService(InputMethodManager.class);
                   final IBinder imeToken =
                       getWindow().getWindow().getAttributes().token;
                   imm.showSoftInputFromInputMethod(imeToken, 0);
               }
           };
       }
      2. adb install -r LatinIME.apk
      3. adb shell ime enable com.android.inputmethod.latin/.LatinIME
      4. adb shell ime set com.android.inputmethod.latin/.LatinIME
      5. Tap any text field.
      4. Observe LatinIME does not crash because of
         InvalidParameterException thrown by IMMS.
Bug: 34628091
Bug: 35079353
Fixes: 35395372
Change-Id: Ib9448c551d9a30776a999c27a5ff20f1a095633a
2017-02-15 21:38:57 -08:00
TreeHugger Robot
59d3c40855 Merge "Minor fixes on documentation." 2017-02-16 04:36:56 +00:00
Felipe Leme
c32410068d Add URL on ViewStructure.
The URL will be typically used by views rendering HTML pages (like WebView),
and used in 2 cases

- Root node (containing the URL of the HTML page)
- Child nodes that represent hyperlinks (contains the hyperlink URL).

Fixes: 20902429
Test: manual verification
Test: android.assist.cts.WebViewTest verifies it

Change-Id: Ic49472f1fca89047369b7187176f54efd277e204
2017-02-15 18:15:46 -08:00
Evan Rosky
3ac6463724 Fixed default-cluster and empty-cluster navigation behavior
Cluster navigation would get stuck if:
 - there was an empty cluster (nothing to focus)
 - there were views NOT in a cluster and the global
   default-focused view was in a cluster.

This will skip over empty clusters during cluster navigation
and when the default "cluster" is active, it will try to
focus a non-clustered focusable instead of the global default
(and if there aren't any non-clustered focusables, it will
skip over the default "cluster" as it now does with actual
clusters.

Bug: 35273052
Bug: 34361282
Test: Added/Updated CTS tests and checked behavior in a test app.
Change-Id: I0b4d55707203f6a0453f25313f940927d59a9b31
2017-02-15 17:30:34 -08:00
Aaron Whyte
22db07f308 Revert "Re-hide AXIS_SCROLL constant."
This reverts commit 8171658b9f.
Bug: 27314061
Bug: 22836852
Bug: 18707397
Change-Id: I6f78962cfa18f11ce5c8caa1d146252bd79f6dbd
2017-02-16 00:59:16 +00:00
Aaron Whyte
89625d3547 Unhide InputDevice.SOURCE_ROTARY_ENCODER
Test: Treehugger
Bug: 27314061
Bug: 22836852
Bug: 18707397
Change-Id: Icfb5b09533b7fa785b16251accfd24a10daee034
2017-02-15 15:57:39 -08:00
Felipe Leme
f23e652c40 Minor fixes on documentation.
Bug: 31001899
Test: m update-api
Change-Id: I1f08552885fb5572ca9d811959dfe2b965ce3537
2017-02-15 09:06:24 -08:00
Phil Weaver
7eec37989f Suppress a11y shortcut on emergency dialer
Suppressing whenever the keyguard is locked, not just when
it's showing. This should reduce false triggering.

Bug: 34820720
Test: Verfied that shortcut no longer activates on emergency
dialer or lock screen.

Change-Id: Ic43c11798f04217c2871efe7d0fa21dbf61fd953
2017-02-14 16:51:55 -08:00
Vladislav Kaznacheev
9aa7edfa89 Remove final from View.setTooltipText/getTooltipText
This resolves the binary compatibity issue with some
existing apps.

Bug: 35150720
Test: framework builds
Change-Id: I4242186b7103ad35a1e09264c0c9f86bbcf88f49
2017-02-14 11:43:16 -08:00
TreeHugger Robot
4dba3cdf89 Merge "Refactor auto-fill" 2017-02-14 09:37:53 +00:00
Svet Ganov
782043caf8 Refactor auto-fill
* Fix a layering issue where auto-fill manager which is in view
  depended on activity which is in app

* Moved auto-fill classes to view or service based on their
  purpose and removed dependecy on the classes in view to the
  classes in service

* Push state to local auto-fill manager whether auto-fill is
  enabled to avoid making IPC for every focus transition if
  the user did not enable the feature

* Remove unnecessary offload to messages when handling calls
  to auto-fill manager service as these are made over a oneway
  interface and in general they do almost no work and typically
  we do these on the binder thread

* Removed id from data set and fill response as the provider
  can embed everything it needs to id them in the auth pending
  intent

* Enforce the auth UI to be only an activity as this will work
  with multi-window, recents, and back and also does not require
  draw on top of other app special permission

* Authentication also no longer requires passing a remotable
  callback to the auth activity but the activity handles the
  request as if called for a result

* Handling stopping of a user to clean up in-memory state as
  well as handling when a user gets unlocked as a provider may
  be non-direct boot aware

* User the correct context when creating an auto-fill manager

* Move the receiver that listens for requests to hide system
  windows to the manager service as the UI is a singleton and
  no need every per-user state to register its own

* Removed extras from dataset as the only case a provider needs
  to associate state with a dataset is for auth and the provider
  can embed this data in the auth pending intent

Test: manual and CTS

Change-Id: I4bc54c13cf779d7f6fdb3ab894637f9fac73f603
2017-02-13 21:31:37 -08:00
TreeHugger Robot
3400795aec Merge "Propagate setImeWindowStatus() to WMS" 2017-02-14 01:38:07 +00:00
Sergey Vasilinets
2eaae562fe Merge "DeferredLayerUpdater: clean up Layer lifecycle" 2017-02-14 01:28:26 +00:00
sergeyv
00eb43dbc0 DeferredLayerUpdater: clean up Layer lifecycle
Test: refactoring CL, all existent tests should pass
bug:34919311
Change-Id: Ib2889667a5ab8a2aaba443458782bc163467f0ea
2017-02-13 14:41:20 -08:00
Yohei Yukawa
ff54b306de Merge "Track event flow to IMMS#setImeWindowStatus" 2017-02-13 22:08:35 +00:00
TreeHugger Robot
9f5ce93549 Merge "Introduce a minimum scrollbar touch target size" 2017-02-13 20:48:14 +00:00
TreeHugger Robot
a21f3e782a Merge "Do not enter touch mode on non-touchscreen events" 2017-02-13 20:44:39 +00:00
Yohei Yukawa
69e6802422 Propagate setImeWindowStatus() to WMS
setImeWindowStatus() introduced in the previous CL [1] can help
WindowManagerService (WMS) address Bug 34628091.  As a preparation
this CL has InputMethodManagerService propagate relevant information
to WMS WMS for later use.

 [1]: I9921b381e02106dbffff5e0b3d13f0a1245ce807
      db2afde0e584904ee4ce115ce176a4dfe1773990

Test: Verified the callback in WindowManagerService as follows:
       1. Rebuild the system with DEBUG_INPUT_METHOD=true
       2. adb logcat -s WindowManager:*
            to make sure the visibility passed to
            WindowManagerService#updateInputMethodWindowStatus matches
            to the actual IME window visibility
Bug: 34628091
Bug: 35079353
Change-Id: I54fb1faf513883a54293a756e4c9d2ae9453d778
2017-02-13 12:04:50 -08:00
Yohei Yukawa
6db3bfe33d Track event flow to IMMS#setImeWindowStatus
This is part of work to introduce historical debugging infrastructure
for Android IME.

In this CL, we will focus on the following two event flows.

 A1. IMMS#attachNewInputLocked() queues MSG_(RE)START_INPUT to deliver
     new InputConnection/EditorInfo to the current IME
 A2. The IME triggers IMS#onStartInput()/IMS#onRestartInput() and
     updates the following fields:
      - InputMethodService#mStartedInputConnection
      - InputMethodService#mInputEditorInfo

 B1. IME is expected to call back IMM#setImeWindowStatus() to notify
     its window visibility change to IMMS.
 B2. IMMS updates the following field if the caller is still the
     current IME.
      - InputMethodManagerService#mImeWindowVis

What this CL aims to do is to enable IMMS to access A1 state when it
was in B2 state, by considering that for given a B1 the last A2
happened before B1 is the cause of B1 and B2.

To do this, IMMS issues a binder token in A1 and each IME keeps it
so that it can be passed in B1. By using this Binder token as a key,
IMMS can keep tracking state snapshot taken from each A1. Note that
those state snapshots keep alive until the Binder token's proxy in the
IME process loses strong reference from its GC root.

Test: Make sure `adb shell dumpsys input_method | grep mImeWindowVis`
      matches to the IME window visibility.
Test: Make sure the current IME is not receiving any
      InvalidParameterException from IMMS.
Bug: 35079353
Change-Id: I9921b381e02106dbffff5e0b3d13f0a1245ce807
2017-02-13 12:04:41 -08:00
Vladislav Kaznacheev
75e5029e46 Do not enter touch mode on non-touchscreen events
Currently ACTION_DOWN and ACTION_SCROLL cause
entering touch mode regardless of the event source.
This is especially awkward for mouse.

This should only happen when the event source is
SOURCE_TOUCHSCREEN.

Bug: 35314124
Test: android.cts.view.ViewTest#testTouchMode
Change-Id: I2205d4240be4afcbd9a3ac5558e701f7cac51926
2017-02-13 10:46:05 -08:00
Abodunrinwa Toki
bbc21401b3 Merge "TextClassifierImpl: Handle urls." 2017-02-13 17:35:18 +00:00
TreeHugger Robot
04fa542db5 Merge "Set oom adj for processes displaying app-overlays to PERCEPTIBLE_APP_ADJ" 2017-02-13 16:19:41 +00:00
Abodunrinwa Toki
9b4c82a83c TextClassifierImpl: Handle urls.
This cl also updates label strings, renames an internal method,
and fixes some bugs in TextClassifierImpl caught by tests.

Test: See: I31ee94177e58c986e61e9b24c6c5816fa4b022e1
Bug: 34778263
Bug: 34922928
Change-Id: Ibf60d345d462dfc8a13dead6f01053f1ae50f35a
2017-02-13 15:00:32 +00:00
Wale Ogunwale
d993a573d7 Set oom adj for processes displaying app-overlays to PERCEPTIBLE_APP_ADJ
For processes with a window of type TYPE_APPLICATION_OVERLAY adjust their
oom importance to PERCEPTIBLE_APP_ADJ to reduce the chance of them getting
killed by the low-memory-killer since they are displaying something that
is perceptible to the user.

Also z-order TYPE_DREAM windows above alerts windows.

Bug: 33256752
Test: cts/.../run-test CtsAppTestCases android.app.cts.AlertWindowsTests
Change-Id: I4c05a9fee6fad61399bf4d10c8647467cc596ca6
2017-02-12 16:57:24 -08:00
Yohei Yukawa
22dac1c8df Introduce @SoftInputModeFlags annotation
Doing this allows us to annotate integer values that should corresponds
to WindowManager.LayoutParams#softInputMode.

Test: There should be no behavior change.  RetentionPolicy.SOURCE
      annotation should change nothing in production code.
Test: checkbuild
Bug: 32784563
Bug: 35079353
Change-Id: I96300b090edce327d0515c740183abe91ded6bac
2017-02-12 16:54:16 -08:00
Yohei Yukawa
22a8923368 Track the last softInputMode in IMMS
A field in WindowManager.LayoutParams softInputMode is something that
definitely needs to be kept tracking in historical debugging
infrastructure across IME-related processes (Bug 35079353) [1].  As a
preparation, this CL enables InputMethodManagerService (IMMS) to
include the last softInputMode specified in IMMS#windowGainedFocus()
in the dumpsys in human readable format.

 [1]: As explained in b.android.com/224318, softInputMode misspecified
      by app developers is a typical root cause of unexpected behavior
      in keyboard visibility.  Bugs such as Bug 23168250, Bug 27275709,
      and Bug 31770400 fall into this category.

Test: `adb shell dumpsys input_method | grep softInputMode=`
Bug: 35079353
Change-Id: I485ced030def179dad78b4b811c6eb52b5e5c951
2017-02-12 16:38:59 -08:00
Andrii Kulian
3d227ad86c Merge "Allow destroying display content on removal" 2017-02-10 20:49:49 +00:00
Evan Rosky
187706f3e4 Merge "Don't notify parents of views made focusable off UI thread" 2017-02-10 20:36:13 +00:00
TreeHugger Robot
077bf66250 Merge "Clear mExtraDataKeys when clearing A11yNodeInfo." 2017-02-10 19:58:09 +00:00
Vladislav Kaznacheev
4d2c60145c Introduce a minimum scrollbar touch target size
Currently a default scrollbar is fairly hard to grab with
a mouse as it is sometimes as narrow as 8dp.

Introduce a larger touch target configured by
config_minScrollbarTouchTarget

Bug: 35114313
Test: manual
Change-Id: Ib15b24e5a82ea912ec5837d965319b758b4d9b6b
2017-02-10 11:27:10 -08:00
Phil Weaver
9b83ffbfae Clear mExtraDataKeys when clearing A11yNodeInfo.
Bug: 35244501
Test: Ran Accessibilitiy CTS. I can no longer get the test mentioned
in the bug to fail.

Change-Id: I69e5e1b5c8f12226837ced928fbd10ff77bcd235
2017-02-10 10:10:01 -08:00
Abodunrinwa Toki
fd9d0ee9f8 Merge changes from topic 'smartselect'
* changes:
  Introduce a model file for language detection.
  Change package for LangId and SmartSelection.
2017-02-10 15:56:40 +00:00
Andrii Kulian
250d653325 Allow destroying display content on removal
This CL sets the behavior for displays when they are removed.
For public displays by default all content will be moved to the
primary display and become focused. For private displays default
behavior is to destroy all content - first it moves stacks from
the secondary display to the primary display to the bottom, then
it destroys all activities in those stacks.

This CL adds two specified behaviors as modes, so in future these
rules might be altered if needed.

Bug: 34263289
Test: android.server.cts.ActivityManagerDisplayTests
Test: #testContentDestroyOnDisplayRemoved
Change-Id: I3f89f06ff82cb4b487df58a86ba3b146a32cbd00
2017-02-09 22:45:19 -08:00
Abodunrinwa Toki
c3e7a4fade Introduce a model file for language detection.
Test: cts-tradefed run cts-dev -m CtsViewTestCases -t
android.view.textclassifier.cts.TextClassificationManagerTest#testLanguageDetection
Bug: 34777495

Change-Id: Id4102732d303151839ae54630746f882a98dce29
2017-02-10 00:57:11 +00:00
Abodunrinwa Toki
f67f0a584e Change package for LangId and SmartSelection.
Package change from android.text to android.view.textclassifier.
This change was delayed until the native library code was updated
to reflect this package change.

Test: cts-tradefed run cts-dev -m CtsViewTestCases -t android.view.textclassifier.cts.TextClassificationManagerTest
Bug: 34777495
Change-Id: I723aaf79f8fbed4758bb4ee6727dfb6a8e35bf99
2017-02-10 00:57:01 +00:00