History log of /frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
54de77470de4f605eef7f4b4e01718b301fe275e 12-Jan-2017 Elliot Waite <elliotwaite@google.com> Fix @links in reference docs.

Change-Id: I40cea46efd80c448640ff69753698fe8404da40b
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
45700fa135e83ed44e4b69ca60cf12960a5898d7 24-Jun-2016 Yohei Yukawa <yukawa@google.com> Use a flag to grant a temporary URI permission.

It turns out that we can let the system to call
InputMethodService#exposeContent(InputContentInfo, EditorInfo), which
added in my previous CL [1], during the IME is calling
InputConnection#commitContent() as follows.

[IME]
InputContentInfo contentInfo = new InputContentInfo(
contentUri,
new ClipDescription(description, new String[]{mimeType}),
linkUrl);
getCurrentInputConnection().commitContent(
inputContentInfo,
InputConnection.INPUT_CONTENT_GRANT_READ_URI_PERMISSION,
null);

[App]
try {
contentInfo.requestPermission();
// Load inputContentInfo.getContentUri() here.
} finally {
contentInfo.releasePermission();
}

This gives us flexibility to let InputConnection#commitContent() do all
the magic for IME developers like other APIs such as
Context#startActivity(), rather than asking them to call one more API to
grant a temporary URI permission like a scenario where
Context#grantUriPermission() is used.

[1]: I2772889ca01f2ecb2cdeed4e04a9319bdf7bc5a6
25e0813e6eb6315b1016db805fa9b791b4ae5cc2

Bug: 29450031
Change-Id: I99536cd58c9984af30b0bafb4a1dd25a26634a2d
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
25e0813e6eb6315b1016db805fa9b791b4ae5cc2 23-Jun-2016 Yohei Yukawa <yukawa@google.com> Add InputMethodService#exposeContent()

This is a follow up CL to my previous CLs [1][2] that introduced
InputConnection#commitContent(InputContentInfo, Bundle) API to enable
IMEs to send a content to the target application.

With this CL, IME developers are able to temporarily expose
InputContentInfo object to the target package without permanently
granting URI permission. Although calling IMS#exposeContent() is
allowed only for the IME that is currently selected, the client is able
to request a temporary read-only access even after the current IME is
switched to any other IME as long as the client keeps InputContentInfo
object.

Here is a sample code snippet about how to use this mechanism.

[IME]
InputContentInfo contentInfo = new InputContentInfo(
contentUri,
new ClipDescription(description, new String[]{mimeType}),
linkUrl);
exposeContent(contentInfo, getCurrentInputEditorInfo());
getCurrentInputConnection().commitContent(inputContentInfo, null);

[App]
try {
contentInfo.requestPermission();
// Load inputContentInfo.getContentUri() here.
} finally {
contentInfo.releasePermission();
}

[1]: Iaadf934a997ffcd6000a516cc3c1873db56e60ad
152944f4909c47917473293b258d266435c6ab35
[2]: Ica1ba3154795c1bf44e140dfe639b299f83cd8af
adebb52588b098a1af678d4e33a234ef1ce783b2

Bug: 29450031
Change-Id: I2772889ca01f2ecb2cdeed4e04a9319bdf7bc5a6
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
833bdcedceee60a873694a77587393abfc830eb5 16-May-2016 Yohei Yukawa <yukawa@google.com> Make IMS#clearInsetOfPreviousIme() reliable.

This is a follow-up to my previous CL [1] for Bug 15922840 so that we
can clear the following variables in a more reliable way.
- PhoneWindowManager#mLastInputMethodWindow
- PhoneWindowManager#mLastInputMethodTargetWindow

The idea behind CL [2] is that when InputMethodManagerService (IMMS) is
switching from an IME to another IME, IMMS can send a signal to
WindowManagerService (WMS) to remember the current IME's inset so that
the system can continue using it to reduce jank until the new inset is
specified by the next IME. As summarized in Bug 28781358, however, if
the next IME does not show the window after the IME switch, WMS (or
PhoneWindowManager to be precise) keeps using the previous IME's inset
unexpectedly until the new IME shows its window. All we have seen in
Bug 15922840 and Bug 26663589 fall into this category.

The idea of this CL is just adding a hidden API to InputMethodManager so
that InputMethodService#clearInsetOfPreviousIme() can surely terminate
the IME transition state managed in PhoneWindowManager, rather than
relying on a hack of calling SoftInputWindow#show() and
SoftInputWindow#hide(), which actually does not work for Bug 26663589.

[1]: Ib04967f39b2529251e4835c42e9f99dba2cf43f2
2977eb7b6ce82309a1bb1ba4ab698f503cb0388a
[2]: I5723f627ce323b0d12bd7b93f5b35fc4d342b50c
792faa2c16d319e874a1d633f964a78266d5f3f2

Note that addressing all the corner cases in [2] still requires lots of
non-trivial change. Hence this CL focuses only on Bug 26663589 (and
the case we handled in Bug 15922840).

Bug: 26663589
Change-Id: Ib567daa009c1139858dccadcfc6a04465ebecf36
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
d0d07974745dcc947bb498198166f5872c7ec4a1 04-May-2016 Yohei Yukawa <yukawa@google.com> Fix a behavior change in "Show software keyboard".

This bug was a corner case of stopping lying about
Configuration#keyboard when "Show software keyboard" is turned on, which
was done by my CL [1] in Android N development cycle.

Previous implementation

if (config.keyboard != Configuration.KEYBOARD_NOKEYS) {

had relied on the fact that the system was lying about config.keyboard,
which is no longer valid. We need to change the behavior of
InputMethodService#onShowInputRequested() depending on
Settings.Secure.SHOW_IME_WITH_HARD_KEYBOARD like we did for
InputMethodService#onEvaluateInputViewShown() in [1] to minimize the
impact on stopping lying about Configuration#keyboard.

[1]: Id4d332e3909590c68345e10e1f2e18650efb2eb7
7b739a802cb7d97460a0bf8a1e9774efe96fa552

Bug: 28423439
Change-Id: I8a774cbf61ac706d8446be91b17bceee57a13656
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
91eb2651a06633353592d52c3e37579f01b020ee 11-Apr-2016 Mark Renouf <mrenouf@google.com> Customizes input extract edit view for Wear

Provides an alternate presentation of the extract edit area
of an input method window, designed for sub 250dp width screens.

An icon is used on a round material style button in place of a text
action, providing more horizontal space for the editing area.

BUG: 28098677
(cherry picked from commit fd71a6a5d99bad5d3ab32edc328fb5b026b66215)

Change-Id: I0e559d17f78d1a48b37979a49e11ae1aad7503f4
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
757224008e6187bbb04c89fadbe6921bf8ceda9f 10-Apr-2016 Yohei Yukawa <yukawa@google.com> Revert "Customizes input extract edit view for Wear"

This reverts commit 880602eb640f1f0f7f77f8d17c4ad34aca8b751d [1],
which was committed with a wrong author email address and lacked license
notice in some files. To avoid confusion, this we decided to
temporarily revert that CL so that we can commit it with proper license
notice and author address again.

[1]: I16226ce393f2d15065d08e66a36d008eb1a0c8a1

Bug: 22512982
Bug: 28098677
Change-Id: I3dd3c7bf0ee9634fc4f3bf433bf5023675873e46
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
880602eb640f1f0f7f77f8d17c4ad34aca8b751d 05-Apr-2016 Mark Renouf <mark.renouf@gmail.com> Customizes input extract edit view for Wear

Provides an alternate presentation of the extract edit area
of an input method window, designed for sub 250dp width screens.

An icon is used on a round material style button in place of a text
action, providing more horizontal space for the editing area.

BUG: 22512982
Change-Id: I16226ce393f2d15065d08e66a36d008eb1a0c8a1
(cherry picked from commit fd71a6a5d99bad5d3ab32edc328fb5b026b66215)
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
2dbc53242927a796117a0b70d856021c0d4918a5 04-Apr-2016 Yohei Yukawa <yukawa@google.com> Fix a regression in SHOW_IME_WITH_HARD_KEYBOARD handling.

This is a follow up CL to my previous CL [1], which caused a regression
that LatinIME does not correctly initialize its UI when:
1. Make sure SHOW_IME_WITH_HARD_KEYBOARD is off.
2. Pair a hardware keyboard.
3. Reboot.
4. Make sure the hardware keyboard is paird.
5. Focus in a text box.
6. Make sure that LatinIME does not show software keyboard.
7. Tap the IME switcher and turn of "Show Input Method" toggle.

Previously IMS had called many methods from
IMS#onConfigurationChanged(), which was just replaced with
IMS#restartInput() by my CL [1] then broke some assumptions in LatinIME.
This could also break other IMEs' assumptions as well.

To avoid unexpected regressions between M and N like this, this CL
ensures that those methods are called as we have done until [1].

[1]: Id4d332e3909590c68345e10e1f2e18650efb2eb7
7b739a802cb7d97460a0bf8a1e9774efe96fa552

Bug: 26985193
Change-Id: Iebd98f26d388b64cb318ac202b3bcdd956bd3a27
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
ef5b4657a8b03b33d6c4087e0ced33606fcf05f3 04-Apr-2016 Yohei Yukawa <yukawa@google.com> Fix a bug that IMS#mShowInputFlags is never updated.

As a preparation to fix bug 26985193, this CL fixes a bug that
IMS#ShowInputFlags is never updated. As a result,
IMS#onConfigurationChanged() has always called
IMS#onShowInputRequested() with specifying 0 to flags parameter, which
is wrong.

With this CL, we can assume that IMS#mShowInputFlags keeps tracking the
last value when it should do. Also, we can remove IMS#mShowInputForced
since it is now determined by IMS#mShowInputFlags.

Bug: 26985193
Change-Id: Ieff634b69ce941d78ffe208547f7edd19ea28643
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
755c0095a13365617b0752b8960e0be4044634ac 14-Mar-2016 Keisuke Kuroyanagi <ksk@google.com> Fix: onExtractedDeleteText deletes unintended region.

InputMethodService#onExtractedDeleteText doesn't reset composing
region and InputConnection#deleteSurroundingText deletes text around
the composing region. As a result, #onExtractedDeleteText can delete
unintended region of the text.
This happens when a user perform Drag&Drop or tap "Delete" in
SuggestionsPopup in full screen extracted mode.

Bug: 22440907
Bug: 27536702
Change-Id: I875f2919896f8ff453a77fb4a1b642ad78079b78
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
cf8403bc36395eecd9ab03c6b5e128272c3592e9 12-Jan-2016 Yohei Yukawa <yukawa@google.com> Suppress NPE in IMS#onEvaluateInputViewShown().

This is a follow up CL for the previous commit [1], which may have
triggered an unknown bug in either Android Framework or LatinIME.

[1]: Id4d332e3909590c68345e10e1f2e18650efb2eb7
7b739a802cb7d97460a0bf8a1e9774efe96fa552

InputMethodService#mSettingsObserver is initialized in #onCreate() and
cleard with null in #onDestroy(). Hence hitting NPE against it implies
that InputMethodService#onEvaluateInputViewShown() can be called before
InputMethodService#onCreate() or after InputMethodService#onDestroy().
Both possibilities are equaly problematic. Note that this might be a
long-standing issue that just became obvious because of [1].

This CL does not attempt to fix the root cause but just tries to
suppresses the NPE to unblock QA tasks. A proper fix should be made in
subsequent CLs.

Bug: 22517687
Bug: 26511607
Change-Id: I6bc87c3d18b560fe2253fb9f05557b95b04d0cf0
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
7b739a802cb7d97460a0bf8a1e9774efe96fa552 21-Dec-2015 Yohei Yukawa <yukawa@google.com> Stop lying about hardware keyboard presence.

Here is a brief history of "Use Physical Keyboard", or "Show input
method", or SHOW_IME_WITH_HARD_KEYBOARD.

In Honeycomb, we introduced a mechanism which allows users to temporary
disconnect the physical keyboard connection from a UI [1]. That state
was temporary and non-persistent, but it was implemented to have
system-wide effect. Whenever the user turned on that temporarily
disconnected state, not only IMEs but also other processes would be
notified that Configuration#keyboard was changed to KEYBOARD_NOKEYS.
The UI to do that was available only in tablet UI at that point and
nothing changed in phones.

In JellyBean, we decided to port that UI to phone, and the "Use Physical
Keyboard" toggle switch found its new home on the IME switcher
dialog [2].

In Lollipop, we revised the wording for the toggle switch on the IME
switcher dialog. Now it's labeled as "Show input method" [3].

In Lollipop, we also decided to make the settings of "Show input method"
to be persistent as @hide entry in the secure settings [4].

[1] 2992ea782fa61780d8e0de7a36a2a84622f8694b
I136087ca4f726d0068d5983d7d3686787ba60c55
[2] cb598b11ea2c012bd15e7e7f44a3006f752c0b81
(Ica768083f95c33dc1e494a28ba7d8b6eb989b0ef)
[3] be11f3a5cea67c68a08c8da9ce85b3418501060a
(I9c8a7eb98b5277f1d09cc19fa7402e9b4cf51d92)
[4] b64e56aad3ffb267aec44308f57641a4c91caa83
(I2237ded850a0d4ab43ca441d0b7df13e0958e630)

Now, we have hard time making everyone happy. Having an easy way to
bring software keyboard back is probably still a valid use case, but
after several wording changes it is no longer obvious why
onConfigurationChanged() event is sent to all the processes as a
consequence of tapping that toggle.

In order to address above confusions, this CL removes the concept of
"temporarily disconnected physical keyboard" but tries to implement
"Show input method" functionality in InputMethodManagerService and
InputMethodService to keep the affordance that has been offered in the
IME switcher dialog. As long as the IME overrides
InputMethodService#onEvaluateInputViewShown() as follows, the behavior
of "Show input method" toggle remains the same except for processes
including IMEs no longer receive onConfigurationChanged() event with
faked Configuration#keyboard value.

@Override
public boolean onEvaluateInputViewShown() {
// If the default implementation returns true, recommend honoring
// it.
if (super.onEvaluateInputViewShown()) {
return true;
}

// Implement the logic that is specific to your IME here.
return myOnEvaluateInputViewShown();
}

Bug: 22517687
Change-Id: Id4d332e3909590c68345e10e1f2e18650efb2eb7
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
6fcbb5629019489a88a9748f278d40d554cc5cdc 15-Sep-2015 Yohei Yukawa <yukawa@google.com> Handle BadTokenException exception more reliably.

This is a follow up for I2c21573cf972145ab08e66604cdb9344139a3f31, which
added BadTokenException handler so that we can deal with unavoidable
runtime exceptions. However, it turns out that CL does not work well
in a certain case.

One problem in I2c21573cf972145ab08e66604cdb9344139a3f31 that it added
the exception handler in the call site of
InputMethodService#showWindow(boolean) rather than callee side as
follows.

try {
showWindow(true);
} catch (BadTokenException e) {
if (DEBUG) Log.v(TAG, "BadTokenException: IME is done.");
mWindowVisible = false;
}

However, the above code fails to update #mWindowVisible if an IME
overrides InputMethodService#showWindow(boolean) but catch-and-ignore
BadTokenException as follows.

@Override
public void showWindow(boolean showInput) {
try {
super.showWindow(showInput);
// Do something if super.showWindow() succeeds.
} catch (BadTokenException ex) {
// Do something if super.showWindow() fails.
}
}

With this CL, InputMethodService#mWindowVisible is always updated in
the callee side whenever it should be.

Note that this CL does not change anything about which method can
throw BadTokenException and which method catch-and-ignores it so as
not to break existing IMEs unexpectedly.

Bug: 23798142
Change-Id: Id1e5f236f48c8ef01b7f157ba3f6e7ab2c26b135
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
686e03454b461484b4b51d0ff10c6361aee8c72b 14-Sep-2015 Yohei Yukawa <yukawa@google.com> Merge "Mechanical merge of nested if statements."
24182f3dacf2d2f1b77e5eadd38547f11cd4270d 12-Sep-2015 Yohei Yukawa <yukawa@google.com> Remove redundant casts.

This Cl is just a mechanical removal of redundant casts.
Nothing is changed logically.

Bug: 22285167
Change-Id: I460b781753553c002b6cd232ae5918b7acd616d9
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
ac8bdd203c18d0f99b825132cf6134dce5d12bc6 12-Sep-2015 Yohei Yukawa <yukawa@google.com> Mechanical merge of nested if statements.

This is just a mechanical merge of nested if statements with a dead code
removal. Nothing is changed logically.

Bug: 22285167
Change-Id: I28c1de84635b68108b25ec32ec58de2128758512
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
93c47eab2b4e11103b29f923bdda932569d0b6a5 14-Jul-2015 Seigo Nonaka <nona@google.com> Update fullscreen state on hiding window.

Need to update fullscreen state on hiding window as well as showing
window, otherwise IMM#isFullscreenWindow reports obsolete state after
hiding window by back key or device rotation.

Bug: 22238567
Change-Id: Ic8de161cd5d2ee161f32b9942cdc2c331ea4d48e
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
e9311579da9fcbc1f32deb0ca29848a46b218d1a 25-Jun-2015 Yohei Yukawa <yukawa@google.com> am 6a402ca6: am d408d293: am ab142f7f: Merge "Handle back key to cancel text action mode in full-screen IME." into mnc-dev

* commit '6a402ca629185576cf774587da8079977833d25e':
Handle back key to cancel text action mode in full-screen IME.
38940aab693be587d5901f4ef110cbf95da0e22f 24-Jun-2015 Yohei Yukawa <yukawa@google.com> Handle back key to cancel text action mode in full-screen IME.

This CL is a follow up to I7998c8ee2162a0e01525a0cd66ec14fa505,
which completely removed ExtractActionMode including back key
handling in InputMethodService when full-screen mode is enabled.

It turns out that back key events still need to be handled in
InputMethodService when full-screen mode is enabled so that
users can still cancel floating text action mode with back key.

Bug: 22034992
Change-Id: I5f8db34f7425eef343d40d9820925ea6aaf9fccc
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
710645eb36e88a6a788f51bea9edbeee53853de1 11-Jun-2015 Andrei Stingaceanu <stg@google.com> Remove ExtractEditAction - part 1

Use the floating toolbar action mode instead.
This change is identical to 7315b15a034eeb2d9a4cd24c100023c048ca
(minus string changes). Due to scary conflicts in strings I will
make the string changes in the next CL.

Change-Id: Ia66ef5e886df1fc42a8e1ba52d77141e1e88dbd4
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
1036c74784d8f8ca7232aaa26b1b0c3796c29d1d 11-Jun-2015 Andrei Stingaceanu <stg@google.com> Revert "Completely remove ExtractActionMode - master cherrypick"

This reverts commit 00245473dbdf5469ad40d1ca6d2f53a87462efcb.

Change-Id: If078c09fbdfd00d005ff58d543f03601b96eef0a
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
00245473dbdf5469ad40d1ca6d2f53a87462efcb 11-Jun-2015 Andrei Stingaceanu <stg@google.com> Completely remove ExtractActionMode - master cherrypick

Use the floating toolbar action mode instead.
This CL is identical to ag/701639. The merge to master was skipped
due to a conflict. This is the 'manual merge'

Bug: 20128047
Change-Id: I5ef9b4b5b9574a4a360a853b2d1abd5b374f2fd5
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
4c1b7315b15a034eeb2d9a4cd24c100023c048ca 02-Jun-2015 Andrei Stingaceanu <stg@google.com> Completely remove ExtractActionMode from ExtractEditLayout

Use the floating toolbar action mode instead.

Bug: 20128047
Change-Id: I7998c8ee2162a0e01525a0cd66ec14fa5050a953
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
e937216c330bfcaf523d9627fe315f89db00e36a 04-Jun-2015 Seigo Nonaka <nona@google.com> Catch BadTokenException and continue in clearInsetofPreviousIme.

This is a follow up CL for Ib04967f39b2529251e4835c42e9f99dba2cf43f2.
As well explained in the I2c21573cf972145ab08e66604cdb9344139a3f31,
the race condition here cannot be avoided without an unacceptable
performance penalty. For now, we follow the same way.

Bug: 21600287
Change-Id: I0ffdf8bf7e8a53cf8aba1339024b32da65d4f32d
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
2977eb7b6ce82309a1bb1ba4ab698f503cb0388a 28-May-2015 Yohei Yukawa <yukawa@google.com> Clear the inset of previous IME when necessary.

In the following scenario, the system continues keeping the previous
IME's inset in the display until the new IME shows its window.
1. an IME shows its software keyboard with reporting non-empty inset.
2. the user switches to another IME, which does not show the software
keyboard when it is selected (e.g., because the physical keyboard
is connected.)

This CL tries to address above situation by introducing a new state
flag IMMS#mShouldClearInsetOfPreviousIme to clear the previous IME's
inset when necessary.

Bug: 15922840
Change-Id: Ib04967f39b2529251e4835c42e9f99dba2cf43f2
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
98d88028ae449fccfa8bace0d4ed3e34f6290658 15-Apr-2015 Seigo Nonaka <nona@google.com> Notify IME visibility when showWindow is called.

To change the back icon, need to notify IME visibility to the
InputMethodManagerService when guest IME service calls showWindow().

IME can call showWindow() if it want to show software input, but it
doesn't send IME_VISIBLE state to the InputMethodManagerService,
hence the arrow icon is different from what we expect. This
typically happens when Latin IME shows Emoji panel by left-alt keys.

Bug: 20318050

Change-Id: I0ec2c71ad9bc3b7e9259d9180375d9062fc7e154
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
7b9c912f536925ac6ec43935d6e97506851b33d6 31-May-2013 Tor Norbye <tnorbye@google.com> Add @ResourceInt annotations on APIs

Change-Id: I119cc059c2f8bd98fd585fc84ac2b1b7d5892a08
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
72745fffe8d43b12ebb753b562191e319e5c1cda 24-Dec-2014 Seonggoo Kang <seonggoo.kang@lge.com> 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
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
a277db28e990d1f6f74ace0c32fe92401660a840 22-Aug-2014 Yohei Yukawa <yukawa@google.com> 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
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
e07b595519e68a8ee524b1886dea01475047abec 14-Aug-2014 Alan Viverette <alanv@google.com> Deprecate InputMethodService.enableHardwareAcceleration()

BUG: 16951553
Change-Id: I126ea823eb2eeabb29d30999dec9c9411b33b315
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
0023d0e0c4f5339b299d1eacbd4e7181c2fd271f 10-Jul-2014 Yohei Yukawa <yukawa@google.com> 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
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
e30e02f5d9a9141c9ee70c712d4f9d52c88ea969 28-May-2014 Dianne Hackborn <hackbod@google.com> 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
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
c2ddd6023688db5ecf6c586e05f55e262b4a802e 06-May-2014 Yohei Yukawa <yukawa@google.com> Introduce new API for floating window support

This CL introduces a new API IMM#updateCursorAnchorInfo for
floating window support.

BUG: 14579622
Change-Id: I61dec2f8fa671ba891da1d4af08975750e3acb04
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
5effd7e89f83824ac8982a6cbcebbf5cc331e436 05-May-2014 Alan Viverette <alanv@google.com> Partial revert "Load device default theme mapping from resources"

This reverts commit e4ab72d54cf41d16819b72e94d9b0d0d51289647.

Change-Id: Id17170312c75993fc1f7859d52c7e050b2aeaf80
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
c03c9167c2d9a1e22fb2b176b00a0524177fb037 02-May-2014 Dianne Hackborn <hackbod@google.com> 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
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
0810b63739c9981f993063749f804b54faed0ba5 01-May-2014 Alan Viverette <alanv@google.com> 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
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
c644ff6d4ffea317420ee843965788a3e74d1969 28-Apr-2014 Yohei Yukawa <yukawa@google.com> 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
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
4de04795f988cc7447feb9ad00e179273f75a6a3 16-Apr-2014 Yohei Yukawa <yukawa@google.com> 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
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
b7b7907fb5e4b2252b3c594a6bc4402217fe662a 25-Mar-2014 Yohei Yukawa <yukawa@google.com> 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
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
6259933ec99dee566f200c5fdfe1756ee72b1513 01-Apr-2014 Alan Viverette <alanv@google.com> Switch framework Holo references to Quantum.Light

Change-Id: Ib545a143f1959b6104adbc9d594dd626851d90b3
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
658c7b896a751b971db1292d86655dbb97f00067 10-Oct-2013 Satoshi Kataoka <satok@google.com> Introduce an API to get the recommended height of the InputMethodWindow

Bug: 11035379
Bug: 5137498

Change-Id: I0e920ee79c526c3aea6872b063cf294e2ab081c8
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
c68d577f29604d205573ee4253704c5b2c5e4f81 08-Oct-2013 John Spurlock <jspurlock@google.com> 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
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
c743cb94770701ec20a01b57b09232f1aae5bcbb 12-Sep-2013 Jean Chalard <jchalard@google.com> 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
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
c56191f82956527acadd525b64ebcc033bc107a3 30-May-2013 Satoshi Kataoka <satok@google.com> 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
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
f09993ca1d01823f9c60c0be45a8169e09dd27d7 19-Apr-2013 Satoshi Kataoka <satok@android.com> 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.
f403b1fe5081aae07523043eaec8f348e1c982ea 20-Mar-2013 Craig Mautner <cmautner@google.com> 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
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
e4bbb1cc451c7ebdad9f92968732fc4f6c21a70c 15-Mar-2013 Craig Mautner <cmautner@google.com> 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
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
6efb4c746f89458ffb3da21d7d70af0b220a4876 13-Mar-2013 Craig Mautner <cmautner@google.com> Put debug back in for b/b8263462.

Previous CL did not fix.

Change-Id: Ief9e8f519480fa41248d53e5b0187c9657f00b79
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
217fd2903d09d40cabcdade9f2a162dc6513f800 26-Feb-2013 jungheang.lee <jungheang.lee@lge.com> 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
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
350d4cbec1c3006710c6544299f994cf2a72c166 09-Nov-2012 Satoshi Kataoka <satok@google.com> 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
8b117c85781be106f16a1fecc73d6928e54a985b 06-Nov-2012 Satoshi Kataoka <satok@google.com> 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
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
cb95cd6baebb1ffa365ff8981b0ae5e0b02e4bed 26-Oct-2012 Tadashi G. Takaoka <takaoka@google.com> Fix downTime of InputMethodService.sendDownUpKeyEvents method

Bug: 7403935
Change-Id: I9074269c9a5f5b54b632da11151ad46c3494dc19
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
6e2bee75cea415621165698fdd9ce857bbb8872e 01-Oct-2012 Jeff Sharkey <jsharkey@android.com> 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
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
b38070caa5143ab9fd1883e0c7c879533a480bc7 24-Aug-2012 Victoria Lease <violets@google.com> 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
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
98365d7663cbd82979a5700faf0050220b01084d 20-Aug-2012 Jeff Brown <jeffbrown@google.com> 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
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
836531b0c4985b0cf6ead247dd2f403f3ec59e37 02-Aug-2012 Dianne Hackborn <hackbod@google.com> Add API to turn on HW drawing in IMEs.

Change-Id: Ib6a8bda46223ce1153f32834daf02a820d16136e
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
b369a141eda7b3f7cd85cbc4ae340ce688c33f8b 20-Jul-2012 Kurt Partridge <kep@google.com> Documentation cleanup

Change-Id: Id3d15b643e6ed29c52dc9c9eb02836eb64277dae
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
405bc51c5dc73846a4abdc325cd234eb2d37469f 29-May-2012 Jean Chalard <jchalard@google.com> 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
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
2f913d951c481edccbefa4d321a76f28740b48d7 09-May-2012 satok <satok@google.com> Fix the issue that the ime switch icon is remaining after closing VoiceInput

Change-Id: I4fd6b7b6c1e8a2603626d82ed3587716bea519d3
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
4f8b71e41d26538711920495242892839a1757f9 12-Apr-2012 Quddus Chong <quddusc@google.com> am a97a7b5a: am 6971153d: Merge "docs: Fixed method description for onKeyDown(int keyCode, KeyEvent event). Bug: 6318537" into ics-mr1

* commit 'a97a7b5a6efac20a112c1833579a0a2b17bc058e':
docs: Fixed method description for onKeyDown(int keyCode, KeyEvent event). Bug: 6318537
ee71b1fa2d3905214fafaa9478fa4fc2834b06fc 12-Apr-2012 Quddus Chong <quddusc@google.com> docs: Fixed method description for onKeyDown(int keyCode, KeyEvent event).
Bug: 6318537

Change-Id: I4fb0f103bfe3ddf485e1bfa76eb39a51adce1aaa
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
f76a50ce8fdc6aea22cabc77b2977a1a15a79630 09-Mar-2012 Ken Wakasa <kwakasa@google.com> Fix obvious typos under frameworks/base/core

Change-Id: Ia5fc3db1bb51824e7523885553be926bcc42d736
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
e300be9c29b7915450ddb62f2957d312b52cfa32 06-Dec-2011 Gilles Debunne <debunne@google.com> IOOB is Suggestions

Bug 5555929

This problem only happens when in landscape extracted text mode.

A suggestion pick from the popup window replaces the text in the ExtractedText,
when it should do it in the underlying source EditText instead.

When the replacement text is longer than the replaced text and is at the end
of the text, an IOOB occurs because the ExtractedText was not modified (we now
correctly change the source text using replaceText_internal).

This is basically an implementation of the TODO comment next to setSpan in
TextView.

Change-Id: I6575137530e0bb5c9ac7e40cc2bba9c66dc254d2
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
39ba6d9c4cf5a88d71edb800f3f48f85f61187c4 09-Nov-2011 Gilles Debunne <debunne@google.com> Extracted text problems

Bug 5557258: recent text editing changed in ExtractedText mode is
broken. The modifications of the text performed by:
- drag and drop
- text suggestions, deletion
- voice IME's delete button

all change the ExtractEditText itself, while they should affect the underlying
EditText (and the change will be forwarded to the ExtractEditText). As a results,
changes are not actually modifying the underlying text.

Created new protected methods in TextView, overloaded in ExtractTextView to
affect the underlying text instead.

Changes to spans should also be forwarded to the original TV (see the 2 TODOs),
this is tracked in bug 5589158.

Change-Id: Ibfec272469e8db191b3875e7576e32481a9dc1bd
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
f17db9f5257011d5331d27a6da7d4e6fddde1e08 14-Sep-2011 satok <satok@google.com> Call onFinishInputView in onDestroy

onFinishInputView is called in InputMethodService#hideWindow but not in onDestroy.
For closing IMS safely, onFinishInputView should be called in onDestroy.

Bug: 5265534
Bug: 4697071

Change-Id: I2947b62326e3e0644f1c079eafc839a9981e902b
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
41ccb08f5af7ff28568b5eb09b1319fb6d8edcfb 14-Sep-2011 satok <satok@google.com> Merge "Skip the exit animation when the IME is destroyed."
c0c8765719f5c8d0192aa266c27166bdd8c09a33 11-Sep-2011 satok <satok@google.com> Skip the exit animation when the IME is destroyed.

Bug: 4529563

Change-Id: I6fb2ea3601e1cc6fa8858d006819698dcabdd5ca
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
34703b6d304c2bc6f4a39583931c7582d0455b0c 08-Sep-2011 Gilles Debunne <debunne@google.com> The back key stops selection mode in extracted text mode.

The previous behavior stopped the extracted text mode, leaving the
text selected and without handles in the app.

As what happens in normal (non extracted) mode, the back key now
stops the text selection mode. A second back will get the user back
to normal mode.

Change-Id: I2e8d2d7a1a1e1344997da75438f8df804fb8735c
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
36a97e4030010298736928f9b391a390fea6941b 07-Sep-2011 Adam Powell <adamp@google.com> Fix bug 5228657 - Input method window rendered with titlebar

Use the correct Holo-based IME theme for IMEs targeting >= 11 and < ICS.

Change-Id: Id154a927ab8439c357dc44996155f92414e2c876
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
6e90a362bc66cc67b1beae27b21d3f0148403b08 15-Aug-2011 Adam Powell <adamp@google.com> Fix bug 5159736 - Make DeviceDefault the default

Have the framework refer to the DeviceDefault themes for ICS apps that
don't explicitly request another theme.

Change-Id: I27dd0bbaa60f71df4f36e47d260f556d923ba075
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
863fcd62171e55bc9f2105d9fb5877df982454d8 21-Jun-2011 satok <satok@google.com> Add onClickView to InputMethodService

Bug: 4697141

- onClickView is called everytime the user taps EditText

Change-Id: Ia71ad325e50a20e9e1001def662ef992bb50a9d0
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
8710e76a897cd546a79ee4338a4147eeb9f3e068 30-Jan-2011 Ken Wakasa <kwakasa@google.com> Follow up change to I741642ac

Fix wrong constant.

bug: 3404788
Change-Id: Ic5f849e6640a78a70951cf819d7e8ce53a9c2585
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
857fd9b8562c29913e03ed29288bd1802d37dc60 28-Jan-2011 Joe Onorato <joeo@google.com> Plumb whether an input view is actually visible or not through from the IME
to the status bar.

Bug: 3391067
Change-Id: I049531155bf7ee0b29874916c0b5b0a45b73c09e
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
8cbb4c6e30cff706a243599634aeb8fd9a818d92 24-Jan-2011 Gilles Debunne <debunne@google.com> NULL inputType text fields should never show the IME.

Bug 3381317

Changes made in https://android-git.corp.google.com/g/#change,91880
displayed the IME onFocus. However, the test was not consistent to what
is done in touch event. textIsEditable is now checked too.

Change-Id: If11382c1c90a557839b87d62494253470c42b621
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
865b97761cc58053f45a8b06b531d60d8e482c3a 20-Jan-2011 satok <satok@google.com> Show ime switch icon when there is a hard keyboard

Change-Id: Ife3a8733b1a1bf43b195ecf4b8c5082b6538d0a0
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
fbf097732137a32930d151f7ba6816a5b870c32a 16-Jan-2011 Jeff Brown <jeffbrown@google.com> Support non-rectangular input regions.

This enables the system bar to carve out a region through which
events will be sent to the IME behind it.

Bug: 3238092
Change-Id: I69b855a8d9b5b3ee525266c0861826e53e5b5028
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
d922ae01ca99a2b6d39a9393f86776a1d10ebd14 14-Jan-2011 Dianne Hackborn <hackbod@google.com> Add Holo theme for IMEs.

Also clean up theme selection code to get rid of duplication.

Change-Id: Idf7b21db70ee83fce24756ead877169bd08b77a9
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
6b53e8daa69cba1a2a5a7c95a01e37ce9c53226c 11-Nov-2010 Jeff Brown <jeffbrown@google.com> Added support for full PC-style keyboards.

BREAKING CHANGE: Redesigned the key character map format to
accomodate full keyboards with more comprehensive suite of modifiers.
Old key character maps will not work anymore and must be updated.
The new format is plain text only and it not compiled to a binary
file (so the "kcm" tool will be removed in a subsequent check-in).

Added FULL keyboard type to support full PC-style keyboards.

Added SPECIAL_FUNCTION keyboard type to support special function
keypads that do not have any printable keys suitable for typing
and only have keys like HOME and POWER

Added a special VIRTUAL_KEYBOARD device id convention that maps
to a virtual keyboard with a fixed known layout. This is designed
to work around issues injecting input events on devices whose
built-in keyboard does not have a useful key character map (ie.
when the built-in keyboard is a special function keyboard only.)

Modified several places where events were being synthesized
to use the virtual keyboard.

Removed support for the "qwerty" default layout.
The new default layout is "Generic". For the most part "qwerty"
was being used as a backstop in case the built-in keyboard did
not have a key character map (probably because it was a special
function keypad) and the framework needed to be able to inject
key events anyways. The latter issue is resolved by using the
special VIRTUAL_KEYBOARD device instead of BUILT_IN_KEYBOARD.

Added the concept of a key modifier behavior so that
MetaKeyKeyListener can distinguish between keyboards that use
chorded vs. toggled modifiers.

Wrote more robust key layout and key character map parsers
to enable support for new keyboard features and user installable
key maps.

Fixed a bug in InputReader generating key ups when keys
are released out of sequence.

Updated tons of documentation.

Currently QwertyKeyListener is being used for full keyboards
with autotext and capitalization disabled. This mostly works
but causes some problems with character pickers, etc.
These issues will be resolved in subsequent changes.

Change-Id: Ica48f6097a551141c215bc0d2c6f7b3fb634d354
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
9ef0283bdcd9534cc09ae37eb2b78771b95247b5 04-Nov-2010 satok <satok@google.com> Change API for getting InputMethodSubtype's mode from resource id to String

Change-Id: I00aa99f8ab9901d40806a6bb336ab718eb857e8b
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
dea3ef7967228f0ddcc03f2455a4f1254758e584 28-Oct-2010 Dianne Hackborn <hackbod@google.com> Add new resize mode to not resize, new web input types.

Change-Id: Ib098c03793d08532c3c099b59d0cc6b567e54900
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
06487a58be22b100daf3f950b9a1d25c3ea42aa2 29-Oct-2010 satok <satok@google.com> Add a functionarity for showing / hiding IME button on the system bar

Bug: 3077030

- IME communicates with status bar directly.

Change-Id: Ic5b6b5b7a2b8ea62372dcc9b9c36d81b9f2db651
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
ab751aa085433e9f735d2e7603459c6c7e9d2fb0 14-Sep-2010 satok <satok@google.com> Add methods for managing subtypes

- added showInputMethodSubtypePicker to public API
-- show the selector dialog for subtypes
- added getter, setter and event handler to InputMethodManagerService
- extract InputMethodSubtype to the top level class for using it in aidl
- TODO: make an enabler for input method subtypes
- TODO: handle the event of changing an input method subtype in LatinIME

Change-Id: I49f8c6675ac4b06511635d14a37bd398738eff33
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
007ad7700a23ff7e618cfeee1eab97063c93b800 04-May-2010 The Android Open Source Project <initial-contribution@android.com> merge from open-source master

Change-Id: If72ad6758c9e1bf77c38c4afec6b00ec9d5b89e4
59eb69192c47ba53cf2ea412a5fba160f2a7892d 08-Sep-2009 Steve Kondik <shade@chemlab.org> Fix an NPE in InputMethodService when mExtractAction is null.

This happens with certain third-party IMEs.

Fixes: http://code.google.com/p/cyanogenmod/issues/detail?id=231

Change-Id: Idf4349ee9c7c8f73c255745bc65b49ba9b593874
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
a8b00c8801be8e7bd21ddab64a3cde9b5ff2984a 06-Mar-2010 Amith Yamasani <yamasani@google.com> Logging to track down an elusive bug with Messaging app losing IME focus in landscape.

bug: 2200728
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
a77f93f76a40128ecc3d017ead6d1105f96b282a 13-Jan-2010 Leon Scroggins <scroggo@google.com> am ace8addc: am 2edd6826: Create a new ImeOption that disables fullscreen in landscape, and use it.

Merge commit 'ace8addce47efc03be5038eef48d7fb066b14aae'

* commit 'ace8addce47efc03be5038eef48d7fb066b14aae':
Create a new ImeOption that disables fullscreen in landscape, and use it.
2edd68260f26cbd6eddd0df16404bb6bcb22b3b6 12-Jan-2010 Leon Scroggins <scroggo@google.com> Create a new ImeOption that disables fullscreen in landscape, and use it.

EditorInfo:
Add a flag to tell the InputMethodService to never go into fullscreen
mode.

InputMethodService:
When the new flag is set, onEvaluateFullscreenMode always returns
false.

WebTextView:
Use the new flag, along with IME_FLAG_NO_EXTRACT_UI. Fixes
http://b/issue?id=2358360
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
980a938c1c9a6a5791a8240e5a1e6638ab28dc77 09-Jan-2010 Romain Guy <romainguy@android.com> Deprecate fill_parent and introduce match_parent.
Bug: #2361749.
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
83fe3f559249451706957b1a5f660b2b8272f114 13-Sep-2009 Dianne Hackborn <hackbod@google.com> Last big work on #1991910: Make swipes work with capacitive keys

This takes care of allowing us to cancel the back button. The
back button is a bear because it is strewn all over the place --
everywhere you can close something, there is some code looking
for the back button that now needs to deal with being canceled.

The main things changed are activity (of course), dialog,
input method, search dialog. There are some other misc places
in the framework (and some I missed here that I will get in a
second pass).

To facility all of this, the key dispatching APIs now provide
a lot more support for dealing with looking for cancelled keys,
and incidentally also provide an actual API for catching long
key presses. This also helped clean up the code in PhoneWindow
where it deals with all of the combinations of key pressed and
releases. (And also allows people to override
Activity.onKeyLongPress() to provide a different long press
action for a standard key like search.)

And while I was doing this, I reworked how we detect long
presses by having this be part of the key event delivered by
the window manager. This should greatly reduce (hopefully
outright eliminate) the problems with long presses being
mis-detected when an application is being slow.

Change-Id: Ia19066b8d588d573df3eee6d96e1c90fdc19f57d
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
ba4d93fcd76fdd7c8368e23c7faf9a20684e51a0 20-Aug-2009 Amith Yamasani <yamasani@google.com> Potential fix for NPE at startExtractingText.

This is not easy to reproduce. Adding a simple null check to see if the
monkeys continue to hit the NPE.
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
105925376f8d0f6b318c9938c7b83ef7fef094da 19-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake_rel/...@140373
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
c39a6e0c51e182338deb8b63d07933b585134929 11-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@137873
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54 09-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@137197
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
4df2423a947bcd3f024cc3d3a1a315a8dc428598 05-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@136594
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
9066cfe9886ac131c34d59ed0e2d287b0e3c0087 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
d83a98f4ce9cfa908f5c54bbd70f03eec07e7553 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
076357b8567458d4b6dfdcf839ef751634cd2bfb 03-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@132589
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
3dec7d563a2f3e1eb967ce2054a00b6620e3558c 03-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@137055
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
3001a035439d8134a7d70d796376d1dfbff3cdcd 19-Feb-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@132276
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
da996f390e17e16f2dfa60e972e7ebc4f868f37e 13-Feb-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@131421
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
d24b8183b93e781080b2c16c487e60d51c12da31 11-Feb-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@130745
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
f1e484acb594a726fb57ad0ae4cfe902c7f35858 22-Jan-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@127436
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
22f7dfd23490a3de2f21ff96949ba47003aac8f8 20-Jan-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@127101
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
9266c558bf1d21ff647525ff99f7dadbca417309 16-Jan-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@126645
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
b798689749c64baba81f02e10cf2157c747d6b46 10-Jan-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@125939
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java
f013e1afd1e68af5e3b868c26a653bbfb39538f8 18-Dec-2008 The Android Open Source Project <initial-contribution@android.com> Code drop from //branches/cupcake/...@124589
/frameworks/base/core/java/android/inputmethodservice/InputMethodService.java