OOPS! Squash all 4.2.2 changes into one

    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

    Conflicts:

    	java/res/mipmap-hdpi/ic_ime_settings.png
    	java/res/mipmap-mdpi/ic_ime_settings.png
    	java/res/mipmap-xhdpi/ic_ime_settings.png
    	java/res/mipmap-xxhdpi/ic_ime_settings.png
    	java/res/raw/main_de.dict
    	java/res/raw/main_es.dict
    	java/res/raw/main_fr.dict
    	java/res/raw/main_it.dict
    	java/src/com/android/inputmethod/latin/LatinIME.java

Change-Id: I34a2a322b6bfbd5d416ffce73337e833a3701ddc