Commit Graph

9642 Commits

Author SHA1 Message Date
Evan Rosky
f4c31bf67b Merge "Handle edge-case where no focusables exist" into oc-dev 2017-04-19 18:08:29 +00:00
Felipe Leme
fe1bddfbb5 Merge "Some Autofill API changes." into oc-dev 2017-04-19 05:05:48 +00:00
TreeHugger Robot
9cd92959e6 Merge "Fix for SurfaceView out of a view hierarchy" into oc-dev 2017-04-19 03:17:50 +00:00
TreeHugger Robot
42775f2a89 Merge "Add a way to read the last AutofillSelection." into oc-dev 2017-04-19 02:43:08 +00:00
Felipe Leme
e5f9c30688 Some Autofill API changes.
- Added View.IMPORTANT_FOR_AUTOFILL_YES_INCLUDE_DESCENDANTS
- Added View.IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS
- Added FillResponse.Builder.setIgnoredIds()
- Fixed javadoc links.

These changes are not implemented yet....

Bug: 37424141
Bug: 36171235
Test: m update-api

Change-Id: I604960443ab08cd3f2a84a70b0a2cece7cb0a00c
2017-04-18 19:27:58 -07:00
Philip P. Moltmann
cc684ed41f Add a way to read the last AutofillSelection.
- Check UID to make sure one service cannot read FillSelections of other
  services
- Add id to Dataset to allow to tag the datasets. This id is then found
  in the FillSelection.Event
- Add clientState to FillSelection to allow service to store more data

Fixes: 36871500
Test: CtsAutoFillServiceTestCases
Change-Id: Ice894245508227265294a1c59ea97842175e5aec
2017-04-18 16:59:40 -07:00
Evan Rosky
7906d47f69 Merge "Ignore nested keyboard navigation clusters" into oc-dev 2017-04-18 22:54:08 +00:00
Evan Rosky
5b860719a3 Handle edge-case where no focusables exist
cluster navigation was previously crashing if there was
nothing focusable..

Bug: 37438383
Test: Added CTS: ContentPaneFocusTest#testNoFocusablesInContent
      Ran against support-v7-demos Toolbar demos to verify
      crash didn't occur

Change-Id: Ia1382cec138a948d080aeded4d38735983df2152
2017-04-18 15:49:43 -07:00
Lucas Dupin
0c207340b9 Fix for SurfaceView out of a view hierarchy
At most of the time, developers rely on GLSurfaceView to manage
the OpenGL lifecycle. This means that a SurfaceView might not
always have a ViewRootImpl.

Test: select timelapse wallpaper and set it.
Bug: 37363390
Change-Id: I3cdb1ec2a6e91cfad65fd823a7436f0010c0859c
2017-04-18 10:01:34 -07:00
TreeHugger Robot
eef5d285f9 Merge "Account for content insets in source rect hint for transition into PiP" into oc-dev 2017-04-18 01:33:28 +00:00
TreeHugger Robot
eb9fb8e0d0 Merge "A new power button mode to hide the IME when shown" into oc-dev 2017-04-18 01:13:04 +00:00
TreeHugger Robot
c2627353c4 Merge "Tightening up rotation behavior for PIP (3/3)" into oc-dev 2017-04-17 23:50:27 +00:00
Yohei Yukawa
d6475a682d A new power button mode to hide the IME when shown
As discussed in Bug 33038203 on certain platforms there is a demand
that the power button can change the behavior depending on whether an
IME window is shown on the screen or not.  The behavior requested here
can be summarized into two parts:

  * Hide the IME window if it is shown [1]
  * Go to the home screen if no IME window is shown

This CL implements the above request by introducing a new config mode
for config_shortPressOnPowerBehavior.  Note the definition of when an
IME is shown is often tricky than people would expect.  The way this
CL is implemented is to propagate IME window state from
InputMethodManagerService (IMMS) to PhoneWindowManager via
WindowManagerService regarding when the back button on the NavBar for
phones/tablets should be shown as an IME dismiss key [2].

 [1]: Even with this CL the IME still is allowed to ignore the request
      to hide the software keyboard. Currently there is no official
      protocol to forcefully hide the software keyboard.  How to deal
      with such a situation is a long standing TODO task.
 [2]: Internally this is controlled by the following IMMS fields:
       - InputMethodManagerService#mImeWindowVis
       - InputMethodManagerService#mBackDisposition
      Note that those fields rely on self-report from the IME.  To be
      precise, the base implementation of InputMethodService is
      responsible for report back its internal state to IMMS when
      necessary.  The important point is that, although this could
      allow a malicious IME to confuse the system UI to some extent,
      supporting malicious IMEs is not clearly a goal of Android.
      Anyway, the definition of when an IME is shown is a kind of
      hot topic in several system services recently.  Hopefully we
      can come up with better definition and reliable mechanism in
      a future release.

Fixes: 33824860
Test: Manually verified as follows
       1. Change config_shortPressOnPowerBehavior to "5"
       2. Rebuilt the OS image and flash it to the device
       3. Make sure that the power button works like a home button
          if software keyboard is not shown.
       4. Open dialer and focus in to the text field shown on top
       5. Make sure that the AOSP keyboard is shown.
       6. Run 'adb shell dumpsys input_method' to observe the
          following line:
            mImeWindowVis=Active|Visible
       7. Tap the power button to make sure that the AOSP keyboard
          gets dismissed.
       8. Tap the power button again to make sure that it works
          as if a home button.
Test: Manually tested as follows
       1. Open dialer and focus in to the text field to show an IME
       2. Run 'adb shell dumpsys window policy' to make sure
            mDismissImeOnBackKeyPressed=true
       3. Tap the back button to dismiss the IME
       4. Run 'adb shell dumpsys window policy' to make sure
            mDismissImeOnBackKeyPressed=false
Change-Id: I20721547c73360a70b5fc5cbe06824d577d1768a
2017-04-17 23:22:56 +00:00
Winson Chung
8802eac3d8 Account for content insets in source rect hint for transition into PiP
- As a part of transitioning into PiP, we remove the content insets, and
  as a result, we also need to adjust the source hint rect for the change
  in insets as well.

Bug: 37418994
Test: Enter PiP from YT, ensure no jump at the end

Change-Id: I74219b05c91d3c8b8466dd8fff4d6dd692f08725
2017-04-17 16:11:28 -07:00
Winson Chung
ef4dc81d50 Tightening up rotation behavior for PIP (3/3)
- Fixing up edge case when SysUI resizing conflicts with updating the
  display rotation bounds.  When an interaction causes both a display
  rotation and a resize from SystemUI, we should defer the resize animation
  until the rotation has been propagated to SystemUI, otherwise the bounds
  used will be incorrect.

Bug: 36879891
Test: android.server.cts.ActivityManagerPinnedStackTests
Change-Id: Ife1b7ab0c2f1f11f33cbc9614778ff49a28c79f6
2017-04-17 14:49:31 -07:00
Philip P. Moltmann
494c3f5da2 Allow to finish session when all views are gone
An service can option to finish the session once all views that it
declared as important. Views that are important are all autofillable
views of any partition and the saveable fields of the last partition.

Test: CtsAutoFillServiceTestCases
Fixes: 35708237
Change-Id: I0ccade8ebb427e5d8928697ef0007c75d3f83df0
2017-04-16 21:36:25 -07:00
Svetoslav Ganov
41200eac71 Merge "Add support for multiple fill contexts" into oc-dev 2017-04-15 03:29:13 +00:00
TreeHugger Robot
e61d56fb70 Merge "Support flagNoPersonalizedLearning in layout XML" into oc-dev 2017-04-15 01:44:37 +00:00
TreeHugger Robot
a05f1fdd93 Merge "Remove autofillMode attribute" into oc-dev 2017-04-15 00:50:51 +00:00
Svet Ganov
013efe173e Add support for multiple fill contexts
When saving data filled by the user the platform provides to
an autofill provider the state of the UI allowing the provider
to interpret this state and store relevant information.

A limitation of the current design is that the fill provider
needs to interpret the screen content twice, once handling a
fill request and once handling a save request. To address this
we are introducing a id for each fill request allowing the
autofill provider to associate arbitrary state with each fill
request and store it in the client data bundle later passed
to save.

Another limitation of the current design is that if the screen
changes dynamically while the user interacts with the app the
UI state passed on save represents a static snapshot, therefore
it is not possible to the autofill provider to determine the
context in which the data in the UI was filled. We could
keep the views and have deltas for views being removed/added
/moved/changed but this is not enough as the fill provider
needs to know not only what changed but what changed for every
fill request and in one session there could be multiple fill
requests. To address this we provide a list of fill contexts
on save each of which has the id of the corresponding fill
request. This allows the fill provider to know the exact context
in which the data was popuplated and also use its custom client
state for this fill request if desired.

This change deprecates the old APIs and the new ones delegate
to the old ones. Once the clients migrate to the new APIs we
will remove the old ones.

Test: all autofill CTS tests pass

Change-Id: Idcebcc671aa3c078a305d8c358e225274fccc588
2017-04-14 17:37:31 -07:00
Philip P. Moltmann
44a4336027 Remove autofillMode attribute
Bug: 36171235
Test: CtsAutoFillServiceTestCases
Change-Id: I69f0e1c4fa3c68f73049726e7ae8f10d9d81bf5e
2017-04-14 14:35:14 -07:00
Yohei Yukawa
d91860d9ce Support flagNoPersonalizedLearning in layout XML
In my previous CL [1] a new flag IME_FLAG_NO_PERSONALIZED_LEARNING
was added for EditorInfo.imeOptions.  What was missed in the
previous CL is that new flag definition for layout XML and as a
result currently IME_FLAG_NO_PERSONALIZED_LEARNING is the only
IME option flag that cannot be specified in layout XML.

For instance, EditorInfo.IME_FLAG_FORCE_ASCII can be specified as
follows.

 <EditText
     android:id="@+id/edittext_force_ascii"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:imeOptions="actionSend|flagForceAscii" />

With this CL, application developers can specify
IME_FLAG_NO_PERSONALIZED_LEARNING as follows.

 <EditText
     android:id="@+id/edittext_no_personalized_learning"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:imeOptions="actionSend|flagNoPersonalizedLearning" />

 [1]: Ibf5ac3d2b8f39542baf2635c0cadbe242b059f81
      5959af13d0

Bug: 28157942
Fixes: 37305520
Test: bit CtsWidgetTestCases:android.widget.cts.TextViewTest
Change-Id: Ifca0b13bf336cdc609af820aadcdb1b45ca1d5ba
2017-04-14 13:46:37 -07:00
Philip P. Moltmann
e048a65639 Fix some racines in AutofillManager
- The session might be gone by the time the handler is called, hence check
  the sessionID
- Access getClientLocked() and mSession only under mLock.

Test: cts-tradefed run cts-dev AutoFillServiceTestsCases
Change-Id: I445a24557589afadb1f5372b63ef9db88021b609
2017-04-14 12:50:03 -07:00
TreeHugger Robot
7c8ab2651b Merge "Remove unnecessary casts on calls to findViewById" into oc-dev 2017-04-14 16:56:28 +00:00
Alan Viverette
51efddbd3b Remove unnecessary casts on calls to findViewById
Just frameworks/ this time. More paths to come.

Bug: 24137209
Test: make -j32
Change-Id: Iff27abd26fa43296ac2fff8f534fc6742d2ae80c
2017-04-14 11:15:50 -04:00
Andrii Kulian
c66b6ff997 Merge "Hide flag SHOW_WITH_INSECURE_KEYGUARD" into oc-dev 2017-04-14 05:05:25 +00:00
TreeHugger Robot
249c4d709a Merge "Allow custom buttons in autofill UI" into oc-dev 2017-04-14 04:22:10 +00:00
Svet Ganov
3a74243ae4 Check for non-null parent before delegating to it
Test: manual

bug:37289681

Change-Id: If3055747471d4b7771256d8adaaa08b73641c09d
2017-04-14 02:31:53 +00:00
Evan Rosky
197052d6cb Merge "Improve rect-level focus ordering" into oc-dev 2017-04-13 23:06:18 +00:00
Andrii Kulian
22512e8a22 Hide flag SHOW_WITH_INSECURE_KEYGUARD
Bug: 36555156
Test: android.server.cts.ActivityManagerDisplayTests
Change-Id: I831ada0ffd35ab96af8ae821588c9f6e0ff30e5a
2017-04-13 11:35:40 -07:00
TreeHugger Robot
22762b2283 Merge "ViewRoot: More surgically fix child-life time." into oc-dev 2017-04-13 08:25:10 +00:00
Tadashi G. Takaoka
d280bfea23 Merge "Remove supportsDismissingSelfWindow attribute of IME" into oc-dev 2017-04-13 07:41:34 +00:00
TreeHugger Robot
9d5ac93cc3 Merge "Stack APPLICATION_MEDIA_OVERLAY windows with relative layering." into oc-dev 2017-04-13 07:12:55 +00:00
Svet Ganov
c3d1c85bda Allow custom buttons in autofill UI
Test: added CTS test in topic

bug:36871561

Change-Id: I78ffd8ba33fb982183677fffc587bbf1a077e132
2017-04-12 22:34:32 -07:00
Robert Carr
af422a8c5b Stack APPLICATION_MEDIA_OVERLAY windows with relative layering.
See accompanying frameworks/native commit
 "SurfaceFlinger: Add parent-less relative layering" for a full explanation.

Test: Manual of bug repro steps. Plus tests for new SurfaceControl functionality included in frameworks/native.
Bug: 36693738
Change-Id: Ic54598117c1f44a206d33f03d0cc463fbef43fcc
2017-04-12 21:40:30 -07:00
TreeHugger Robot
0964a2d9fc Merge "Revert "Make scrollbarSize in Material Design theme configurable"" into oc-dev 2017-04-13 03:36:30 +00:00
Evan Rosky
0e8a683294 Ignore nested keyboard navigation clusters
Keyboard navigation clusters should not be nested; however,
if they are, the behavior is to pretend like they aren't
clusters. This includes ignoring the keyboardNavigationCluster
+ touchscreenBlocksFocus combo altogether.

Bug: 32804858
Test: Added some nested cluster scenarios to ViewGroupTest CTS
Change-Id: I776942842b8c1147200fc39f7eacca493e37c20c
2017-04-12 18:18:25 -07:00
Evan Rosky
d114e0fc59 Improve rect-level focus ordering
Previously views were ordered strictly by their tops. This
lead to many cases of tab-focus moving "backwards". For example
a horizontal row of views with different heights would not
always move start-to-end.

Bug: 34854951
Bug: 33848452
Test: Run against UX-provided localized focus-orders to make sure
      it improves behavior. Added a sanity-check CTS test for
      well-behaved (simple) layouts.

Change-Id: I5b01a301e0bbcbcad472ffdb26ebf4fbb6380756
2017-04-12 17:15:43 -07:00
Evan Rosky
a0ce440d60 Merge "Fix focus ordering with duplicate ids" into oc-dev 2017-04-12 23:50:04 +00:00
TreeHugger Robot
18d993bb72 Merge changes from topics 'KeyboardFocusHighlight-oc-dev', 'KeyboardFocusHighlight_ mDefaultFocusHighlightEnabled-oc-dev', 'KeyboardFocusHighlight_ hasFocusStateSpecified-oc-dev' into oc-dev
* changes:
  Fix broken CTS tests.
  Draw a default focus highlight if needed.
  Add a public API defaultFocusHighlightEnabled.
  Detect unhandled keyboard focused state.
2017-04-12 22:40:15 +00:00
TreeHugger Robot
a402d6dd2f Merge "Add autofill feature API" into oc-dev 2017-04-12 21:17:33 +00:00
Robert Carr
414ebc6ac8 ViewRoot: More surgically fix child-life time.
A more targeted version of "ViewRootImpl: Fix child lifetime".
In this version we avoid hijacking the window visibility callback
and introduce a new path.
Our contract has been that at any time after returning from
onStop, the WindowManager may destroy the clients Surface. We
see in setWindowStopped, we set the stopped state on the hardware
renderer in order to prevent further use of the Surface. However
there is nothing synchronously dispatching this change to child views
and so SurfaceView is not necessarily informed to release it's Surface
in time. Typically SurfaceView will be informed through the
onWindowVisibilityChanged callback. The signal producing this
is emitted from SystemServer prior to onStop but has to pass
through the clients handler thread. It seems this has always been
broken, and we have always had intermittent reports of EGL_BAD_ALLOC
scenarios. I speculate that elevation of WindowManager scheduling during
app close scenarios is perhaps making this more severe, as it seems to
ensure the WindowManger will win the race to destroy the Surface before
the client handler thread process onWindowVisibilityChanged (unless
the FIFO timeout is surpassed).

Test: Put Chrome in PiP. Turn screen off. No Crash!
Bug: 36561071
Change-Id: I9233ba8151c7f577b1d1044afc0c2ac3a65be4b4
2017-04-12 12:08:01 -07:00
Jiaquan He
fb62ecb220 Fix broken CTS tests.
The default focus highlight should be necessary when the view is
attached to window.

Test: cts-tradefed run singleCommand cts --skip-device-info
--skip-preconditions --abi armeabi-v7a -m CtsViewTestCases -t
android.view.cts.ViewTest
Test: cts-tradefed run singleCommand cts --skip-device-info
--skip-preconditions --abi armeabi-v7a -m CtsWidgetTestCases -t
android.widget.cts.MediaControllerTest
Bug: 37082416

Change-Id: I5d6b0c00b5ba03c8f62e4f71be9336823a73134b
2017-04-12 18:25:26 +00:00
Jiaquan He
8062949ece Draw a default focus highlight if needed.
This commit draws a default highlight for a focused
View if it's detected to have no state_focused defined
and its useDefaultFocusHighlight attribute is true.

When we detect a default highlight is needed, we show it
on top of the view to. Once we detect that it's no longer
needed, we remove it.

Test: Check that views without a focused_state in its
state spec have a default highlight when they get focused.
Bug: 35096940

Change-Id: Ifbe4bb9e1297d98845314e24d8b758f14e5987a9
2017-04-12 18:24:52 +00:00
Jiaquan He
b7daaf8b5f Add a public API defaultFocusHighlightEnabled.
This commit adds a public API to turn on/off default
focus highlights. When a focused View is detected to
have no state_focused defined, we can use this API to
decide wether we should show a default highlight for it.

Test: cts-tradefed run singleCommand cts --skip-device-info
--skip-preconditions --abi armeabi-v7a -m CtsViewTestCases
-t android.view.cts.View_DefaultFocusHighlightTest
Bug: 35096940

Change-Id: I76b45d6bf5761641a0ed7f4d0b04cb325ed72b52
2017-04-12 18:23:43 +00:00
Vladislav Kaznacheev
f619ead8d3 Revert "Make scrollbarSize in Material Design theme configurable"
This reverts commit 98329f4da3.

Bug: 35432058
Test: android.view.cts.ViewTest passes
Change-Id: I4c76450a47b581a8237108180806845f5f66ac39
2017-04-12 11:16:51 -07:00
Svet Ganov
43574b03e5 Add autofill feature API
We now have a software feature for autofill which can be used
by partners to disable it on low-end devices or form factors
for which autofill doesn't make sense.

bug:35956220

Test: manual (requires a custom build)

Change-Id: I6c06462ed9ca3ae93331700dce38a8c08dfd0722
2017-04-12 09:53:38 -07:00
Jorim Jaggi
9fc2870679 Fix doc for FLAG_DISMISS_KEYGUARD
Test: n/a
Change-Id: I7e8b0e22895e5efe839dc0f73bcfda6a67f52026
Fix: 36023803
2017-04-11 15:55:57 -07:00
TreeHugger Robot
7a6df3b777 Merge "Move API for disabling an autofill service to the manager" into oc-dev 2017-04-11 06:10:13 +00:00
Bryce Lee
068b429c34 Merge "Revert "ViewRootImpl: Fix child lifetime."" into oc-dev 2017-04-11 02:05:33 +00:00