Commit Graph

164 Commits

Author SHA1 Message Date
Yohei Yukawa
32acf753e8 am 83c804be: Merge "Prevent duplicated registration of OnComputeInternalInsetsListener" automerge: efd9abb
* commit '83c804be9c1f33ff4bafbfd60218751a00c7d2b9':
  Prevent duplicated registration of OnComputeInternalInsetsListener
2015-02-14 15:17:17 +00:00
Seonggoo Kang
72745fffe8 Prevent duplicated registration of OnComputeInternalInsetsListener
OnComputeInternalInsetsListener is added when initViews is called,
and initViews is called by onCreate and onConfigurationChanged.
But it is removed only by onDestroy.
Therefore listeners are accumulated and it results performance issue.
So before adding, remove mInsetListener that was previously added.

Change-Id: I494d3f1875613d73d3f9b8e2af286b5800f03196
2014-12-24 14:05:17 +09:00
Alan Viverette
9752428dc1 Use CURRENT_OR_SELF when checking SPEAK_PASSWORD setting
Using CURRENT isn't always safe.

BUG: 18557273
Change-Id: I12e197ab25b8ffdc04c5e74836945177870698a2
2014-12-02 16:24:24 -08:00
Alan Viverette
b6e0cb97b7 Load SPEAK_PASSWORD from currently active user rather than self
Also fixes a typo in UserHandle's docs.

BUG: 18295054
Change-Id: I1f5384f84062b9ea7dcbebe1e5f64af331028d41
2014-11-25 16:08:03 -08:00
Yohei Yukawa
a277db28e9 Remove CursorAnchorInfoRequest and related stuff
This CL removes CursorAnchorInfoRequest and related stuff
in favor of InputConnection.requestUpdateCursorAnchorInfo,
which is more easy to understand. This CL also deprecates
InputMethodManager#updateCursor and related stuff.

Rationale:
1. The spec of #updateCursor says that it provides the cursor
   position in local coordinates, while the input method
   requires it in the screen coordinates.
2. #updateCursor has never been enabled in AOSP, because
   InputMethodManager#isWatchingCursor always returned false.
3. There has been no way to let
   InputMethodManager#isWatchingCursor return true.
4. In L, InputMethodManager#updateCursorAnchorInfo is
   introduced to address all the issues above.

Given that we no longer need to support #updateCursor,
CursorAnchorInfoRequest is overkill when we need to convey
just a couple of parameters.

BUG: 17185263
BUG: 17182367

Change-Id: I4a577bfd02b37b9e56c80b8b41bb25afa95dd8ef
2014-08-22 00:55:06 -07:00
Alan Viverette
e07b595519 Deprecate InputMethodService.enableHardwareAcceleration()
BUG: 16951553
Change-Id: I126ea823eb2eeabb29d30999dec9c9411b33b315
2014-08-14 20:06:02 +00:00
Yohei Yukawa
0023d0e0c4 Polish new IME API for L part 2: CursorAnchorInfo
This CL addresses feedbacks from internal customers for new
input method APIs that are mainly used for physical keyboard
support in L.

For performance reasons, #onUpdateCursorAnchorInfo is not called
back by default and each input method has to enable this
event notification explicitly whenever fine-grained character
locations are needed.

In L-preview, InputMethodSession#setCursorAnchorMonitorMode was
introduced for this purpose.  However, we got several feedbacks
to be addressed.
- The effect of #setCursorAnchorMonitorMode is not preserved
  during focus change.  IMEs need to call
  #setCursorAnchorMonitorMode every time when #onStartInput is
  called.  This is tricky and hard to understand.
- As #onUpdateCursorAnchorInfo is a new API, not all
  applications/text editors have supported it. Therefore IMEs
  can't always rely on it. However, there is no way to query
  if the attached target is supporting this new API or not.
  It would helpful for IME authors if we can provide a
  reliable way to query if the attached input target is
  supporting the new API or not.

In order to address these issues, the triggering method has
moved from InputMethodSession to InputConnection in this CL,
as an analogy of existing InputConnection#getExtractedText API,
which has provided similar functionality including optional
reactive event callbacks from the application to the IME.

BUG: 15812658
BUG: 16118603
Change-Id: I3c6b69bd9d79b199afe68d838f25effa6048e5cc
2014-07-11 21:13:17 +09:00
Dianne Hackborn
20d9474904 More work on voice interaction visuals.
There is now a special theme for voice interaction activities
to use, so they can be a panel that is better intergrated with
the rest of the voice interaction experience.  This is still
not completely working, I have some hacks in the demo app to
get it right; I'll fix that in a future change.

Also improve VoiceInteractor to be retained across activity
instances, for things like rotation.

And bump up the number of concurrent broadcasts that are allowed
on non-svelte devices, since they can handle more and this makes
the boot experience better when dispatching BOOT_COMPLETED.

Change-Id: Ie86b5fd09b928da20d645ec2200577dee3e6889d
2014-05-30 10:06:16 -07:00
Dianne Hackborn
e30e02f5d9 Add system layer for voice interaction services.
New window layer that voice interaction service windows
go in to.  Includes a new voice-specific content rectangle
that voice activities are placed in to.

Add specific animations for this layer, sliding down from
the top (though this can be customized by the voice interaction
service).

Also add the concept of activities running for voice interaction
services for purposes of adjusting the animation used for them,
again sliding from the top, but not (yet?) customizable by the
voice interaction service.

Change-Id: Ic9e0e8c843c2e2972d6abb4087dce0019326155d
2014-05-28 17:16:51 -07:00
Yohei Yukawa
c2ddd60236 Introduce new API for floating window support
This CL introduces a new API IMM#updateCursorAnchorInfo for
floating window support.

BUG: 14579622
Change-Id: I61dec2f8fa671ba891da1d4af08975750e3acb04
2014-05-09 19:17:15 +09:00
Alan Viverette
5effd7e89f Partial revert "Load device default theme mapping from resources"
This reverts commit e4ab72d54cf41d16819b72e94d9b0d0d51289647.

Change-Id: Id17170312c75993fc1f7859d52c7e050b2aeaf80
2014-05-05 12:26:03 -07:00
Dianne Hackborn
c03c9167c2 Further work on voice interaction services.
This makes VoiceInteractionSession a more first-class
concept.  Now the flow is that a VoiceInteractionService
calls startSession() when it wants to begin a session.
This will result in a new VoiceInteractionSession via the
VoiceInteractionSessionService containing it, and the
session at that point an decide what to do.  It can now
show UI, and it is what has access to the startVoiceActivity
API.

Change-Id: Ie2b85b3020ef1206d3f44b335b128d064e8f9935
2014-05-05 11:18:08 -07:00
Alan Viverette
0810b63739 Load device default theme mapping from resources
Also adds a few missing styles and reorganizes some XML files. Makes
stackViewStyle public since it's defined in DeviceDefault.

Change-Id: I8f6a0f93410948b38619594474d60dc40ece5917
2014-05-01 14:42:56 -07:00
Yohei Yukawa
c644ff6d4f Revise Javadoc for CURSOR_ANCHOR_MONITOR_MODE_CURSOR_RECT
This is a follow-up CL for I3acf2317ae1d763d11 to improve the
Javadoc for CURSOR_ANCHOR_MONITOR_MODE_CURSOR_RECT

BUG: 14323360
Change-Id: Ie8948eda3ce57da282bd82e8e9a44997f6d53245
2014-04-29 05:01:08 +09:00
Yohei Yukawa
4de04795f9 Return the cursor position in screen coordinates
From its beginning, InputMethodService#onUpdateCursor has
provided the cursor position in local coordinates in the attached
view. However, the local coordinates is not useful for IMEs
to render a floating UI near the cursor because the IME is not
able to know the origin of the attached view.

With this CL, CURSOR_ANCHOR_MONITOR_MODE_CURSOR_RECT also means
that the IME will receive the cursor position in screen
coordinates. Because this is a new constant in the next release,
conditionally changing the coordinates never causes
compatibility issues as long as its behavior is well documented.

BUG: 14323360
Change-Id: I3acf2317ae1d763d11dae5ef73c2a1348b377c71
2014-04-29 03:53:34 +09:00
Yohei Yukawa
b7b7907fb5 Allow IMEs to start/stop receiving onUpdateCursor callback
This CL introduces an API which allows IMEs to start/stop
receiving onUpdateCursor callback upon their request.

BUG: 13388665
Change-Id: I987326872def181dda5d9d701b762f088e0d9c39
2014-04-04 04:34:44 +09:00
Alan Viverette
6259933ec9 Switch framework Holo references to Quantum.Light
Change-Id: Ib545a143f1959b6104adbc9d594dd626851d90b3
2014-04-01 14:57:39 -07:00
John Spurlock
6090995951 Remove unused imports from frameworks/base.
Change-Id: Ia1f99bd2c1105b0b0f70aa614f1f4a67b2840906
2013-11-20 11:31:47 -05:00
Jeff Brown
c762ac24de am 4c62da69: am 145cac85: am 4bf6eb17: Merge "Memory leak in IInputMethodSessionWrapper executeMessage"
* commit '4c62da692ce5159a187644ca76f7de2063bbf057':
  Memory leak in IInputMethodSessionWrapper executeMessage
2013-10-29 18:32:32 -07:00
Jeff Brown
4c62da692c am 145cac85: am 4bf6eb17: Merge "Memory leak in IInputMethodSessionWrapper executeMessage"
* commit '145cac85f8ff077447d282c147e4c8865833b76a':
  Memory leak in IInputMethodSessionWrapper executeMessage
2013-10-29 18:31:00 -07:00
Satoshi Kataoka
658c7b896a Introduce an API to get the recommended height of the InputMethodWindow
Bug: 11035379
Bug: 5137498

Change-Id: I0e920ee79c526c3aea6872b063cf294e2ab081c8
2013-10-15 14:35:18 +09:00
John Spurlock
ad8eef9db0 am 4faa694e: am d3758420: am 65e91126: Merge "Allow IMEs to extend below nav bar, remove SystemUI veto." into klp-dev
* commit '4faa694ed28db7961a2a37269e5706c2a49d87c3':
  Allow IMEs to extend below nav bar, remove SystemUI veto.
2013-10-09 15:13:57 -07:00
John Spurlock
c68d577f29 Allow IMEs to extend below nav bar, remove SystemUI veto.
Layout IMEs below the nav bar, offset by bottom padding and
associated guard rectangle with a black background to ensure
they do not appear as islands during transitions.

This makes it safe to remove the SystemUI forced opaque transition
when showing an IME, making the overall transition less expensive,
quicker and smoother overall.

Bug:11058746
Change-Id: I460912ee7c117480c57b947ed31eca330819f32c
2013-10-09 16:23:15 -04:00
Jean Chalard
f6fac14e2e am 4895ec3d: am 940a2ad6: Merge "Don\'t send the same values to onUpdateSelection repeatedly" into klp-dev
* commit '4895ec3dcc214891b9788cde3c9720ee9656596c':
  Don't send the same values to onUpdateSelection repeatedly
2013-09-12 21:57:24 -07:00
Jean Chalard
c743cb9477 Don't send the same values to onUpdateSelection repeatedly
If the IME is repeatedly changing the text in its
onUpdateSelection handler, this will crash it with a
stack overflow exception. It's better than the old behavior,
which would result in a busyloop likely to make the
device completely unresponsive.

Bug: 10301239
Change-Id: I170cfb8ef20fc056d4725931890a987aefcaea8b
2013-09-12 16:52:56 +09:00
Alan Viverette
617feb99a0 Add View constructor that supplies a default style resource
Also updates the constructor of every class that extends View.

BUG: 10676369
Change-Id: Ifaf27bf82028d180afa4931c0e906df88d858ac3
2013-09-09 18:09:13 -07:00
Henrik Baard
857cdff078 Memory leak in IInputMethodSessionWrapper executeMessage
In some cases the executeMessage is called with
mInputMethodSession == null. For the messages

DO_UPDATE_SELECTION, DO_APP_PRIVATE_COMMAND

memory is leaked. This commit recycles the args freeing
the allocated memory.
2013-08-11 10:23:59 +02:00
Satoshi Kataoka
240b6bf975 Fix possible NPE in IInputMethodWrapper
Bug: 9093124

Change-Id: If62138a85e46f217ad2d3eda140715961006dcdc
2013-07-01 19:19:31 +09:00
Satoshi Kataoka
c56191f829 Resolve inconsistent conditions in InputMethodService
This change is addressing this issue by
1. call doFinishInput in onDestroy
2. fix the inconsistent condition of "mInputStarted"

Bug: 9197136
Change-Id: Iefe6b284e148e31bd212b255c41cb2cf548723d7
2013-05-30 20:14:22 +09:00
Satoshi Kataoka
f09993ca1d am 1a546dca: Merge "Fixed the problem ime invisible status despite being the icon that appears in the statusbar."
* commit '1a546dca77b47b86c87ddf4de7a76662ef8bd48b':
  Fixed the problem ime invisible status despite being the icon that appears in the statusbar.
2013-04-18 15:28:18 -07:00
Jeff Brown
c28867a1d6 Use input transport for communications between app and IME.
The input method manager service now supplies an input channel for
communication while creating an IME session on behalf of the
application.

This change significanly reduces the overhead of IME event dispatch
by using a standard input channel to send input events rather than
using binder.  This results in fewer thread context switches
and fewer object allocations.

What's more, the IME may perform additional batching of the motion
events that it receives which may help it catch up if it is
getting behind while processing them.

Bug: 7984576
Bug: 8473020
Change-Id: Ibe26311edd0060cdcae80194f1753482e635786f
2013-03-26 15:42:39 -07:00
Michael Wright
52a5352626 Separate sessionCreated and finishedEvents callbacks
Bug: 8276952
Change-Id: If7051086c060fcce5d1e958ebbddec0784c851da
2013-03-21 17:47:40 -07:00
Craig Mautner
f403b1fe50 Clear mWindowAdded when window was not added. DO NOT MERGE
If ViewRootImpl throws BadTokenException when adding a window, clear
the indication that a window has been added. That way when the
window is destroyed it doesn't try to clean it up.

Fixes bug 8409506.

Change-Id: I270740762f21ed4ec7f235344a3adaeaa033c483
2013-03-19 16:58:00 -07:00
Craig Mautner
e4bbb1cc45 Catch BadTokenException and continue.
BadTokenException is a normal consequence of swapping IMEs while there
is a DO_SHOW_SOFT_INPUT message in the IIMethodWrapper queue. This
race condition cannot be avoided without an unacceptable lock down of
InputMethodManagerService.

Fixes bug 8387663.
Fixes bug 8263462.

Change-Id: I2c21573cf972145ab08e66604cdb9344139a3f31
2013-03-15 11:38:44 -07:00
Craig Mautner
ca0ac718cb Remove WindowManager messages from remote queue.
When a new IME is attached it is not enough to remove the
WindowManager messages from the local queue, but the ones in
the previous IME queue must also be removed.

Fixes bug 8263462.

Change-Id: I9e916c6052a83dc7691bcba0b6ab8328b9b7cc36
2013-03-14 09:43:02 -07:00
Craig Mautner
6efb4c746f Put debug back in for b/b8263462.
Previous CL did not fix.

Change-Id: Ief9e8f519480fa41248d53e5b0187c9657f00b79
2013-03-13 11:12:26 -07:00
jungheang.lee
217fd2903d Fixed the problem ime invisible status despite being the icon that appears in the statusbar.
[Reproduce the Path]
Precondition : Set "Auto-rotate screen" option to ENABLE

Calendar App lunch -> Rotate device to "Landscape" -> Touch "+" button(Add new Schedule)
-> Check the ime icons of the Status bar

Ime invisible status despite being the icon that appears in the statusbar.
Displays an icon in the status bar when the ime was actually visible state is modified to check.

Change-Id: If103ab909c5bfa6391eb51a696fb8b8f0b18808c
2013-02-28 16:08:26 +09:00
Mita Yun
d44280e288 resolved conflicts for merge of ebcbfb3f to master
Change-Id: I0658dd4a1418fbad91d9663e5b52418a979dc683
2012-12-10 16:50:22 -08:00
Mita Yun
ed218c706d Use asynchronous messages for input method events.
Improves the throughput of IME event handling by ensuring that
input events do not get serialized behind UI traversal and
drawing messages such as when the UI is animating.

Added support for creating an asynchronous Handler as part of a
HandlerCaller.  It turns out we should be using an asynchronous
Handler not only in IME dispatch but also in accessibility and
wallpaper events where HandlerCaller is used.  So fixed those
services to also use an asynchronous Handler.

Change-Id: I0b19140c9d5ca6ee300c1a150c48312fd55ed8eb
2012-12-06 18:11:32 -08:00
Satoshi Kataoka
350d4cbec1 am ae41ba15: am 4424951f: am 1e29e49c: Merge "Reduce jankiness of the transition between a text field with FLAG_NO_FULLSCREEN and a text field with FLAG_NO_EXTRACT_UI" into jb-mr1.1-dev
* commit 'ae41ba156364f5625280c4229169899adea965d5':
  Reduce jankiness of the transition between a text field with FLAG_NO_FULLSCREEN and a text field with FLAG_NO_EXTRACT_UI
2012-11-08 15:55:59 -08:00
Satoshi Kataoka
8b117c8578 Reduce jankiness of the transition between a text field with FLAG_NO_FULLSCREEN and a text field with FLAG_NO_EXTRACT_UI
Bug: 7393485

Currently, the extract text view blinks at the transition of InputMethodService.
This change reduces this blinking by making the extract text view invisible when the extract text view is hidden.

Change-Id: I9af96058283a9a5b60707d025ad1abbbbc23c16f
2012-11-07 22:03:55 +09:00
Tadashi G. Takaoka
cb95cd6bae Fix downTime of InputMethodService.sendDownUpKeyEvents method
Bug: 7403935
Change-Id: I9074269c9a5f5b54b632da11151ad46c3494dc19
2012-10-26 17:20:59 +09:00
Jeff Sharkey
6e2bee75ce Migrate more System and Secure settings to Global.
Includes telephony, WindowManager, PackageManager, and debugging
settings.  Update API to point towards moved values.

Bug: 7231764, 7231252, 7231156
Change-Id: I5828747205708872f19f83a5bc821ed0a801cb79
2012-10-02 13:55:15 -07:00
Victoria Lease
b38070caa5 IME support for trackball and generic motion events
Trackball and generic motion events now pass through the IME in case
it would like to handle them before passing them on to the view
hierarchy.

While I was at it, I also...
...fixed the documentation on InputMethodService.onKeyUp()
...added documentation to InputMethodService.onTrackballEvent()
...added trackball and generic motion events to the "input" command
...fixed input consistency verification involving ACTION_OUTSIDE

Bug: 7050005
Change-Id: I40ab68df4a9542af6df25de6ec2ec500e4c02902
2012-09-10 14:01:42 -07:00
Jeff Brown
98365d7663 Refactor for multi-display support.
Split WindowManagerImpl into two parts, the WindowManager
interface implementation remains where it is but the global
communications with the window manager are now handled by
the WindowManagerGlobal class.  This change greatly simplifies
the challenge of having separate WindowManager instances
for each Context.

Removed WindowManagerImpl.getDefault().  This represents the
bulk of this change.  Most of the usages of this method were
either to perform global functions (now handled by WindowManagerGlobal)
or to obtain the default display (now handled by DisplayManager).

Explicitly associate each new window with a display and make
the Display object available to the View hierarchy.

Add stubs for some new display manager API features.

Start to split apart the concepts of display id and layer stack.
since they operate at different layers of abstraction.
While it's true that each logical display uniquely corresponds to a
surface flinger layer stack, it is not necessarily the case that
they must use the same ids.  Added Display.getLayerStack()
and started using it in places where it was relatively easy to do.

Change-Id: I29ed909114dec86807c4d3a5059c3fa0358bea61
2012-08-19 22:42:08 -07:00
Svetoslav Ganov
758143ecfe Window position not reported if the window is not moved.
1.If a window is shown but never moved the window window
  is never notified for its current location. Therefore,
  accessibility nodes do not contain correct bounds in
  screen coordinates.

bug:6926295

Change-Id: I7df18b095d33ecafffced75aba9e4f4693b0c393
2012-08-06 23:49:38 -07:00
Dianne Hackborn
836531b0c4 Add API to turn on HW drawing in IMEs.
Change-Id: Ib6a8bda46223ce1153f32834daf02a820d16136e
2012-08-01 19:00:38 -07:00
Kurt Partridge
b369a141ed Documentation cleanup
Change-Id: Id3d15b643e6ed29c52dc9c9eb02836eb64277dae
2012-07-19 23:41:17 -07:00
Jean Chalard
405bc51c5d Add/refine comments to reflect key event policies
Make clearer how the platform is handling key events following some
unfortunate uses by third party applications. Also highlight the
changes in Jelly Bean default keyboard.

Bug: 6566711
Change-Id: Ibcdaf54c6d629fd0733529bfe2fffc82f555f084
2012-05-29 19:41:02 +09:00
Svetoslav Ganov
b6a0b09bf5 Interaction model of KeyboarView should be same as latimIME
1. In latin IME key up types in - now the keyboad view does the same.

bug:6534935

Change-Id: I91cd40c5cd541199f3fb43e4d0bf26be511dcd09
2012-05-22 19:47:02 -07:00