Commit Graph

7694 Commits

Author SHA1 Message Date
Phil Weaver
75fab6b8bc Merge "Pass drawing order information to accessibility." 2016-01-21 19:17:48 +00:00
Phil Weaver
1f2225486d Pass drawing order information to accessibility.
Bug: 22721935
Change-Id: I45a2be7c174c8b5a469b68a45dec0eb536825d92
2016-01-21 10:35:26 -08:00
Robert Carr
d86c63a25e Layout SurfaceView in parent frame.
We always want the SurfaceView to be layed out
relative to the parent frame, fixes multiple issues
in freeform mode.

Bug: 26689889
Change-Id: Ib4728a515dc01c6884363b68a29f2e4ce5d5babc
2016-01-20 13:37:57 -08:00
Filip Gruszczynski
1937a4c68a Update width available for dialogs on all configuration changes.
Bug: 26504275
Change-Id: I7a0399e4af77ab02df8b3dff68adcf37b36d7ca7
2016-01-19 18:09:05 -08:00
Yohei Yukawa
18f3d9a39e Merge "There should be a way to clear additional subtypes." 2016-01-20 00:03:37 +00:00
Rob Carr
0102a8a8e9 Merge "Replace SurfaceViews across resize trigerred relaunches." 2016-01-19 22:59:10 +00:00
Robert Carr
23fa16b759 Replace SurfaceViews across resize trigerred relaunches.
In resize modes where we are preserving the main application
window, we need to tell the WindowManager to prepare to replace
the child surfaces, or they will dissapear across relaunches.

Bug: 26070641
Change-Id: I864168688dc320e9280e651f9c5df614f52bc96c
2016-01-19 22:23:41 +00:00
Yohei Yukawa
ac3e599069 Merge "Introdude IC#deleteSurroundingTextInCodePoints()." 2016-01-18 05:34:26 +00:00
Jorim Jaggi
2e95a488e0 More optimization while dragging docked divider
- Make sure mPendingBackdropFrame gets also set when if the window
triggers a relayout on it's own, so it doesn't call into window manager
all the time.
- Set the insets of the docked divider to empty so we don't trigger a
layout when we are just moving it - it doesn't need it in any case.
- Send a window move message to the divider when it moved
- Update attach info in all move cases, update light center

The whole resize operation now only takes around 4ms per frame, and
leaves a lot more resources for the apps to do configuration changes.

Bug: 25015474
Change-Id: Ica48129570a0fc858a89c21f46abf3442efb0224
2016-01-15 14:31:50 -08:00
Jorim Jaggi
844e1712df Don't relayout when windows move during resize
Not needed and just increases system load.

Bug: 25015474
Change-Id: Iaf871389527237b5cbc88c03b2f060629b6351dc
2016-01-15 14:31:20 -08:00
Jorim Jaggi
4846ee3cc3 Optimize window relayouts when dragging divider
- Communicate the resize mode to ViewRootImpl. If it is a docked
divider resize, do not call relayout for every traversal.
- Do not call Task.resizeWindows() unconditionally when changing
Stack bounds. It might be just a move.
- However, not calling relayout breaks layout bounds while
relaunching. To fix that, do the following:
-- Inform ViewRootImpl that the activity just relaunched, and force
a relayout call in the next traversal so the client can pick up
the unfrozen bounds.
-- When unfreezing the bounds, cause a traversal in window manager.

Bug: 25015474
Change-Id: Iab9a445dabce4f6ec1e25957038fe40a4be65246
2016-01-15 14:31:08 -08:00
Yohei Yukawa
70f5c48e8e There should be a way to clear additional subtypes.
InputMethodManager#setAdditionalInputMethodSubtypes() is the only API
that allows IMEs to add and remove additional subtypes.  However, due to
a bug, there is no way to clear the last entry of additional subtypes
because the API in question does nothing if the given array is emptry.

With this CL, an empty array is treated as a valid input.

This CL also adds a JavaDoc comment about a possible way to work around
this limitation in Android M and prior devices.

Bug: 26298984
Change-Id: I3731f84531247d071d9d88861e9079afc244a4e8
2016-01-15 21:02:52 +00:00
Chong Zhang
bd925dac2d Merge "Fix missing dialog windows" 2016-01-15 18:24:09 +00:00
Chong Zhang
f6525ceebc Fix missing dialog windows
Use the size in the configuration (not the display size) to set the
dialog size.

bug: 26490549
Change-Id: I8e17482ddcc39fae1d6fd7b0a8e1954b21dac5c8
2016-01-14 17:30:22 -08:00
Yohei Yukawa
f1fc5a0fe8 Merge changes Ib5ea8131,I571d6cc9
* changes:
  Add a new API IMM#dispatchKeyEventFromInputMethod().
  BaseInputConnection shouldn't rely on @hide APIs.
2016-01-15 01:23:09 +00:00
Alan Viverette
bc490ca283 Don\'t verify the scrollbar drawable am: a53c3b2197 am: ca6b87fea6
am: c8ef3f8730

* commit 'c8ef3f8730d20541e8f01f500c380fa09aa3853c':
  Don't verify the scrollbar drawable
2016-01-15 00:21:22 +00:00
Winson
3e87474145 Improving drag and drop animations.
- Expanding drop targets to indicate the size of the to-be docked window
- Fixing animation when dropping task
- Fixing drag view z order
- Fixes issue where the dock divider position in WM is not exact
- Requiring user to move the slop distance before accepting drops

Change-Id: I2f6eab504db7126c19e0c680629e89a39e7512e3
2016-01-14 15:23:20 -08:00
Alan Viverette
c8ef3f8730 Don\'t verify the scrollbar drawable am: a53c3b2197
am: ca6b87fea6

* commit 'ca6b87fea6b16e38f8bbbd514d3cf07361a5feba':
  Don't verify the scrollbar drawable
2016-01-14 21:49:09 +00:00
Alan Viverette
a53c3b2197 Don't verify the scrollbar drawable
Avoids infinite invalidations caused by re-use of scrollbar drawable
during a single draw() pass. Does not address the general problem of
drawable reuse causing unnecessary invalidations as a result of calls
to setBounds() invoking invalidateSelf().

Bug: 26533725
Change-Id: I99e9c2dfe4ddfc833569e40e7268dcb03e931fc9
2016-01-14 21:07:13 +00:00
Fyodor Kupolov
4ae95e5ab9 Merge "Explicitly pass userId to getWindowToken" 2016-01-14 18:37:18 +00:00
Yohei Yukawa
c89e22a6ff Introdude IC#deleteSurroundingTextInCodePoints().
This CL introduces a API variant of IC#deleteSurroundingText(), named
IC#deleteSurroundingTextInCodePoints().  Major differences from
the existing one are:
  - The lengths are supplied in code points rather than code units.
  - This API does nothing if there are one or more invalid surrogate
    pairs in the requested range.  (Failure Atomicity)

Note that due to the asynchronous nature of the input method
architecture in Android, implementing the same logic in the input method
side basically ends up with unreliable and unpredictable results.

Bug: 6526420
Change-Id: I7f6a2c5d3d52079ae71623fd5e40d60c688dd5fb
2016-01-13 22:48:14 -08:00
Chenjie Luo
5ffb219d80 Merge "Add STEM_1, STEM_2 and STEM_3 key as wakeup keys" into cw-e-dev am: 4a577bff96 am: d5cea64d8d am: 7034a6e2d0
am: af8c1b8f94

* commit 'af8c1b8f943f2c616c75da83b44063ae3a5f556f':
  Add STEM_1, STEM_2 and STEM_3 key as wakeup keys
2016-01-14 06:13:43 +00:00
Chenjie Luo
af8c1b8f94 Merge "Add STEM_1, STEM_2 and STEM_3 key as wakeup keys" into cw-e-dev am: 4a577bff96 am: d5cea64d8d
am: 7034a6e2d0

* commit '7034a6e2d05c45c437bef6150bcc70b58b3ccb3b':
  Add STEM_1, STEM_2 and STEM_3 key as wakeup keys
2016-01-14 02:34:53 +00:00
Chenjie Luo
bad498f7fd Add STEM_1, STEM_2 and STEM_3 key as wakeup keys
Bug: 25860409
Change-Id: I3f525c9c8df81807d98391c70cd2d1f8c139c8f5
2016-01-14 01:26:05 +00:00
Ian Pedowitz
46f890188c Merge "Revert "Avoid drawable invalidation during draw()"" into mnc-dr1.5-dev am: 624d43b66f am: 0cd5e9f475
am: 105108209f

* commit '105108209fc35b5029e5a728c09f6eaf91b8a940':
  Revert "Avoid drawable invalidation during draw()"
2016-01-13 23:21:05 +00:00
Ian Pedowitz
105108209f Merge "Revert "Avoid drawable invalidation during draw()"" into mnc-dr1.5-dev am: 624d43b66f
am: 0cd5e9f475

* commit '0cd5e9f475cd31535ad33a6d2151f2270bd3f29c':
  Revert "Avoid drawable invalidation during draw()"
2016-01-13 23:10:29 +00:00
Alan Viverette
156bd49bdc Revert "Avoid drawable invalidation during draw()"
This reverts commit e5e59c6da4.

Drawables expect to be able to call invalidateSelf() during
draw() to pump animation frames. We shouldn't break this.

Bug: 26533725
Change-Id: Ibe2871f2622faf836637225fc1e3e6f0ca6def47
2016-01-13 21:49:10 +00:00
Chet Haase
f73363cf51 Merge "Make Animation.cancel() actually work" 2016-01-13 19:30:29 +00:00
Clara Bayarri
75e097965c Request Keyboard Shortcuts for SysUI Dialog via Window
Keyboard shortcuts are requested via WindowManager, and
the request pipes through to the view root and the window
callback.

Bug: 22405482
Change-Id: Ic0071e91c7b554be3ac9df71e9539ee8a60e822e
2016-01-13 16:56:56 +00:00
Chet Haase
f83464ed0a Make Animation.cancel() actually work
Cancel() has apparently never worked. Calling cancel() results
in the startTime being set to Long.MIN_VALUE. In theory, this means that
on the next animation frame (getTransformation()), the elapsed time
(currentTime - startTime) should result in a large positive number, which
is way more than needed to prove that the elapsed fraction is >1 and
therefore that the animation has ended. But in practice, anything subtracting
MIN_VALUE will result in a large negative number due to Long wraparound, so the
end check fails and the animation continues. Forever.

Moreover, event fixing the cancel issue results in a repeating animation
continuing to repeat, because the logic was never there to determine whether
a repeating animation was canceled.

This fix addresses both issues, but in a minimal way. The risk in fixing this
for real is changing the behavior of cancel in a way that existing apps would not
expect. For example, it's weird that cancel causes one more frame to run. And even weirder
that it does so with a negative elapsed duration (resulting in an animation fraction of 0).
But I wouldn't want to change that behavior for fear that I'd break apps who rely on
that weird behavior.

Instead, there's a simple check for for the "expired" check and the "repeat?" check that
sees whether the startTime has the magic value of MIN_VALUE, which should only happen
when an animation has been canceled. If this is the case, it ensures that the animation ends.
For real.

Issue #24984018 canceled animation runs forever

Change-Id: Ia137eb04bd7df3976a4d9cef86fd39a78dc56f39
2016-01-13 07:37:29 -08:00
Fyodor Kupolov
e2239c9346 Explicitly pass userId to getWindowToken
UiAutomationConnection.clearWindowContentFrameStats method currently clears
calling identity before calling mAccessibilityManager.getWindowToken. This
doesn't work properly when a call is made by a secondary user, because it
wouldn't pass a check in getWindowToken. This is now fixed by explicitly
passing ID of the calling user.

Bug: 26498396
Change-Id: I8f0cdde33e18f04adb1833c6c0d0c329de921018
2016-01-12 16:46:13 -08:00
Filip Gruszczynski
8c1ee9d8f5 Use full display size for calculating volume dialog size.
Bug: 26485500
Change-Id: I25ef29a3d611617b4dc59a315b072fafb3f3f825
2016-01-12 13:22:38 -08:00
Alan Viverette
ea2e422c23 Merge "Avoid drawable invalidation during draw()" into mnc-dr1.5-dev am: cf6885b7b7
am: c783ebc13a

* commit 'c783ebc13a350f3f83dbe0713af9581e39b355ec':
  Avoid drawable invalidation during draw()
2016-01-12 20:43:33 +00:00
Adrian Roos
292494a58b Merge "Apply transformations while offsetting focused rects" 2016-01-12 20:21:25 +00:00
Alan Viverette
e5e59c6da4 Avoid drawable invalidation during draw()
Prevents infinite invalidation loop when reusing a drawable asset within
a single draw() call. Also reduces unnecessary extra invalidations due to
drawable setters (ex. setBounds()) being called during draw().

Bug: 26329675
Change-Id: I31b3c99e8efd4193415cc562a84c8939a2f56c2d
(cherry picked from commit 8cda8e9159)
2016-01-12 15:07:47 +00:00
Adrian Roos
83e725da7a Apply transformations while offsetting focused rects
Change-Id: Id6ebf8d50bd74f52fb76cf12bf14ccc0dcf7e34b
2016-01-12 12:25:36 +01:00
Yohei Yukawa
f55ed12fd1 Merge "Enrich JavaDoc for IC#deleteSurroundingText()." 2016-01-12 00:08:39 +00:00
Jorim Jaggi
737af724eb Snap docked stack after screen rotation
- Move DividerSnapAlgorithm to com.android.internal, also move
some utility stuff into DividerUtils which is used from both
SystemUI and window manager
- When the screen rotation changes, rotate the stacks like before
but then also snap the docked stack to a valid snap position.

Change-Id: I9e1aa13f42f398a25c9016e6f20395ee212e405b
2016-01-11 23:05:56 +00:00
Winson Chung
3dc52ed179 Revert "Snap docked stack after screen rotation"
This reverts commit e65d6bb207.

Change-Id: I245aa9be3ea98ff742e02b02f6f1d344bc2e8182
2016-01-11 17:53:17 +00:00
Jorim Jaggi
e65d6bb207 Snap docked stack after screen rotation
- Move DividerSnapAlgorithm to com.android.internal, also move
some utility stuff into DividerUtils which is used from both
SystemUI and window manager
- When the screen rotation changes, rotate the stacks like before
but then also snap the docked stack to a valid snap position.

Change-Id: Ifb0c65dfbdfca2343a76b12de982c0701fe0c3ab
2016-01-11 16:58:54 +00:00
Yohei Yukawa
2afe2aa15f Add a new API IMM#dispatchKeyEventFromInputMethod().
This is a part of effort to reduce the number of dependencies on @hide
method in BaseInputConnection.

Currently BaseInputConnection#sendKeyEvent() cannot be implemented
without relying on @hide internal fields in InputMethodManager.

This is not ideal because app developers cannot implement their own
InputConnection without relying on BaseInputConnection.  If this
functionality needs to be exposed to app developers anyway, then it
should be a public API.

Bug: 24688781
Change-Id: Ib5ea8131de5ba792b10e1a4e51b4d163cf3649e3
2016-01-07 18:09:44 -08:00
Filip Gruszczynski
411c06fbf9 Only allow activities to move to full screen stack.
We allowed activities to move to any stack, but that's too much
freedom. Instead we only allow them to move from freeform stack to a
fullscreen stack.

Change-Id: I04de9bbf18cf4431d7bd34d6c727de82802661ef
2016-01-07 16:58:13 -08:00
Yohei Yukawa
159dd47db3 BaseInputConnection shouldn't rely on @hide APIs.
This is a part of effort to reduce the number of dependencies on @hide
method in BaseInputConnection.

In a nutshell, IMM#notifyUserAction() and IMM#setFullscreenMode() are
something that IME developers should not care about, hence ideally
BaseInputConnection should not rely on them.

  IMM#setFullscreenMode():
    This @hide method is just for updating an internal state flag about
    whether the current IME is in full screen mode or not.

  IMM#notifyUserAction():
    This @hide methods is just for sending a signal to IMMS so that IME
    rotation list (for globe button) can be updated based on the user's
    action.

Depending on those @hide methods in BaseInputConnection is problematic
because:

  A. We cannot implement InputConnection without relying on
     BaseInputConnection, which forces developers to use Editable to
     maintain internal text representations.
  B. If BaseInputConnection#commitText is overridden,
     those @hide method calls can be missed.
  C. Currently some method calls of BaseInputConnection() even from
     application itself can trigger those @hide method calls.  Ideally
     those internal events can be dispatched only when those methods are
     called from the input method rather than the application itself.

With this CL, those @hide API calls will be moved from
BaseInputConnection to ControlledInputConnectionWrapper so that
developers can forget about them.

Note that BaseInputConnection#sendKeyEvent() still relies on @hide
internal details of IMM.  It should be addressed in a subsequent CL.

Bug: 24688781
Change-Id: I571d6cc9c6e461d8994aa7496e7e18be13766411
2016-01-07 16:52:33 -08:00
Sriram Viswanathan
9ebbe6afe7 Changes to support navigation bar system UI in car mode.
The change has all the platform changes required to support
modifications in the navbar dimensions and custom icons in car mode.
The UX is not frozen yet, but have placeholder resources provided
by android auto UX engineers.
The change assumes that the car mode configuration is known to the
WindowManagerService and uses its current ui mode to request the
latest from the policy (PhoneWindowManager.java). The change is
modeled on the way rotation is handled, where the Policy knows the
different view attributes for uiMode and just returns back the
window sizes based on the current uiMode requested. The policy does
know the current uiMode, but the order of when that changes is not
deterministic [from logs it does happen before any request to update
UI occurs, but guess that could change].

Bug: 25996809
Change-Id: Ia46cbe5096382d26c9eb8ec74cf59a059b767edb
2016-01-07 12:47:23 -08:00
Prashant Malani
9d7272a669 Merge "Re-hide AXIS_SCROLL constant." 2016-01-07 20:42:34 +00:00
Prashant Malani
8171658b9f Re-hide AXIS_SCROLL constant.
Bug: 22836852
Bug: 18707397
Change-Id: I9cf7111cf5e3b73efca2ec8c98bf07941d1cec4e
2016-01-07 20:41:16 +00:00
Filip Gruszczynski
60db7c317d Merge "Use activity dimensions instead of display to calculate dialog size." 2016-01-07 17:08:56 +00:00
Alan Viverette
2ba4dfc7de Merge "Avoid drawable invalidation during draw()" 2016-01-07 15:54:36 +00:00
Yohei Yukawa
5f137933d1 Enrich JavaDoc for IC#deleteSurroundingText().
As a preparation work for Bug 6526420, where we are going to
introduce a new variant of IC#deleteSurroundingText(), this CL attempts
to clarify about the expected behavior of IC#deleteSurroundingText().

With this CL, the expected behavior when the number of existing
characters is smaller than the number of characters to be deleted is
now documented by simply describing the current behavior of
BaseInputConnection, that is, IC#deleteSurroundingText() will delete
characters until it deletes requested number of characters in code units
or reaches to an end.

This is purely documentation work.  No behavior change is intended.

Bug: 6526420
Change-Id: I7280dec07e1c043bd26b3b12fd866b9d8b6186cc
2016-01-07 08:09:34 +00:00
Filip Gruszczynski
34dab0b3d9 Use activity dimensions instead of display to calculate dialog size.
This adjusts the code for measuring and laying out dialog windows, which
used display dimensions as a basis for calculating the dialog
dimensions. Because of this dialogs would be too large in multi window
mode, where the parent bounds are far smaller than full display. This
switches to using dimensions for configuration received from activity
manager.

Mind, this is still not working as needed, because the resources return
minimal size of the dialog as if it was displayed on a full display,
rather than within activity bounds.

The CL also introduces better logging tags in ViewRootImpl and
DecorView. These normal approach works reasonably well when there is a
single activity on the display. However, when multiple windows are
displayed, it becomes impossible to determine which view root/decor view
logged what. This adds a suffix, that allows to identify the owner.

Bug: 26251921

Change-Id: I515a1ff9a81ee5ad086773196db71915e88a25eb
2016-01-06 17:35:54 -08:00