• Home
  • History
  • Annotate
  • only in /frameworks/base/core/tests/inputmethodtests/
History log of /frameworks/base/core/tests/inputmethodtests/
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
b21220efae92a56ff7b4b781fa614a6e3a8a3007 01-Nov-2014 Yohei Yukawa <yukawa@google.com> Minimize the number of default enabled IMEs part 4

This is a follow up CL for recent attempt to minimize
the number of default enabled IMEs.
- part1: I831502db502f4073c9c2f50ce7705a4e45e2e1e3
- part2: Ife93d909fb8a24471c425c903e2b7048826e17a3
- part3: I6571d464a46453934f0a8f5e79018a67a9a3c845

It turned out that the changes made in part2 and part3 are
a bit overkill, and users will see no software keyboards
in some particular situations. The problem we missed in
the previous CLs is the fact that
InputMethodInfo#isDefault is indeed a locale-dependent
value, hence it may vary depending on the system locale.
Existing unittests also failed to abstract such
locale-dependent nature.

In order to addresses that regression, the selection logic
is a bit widely reorganized in this CL. Now the logic is
implemented as a series of fallback rules.

Also, unit tests are updated to be able to 1) test the
order of the enabled IMEs, and 2) emulate the
locale-dependent behavior of InputMethodInfo#isDefault
to enrich test cases.

BUG: 17347871
BUG: 18192576
Change-Id: I871ccda787eb0f1099ba3574356c1da4b33681f3
dc489241cfb3691a87942344cf55efd3d98c1107 13-Sep-2014 Yohei Yukawa <yukawa@google.com> Minimize the number of default enabled IMEs part 3

With this CL, the behavior of getDefaultEnabledImes() changes
as follows:

- Previously system IMEs are always enabled by default as long
as it is a software keyboard that supports En_* subtype. With
this CL, getDefaultEnabledImes() relies on the locale returned
from getFallbackLocaleForDefaultIme() instead of calling
isSystemImeThatHasEnglishKeyboardSubtype() to minimize the
number of enabled IMEs.
- Previously default enabled system IMEs are chosen in a
country-agnostic way. As a result, "en_IN" is enabled even
when the system locale is "en_US". With this CL, the system
first tries to find IMEs with taking the coutnry into account,
and use the country-agnostic way when and only when fallback
logic is required.

BUG: 17347871
Change-Id: I6571d464a46453934f0a8f5e79018a67a9a3c845
68c860bb29861e54fd9b868bd5af701b054a1dc0 13-Sep-2014 Yohei Yukawa <yukawa@google.com> Minimize the number of default enabled IMEs part 2

Previously the system tried to enable at least one auxiliary IME
even when the system is not ready. However, this doesn't make
much sense because the user should be able to set up their phone
without auxiliary IMEs. Also, IMEs enabled before the system
becomes ready are kept to be enabled after the system becomes
ready. Thus, we should minimize the number of enabled IMEs
until the system becomes ready.

BUG: 17347871
Change-Id: Ife93d909fb8a24471c425c903e2b7048826e17a3
59cccf93d28648a77860a30349e52b7eeb98436c 12-Sep-2014 Yohei Yukawa <yukawa@google.com> Enrich test cases when enabling default IMEs part 4

This is another groundwork for subsequent fixes.

Notable changes in test cases are:
- simplified test cases for voice IMEs.
- added more test cases for keyboard IMEs.
- introduced assertDefaultEnabledImes() to reduce code duplicate.

BUG: 17347871
Change-Id: I8cf61cfa18ac425a2cccc7823474c3f06dc0fa1e
d77adfe52d44396c54a4ce3a7f1e823e8618f27c 11-Sep-2014 Yohei Yukawa <yukawa@google.com> Enrich test cases when enabling default IMEs part 3

This is another groundwork for subsequent fixes.

Notable changes in test cases are:
- A dummy Hinglish IME ("en_US" + "hi") is added
- Added test cases where system locale is "en_GB",
"en_IN", and "hi" as well as "en_US".

BUG: 17347871
Change-Id: Iacf0f47c4dbc147f8153df50ba58fc4da4dacd29
bca817b2e2623c49bbb618f78fe207bedf57f266 11-Sep-2014 Yohei Yukawa <yukawa@google.com> Enrich test cases when enabling default IMEs part 2

This is another groundwork for subsequent fixes.

Notable changes in test cases are:
- isSystemReady == false is now coverted.
- tests can run even when the system locale of test
environment is different from "en_US"

BUG: 17347871

Change-Id: I9434270735d3b37d8b788d41250b23d7950aaeed
cfcbddaff269cbb35192c21e557d34aece2f3d6c 10-Sep-2014 Yohei Yukawa <yukawa@google.com> Enrich test cases when enabling default IMEs

This is another groundwork for subsequent fixes.

Notable changes in test cases are:
- isAsciiCapable is now annotated accordingly.
- "dummy.keyboard0" now has several subtypes like
"en_GB", "en_IN", "hi", "hi_ZZ" like the AOSP

BUG: 17347871
Change-Id: Ide698ed11c2539ba5862e6b37ea63ed19f8ce566
443c2bafd824779a75cd4b922b6839a8df9795e9 10-Sep-2014 Yohei Yukawa <yukawa@google.com> Use public APIs to instantiate InputMethodSubtype

This is a groundwork for subsequent CLs that are
supposed to improve default input method selection

Historically we have had a @hide constructor of
InputMethodSubtype. However, this contructor is
a bit obsolete because we can not specify some
parameters that were added in recent platform
releases. We should use InputMethodSubtypeBuilder

BUG: 17347871
Change-Id: I72ad79682a58344e14380eb20e26edf98aee37cd
699a49b9f1d1a7f44a37fa9df96f22f724fbeb1f 08-Sep-2014 Yohei Yukawa <yukawa@google.com> Follow up API signature changes of CursorAnchorInfo part 2

This is another follow up CL for Ic8c6fab58c01206872a34e7e.

Ib2371849d32bb44da9ef59f05e648a476e03699a didn't cover
following renamings. This CL fixes them.

- #getCharacterRect -> #getCharacterBounds
- #getCharacterRectFlags -> #getCharacterBoundsFlags

BUG: 17365414
Change-Id: I120795da3f25f1e2fa71f455f92e3cd1c036c1d5
a41c4bcc3dcac9e808c9d524e24454d132790e9a 08-Sep-2014 Yohei Yukawa <yukawa@google.com> Follow up API signature changes of CursorAnchorInfo

This is a follow up CL for Ia8cbb9f6b41cd9509fc0147fd68763dfde
and Ic8c6fab58c01206872a34e7ee604cdda1581364d.

BUG: 17365414
BUG: 17200900
Change-Id: Ib2371849d32bb44da9ef59f05e648a476e03699a
71cf0a32d0d9a45653704a671154f26a8bc3132b 24-Jul-2014 Yohei Yukawa <yukawa@google.com> Stop assuming language part in locale string is up to 2-letter

With this CL, InputMethodSubtypeSwitchingController stop
assuming that language part in locale string is up to 2-letter.

this CL is not so risky because
InputMethodSubtypeSwitchingController have used language part for
nothing but sorting subtypes to determine the initial rotation
order of IME switching.

BUG: 16502987
Change-Id: Ib159ece0b7aa04f8fd7abc96c9a6e0832a4b7cd2
a52aeda8088688f08602cccc444057f03b94c074 11-Jul-2014 Yohei Yukawa <yukawa@google.com> Consolidate test cases for InputMethodSubtype

We have accepted any arbitrary text as a locale
string when instantiating InputMethodSubtype object.
As a consequence, some existing code might assume
that InputMethodSubtype never canonicalize/normalize
the given locale string.

This CL add a test case for such scenario.

Change-Id: Ie08d6e149e22a60d6c4d40049a3e6afeee87dc44
638e4787ba5093c5e43d8b15db57fff3a31a4e21 11-Jul-2014 Yohei Yukawa <yukawa@google.com> Add simple InputMethodSubtypeTest

Change-Id: I87105c4935adfca249378e667161d2998cf77840
0b01e7fc58cdde00d8350285a3386c4209b72d78 08-Jul-2014 Yohei Yukawa <yukawa@google.com> Polish new IME API for L: CursorAnchorInfo

This CL allows application authors and input method authors to
communicate with each other more precisely on the visibility of
insertion marker and composing characters. Now we can describe
the situation where the coordinates of them are available but
they are overlapped by other UI elements.

This change is based on feedbacks from internal customers of
this preview API.

Change-Id: I82eba0e844a6f8b99ba11a68fad272399034cc24
BUG: 16118303
eea0b8b051e916051d0d09da3f41f9ec4d508bff 08-Jul-2014 Yohei Yukawa <yukawa@google.com> Fix inconsistencies in CursorAnchorInfo#equals

This CL addresses some inconsistencies found in

- #mComposingText is now taken into consideration when
compared with other instances.
- NaN is now treated as if it was just a number in
CursorAnchorInfo#equals if and only if NaN is used in
-- #mInsertionMarkerHorizontal
-- #mInsertionMarkerTop
-- #mInsertionMarkerBaseline
-- #mInsertionMarkerBottom.
This is useful if we want to use NaN as a marker to
indicate that no value is specified.

Change-Id: Ibff31bc34b9d488731b294ad38240c567a06b627
b5268dcc17cd9ecb540b06ad59bd74188b57a069 27-Jun-2014 Yohei Yukawa <yukawa@google.com> Require coordinate transformation matrix if necessary

With this CL, CursorAnchorInfo.Builder#build() raises
IllegalArgumentException when an application author attempts to
instantiate CursorAnchorInfo without the coordinate
transformation matrix but with specifying some positional
parameters such as composing character rectangle.

Since any other positional members in CursorAnchorInfo are
supposed to be specified in local coordinates, the application
author must provide the coordinate transformation matrix for
such positional data.

Change-Id: I2b0fd0f146a2b95fe4fa1324837d8cfee667208c
9a9c112737443e0a4ad0a5054408642ec7b7ee67 27-Jun-2014 Yohei Yukawa <yukawa@google.com> Fix test failures due to unexpected overload resolution

Starting with Ie04e8a27050849fee1c93ef14b9944acc70fafe4,
CursorAnchorInfo#getComposingText() returns CharSequence rather
than String. This causes unexpected overload resolution,
which results in test failures.

BUG: 15088391
Change-Id: I51e2b23573e92be7e5b1dcca6402e85364408215
2a97b54f491346be193cc72b89d6712cf1abacc9 12-Jun-2014 Yohei Yukawa <yukawa@google.com> am f09cb58d: Merge "Rename CursorAnchorInfoBuilder with Builder" into lmp-preview-dev

* commit 'f09cb58d5f528665e6e96d8740eeeeab4167e357':
Rename CursorAnchorInfoBuilder with Builder
c46b5f04aa2a9fd292c117d2824f70fcf06e86ba 09-Jun-2014 Yohei Yukawa <yukawa@google.com> Rename CursorAnchorInfoBuilder with Builder

Inner Builder class should not inherit full class name of outer

BUG: 15516230
Change-Id: I2d56edebb0c85639db57ca5b2aadb22c67fc5926
07bd732034fbf4ce0e51b99c7199edf20dff1565 02-Jun-2014 Yohei Yukawa <yukawa@google.com> Reenable DynamicRotationList for language-switching-aware IMEs

In order to reenable DynamicRotationList for
language-switching-aware IMEs, this CL reverts
I84291fd4a7d6192b3bd0c366c49 with fixing a bug that the dynamic
rotation state is reset even when the list of input methods is
not changed.

With this CL, the dynamic rotation state is preserved when the
enabled input methods is not changed actually.

BUG: 7043015
Change-Id: I506828c7a363e79f1c767eeb28f0d3746ff1cb0d
529001f06761205bcaae1570d81556be397f56fb 27-May-2014 Yohei Yukawa <yukawa@google.com> Switch back to StaticRotationList from DynamicRotationList

Ic005b94379f9d847ea, which introduced DynamicRotationList for
smarter input method rotation, is suspected to be causing a
strange behavior that InputMethodManager#switchToNextInputMethod
is choosing unexected/disabled IME/subtype.

With this CL, we switch back to StaticRotationList until the root
cause is addressed.

BUG: 7043015
Change-Id: I95fc8b28536cea6d09ea325e0caee14007cfc0a7
a9bda774276f1c5a1fc6fd67a7782a06e696be8f 23-May-2014 Yohei Yukawa <yukawa@google.com> Implement dynamic IME rotation based on user action

With this CL, the IME rotation order will be updated dynamically
based on user actions on IMEs. Currently only onCommitText is
took into considered.

Imagine that we have the following rotation order.
[A, B, C, D, E]
If a user action for C is observed, the rotation order will be
updated as follows:
[C, A, B, D, E]
Then another user action for D updates the rotation order as
[D, C, A, B, E]

BUG: 7043015
Change-Id: Ic005b94379f9d847ea87046473ed77d8018d930e
9b29d04565e1faf0a49054f538ed1881cb24fe12 22-May-2014 Yohei Yukawa <yukawa@google.com> Consolidate the language-switching logic

This CL does not change the existing behavior.
In I84291fd4a7d6192b, the IME rotation group is logically
devided into two groups, one is for IMEs that are declared as
supportsSwitchingToNextInputMethod == true, and the other is
IMEs that are not declared so. The problem is that the logic
was implemented with a single ime/subtype list where these two
kinds of IMEs are completely mixed. This makes the code
unnecessarily complex.
With this CL, these two rotation groups are actually managed
as two different collections separately. This allows us to
simplify the rotation logic as well as its test cases.
This CL is also a groundwork to implement smarter
language-switching logic that is applied to
language-switching-aware IMEs only.

BUG: 7043015
Change-Id: I7f08ec299ec41d614e2cd3912320687db1576e80
5a647b69be8ac8d40c33ed9abe63e41514699e5b 21-May-2014 Yohei Yukawa <yukawa@google.com> Remove unnecessary internal lock

Previously, InputMethodSubtypeSwitchingController has relied on
its own internal lock for #getNextInputMethod and
class has to be invalidated whenever
InputMethodManagerService#mMethodMap is updated, any method of
InputMethodSubtypeSwitchingController should be called under
the global lock of InputMethodManagerService#mMethodMap.

As a consequence, we can conclude that
InputMethodSubtypeSwitchingController does not need its own
internal lock.

This CL also adds additional synchronization blocks into
the constructor of InputMethodManagerService to address the
existing inconsistency that methods with *Locked suffix are
called without the lock actually.

BUG: 7043015
Change-Id: I9d4d3d7232c984432185c10c13fb726a6158cac8
4013940b62ae2227c9b30d8761d7533ee6190a9f 21-May-2014 Yohei Yukawa <yukawa@google.com> Style fix and dead code removal

This CL does not change the existing behavior.
Smarter language switching will be coverted by subsequent CLs.

BUG: 7043015
Change-Id: I281a33191d44be448492c2b74760cb8680719124
419b1b0498e33a556780be1702b444d54fcaa7dd 15-May-2014 Yohei Yukawa <yukawa@google.com> Make a copy of Matrix in CursorAnchorInfoBuilder

This CL fixes a bug that CursorAnchorInfoBuilder does't make a
copy if the Matrix specified with #setMatrix.

Without this fix, IMM#updateCursorAnchorInfo could fail to detect
duplicated events when the same instances of
CursorAnchorInfoBuilder and Matrix are reused to optimize

Change-Id: I50c50a12a06d3cda4dec445b171b61ceb78da21a
81f4cb3f858f46a4d9b793c4d326b9bf6aca868d 13-May-2014 Yohei Yukawa <yukawa@google.com> Enable CursorAnchorInfo to contain composing string

This CL adds one more functionality to CursorAnchorInfo
that enables applications to associate the composition
string with its positional information. This is useful
for an IME to handle CursorAnchorInfo asynchronously.

This is also useful for the framework to detect if
the application is unnecessarily calling
IMM#updateCursorAnchroInfo with duplicate event.

BUG: 14579622
Change-Id: Ie75c17b523dad33e97b08c15f5f5267573ce2063
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
a1223cfe6f2e04da1ab6e0ad781068687446ee56 01-May-2014 Yohei Yukawa <yukawa@google.com> Take supportsSwitchingToNextInputMethod into considertaion

With this CL, InputMethodManager#switchToNextInputMethod starts
behaving as if there are two rotation groups: one is for the new
input methods that are declared with
supportsSwitchingToNextInputMethod set to true to indicate they
have some language switching UI, and the other is for the other
input methods to preserve the existing behavior.

In addition to the above change, this CL also fixes the behavior
of InputMethodManager#shouldOfferSwitchingToNextInputMethod()
so as to return true if and only if the former rotation group
consists of two or more input methods, as originally designed.

BUG: 12981505
Change-Id: I84291fd4a7d6192b3bd0c366c49586e79135584f
d1da11529813f6d3f51518b5fe028e0b8084f5cc 01-May-2014 Yohei Yukawa <yukawa@google.com> Add unit tests for InputMethodSubtypeSwitchingController

This CL adds unit tests for InputMethodSubtypeSwitchingController
as a ground work to make it aware of
supportsSwitchingToNextInputMethod in a subsequent CL.

This CL never changes existing behavior.

BUG: 12981505
Change-Id: I3b2c46c47c7686b811fa248ad549f20875367425
f06569561fe1c6e898debf8bb9f37331a9f87323 03-Mar-2014 Yohei Yukawa <yukawa@google.com> Introduce InputMethodSubtypeArray for memory efficient IPCs

This CL introduces InputMethodSubtypeArray which compresses
multiple instances of InputMethodSubtype to reduce the risk
of TransactionTooLargeException during IPCs.

There are some IMEs which rapidly adding new subtypes into
their supported language list. One problem here is that each
instance of InputMethodInfo internally owns the list of
supported subtypes. Basically it requires additional
200 ~ 300 bytes for each subtype when InputMethodInfo is
transffered via IPCs. We should keep the size less than
100 KB in typical scenario.

With this CL, the list of InputMethodSubtype is marshalled
with GZIP compression. Approximately one InputMethodInfo is
marshalled within 10 KB even when it has 100 subtypes.

No negative performance impact is observed so far. The cost of
decompression seems to be compensated by another optimization
in this CL. Actually marshalling cost is reduced with this CL
by caching the compressed data on demand.

BUG: 12954290
Change-Id: Ibb2940fcc02f3b3b51ba6bbe127d646fd7de7c45
c18cd393f65146fac03a9bdfa45380a69460ee98 03-Mar-2014 Yohei Yukawa <yukawa@google.com> Make sure InputMethodInfo implements Parcelable transitively

This CL adds one more test to make sure InputMethodInfo
implements Parcelable correctly. This test makes sure that
one can marshall and unmarshall again from an unmarshalled
copy of InputMethodInfo.

BUG: 12954290
Change-Id: I5aa1552a8089fe0bac54513ba224e5bfc494be97
589800485d770cab7b159ffcf4b18c10ae2aee6d 27-Feb-2014 Yohei Yukawa <yukawa@google.com> Add unit test for InputMethodInfo

This CL adds a unit test to make sure that InputMethodInfo
implements Parcelable correctly.

BUG: 12954290
Change-Id: I0abe8c266b4b035bf8ef4688d11069b355fabe9f
f1367b7e903a2a69a8f833bb272e91d77abd57c6 25-Jan-2013 Satoshi Kataoka <satok@google.com> Do not turn on imes unexpectedly with unit tests

Bug: 7872918

Change-Id: Ie1d74c9fac27de140e7aa85f2eaefcb89aa06ea7