Commit Graph

6924 Commits

Author SHA1 Message Date
Yohei Yukawa
5176b5451a Merge "Rely on IMM#focusOut() to close input session." into mnc-dev 2015-05-28 23:52:50 +00:00
Alan Viverette
60bf94e3be Merge "Move ApplicationInfo hardware acceleration to public flags" into mnc-dev 2015-05-27 21:30:07 +00:00
Alan Viverette
d70b9e7aea Move ApplicationInfo hardware acceleration to public flags
Bug: 21342038
Change-Id: I5af826f3f2921eef24725c909304243c67f3da78
2015-05-27 14:29:20 -07:00
Alan Viverette
d0699fa569 Merge "Avoid strict mode violation during saveAttributeData" into mnc-dev 2015-05-27 18:00:18 +00:00
Alan Viverette
2232adddc5 Offset accessibility focus rect for view root's scrollY
Previously we were only partially transforming the focus rect into
window coordinates, so it was offset when the window was panned (for
example, when the IME was showing).

Bug: 20113389
Change-Id: I41f5ed20cb1404232b7042d37ca2fc725f9ee476
2015-05-26 15:24:18 -07:00
Yohei Yukawa
41bb4953da Rely on IMM#focusOut() to close input session.
Historically we have been doing nothing in IMM#focusOut().
Problem of ignoring IMM#focusOut() may not be obvious as
long as IMM#focusIn() is called immediately after
IMM#focusOut().  In some particular situations, however,
IMM can fall into an inconsistent state where the software
keyboard continues to be shown even when there is no text
input field.

As reported in b.android.com/171190 or Bug 20820914, we
can easily reproduce that inconsistent state by removing
a focused EditText from the parent view while the IME still
keeps an active connection to the EditText.

This CL tries to address such a situation by staring using
IMM#focusOut() as another trigger to check IME focus.

Note that this CL has no effect if IMM#focusOut was called
after the current window losed the focus. It is supposed to
be taken care of in subsequent CLs for Bug 20612313.

This CL depends on Id6afc8fc64512225578c62557b96c7dc2e969adf.

Bug: 20612313
Change-Id: Ib1b037594ebbb4ad4cf2d59e21c7a8ca9d8dc930
2015-05-26 11:42:43 -07:00
Alan Viverette
75a857cec5 Merge "Handle error states when refreshing accessibility node" into mnc-dev 2015-05-26 17:29:39 +00:00
Selim Cinek
d6623618b2 Fixed logspam and handling subwindows with the input consumer
Bug: 21402648
Change-Id: I4c1c73487dfd19ba452ff2077d8541547f149c3b
2015-05-23 01:57:41 +00:00
Dianne Hackborn
4bb6b751fb Revert "resolved conflicts for merge of 47249f2a to mnc-dev"
This reverts commit c7becb7ee7, reversing
changes made to 8562b08f04.
2015-05-22 16:34:44 -07:00
Adam Powell
eb2b0af22c Restore app expectations around drawable visibility change timing
When we update drawable visibility has changed to be part of
View.onVisibilityChanged instead of an overload of
setVisibility. While this covers more cases that we were previously
missing, it also means that we now set drawable visibility from the
View constructor via the call chain view.setFlags to
view.onVisibilityChanged to drawable.setVisibility, resulting in us
passing a 'this' pointer all over before the object is fully
initialized. (i.e. a Bad Thing.)

In general we've gotten away with playing fast and loose with this
sort of thing as a part of view inflation - calling various non-final
setters that may invoke callbacks as needed rather than initializing
view fields directly. Unfortunately it also means that we can cause a
lot of hard to trace bugs and in the long run we should try to clean
up as much of it as we can.

In this case, some apps were expecting inflation to have finished
completely before any drawable visibility changed. If a view's
visibility changes but it's not attached to a window, does it make a
callback?

The fix: no. We won't dispatch onVisibilityChanged to detached views,
but we will dispatch it when a view becomes attached.

Also fix a bug where we could end up telling a view its visibility
changed to (INVISIBLE | GONE), which just doesn't make any sense.

Bug 20103422

Change-Id: Ifba54c36114e85cf64869afcca766c30d601a16c
2015-05-22 11:21:17 -07:00
Chris Craik
33416a9363 Merge "Disable density scaling for HW canvas" into mnc-dev 2015-05-22 17:57:08 +00:00
Chris Craik
9c08ee0f6c Disable density scaling for HW canvas
bug:20692121

Change-Id: Ief4514ba55857e183fa281f28e5aceac08d51990
2015-05-22 10:49:48 -07:00
Filip Gruszczynski
91e5b0f598 Merge "resolved conflicts for merge of 47249f2a to mnc-dev" into mnc-dev 2015-05-22 00:02:48 +00:00
Yohei Yukawa
c0a9cd440d Merge "Do not clear IMM#mCurRootView in IMM#finishInputLocked()." into mnc-dev 2015-05-21 21:47:36 +00:00
Yohei Yukawa
0f3a99d837 Do not clear IMM#mCurRootView in IMM#finishInputLocked().
This is a follow up CL for I219394178e4172bc47864297f1418e677dba.

As explained in the commit message of I219394178e4172bc47864297f,
IMM#mCurRootView needs to be synchronized with the actual window
focus more precisely to fix Bug 20820914. Hence we should not
clear IMM#mCurRootView in IMM#finishInputLocked() anymore.
Ideally this CL should have been included in the previous CL.

Manually tested following scenarios.
- Repro steps in Bug 6413553.  Made sure that IMM#mCurRootView
  is cleared after switching back from the current application to
  the previous application with back key.
- Test application that calls WebView#showFindDialog(). Made sure
  that LatinIME works fine when switching text fields.  This is
  non-trivial because android.webkit.FindActionModeCallback is
  changed in the previous CL I219394178e4172bc47864297f1418e677db.
- Repro steps in Bug 21144633.  Made sure that we can enter
  recipient's name in the messaging app.

This CL depends on I219394178e4172bc47864297f1418e677dba25e5.

Bug: 20820914
Change-Id: Id6afc8fc64512225578c62557b96c7dc2e969adf
2015-05-21 21:34:07 +00:00
Clara Bayarri
e95cc176bb Update the documentation for ActionMode.Callback2#onGetContentRect
Received feedback from a team that it was not clear what the rect
had to include.

Change-Id: I03ca54ee1092e8af3a2078c42104e1ce88490cd1
2015-05-21 17:45:19 +01:00
Filip Gruszczynski
c7becb7ee7 resolved conflicts for merge of 47249f2a to mnc-dev
This is a merge of chin support.

Change-Id: I436b751b3c4aaa6b46cfcdb475e02eedfa5a5635
2015-05-20 20:15:29 -07:00
Filip Gruszczynski
47249f2a9e am cb89ac84: Merge "Support for devices with a chin." into cw-d-mr1-dev
* commit 'cb89ac84c621e047d81873428325dfd747b90a6b':
  Support for devices with a chin.
2015-05-20 22:54:14 +00:00
Selim Cinek
d3f216d921 Merge "Fixed that touches where incorrectly consumed when fullscreen" into mnc-dev 2015-05-20 22:21:38 +00:00
Selim Cinek
f83e824216 Fixed that touches where incorrectly consumed when fullscreen
The fake window that was added when View.SYSTEM_UI_FULL_SCREEN was
set consumed all touches, even those going to the SystemUI and not
just those of windows below. The input consumer is now correctly
positioned in the window order to only capture the right touches.
Clicks to the volume panel and the heads up now correctly go to the
right place instead of just unhiding the SystemUI bars.

Bug: 21089476
Change-Id: Ib53dfc0b33b70084ca607d0f044db30b6e6c91d6
2015-05-20 22:20:17 +00:00
Filip Gruszczynski
3e11bf33a6 Support for devices with a chin.
Information about the chin is now part of the config.xml instead of the
theme. It is retrieved by WindowManagerService and passed to the clients
as insets. Clients can adjust their behavior in a way that makes it
invisible to the user, that part of the surface doesn't actually exist.

Bug: 19908853

Change-Id: Iedf57bf3c848201b854f91ffeb3b59187d375c1f
2015-05-20 14:20:30 -07:00
John Reck
97bf518f7b Merge "Reduce wasted buffer allocations" into mnc-dev 2015-05-20 14:23:24 +00:00
John Reck
4430f16ced Merge "Fix whitespace in TextureView" into mnc-dev 2015-05-20 14:22:59 +00:00
John Reck
35e04a1adf Merge "Fix NPE in setSurfaceTexure" into mnc-dev 2015-05-20 14:22:41 +00:00
John Reck
5ba09488d6 Fix whitespace in TextureView
Change-Id: I22396b7205dc2b9cf0eda5bd8aa951cad8d8bd87
2015-05-20 07:21:51 -07:00
John Reck
8bc511e4eb Fix NPE in setSurfaceTexure
Bug: 20088412
Change-Id: I9b78636a7d89438c8924bb1bf2adba00e74366eb
2015-05-20 07:21:44 -07:00
Yigit Boyar
bf6d1ebc4b am 9b716793: Merge "Revert "Make VPA.setInterpolator(null) unset the interpolator."" into lmp-mr1-ub-dev
* commit '9b7167937ab5ea456c45e735d3bd749ccf49c432':
  Revert "Make VPA.setInterpolator(null) unset the interpolator."
2015-05-19 23:15:48 +00:00
John Reck
63005e6e5b Reduce wasted buffer allocations
Bug: 20170924

Don't pre-allocate buffers if there is a SurfaceView or other
View that has requested transparent regions. This doesn't fully
address the problem of allocating buffers when there's a full
screen SurfaceView but it at least gets back to KitKat levels
of only having 1 wasted buffer instead of 3 (the 1 being
a result of the fact that it will still draw one frame of emptiness
forcing a buffer dequeue).

Change-Id: Ied9553186bc7b111d180b63f87b92bd317cb4b97
2015-05-19 15:00:13 -07:00
Alan Viverette
25acc7e78c Handle error states when refreshing accessibility node
Bug: 21281869
Change-Id: Idce90f5e23b102b9c66f288906eedb5b6a5b098d
2015-05-19 11:32:08 -07:00
Dianne Hackborn
2d9c6015b3 Merge "Fix issue #20679383: Add text style to assist.ViewNode..." into mnc-dev 2015-05-19 18:26:28 +00:00
Dianne Hackborn
02beb41c97 Fix issue #20679383: Add text style to assist.ViewNode...
...from text nodes in WebView

Add a new explicit API for setting the text style information associated
with a view structure.

Also, how about some documentation!

Change-Id: Ia948b2d66382b973d0d00a67172a281ad55ce592
2015-05-19 11:18:16 -07:00
Yohei Yukawa
c2cc6fff1b Merge "Keep IMM#mCurRootView synchronized with the actual window focus." into mnc-dev 2015-05-19 16:52:26 +00:00
Abodunrinwa Toki
1f21d2a8b1 Merge "Hide floating toolbar when user interacts with screen." into mnc-dev 2015-05-19 14:06:46 +00:00
Abodunrinwa Toki
fd3a3a1163 Hide floating toolbar when user interacts with screen.
- Adds an ActionMode.snooze(int) API.
- Clients call this to hide the floating toolbar on DOWN touch event.
- This is called repeatedly as a snooze timeout will re-show the
  toolbar.
- ActionMode.snooze(0) will "wake" the toolbar, reshowing it.
- Clients call this to re-show the toolbar on UP touch event.
- This CL also adds code to hide the toolbar when the "content rect"
  is changing.

Bug: 20148125
Change-Id: If5a9a15f72c73cad8ca01a4328a58570b3e29f66
2015-05-19 14:25:39 +01:00
Adam Powell
f9a0d44d2e Merge "Migrate uses of config_windowIsRound to Configuration.isScreenRound" into mnc-dev 2015-05-19 01:10:55 +00:00
Vladislav Kaznacheev
10e23977bd am d2368d07: Merge "Make VPA.setInterpolator(null) unset the interpolator." into lmp-mr1-ub-dev
* commit 'd2368d07a71fa77edc07be4ada89f70065bc940f':
  Make VPA.setInterpolator(null) unset the interpolator.
2015-05-18 23:54:08 +00:00
Yigit Boyar
21cdbd298d Revert "Make VPA.setInterpolator(null) unset the interpolator."
This reverts commit 58ae164100.

Change-Id: I6d9942b41694f6a5e6c211df839aa385eea0c496
2015-05-18 23:38:41 +00:00
Adam Powell
01f280d376 Migrate uses of config_windowIsRound to Configuration.isScreenRound
Move existing code that previously relied on config_windowIsRound to
use the new Configuration.isScreenRound() method. Also move the system
property override for emulators over to the initial setup of a Display
so that the configuration property is consistent with existing
expectations.

Remove config_windowIsRound from symbols.xml. The symbol now only
exists as a default value redirect for overlays already configured to
supply this value.

Change-Id: I24e6564030a6051c3ac7262868983b43e13eee65
2015-05-18 16:07:42 -07:00
Alan Viverette
a6f354b78e Avoid strict mode violation during saveAttributeData
Adds a new framework-private method for obtaining a string without
throwing a strict mode violation on coercion.

Bug: 21109507
Change-Id: I5a7f091fc92d5abfde9e1c31f30d59ed02c7569b
2015-05-18 15:26:57 -07:00
Adam Powell
49e7ff9647 Add Configuration data for round displays
Add round values to the screenLayout field for Configuration
and a convenience method to check roundness.

Plumb this through the DisplayManager, making roundness the property
of a DisplayAdapter. The built-in main display will read the
configuration resource config_mainBuiltInDisplayIsRound to determine
its roundness. Device-specific resource overlays should set this to
true for devices with round primary displays.

By default, this config resource inherits from the existing
config_windowIsRound value currently used by some Android Wear
device configurations.

This change awaits another for aapt/native resources code to make the
resource filtering system aware of this property.

Change-Id: I1daced7ca6d6e172789e7c32bebfd43753bfa2ae
2015-05-18 14:13:33 -07:00
Alan Viverette
2a576d9ec1 Merge "Invalidate old accessibility bounds on CONTENT_CHANGE" into mnc-dev 2015-05-15 20:11:20 +00:00
Vladislav Kaznacheev
58ae164100 Make VPA.setInterpolator(null) unset the interpolator.
Bug:21199392
Change-Id: Iae4b82254ddf6b60d442258e79ff0ea4d54c0a4d
2015-05-15 13:01:32 -07:00
Alan Viverette
2cc4a4755f Merge "Adjust light source for window position" into mnc-dev 2015-05-15 18:31:54 +00:00
Alan Viverette
a7ea65e239 Invalidate old accessibility bounds on CONTENT_CHANGE
Bug: 20950124
Change-Id: Id19924358b538f9b7754de3a0c019433817dc1fc
2015-05-15 11:30:21 -07:00
Yohei Yukawa
5f05965f54 Keep IMM#mCurRootView synchronized with the actual window focus.
Currently IMM#mCurRootView is always cleared every time when
IMM#finishInputLocked() is called.  We have been doing this since
Iad09cf5dbb7f6f156fd39ed243431432e00f8945 so as not to hold the
strong reference to a DecorView so long time (Bug 6413553).

Strictly speaking, the attached window may continue holding
input focus even after IMM#finishInputLocked() is called.
In this state IMM#focusIn() might have unexpectedly rejected
focus-in event but presumably this might not be obvious, or might
not occur at all because in some situations IMM#finishInputLocked()
has never been called even when the attached view loses input
focus.

In order to fix Issue 20820914, however, we need to call
IMM#finishInputLocked() exactly when the attached view loses
input focus.  To make it easier to diagnose any unexpected
regressions, this CL only changes the handling of
IMM#mCurRootView, while the next CL Id6afc8fc64512225578c62557b96
plumbs IMM#focusOut() to IMM#finishInputLocked().

Manually tested following scenarios.
- Repro steps in Bug 6413553.  Made sure that IMM#mCurRootView
  is cleared after switching back from the current application to
  the previous application with back key.
- Test application that calls WebView#showFindDialog(). Made sure
  that LatinIME works fine when switching text fields.  This is
  non-trivial because android.webkit.FindActionModeCallback is
  changed in this CL.
- Repro steps in Bug 21144633.  Made sure that we can enter
  recipient's name in the messaging app.

Bug: 20820914
Change-Id: I219394178e4172bc47864297f1418e677dba25e5
2015-05-15 10:22:23 -07:00
George Mount
b1f1293355 Merge "Remove hidden/deleted APIs." into mnc-dev 2015-05-15 14:08:19 +00:00
Alan Viverette
50210d9129 Adjust light source for window position
Bug: 16523629
Change-Id: I2f3fed1edcac0a3cfd5034aded45e08ececfebaf
2015-05-14 18:05:36 -07:00
John Reck
0e4a2b5ff0 Merge "Check for setting to already set" into mnc-dev 2015-05-14 23:27:49 +00:00
John Reck
6d8371e73f Check for setting to already set
Bug: 20105644
Change-Id: Ia79d2ae5c725c139d2b7c423a899be625cb8f14f
2015-05-14 16:06:12 -07:00
George Mount
5aec62eae1 Remove hidden/deleted APIs.
Change-Id: Iabeaac2c9b485f1f25fb2fcc3193610b0d6478c4
2015-05-14 14:12:16 -07:00