Commit Graph

7827 Commits

Author SHA1 Message Date
Phil Weaver
8ca583b29f Merge "Accessibility to toggle multiwindow mode" into nyc-dev 2016-02-25 23:16:52 +00:00
Phil Weaver
315c34e7d6 Accessibility to toggle multiwindow mode
Encapsulating the logic to toggle multiwindow mode from recents,
and plumbing it through to accessibility global actions. Sending
accessibility events when windows bounds change. Exposing the
dock divider window type to accessibility services.

Bug: 27250995
Change-Id: Ib7491f1f853dc7f01bf5c5a4ac1f914f55d0608a
2016-02-25 15:13:11 -08:00
Seigo Nonaka
6d2b3ac67c Merge "Show selection handles at the correct position for view transformation" into nyc-dev 2016-02-25 05:59:19 +00:00
Jorim Jaggi
26d02d29e3 Use actual window size for layout
When doing the actual layout pass, desiredWindowWidth/Height might be wrong,
because window manager has the final say how large the surface is, so use
that size.

Bug: 27342700
Change-Id: I4f74fdef66ba7aa88b86f8c95fb391b1cc847beb
2016-02-25 01:21:20 +00:00
Jorim Jaggi
0ffd49cbe0 Always consume bottom insets when navigation bar is force shown
When an app requests SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION but we
force show the navigation bar, we need to treat for the app like
there is no virtual navigation bar on the device. Because if you
combine it with FLAG_HIDE_NAVIGATION, you'd expect the navigation
bar gets hidden but it doesn't, so there could be content that
overlaps with the navigation bar.

Bug: 27157904
Change-Id: I088e02eae2e723c35e9cb4873de6b1325458533b
2016-02-24 18:15:17 +00:00
Seigo Nonaka
2f229ca27b Show selection handles at the correct position for view transformation
The selection handles are implemented based on PopupWindow hence it is
necessary to calculate the transformed location from the TextView's
local coordinates.

This CL only addresses the selection handle locations. Many
functionalities (e.g. selection handle moving direction, handle angle)
doesn't work on transformed view since many components are calculated
on the TextView's local coordinates.

Bug: 24902578
Change-Id: Iaa5fd2812969d097e3bf3219a818ffbc67aaef54
2016-02-24 12:56:36 +09:00
Doris Liu
3005843506 Merge "Support running AVD on UI thread" into nyc-dev 2016-02-23 22:43:53 +00:00
Doris Liu
28cfd20f02 Support running AVD on UI thread
By default, AVD animates on RT thread. But since in some cases there's a
need for a finer control on when the frame update for the animation should
happen, such as coordiating the AVD animation with other animations that
run on UI thread, we are providing a way to force the AVD to run on UI
thread.

Bug: 27278616
Change-Id: I372ecd3dc52e3fa0bdce3a1e9c19443f9b199027
2016-02-23 14:40:47 -08:00
John Reck
e5bfd2da4d Merge "destroyHardwareResources in onStop()" into nyc-dev 2016-02-23 19:45:09 +00:00
John Reck
d9b1607bd9 destroyHardwareResources in onStop()
Bug: 27286867

This hopefully makes everything fully-deterministic. It should
also fix some old annoyances around Bitmap lifecycle as they will
be released earlier in onStop() instead of waiting for
dispatchDetachedFromWindow() which may never happen.

Change-Id: I6e871760650780e327c0e42f62950c1052dd8019
2016-02-23 10:35:19 -08:00
Wale Ogunwale
1f240c9fbf Only copy layout param title if it is different from the current one.
Fixes WindowManager_LayoutParamsTest failure introduced in ag/866860

Bug: 27297744
Change-Id: I27ebf5d35b074d6b9c1634bc7cd18bba2844352e
2016-02-23 07:54:03 -08:00
Selim Cinek
ce2bd0fac7 Fixed a bug where the numpad wasn't working correctly
Also accepting the enter key now from the numpad as a
confirm key.

Bug: 27108451
Change-Id: I63dbd4b6cad3d2dce74e297dcb7abad9c5e66cbe
2016-02-22 15:57:02 -08:00
Jorim Jaggi
7587e38992 Merge "Restrict dock sides after rotation" into nyc-dev 2016-02-22 22:07:54 +00:00
Jorim Jaggi
5060bd8910 Restrict dock sides after rotation
Bug: 27167078
Change-Id: If51626b75321eebc277eb2399ee753ffe489642b
2016-02-22 16:59:43 -05:00
Yohei Yukawa
5a19477ec4 Merge "Unify windowGainedFocus() and startInput()." into nyc-dev 2016-02-22 21:52:56 +00:00
Yohei Yukawa
05c25f8a3a Unify windowGainedFocus() and startInput().
This is a safe refactoring that changes nothing.

In order to improve the keyboard dismissal lags [1][2], we have used
IMMS#windowGainedFocus() as a combined event to do startInput() in
certain situations.

To make the intent of those CLs clear, this CL renames
IMMS#windowGainedFocus() to IMMS#startInputOrWindowGainedFocus().  Note
that these are @hide internal IPC protocols.  Hence this change is never
observable to application developers.

 [1] I8494cbd6e19e2ab6db03f2463d9906680dda058b
     a82ba54b0b
 [2] Icb58bef75ef4bf9979f3e2ba88cea20db2e2c3fb
     7663d80f6b

Bug: 25373872
Change-Id: I56934f18e30d90fcdf77bcbb0c35a92a5feb1b82
2016-02-22 12:41:17 -08:00
Joe LaPenna
90776de6bb Allow button events in ambient.
See thread: "key presses & Ambient"

Bluetooth media button presses and Stem buttons were being rejected in ambient.  This change allows those keys while disabling touch events while in ambient.

BUG: 25964771
BUG: 26524301

Change-Id: I914edd447c38678a06d27677be4597c0ee384635
(cherry picked from commit 7528f57c4d)
2016-02-22 20:39:48 +00:00
Yohei Yukawa
263e21f12c Merge "Remove unused InputMethodInfo#isEncryptionAware()." into nyc-dev 2016-02-20 00:33:22 +00:00
Svetoslav Ganov
3c3e271447 Merge "Discard prefetched disconnected predecessors of a virtual node." into nyc-dev 2016-02-20 00:32:58 +00:00
Svet Ganov
75e5816102 Discard prefetched disconnected predecessors of a virtual node.
bug:18247269

Change-Id: I24f1ed1e9aa44fbb847722833fe68a1eef7e92c5
2016-02-19 16:29:33 -08:00
Yohei Yukawa
d9550a7545 Remove unused InputMethodInfo#isEncryptionAware().
This logically reverts a previous CL [1], which added
InputMethodInfo#isEncryptionAware() for File-Based Encryption (FBE)
support, since it turns out that the method in question is unnecessary
to make InputMethodManagerService encryption-aware.

  [1]: Icf921fe3661eccf4a589b08b616d05decc561356
       69811a98f1

Bug: 26279466
Change-Id: Ia4884bf5922ad453d4b9e5e3c6f0d17b36dc205d
2016-02-20 00:16:32 +00:00
Jorim Jaggi
82c9dc951e Fix configuration calculation when task is non-fullscreen
Apparently only the navigation bar is excluded when calculating
Configuration.screenLayout. Make the calculation for non-fullscreen
tasks consistent with fullscreen tasks.

Change-Id: I027e41e49ffe95245116f3d134e0bc93af0ee450
2016-02-19 22:59:34 +00:00
Doris Liu
46151a4739 Merge "End staging animators when destroy RootRenderNode" into nyc-dev 2016-02-19 22:45:55 +00:00
Doris Liu
e87a74e1a3 Merge "Revert "Revert "Check RenderNode's owning view before attaching animators""" into nyc-dev 2016-02-19 22:45:16 +00:00
Doris Liu
350e65206c End staging animators when destroy RootRenderNode
When animation happens in a dialog, it is possible for the dialog to
be dismissed and RootRenderNode to be destroyed before we create
animation handle for the staged animators. In that case, we need
to remove the staged animators so they will not run without a
animation handle.

Bug: 26975079
Change-Id: I0c2c6c1b530beaec3984c0b1c410df4fd8f25c95
2016-02-19 14:20:37 -08:00
Jorim Jaggi
8fe7e0a88e Fix clip reveal animation in docked window case
- Move ClipRectTB/LRAnimation to wm package, because that's the only
place we use it.
- Extend ClipRectTBAnimation to combine it with translation animation
so the clipping gets applied after the translation.
- Fix clip reveal transitions when a window is docked.
- Make the docked divider minimizing animations synchronized with clip
reveal animation.

Bug: 27154882
Bug: 22174716

Change-Id: If5c94c777f3b51c6f53f6f34cc261bf3439cfc88
2016-02-19 14:15:20 -08:00
Doris Liu
8b083206ae Revert "Revert "Check RenderNode's owning view before attaching animators""
This reverts commit eb40178af3.

Change-Id: I6838ecb35b50847746ee66ac204f14eb5f579b91
2016-02-19 13:52:41 -08:00
Jorim Jaggi
42625d1bc7 New behavior for docked stack when going home
- We keep the docked stack visible when home task is visible even
though it's not resizable.
- We introduce the a new concept called "minimizing" the docked stack,
which happens when going home. In this state, the docked stack is
clipped of almost completely.
- To achieve that, we introduce TaskStackBoundsAdjustController,
which adjusts the bounds of the docked stack when minimized. Also,
migrate the IME handling to this new class.
- We also need to inform SysUI that it is now minimized so it can
remove the drag affordance on the divider, and also make it a bit
smaller.
- When we detect an app transition, we check whether the home stack
gets visible/invisible. We then start an animation which runs in
sync with the normal app transition. For that we introduce
DockedStackDividerController.animate(), which performs the animation.

Bug: 27137961
Change-Id: I8623bc73cc6872bf28c5b1b8d5795974576811b2
2016-02-19 12:11:11 -08:00
Yohei Yukawa
116d872d9c Merge "Introduce InputConnection#getHandler()." into nyc-dev 2016-02-19 02:36:50 +00:00
Doris Liu
b9fb8fdf78 Merge "Revert "Check RenderNode's owning view before attaching animators"" into nyc-dev 2016-02-18 19:04:28 +00:00
Doris Liu
eb40178af3 Revert "Check RenderNode's owning view before attaching animators"
This reverts commit 12abdeb3c7.

Change-Id: I938deddf5f294127f87a0e70f940fe5b9a85e0b2
2016-02-18 18:34:59 +00:00
Vladislav Kaznacheev
527905e195 Do not call IWindowSession.updatePointer icon from pointer handler
Currently if View.setPointerIcon is called from inside a pointer
event handler this will cause a redundant round-trip to the server
which can be easily avoided.

Bug: 27107871
Change-Id: Ia641818c3700c0d96d0c32e020b91af58dccfa2a
2016-02-17 16:51:05 -08:00
Jorim Jaggi
c662d8e946 Make sure we call reportResized exactly once when drag starting
If there was another layout happening before the app called
relayoutWindow(), we were issuing multiple reportResized calls,
leading to multiple relayoutWindow() calls, slowing everything
down.

Change-Id: I1f3da04bb7581c655567e1d1a6fe0f8c83c0ffda
2016-02-17 21:02:13 +00:00
Doris Liu
e6e57a9d51 Merge "Check RenderNode's owning view before attaching animators" into nyc-dev 2016-02-16 23:38:57 +00:00
Keisuke Kuroyanagi
f19e3434f8 Merge "Make scrollbar draggable only when it's visible." into nyc-dev 2016-02-16 23:26:32 +00:00
Doris Liu
12abdeb3c7 Check RenderNode's owning view before attaching animators
-Only add animators to a RenderNode when its owning view is attached
-When changing animator's target RenderNode, remove the animator from
 the old target RenderNode that it's currently running on, if any.
Bug: 27141983
Bug: 27145149
Change-Id: I9c9592382d64ecc0390f7ec743a59ce1ad7d9798
2016-02-16 14:25:48 -08:00
Wale Ogunwale
b6e2eaddfc Fixed issue with losing window name when copying WindowManager.LayoutParams
It is possible for the WindowManager.LayoutParams set from a view/window on
the client side not to have the LayoutParams.mTitle set. This is normally
not an issue as we later set it to the package name before passing the
LayoutParams to window manager. However, we rely on the full window name
in order to identify unique windows during CTS hostside tests. We now
retain the current LayoutParams.mTitle if the LayoutParams we are copying
form didn't set one.

Bug: 26982752
Change-Id: Icc3c5937391ed1646c3777921c6f61c27ebec05d
2016-02-16 10:10:09 -08:00
Vladislav Kaznacheev
989b58a633 Update pointer icon when View.setPointerIcon is called
Currently the updated pointer icon is only displayed after
the next mouse move.

Bug:27107871
Change-Id: Ieed57b07fe44699735179cf57968a9bb08981396
2016-02-12 16:55:53 -08:00
John Reck
182bd38430 Merge "Include containing window title in SurfaceView's title" into nyc-dev 2016-02-12 22:24:01 +00:00
Jorim Jaggi
e26334ba1a Merge "Handle light status bar for split-screen" into nyc-dev 2016-02-12 03:12:18 +00:00
Yohei Yukawa
612cce92ad Introduce InputConnection#getHandler().
Currently there is an internal hidden class named
ControlledInputConnectionWrapper which works as a proxy in the
application process to receive incoming binder calls from input method
and dispatch those method calls again on an appropriate thread.
Although this is a kind of implementation details, basically you can see
the same design everywhere in the Android.

Currently ControlledInputConnectionWrapper is initialized with
view.getHandler(), where the view here is the View which was used to
call View#onCreateInputConnection().  This is actually a reasonable
behavior because we have generally assumed that there the only
reasonable way to implement InputConnection is to extend
BaseInputConnection, which is designed to be able to work only on the
UI-thread associated with the target view.

However, on Android N and onward, we are going to ensure that
BaseInputConnection can be re-implemented on top of public APIs [1].
Although most of applications should not try to do that, for certain
applications such as web browsers and WebView it may make sense to let
custom InputConnection implementation run with a custom Handler so that
the application can respond to the IME without blocking the UI thread.

To do that, this CL introduces a new method
InputConnection#getHandler(), which changes nothing as long as it
returns null, but if it returns non-null Handler, InputMethodManager
will use it to initialize ControlledInputConnectionWrapper.

Note that InputConnection#getHandler() is not for IME developers.
It just returns null when called in the IME process.

 [1] See Bug 24688781 for details.

Bug: 26945674
Change-Id: Id9e579bb3e2966986cdcb1c34bc8cacfeca2e1a9
2016-02-11 17:47:33 -08:00
Phil Weaver
fd32b894ff Merge "Fix ViewPager crash for a11y z order." into nyc-dev 2016-02-11 20:58:31 +00:00
John Reck
afeea9ba50 Include containing window title in SurfaceView's title
Bug: 27135605
Change-Id: I6fa4e84cb95ed6c445d00c89d93a5befbd0197b6
2016-02-11 12:19:25 -08:00
Jorim Jaggi
8690558241 Handle light status bar for split-screen
In split-screen the light status bar flag for one side of the
status bar can be different from the other side.
SYSTEM_UI_FLAG_LIGHT_STATUS_BAR is now reported for both
the fullscreen stack and docked stack, but not anymore in the
"default" SysUI visibility field when reporting a visibility
change to SystemUI. The change also reports the docked stack
and the fullscreen stack bounds, so SystemUI can guard tinting
the icons on whether the icon is one of the areas.

When calculating the light status bar flag in PWM, we keep track
of the top fullscreen opaque window state for the docked and
fullscreen stack separately.

Bug: 24365214
Change-Id: Id2240a86d75bf96e0138ec7652a4793859f56e3c
2016-02-11 12:18:40 -08:00
Phil Weaver
4354b340bb Fix ViewPager crash for a11y z order.
The ViewPager requires measure/layout to initialize a list used
in getChildDrawingOrder, and crashes when this method is called
too early. Protecting against that by assigning a default value
to the drawing order value of AccessibilityNodeInfo if the View
bounds have not yet been set.

Bug: 27076826
Change-Id: Ic42dbb81d15340f6b021626b1c27ad5abce7e7d1
2016-02-10 11:19:52 -08:00
Keisuke Kuroyanagi
95589569d3 Make scrollbar draggable only when it's visible.
Currently, scrollbar is mouse draggable even when it's not visible.
It's confusing. Scrollbar shouldn't be draggable when the View don't
want to show scrollbar. This CL fixes it.

Bug: 20016455
Change-Id: Ibada1f01fb4821cdd834c9f9c0dafa02f5530e60
2016-02-10 19:05:00 +09:00
Yohei Yukawa
37db07216e Make InputMethodInfo#isEncryptionAware() strict.
This is a follow up CL to the previous CL [1], which unintentionally
relied on whether the entire application rather than the
InputMethodService is marked to be encryption-aware.  This wasn't
obvious because right now LatinIME is entirely marked to be
encryption-aware, which probably needs to be reconsidered in subsequent
CLs.

This CL drops "encryptionAware" line from InputMethodInfo#dump() as it
is redundant.  The same information is already dumped in the
'ServiceInfo' section.

 [1] Icf921fe3661eccf4a589b08b616d05decc561356
     69811a98f1

Bug: 26279466
Change-Id: I6cea5fe5731f4a6a64ea722b854b99c5154a15ae
2016-02-09 13:39:50 -08:00
Yohei Yukawa
2ba26dd87c Merge changes Icf921fe3,Ie1a8ee22 into nyc-dev
* changes:
  Add a utility method to InputMethodInfo for FBE.
  Fix style issues in InputMethodInfo.java.
2016-02-09 19:49:20 +00:00
Andres Morales
7364905303 Merge "updates to FrameStatsObserver API" into nyc-dev 2016-02-09 19:00:32 +00:00
Andres Morales
910beb8f5d updates to FrameStatsObserver API
- Rename to FrameMetrics to avoid collision with existing
  android.view.FrameStats class
- Make FrameMetricsObserver implementation detail,
  exposing FrameMetricsListener interface as public API
  and wrapping in FrameStatsObserver to maintain state
- Remove dropped frame count call, in favor of passing as
  parameter to callback method.
- Move away from raw timestamp access in favor of Metric IDs
  which represent higher-level, more stable stages in a frame
  lifecycle and match the categories exposed in the onscreen
  bars.
- Support many-to-many Window<->FrameMetricsListener relationship

Change-Id: I00e741d664d4c868b1b6d0131a23f8316bd8c5c2
2016-02-09 10:40:01 -08:00