Layouts are now defined in yaml files at latinime/java/assets/layouts. The new system makes simple layouts significantly easier to add.
Many layouts still need to be ported over to the new system and some bugs still remain. The old layout system and XML layouts will need to be removed.
This commit is part of a large scale change to fix errorprone
errors that have been downgraded to warnings in the android
source tree, so that they can be promoted to errors again.
The full list of changes include the following, but not all
will be present in any one individual commit:
BadAnnotationImplementation
BadShiftAmount
BanJNDI
BoxedPrimitiveEquality
ComparableType
ComplexBooleanConstant
CollectionToArraySafeParameter
ConditionalExpressionNumericPromotion
DangerousLiteralNull
DoubleBraceInitialization
DurationFrom
DurationTemporalUnit
EmptyTopLevelDeclaration
EqualsNull
EqualsReference
FormatString
FromTemporalAccessor
GetClassOnAnnotation
GetClassOnClass
HashtableContains
IdentityBinaryExpression
IdentityHashMapBoxing
InstantTemporalUnit
InvalidTimeZoneID
InvalidZoneId
IsInstanceIncompatibleType
JUnitParameterMethodNotFound
LockOnBoxedPrimitive
MathRoundIntLong
MislabeledAndroidString
MisusedDayOfYear
MissingSuperCall
MisusedWeekYear
ModifyingCollectionWithItself
NoCanIgnoreReturnValueOnClasses
NonRuntimeAnnotation
NullableOnContainingClass
NullTernary
OverridesJavaxInjectableMethod
ParcelableCreator
PeriodFrom
PreconditionsInvalidPlaceholder
ProtoBuilderReturnValueIgnored
ProtoFieldNullComparison
RandomModInteger
RectIntersectReturnValueIgnored
ReturnValueIgnored
SelfAssignment
SelfComparison
SelfEquals
SizeGreaterThanOrEqualsZero
StringBuilderInitWithChar
TreeToString
TryFailThrowable
UnnecessaryCheckNotNull
UnusedCollectionModifiedInPlace
XorPower
See https://errorprone.info/bugpatterns for more
information on the checks.
Bug: 253827323
Test: m RUN_ERROR_PRONE=true javac-check
Change-Id: I454a105ae82484a2d19aff1808e8d9dd55ba64f4
With this CL, versionCode, targetSdkVersion and minSdkVersion will be
bumped/set as follows:
versionCode: 28 -> 30
targetSdkVersion: 28 -> 30
minSdkVersion: 21
As far as we know, there should be no user-visible behavior change on
supported OS versions.
Fix: 189558760
Test: manually verified that LatinIME still is functional
Change-Id: I4bf7588c62fb77bf78d4afcb665e9bfbbef53966
With this CL, targetSdkVersion and minSdkVersion will be bumped as
follows:
targetSdkVersion: 23 -> 28
minSdkVersion: 14 -> 21
As far as we know, there should be no user-visible behavior change on
supported OS versions.
Fix: 119489995
Test: manually verified that LatinIME still is functional
Change-Id: I68f1545778b0c8b44c6850f22f3f5ca25bdb6de0
This logically reverts my previous CL [1], which moved <uses-sdk />
from AndroidManifest.xml to AndroidManifest_SdkVersion.xml, which was
later accidentally removed during Android.bp migration [2].
Since gradle support in LatinIME is still experimental and not used in
official build, it is OK to keep it broken for a while. A more
important problem right now is letting LatinIME target API 28.
As the first step to let LatinIME target SDK 28, <uses-sdk> will be
revived in AndroidManifest.xml
[1]: Ib673bca5a31b2f95329c9310a127ec0701bd8fdc
9cd42f39eb
[2]: Ib8867d3b74f09fc1d9f95adc9a49a81ac0f7f054
22ebec6e2e
Bug: 110741422
Bug: 119489995
Test: manually verified that LatinIME still is functional
Change-Id: I8b04caa56fe2431c07e076fb6f97c560d5da8838
These tests are supposed to run even withotu @RunWith annocation, but
for better consistency we should have it there.
Bug: 110805255
Test: verified as follows. No new test failures.
tapas adb LatinIME LatinIMETests arm64 userdebug && \
DISABLE_PROGUARD=true make -j LatinIME && \
adb install -r $OUT/system/app/LatinIME/LatinIME.apk && \
atest LatinIMETests:com.android.inputmethod.latin.ContactsDictionaryUtilsTest && \
atest LatinIMETests:com.android.inputmethod.latin.ContactsContentObserverTest
Change-Id: I5c115d57b2ad41642f5f9b09b0c0d8f8c12480b0
This should be the most convenient way for both make build and Android
Studio build to share the same version code.
Bug: 110741422
Test: tapas LatinIME LatinIMETests arm64 userdebug && make -j
Change-Id: I35f850c392553b2640a4c3c7398441ac28e90eca
Basically Android Studio does want targetSdkVersion to be specified in
build.gradle rather than AndroidManifest.xml. To make both make build
and Android Studio build happy, this CL splits <uses-sdk /> from the
main AndroidManifest.xml to a different file and let them merged in
make build.
There should be no behavior change.
Bug: 110741422
Test: Manually verified that there is no difference in
AndroidManifest.xml in the APK.
Change-Id: Ib673bca5a31b2f95329c9310a127ec0701bd8fdc
InstrumentationTestCase and ActivityInstrumentationTestCase2 are
deprecated. This CL rewrites tests that rely on those deprecated
classes by using Android Testing Support Library.
Bug: 110805255
Test: verified as follows. No new test failures.
tapas adb LatinIME LatinIMETests arm64 userdebug && \
DISABLE_PROGUARD=true make -j LatinIME && \
adb install -r $OUT/system/app/LatinIME/LatinIME.apk && \
atest LatinIMETests:com.android.inputmethod.keyboard.internal.MoreKeySpecStringReferenceTests LatinIMETests:com.android.inputmethod.latin.settings.AccountsSettingsFragmentTests
Change-Id: I4fefccaa0c480cfba7142ed36883da2f19b6a5f9
This is a follow up CL to previous CLs that converted unit tests to
use Android Testing Support Library but forgot to remove unused import
lines.
Bug: 110805255
Test: verified as follows. No new test failures.
tapas adb LatinIME LatinIMETests arm64 userdebug && \
DISABLE_PROGUARD=true make -j LatinIME && \
adb install -r $OUT/system/app/LatinIME/LatinIME.apk && \
atest LatinIMETests:com.android.inputmethod.latin
Change-Id: I8762b0dfc209bdf68867f725b03a22286026faae
This CL converts 19 test classes under com.android.inputmethod.latin
to Android Testing Support Library.
Bug: 110805255
Test: verified as follows. No new test failures.
tapas adb LatinIME LatinIMETests arm64 userdebug && \
DISABLE_PROGUARD=true make -j LatinIME && \
adb install -r $OUT/system/app/LatinIME/LatinIME.apk && \
atest LatinIMETests:com.android.inputmethod.latin
Change-Id: I878fcae0126f57c43a644af341e5a0a8ac8f5cc9
This CL converts 7 test classes under com.android.inputmethod.keyboard
to Android Testing Support Library.
This CL also fix missing annotations in KeyboardLayoutTest.
Bug: 110805255
Test: verified as follows. No new test failures.
tapas adb LatinIME LatinIMETests arm64 userdebug && \
DISABLE_PROGUARD=true make -j LatinIME && \
adb install -r $OUT/system/app/LatinIME/LatinIME.apk && \
atest LatinIMETests:com.android.inputmethod.keyboard
Change-Id: I8ab9e3329f159f0df02812fafe44c25efa76c0d1
This CL converts tests under com.android.inputmethod.latin.utils to
Android Testing Support Library.
Bug: 110805255
Test: verified as follows. No new test failures.
tapas adb LatinIME LatinIMETests arm64 userdebug && \
DISABLE_PROGUARD=true make -j LatinIME && \
adb install -r $OUT/system/app/LatinIME/LatinIME.apk && \
atest LatinIMETests:com.android.inputmethod.latin.utils
Change-Id: I5cc2ddbc4116003ab6407432ab521b6b560052ae
This CL converts tests under com.android.inputmethod.compat to
Android Testing Support Library.
Bug: 110805255
Test: verified as follows. No new test failures.
tapas adb LatinIME LatinIMETests arm64 userdebug && \
DISABLE_PROGUARD=true make -j LatinIME && \
adb install -r $OUT/system/app/LatinIME/LatinIME.apk && \
atest LatinIMETests:com.android.inputmethod.compat
Change-Id: I6766447ca27f5cccdb1e9f7e751235daa04cc252
PersonalDictionaryLookup has never been used. Usually proguard can
remove this class but it also makes it difficult to run unit tests.
We should just remove this unused class.
Bug: 111164993
Test: compile
Test: No new test failure
Change-Id: I732db94cb3aac4ed9c6b5954679b896334a12a9c
In preparation for the removal of the non-junit classes in the
android.test.base library from the android.jar this adds a dependency
on android.test.base/stubs to ensure this code will continue to
compile.
The following change descriptions were generated automatically and so
may be a little repetitive. They are provided to give the reviewer
enough information to check the comments match what has actually been
changed and check the reasoning behind the changes.
* tests/Android.mk
Added 'android.test.base.stubs' to LOCAL_JAVA_LIBRARIES because
LatinIMETests's will need them in order to compile once its classes
are removed from the current SDK on which it currently depends.
Bug: 30188076
Test: make dist
Change-Id: I9f2244d4b5711620dc02dd24dc407807d726480e
Previous changes statically included legacy-android-test in preparation
for removing android.test.* and junit.* classes from the android.jar.
Unfortunately, that lead to duplicate classes between APKs and the
bootclasspath which caused build problems (Proguard) and also runtime
problems (when targeting and running on older releases).
Switching from statically including the classes to using the runtime
libraries cannot be done in one step because legacy-android-test is
statically included in libraries which are used in many APKs and so
removing it from those libraries requires that all APKs be updated at
once. Doing that atomically across dozens of projects is not practical.
This change modifies APKS that statically include the
legacy-android-test library indirectly.
* If the APK manifest uses the android.test.runner library then the APK
is modified to stop statically including legacy-android-test and
instead build against android.test.base/mock/runner libraries instead.
* Otherwise, the APK statically includes legacy-android-test.
Also, any libraries that statically include are modified to stop
statically including it and if it has source dependencies on the classes
is changed to build against the android.test.base/mock/runner libraries.
The following change descriptions were generated automatically and so
may be a little repetitive. They are provided to give the reviewer
enough information to check the comments match what has actually been
changed and check the reasoning behind the changes.
* tests/Android.mk
Replaced 'legacy-android-test' with 'android.test.runner.stubs' in
LOCAL_JAVA_LIBRARIES because LatinIMETests's source depends on its
classes. The classes do not need to be statically included because
the classes will be provided by the runtime, either from the
default bootclasspath or from the android.test.runner library that
LatinIMETests specifies in its manifest.
Bug: 30188076
Test: make checkbuild
Change-Id: I3c70889b35d402626f79c986771b9c2ea8823b8a
Remove dependencies on android.test.mock.sdk as it is a duplicate of
android.test.mock.stubs and will be removed.
The following change descriptions were generated automatically and so
may be a little repetitive. They are provided to give the reviewer
enough information to check the comments match what has actually been
changed and check the reasoning behind the changes.
* tests/Android.mk
Replaced 'android.test.mock.sdk' with 'android.test.mock.stubs' in
LOCAL_JAVA_LIBRARIES because android.test.mock.sdk has been
deprecated.
Bug: 30188076
Test: make checkbuild
Change-Id: I50a306c3bb80a9d7cdf2d19744734f304abf3bd1
A previous change added legacy-android-test as a static dependency to
all packages that build against the current, test_current or
system_current and failed to compile when the junit and android.test
classes were removed from the API. Unfortunately, those changes did not
take into account that some of those packages target earlier API
versions and so will always have the classes available at runtime.
This change replaces those static dependencies with dynamic dependencies
for any package that targets an earlier API version. The file changes
were made automatically by a tool that constructed and then analyzed a
full dependency graph of all the Android Java modules. The individual
changes were checked manually to ensure that the changes matched the
intent. The affected modules were built against an API with the junit
and android.test classes removed. Any issues found during this process
resulted in either the tool being updated to address the issue or a
separate change being made to fix an existing problem with the build. A
sample of the affected packages were run to ensure that they worked as
expected at runtime; no issues were found during testing.
The following change descriptions were generated automatically and so
may be a little repetitive. They are provided to give the reviewer
enough information to check the comments match what has actually been
changed and check the reasoning behind the changes.
* tests/Android.mk
Removed legacy-android-test from LOCAL_STATIC_JAVA_LIBRARIES
because LatinIMETests's manifest file (AndroidManifest.xml) targets
API level 21 and dynamically includes the android.test.runner
library at runtime so there is no point in statically including the
classes.
Added 'android.test.mock.sdk' and 'legacy-android-test' to
LOCAL_JAVA_LIBRARIES because module LatinIMETests builds against
'LOCAL_SDK_VERSION := current' and uses classes from packages
android.test and android.test.mock (possibly indirectly) so will no
longer compile once they are removed from the API.
Dependency 'android.test.mock.sdk' is used instead of
'android.test.mock' because module LatinIMETests builds against the
API not internal jars and so should use libraries that build
against the API not internal jars.
A future change will replace the dependency on
'legacy-android-test', which builds against the internal jars with
a dependency on 'android.legacy.test' which will build against the
API.
Bug: 30188076
Test: make checkbuild and ran a sample of tests
Change-Id: Icab8a4c4801536f112e29dfd2dc66be8b90b811d