Don't restrict reset composing state to non-identical setText

Bug: 7497063
Change-Id: Ifbd5c37408131867458fd921bdef46ef90d81478
Refactor all phantom-space-inserted spaces in one place

Bug: 7164981
Change-Id: If1635c212b2d5d9cf51f5fb074f3b20dd7ec7b2a
Make sure all FDs are correctly closed.

In this kind of series of calls, it's possible that an outer call to a
constructor fails, but the inner succeeded.
Example:
try {
    is = new A(new B());
} finally {
    if (null != is) is.close();
}
In this case, if new B() succeeds but new A() throws an
exception, is stays null and the intermediate object is never
closed. This is what was happening in this instance.

Bug: 7377336
Change-Id: I3fae9fec1135244982fcf5098c76d93f3e0f2add
Fix a bug with some text fields

Not sure when this happens exactly, but it is possible that
InputConnection#getTextBeforeCursor returns null. This
happens for example upon rotating the screen with the
composing field empty in Gmail.
In this case, StringBuilder#append will convert the null
pointer into the string "null", which is sure better than a
crash, but can have a number of bad side-effects, like
auto-caps not working.

Bug: 7533034
Change-Id: Ia1cfab432c13a12ff1c2f013c59bac05a587f553
[DO NOT MERGE] Correct a wrong base character in Russian

Bug: 7516306
Change-Id: I80cee4b2b11e5bfa68c12923049cb612abd0bc7e
Fix language switch key behavior (DO NOT MERGE)

Bug: 7075923
Change-Id: If139411db4aa65eed64337bf2a79387cfcd04496
Update shift state only when input field is restarted

Bug: 7482766
Change-Id: Ifdfa110c44b95acfbcd3e0aa34f675c70b7d7285
DO NOT MERGE - Fix an error in the base char table for LETTER L WITH STROKE

Cherrypick of I67a431d8

bug: 7539944
Change-Id: I0d1f9649f30c36b8e464944a5b881c2cb9c05ccf
Add Spanish United States keyboard (DO NOT MERGE)

Bug: 7531804
Change-Id: Idd66ee30e5228260540308a97c930185b48e775f
Correctly add double quote to the space strippers

...without removing space, this time.
Also add a test to make sure it is working.

Bug: 7531719
Change-Id: I3afcc433c6cdc2774e7deeb6d358356db5035d35
Only add spaces automatically when appropriate.

Correctly check the variations to determine if we should
add automatic spaces (in manual picks and gestures) or not.

Bug: 7164981
Change-Id: I19e25af839b4062c217113cd804b1473912f22a5
Add a constant for S_INT_MIN

This is necessary for I807ae4bd

Bug: 7491364
Change-Id: I46ee92a76eb65e80b64538d0300b718eac6a3ddb
Request update shift state after shift-chording input

Bug: 7529860
Change-Id: Iec82459348722be358ae2ded15deafac21749dcd
Update the dictionaries

This brings the dictionaries to the same level as
master. The change in master reflected by this
change is I94fe7f8f.

- XML de dict :
  Update header only.
- XML en dict :
  Add the not_a_word flag to all whitelist entries.
  Demote "il:92" and "shel:52" to freq 0.
- XML en_GB dict :
  Add the not_a_word flag to all whitelist entries.
  Add "milk:122" and "practice:143"
- XML fr dict :
  Add missing words : "Nostradamus:40" "défendais:30"
  "gmail:50" "générale:140" "hm:0" "hmm:0" "y'en:130"
  "l'apocalypse:31" "m'épuise:30" "recontacter:80"
  "t'annonce:30"
  Set freq of non-word shortcuts for digraphs to 1 instead
  of 0, allowing to gesture them.
- XML ru dict :
  Remove a lot of two-character non-words.

- Binary de dict :
  Remove the obsolete "options" header, and add the "dictionary"
  header.
- Binary en dict :
  Flag "hoe" "hoes" "il" "shel" as non-words.
  Also drop freq of "il" and "shel" to 0
  Add the "locale" header that was missing.
- Binary es dict :
  Add the "dictionary" header.
- Binary fr dict :
  Add the same words as above. Non-word shortcuts were already
  set to 1.
- Binary it dict :
  Add a "dictionary" header. Also change freq of
  "Šarapova" from 50 to 37; not sure why it was 50.
- Binary pt_BR dict :
  Add a "dictionary" header.
- Binary ru dict :
  Add a "dictionary" header and remove the same words as above.

Bug: 7458565
Change-Id: I22dd176ed2df99b847047f2d1045f6d861ccb8b0
Match RU dictionary header.

This brings the changes of I837831b1 to MR1.1
>>> dictionaries/ru_wordlist.combined.gz
>>> java/res/raw/main_ru.dict
Header :
  date : 1353500945 <=> 1353567943
  MULTIPLE_WORDS_DEMOTION_RATE : null <=> 0
Body :
  No differences

Bug: 7540132
Change-Id: I81f281fda881ad1252cdf6cf2d0947a12a2dac27
Fix IME settings icons

Imported assets were too small. Fixed by pulling in the correctly
sized assets.

Bug: 7556843
Change-Id: I182181d258f8797ec3fbf9b2cbe1380d71a8075a
Use the amended user dictionary word for insertion

When the user edits a word before adding it to the user
dictionary, the keyboard should replace whatever was
committed before with the amended version.

Bug: 7725834
Change-Id: I1a417be6c5a86d6a96bc2c76aca314ad8f1202a9