Commit Graph

9356 Commits

Author SHA1 Message Date
TreeHugger Robot
22e4f07439 Merge "Make scrollbarSize in Material Design theme configurable" 2017-02-21 21:56:58 +00:00
TreeHugger Robot
f780d86963 Merge "Add API to mark sanitized fields and implement it on TextView." 2017-02-21 21:36:50 +00:00
Felipe Leme
33791fd54b Add API to mark sanitized fields and implement it on TextView.
When sending a ViewNode to the auto-fill service, it's necessary to sanitize
it so it does not contain PII (Personally Identifiable Information).

A good rule of thumb is to mark as sanitized nodes whose value were statically
set from resources. Ideally, that logic should belong to View, but View does
not know how its contexts are set, so the decision must be made by the
subclasses, and this CL implements that logic on TextView (which is the main
auto-fill type - others will come soon...)

Bug: 33269702

Test: CtsAutoFillServiceTestCases pass
Test: manual verification

Change-Id: I4dcdd8419a35812bd2f15a63a5be85f8cd97bb4e
2017-02-21 11:47:33 -08:00
TreeHugger Robot
f9bd294469 Merge "Overhaul GraphicsStatsService" 2017-02-21 19:23:46 +00:00
John Reck
df1742ed47 Overhaul GraphicsStatsService
* LRU cache of recently-used is dead, replaced
  disk storage
* ASHMEM size is read from native by the system service,
  no longer requires keeping a sizeof() in sync with a
  constant in Java
* Supports dumping in proto format by passing --proto
* Rotates logs on a daily basis
* Keeps a history of the most recent 3 days

Bug: 33705836
Test: Manual. Verified log rotating works by setting it up to
rotate every minute instead of day. Confirmed /data/system/graphicsstats
only has the most recent 3 entries after several minutes

Change-Id: Ib84bafb26c58701cc86f123236de4fff01aaa4aa
2017-02-21 09:49:10 -08:00
Derek Sollenberger
d7df6748f2 Merge "Add developer setting to set the default GPU renderer." 2017-02-21 17:37:38 +00:00
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
Vladislav Kaznacheev
98329f4da3 Make scrollbarSize in Material Design theme configurable
1. Introduce config_scrollbarSize, default value=4dp
2. Use it to define android:scrollbarSize in themes.
3. Remove the explicit size from the MD scrollbar thumb shape.

Bug: 35432058
Test: android.cts.view.ViewTest#testScrollbarSize
Change-Id: Ia97b8f34ae1b9296ca2afcf62ff5bde55f70a63e
2017-02-17 15:14:05 -08: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
Derek Sollenberger
4badfe6d3b Add developer setting to set the default GPU renderer.
Test: manual on-device testing
Bug: 35345959
Change-Id: I1d846f922a048dd215caf053b10aaa909bdbc74d
2017-02-14 12:03:02 -05: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