am dacc927a: am c1ff2846: Update strings for the settings access - based on the latest GB IME spec (ver 03). Please refer to bug: 2979069 for the latest mock.

Merge commit 'dacc927a57b0c7adfbdf244441b9b2495c959980'

* commit 'dacc927a57b0c7adfbdf244441b9b2495c959980':
  Update strings for the settings access - based on the latest GB IME spec (ver 03).
diff --git a/java/res/values-cs/strings.xml b/java/res/values-cs/strings.xml
index d6bb402..5ec1ded 100644
--- a/java/res/values-cs/strings.xml
+++ b/java/res/values-cs/strings.xml
@@ -137,8 +137,6 @@
     <skip />
     <!-- no translation found for keyboard_layout (437433231038683666) -->
     <skip />
-    <!-- no translation found for prefs_debug_mode (3889340783846594980) -->
-    <skip />
     <!-- no translation found for subtype_mode_keyboard (2242090416595003881) -->
     <skip />
     <!-- no translation found for subtype_mode_voice (4394113125441627771) -->
diff --git a/java/res/values-da/strings.xml b/java/res/values-da/strings.xml
index 8028286..8e9a669 100644
--- a/java/res/values-da/strings.xml
+++ b/java/res/values-da/strings.xml
@@ -137,8 +137,6 @@
     <skip />
     <!-- no translation found for keyboard_layout (437433231038683666) -->
     <skip />
-    <!-- no translation found for prefs_debug_mode (3889340783846594980) -->
-    <skip />
     <!-- no translation found for subtype_mode_keyboard (2242090416595003881) -->
     <skip />
     <!-- no translation found for subtype_mode_voice (4394113125441627771) -->
diff --git a/java/res/values-de/strings.xml b/java/res/values-de/strings.xml
index f46b9b8..e9c9b1b 100644
--- a/java/res/values-de/strings.xml
+++ b/java/res/values-de/strings.xml
@@ -137,8 +137,6 @@
     <skip />
     <!-- no translation found for keyboard_layout (437433231038683666) -->
     <skip />
-    <!-- no translation found for prefs_debug_mode (3889340783846594980) -->
-    <skip />
     <!-- no translation found for subtype_mode_keyboard (2242090416595003881) -->
     <skip />
     <!-- no translation found for subtype_mode_voice (4394113125441627771) -->
diff --git a/java/res/values-el/strings.xml b/java/res/values-el/strings.xml
index 7cdd827..4a089d3 100644
--- a/java/res/values-el/strings.xml
+++ b/java/res/values-el/strings.xml
@@ -137,8 +137,6 @@
     <skip />
     <!-- no translation found for keyboard_layout (437433231038683666) -->
     <skip />
-    <!-- no translation found for prefs_debug_mode (3889340783846594980) -->
-    <skip />
     <!-- no translation found for subtype_mode_keyboard (2242090416595003881) -->
     <skip />
     <!-- no translation found for subtype_mode_voice (4394113125441627771) -->
diff --git a/java/res/values-es-rUS/strings.xml b/java/res/values-es-rUS/strings.xml
index 88185b5..413454b 100644
--- a/java/res/values-es-rUS/strings.xml
+++ b/java/res/values-es-rUS/strings.xml
@@ -137,8 +137,6 @@
     <skip />
     <!-- no translation found for keyboard_layout (437433231038683666) -->
     <skip />
-    <!-- no translation found for prefs_debug_mode (3889340783846594980) -->
-    <skip />
     <!-- no translation found for subtype_mode_keyboard (2242090416595003881) -->
     <skip />
     <!-- no translation found for subtype_mode_voice (4394113125441627771) -->
diff --git a/java/res/values-es/strings.xml b/java/res/values-es/strings.xml
index 7053941..2064c34 100644
--- a/java/res/values-es/strings.xml
+++ b/java/res/values-es/strings.xml
@@ -137,8 +137,6 @@
     <skip />
     <!-- no translation found for keyboard_layout (437433231038683666) -->
     <skip />
-    <!-- no translation found for prefs_debug_mode (3889340783846594980) -->
-    <skip />
     <!-- no translation found for subtype_mode_keyboard (2242090416595003881) -->
     <skip />
     <!-- no translation found for subtype_mode_voice (4394113125441627771) -->
diff --git a/java/res/values-fr/strings.xml b/java/res/values-fr/strings.xml
index 0c267aa..ca69027 100644
--- a/java/res/values-fr/strings.xml
+++ b/java/res/values-fr/strings.xml
@@ -137,8 +137,6 @@
     <skip />
     <!-- no translation found for keyboard_layout (437433231038683666) -->
     <skip />
-    <!-- no translation found for prefs_debug_mode (3889340783846594980) -->
-    <skip />
     <!-- no translation found for subtype_mode_keyboard (2242090416595003881) -->
     <skip />
     <!-- no translation found for subtype_mode_voice (4394113125441627771) -->
diff --git a/java/res/values-it/strings.xml b/java/res/values-it/strings.xml
index 0624ec4..8ee2b4f 100644
--- a/java/res/values-it/strings.xml
+++ b/java/res/values-it/strings.xml
@@ -137,8 +137,6 @@
     <skip />
     <!-- no translation found for keyboard_layout (437433231038683666) -->
     <skip />
-    <!-- no translation found for prefs_debug_mode (3889340783846594980) -->
-    <skip />
     <!-- no translation found for subtype_mode_keyboard (2242090416595003881) -->
     <skip />
     <!-- no translation found for subtype_mode_voice (4394113125441627771) -->
diff --git a/java/res/values-ja/strings.xml b/java/res/values-ja/strings.xml
index 8e6508c..fa7745a 100644
--- a/java/res/values-ja/strings.xml
+++ b/java/res/values-ja/strings.xml
@@ -137,8 +137,6 @@
     <skip />
     <!-- no translation found for keyboard_layout (437433231038683666) -->
     <skip />
-    <!-- no translation found for prefs_debug_mode (3889340783846594980) -->
-    <skip />
     <!-- no translation found for subtype_mode_keyboard (2242090416595003881) -->
     <skip />
     <!-- no translation found for subtype_mode_voice (4394113125441627771) -->
diff --git a/java/res/values-ko/strings.xml b/java/res/values-ko/strings.xml
index 6f9643c..05d6a87 100644
--- a/java/res/values-ko/strings.xml
+++ b/java/res/values-ko/strings.xml
@@ -137,8 +137,6 @@
     <skip />
     <!-- no translation found for keyboard_layout (437433231038683666) -->
     <skip />
-    <!-- no translation found for prefs_debug_mode (3889340783846594980) -->
-    <skip />
     <!-- no translation found for subtype_mode_keyboard (2242090416595003881) -->
     <skip />
     <!-- no translation found for subtype_mode_voice (4394113125441627771) -->
diff --git a/java/res/values-nb/strings.xml b/java/res/values-nb/strings.xml
index b745062..13fab75 100644
--- a/java/res/values-nb/strings.xml
+++ b/java/res/values-nb/strings.xml
@@ -137,8 +137,6 @@
     <skip />
     <!-- no translation found for keyboard_layout (437433231038683666) -->
     <skip />
-    <!-- no translation found for prefs_debug_mode (3889340783846594980) -->
-    <skip />
     <!-- no translation found for subtype_mode_keyboard (2242090416595003881) -->
     <skip />
     <!-- no translation found for subtype_mode_voice (4394113125441627771) -->
diff --git a/java/res/values-nl/strings.xml b/java/res/values-nl/strings.xml
index 164a65b..8f79b7e 100644
--- a/java/res/values-nl/strings.xml
+++ b/java/res/values-nl/strings.xml
@@ -137,8 +137,6 @@
     <skip />
     <!-- no translation found for keyboard_layout (437433231038683666) -->
     <skip />
-    <!-- no translation found for prefs_debug_mode (3889340783846594980) -->
-    <skip />
     <!-- no translation found for subtype_mode_keyboard (2242090416595003881) -->
     <skip />
     <!-- no translation found for subtype_mode_voice (4394113125441627771) -->
diff --git a/java/res/values-pl/strings.xml b/java/res/values-pl/strings.xml
index 7c0252d..ae384ba 100644
--- a/java/res/values-pl/strings.xml
+++ b/java/res/values-pl/strings.xml
@@ -137,8 +137,6 @@
     <skip />
     <!-- no translation found for keyboard_layout (437433231038683666) -->
     <skip />
-    <!-- no translation found for prefs_debug_mode (3889340783846594980) -->
-    <skip />
     <!-- no translation found for subtype_mode_keyboard (2242090416595003881) -->
     <skip />
     <!-- no translation found for subtype_mode_voice (4394113125441627771) -->
diff --git a/java/res/values-pt-rPT/strings.xml b/java/res/values-pt-rPT/strings.xml
index 13871ee..b10478c 100644
--- a/java/res/values-pt-rPT/strings.xml
+++ b/java/res/values-pt-rPT/strings.xml
@@ -137,8 +137,6 @@
     <skip />
     <!-- no translation found for keyboard_layout (437433231038683666) -->
     <skip />
-    <!-- no translation found for prefs_debug_mode (3889340783846594980) -->
-    <skip />
     <!-- no translation found for subtype_mode_keyboard (2242090416595003881) -->
     <skip />
     <!-- no translation found for subtype_mode_voice (4394113125441627771) -->
diff --git a/java/res/values-pt/strings.xml b/java/res/values-pt/strings.xml
index 7defaee..754d79e 100644
--- a/java/res/values-pt/strings.xml
+++ b/java/res/values-pt/strings.xml
@@ -137,8 +137,6 @@
     <skip />
     <!-- no translation found for keyboard_layout (437433231038683666) -->
     <skip />
-    <!-- no translation found for prefs_debug_mode (3889340783846594980) -->
-    <skip />
     <!-- no translation found for subtype_mode_keyboard (2242090416595003881) -->
     <skip />
     <!-- no translation found for subtype_mode_voice (4394113125441627771) -->
diff --git a/java/res/values-rm/strings.xml b/java/res/values-rm/strings.xml
index 066f72a..a93cd1f 100644
--- a/java/res/values-rm/strings.xml
+++ b/java/res/values-rm/strings.xml
@@ -139,6 +139,8 @@
     <skip />
     <!-- no translation found for keyboard_layout (437433231038683666) -->
     <skip />
-    <!-- no translation found for prefs_debug_mode (3889340783846594980) -->
+    <!-- no translation found for subtype_mode_keyboard (2242090416595003881) -->
+    <skip />
+    <!-- no translation found for subtype_mode_voice (4394113125441627771) -->
     <skip />
 </resources>
diff --git a/java/res/values-ru/strings.xml b/java/res/values-ru/strings.xml
index 0d3aed3..b0ba83c 100644
--- a/java/res/values-ru/strings.xml
+++ b/java/res/values-ru/strings.xml
@@ -137,8 +137,6 @@
     <skip />
     <!-- no translation found for keyboard_layout (437433231038683666) -->
     <skip />
-    <!-- no translation found for prefs_debug_mode (3889340783846594980) -->
-    <skip />
     <!-- no translation found for subtype_mode_keyboard (2242090416595003881) -->
     <skip />
     <!-- no translation found for subtype_mode_voice (4394113125441627771) -->
diff --git a/java/res/values-sv/strings.xml b/java/res/values-sv/strings.xml
index d56c370..5a7761c 100644
--- a/java/res/values-sv/strings.xml
+++ b/java/res/values-sv/strings.xml
@@ -137,8 +137,6 @@
     <skip />
     <!-- no translation found for keyboard_layout (437433231038683666) -->
     <skip />
-    <!-- no translation found for prefs_debug_mode (3889340783846594980) -->
-    <skip />
     <!-- no translation found for subtype_mode_keyboard (2242090416595003881) -->
     <skip />
     <!-- no translation found for subtype_mode_voice (4394113125441627771) -->
diff --git a/java/res/values-tr/strings.xml b/java/res/values-tr/strings.xml
index 32f357f..e1a3998 100644
--- a/java/res/values-tr/strings.xml
+++ b/java/res/values-tr/strings.xml
@@ -137,8 +137,6 @@
     <skip />
     <!-- no translation found for keyboard_layout (437433231038683666) -->
     <skip />
-    <!-- no translation found for prefs_debug_mode (3889340783846594980) -->
-    <skip />
     <!-- no translation found for subtype_mode_keyboard (2242090416595003881) -->
     <skip />
     <!-- no translation found for subtype_mode_voice (4394113125441627771) -->
diff --git a/java/res/values-xlarge/bools.xml b/java/res/values-xlarge/bools.xml
new file mode 100644
index 0000000..fe8fc58
--- /dev/null
+++ b/java/res/values-xlarge/bools.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+<resources>
+    <!-- Whether or not Popup on key press is enabled by default -->
+    <bool name="default_popup_preview">false</bool>
+</resources>
diff --git a/java/res/values-xlarge/dimens.xml b/java/res/values-xlarge/dimens.xml
new file mode 100644
index 0000000..4e1c528
--- /dev/null
+++ b/java/res/values-xlarge/dimens.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<resources>
+    <dimen name="key_height">72dip</dimen>
+    <dimen name="candidate_strip_height">46dip</dimen>
+    <dimen name="spacebar_vertical_correction">0dip</dimen>
+    <dimen name="key_text_size">35sp</dimen>
+</resources>
diff --git a/java/res/values-zh-rCN/strings.xml b/java/res/values-zh-rCN/strings.xml
index 373cee4..c461303 100644
--- a/java/res/values-zh-rCN/strings.xml
+++ b/java/res/values-zh-rCN/strings.xml
@@ -137,8 +137,6 @@
     <skip />
     <!-- no translation found for keyboard_layout (437433231038683666) -->
     <skip />
-    <!-- no translation found for prefs_debug_mode (3889340783846594980) -->
-    <skip />
     <!-- no translation found for subtype_mode_keyboard (2242090416595003881) -->
     <skip />
     <!-- no translation found for subtype_mode_voice (4394113125441627771) -->
diff --git a/java/res/values-zh-rTW/strings.xml b/java/res/values-zh-rTW/strings.xml
index 77c41e8..a5eb4c6 100644
--- a/java/res/values-zh-rTW/strings.xml
+++ b/java/res/values-zh-rTW/strings.xml
@@ -137,8 +137,6 @@
     <skip />
     <!-- no translation found for keyboard_layout (437433231038683666) -->
     <skip />
-    <!-- no translation found for prefs_debug_mode (3889340783846594980) -->
-    <skip />
     <!-- no translation found for subtype_mode_keyboard (2242090416595003881) -->
     <skip />
     <!-- no translation found for subtype_mode_voice (4394113125441627771) -->
diff --git a/java/res/values/strings.xml b/java/res/values/strings.xml
index 3df32e4..c1ec8eb 100644
--- a/java/res/values/strings.xml
+++ b/java/res/values/strings.xml
@@ -31,7 +31,7 @@
     <!-- Option to play back sound on keypress in soft keyboard -->
     <string name="sound_on_keypress">Sound on keypress</string>
 
-    <!-- Option to pop up the character with a larger font above soft keyboard -->
+    <!-- Option to control whether or not to show a popup with a larger font on each key press. -->
     <string name="popup_on_keypress">Popup on keypress</string>
 
     <!-- Option to enable using nearby keys when correcting/predicting -->
diff --git a/java/res/xml/method.xml b/java/res/xml/method.xml
index e5654e9..fab4bd7 100644
--- a/java/res/xml/method.xml
+++ b/java/res/xml/method.xml
@@ -20,7 +20,114 @@
 <!-- The attributes in this XML file provide configuration information -->
 <!-- for the Input Method Manager. -->
 
+<!-- cs, da, de, en, es, fr, it, iw, nb, nl, ru, sr, sv -->
+<!-- TODO: use <lang>_keyboard icon instead of a common keyboard icon. -->
+<!-- TODO: use <lang>_mic icon instead of a common mic icon. -->
 <input-method xmlns:android="http://schemas.android.com/apk/res/android"
         android:settingsActivity="com.android.inputmethod.latin.LatinIMESettings"
-        android:isDefault="@bool/im_is_default"
-/>
+        android:isDefault="@bool/im_is_default">
+    <subtype android:icon="@drawable/ic_subtype_keyboard"
+            android:imeSubtypeLocale="cs"
+            android:imeSubtypeMode="@string/subtype_mode_keyboard"
+    />
+    <subtype android:icon="@drawable/ic_subtype_keyboard"
+            android:imeSubtypeLocale="da"
+            android:imeSubtypeMode="@string/subtype_mode_keyboard"
+    />
+    <subtype android:icon="@drawable/ic_subtype_keyboard"
+            android:imeSubtypeLocale="de"
+            android:imeSubtypeMode="@string/subtype_mode_keyboard"
+    />
+    <subtype android:icon="@drawable/ic_subtype_keyboard"
+            android:imeSubtypeLocale="en"
+            android:imeSubtypeMode="@string/subtype_mode_keyboard"
+    />
+    <subtype android:icon="@drawable/ic_subtype_keyboard"
+            android:imeSubtypeLocale="es"
+            android:imeSubtypeMode="@string/subtype_mode_keyboard"
+    />
+    <subtype android:icon="@drawable/ic_subtype_keyboard"
+            android:imeSubtypeLocale="fr"
+            android:imeSubtypeMode="@string/subtype_mode_keyboard"
+    />
+    <subtype android:icon="@drawable/ic_subtype_keyboard"
+            android:imeSubtypeLocale="it"
+            android:imeSubtypeMode="@string/subtype_mode_keyboard"
+    />
+    <subtype android:icon="@drawable/ic_subtype_keyboard"
+            android:imeSubtypeLocale="iw"
+            android:imeSubtypeMode="@string/subtype_mode_keyboard"
+    />
+    <subtype android:icon="@drawable/ic_subtype_keyboard"
+            android:imeSubtypeLocale="nb"
+            android:imeSubtypeMode="@string/subtype_mode_keyboard"
+    />
+    <subtype android:icon="@drawable/ic_subtype_keyboard"
+            android:imeSubtypeLocale="nl"
+            android:imeSubtypeMode="@string/subtype_mode_keyboard"
+    />
+    <subtype android:icon="@drawable/ic_subtype_keyboard"
+            android:imeSubtypeLocale="ru"
+            android:imeSubtypeMode="@string/subtype_mode_keyboard"
+    />
+    <subtype android:icon="@drawable/ic_subtype_keyboard"
+            android:imeSubtypeLocale="sr"
+            android:imeSubtypeMode="@string/subtype_mode_keyboard"
+    />
+    <subtype android:icon="@drawable/ic_subtype_keyboard"
+            android:imeSubtypeLocale="sv"
+            android:imeSubtypeMode="@string/subtype_mode_keyboard"
+    />
+    <subtype android:icon="@drawable/ic_subtype_mic"
+            android:imeSubtypeLocale="cs"
+            android:imeSubtypeMode="@string/subtype_mode_voice"
+    />
+    <subtype android:icon="@drawable/ic_subtype_mic"
+            android:imeSubtypeLocale="da"
+            android:imeSubtypeMode="@string/subtype_mode_voice"
+    />
+    <subtype android:icon="@drawable/ic_subtype_mic"
+            android:imeSubtypeLocale="de"
+            android:imeSubtypeMode="@string/subtype_mode_voice"
+    />
+    <subtype android:icon="@drawable/ic_subtype_mic"
+            android:imeSubtypeLocale="en"
+            android:imeSubtypeMode="@string/subtype_mode_voice"
+    />
+    <subtype android:icon="@drawable/ic_subtype_mic"
+            android:imeSubtypeLocale="es"
+            android:imeSubtypeMode="@string/subtype_mode_voice"
+    />
+    <subtype android:icon="@drawable/ic_subtype_mic"
+            android:imeSubtypeLocale="fr"
+            android:imeSubtypeMode="@string/subtype_mode_voice"
+    />
+    <subtype android:icon="@drawable/ic_subtype_mic"
+            android:imeSubtypeLocale="it"
+            android:imeSubtypeMode="@string/subtype_mode_voice"
+    />
+    <subtype android:icon="@drawable/ic_subtype_mic"
+            android:imeSubtypeLocale="iw"
+            android:imeSubtypeMode="@string/subtype_mode_voice"
+    />
+    <subtype android:icon="@drawable/ic_subtype_mic"
+            android:imeSubtypeLocale="nb"
+            android:imeSubtypeMode="@string/subtype_mode_voice"
+    />
+    <subtype android:icon="@drawable/ic_subtype_mic"
+            android:imeSubtypeLocale="nl"
+            android:imeSubtypeMode="@string/subtype_mode_voice"
+    />
+    <subtype android:icon="@drawable/ic_subtype_mic"
+            android:imeSubtypeLocale="ru"
+            android:imeSubtypeMode="@string/subtype_mode_voice"
+    />
+    <subtype android:icon="@drawable/ic_subtype_mic"
+            android:imeSubtypeLocale="sr"
+            android:imeSubtypeMode="@string/subtype_mode_voice"
+    />
+    <subtype android:icon="@drawable/ic_subtype_mic"
+            android:imeSubtypeLocale="sv"
+            android:imeSubtypeMode="@string/subtype_mode_voice"
+    />
+</input-method>
diff --git a/java/res/xml/prefs.xml b/java/res/xml/prefs.xml
index 762ada0..a9ff8ca 100644
--- a/java/res/xml/prefs.xml
+++ b/java/res/xml/prefs.xml
@@ -112,6 +112,15 @@
             android:defaultValue="@bool/enable_autocorrect"
             android:dependency="show_suggestions"
             />
+
+        <CheckBoxPreference
+            android:key="bigram_suggestion"
+            android:title="@string/bigram_suggestion"
+            android:summary="@string/bigram_suggestion_summary"
+            android:persistent="true"
+            android:defaultValue="true"
+            android:dependency="auto_complete"
+            />
     </PreferenceCategory>            
 
 </PreferenceScreen>
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index ddfcaa9..7097844 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -94,7 +94,7 @@
     private static final String PREF_QUICK_FIXES = "quick_fixes";
     private static final String PREF_SHOW_SUGGESTIONS = "show_suggestions";
     private static final String PREF_AUTO_COMPLETE = "auto_complete";
-    //private static final String PREF_BIGRAM_SUGGESTIONS = "bigram_suggestion";
+    private static final String PREF_BIGRAM_SUGGESTIONS = "bigram_suggestion";
     private static final String PREF_VOICE_MODE = "voice_mode";
 
     // Whether or not the user has used voice input before (and thus, whether to show the
@@ -195,8 +195,7 @@
     private boolean mJustAddedAutoSpace;
     private boolean mAutoCorrectEnabled;
     private boolean mReCorrectionEnabled;
-    // Bigram Suggestion is disabled in this version.
-    private final boolean mBigramSuggestionEnabled = false;
+    private boolean mBigramSuggestionEnabled;
     private boolean mAutoCorrectOn;
     // TODO move this state variable outside LatinIME
     private boolean mCapsLock;
@@ -1788,13 +1787,13 @@
     }
 
     public void pickSuggestionManually(int index, CharSequence suggestion) {
-        if (mAfterVoiceInput && mShowingVoiceSuggestions) mVoiceInput.logNBestChoose(index);
         List<CharSequence> suggestions = mCandidateView.getSuggestions();
-
-        if (mAfterVoiceInput && !mShowingVoiceSuggestions) {
+        if (mAfterVoiceInput && mShowingVoiceSuggestions) {
             mVoiceInput.flushAllTextModificationCounters();
             // send this intent AFTER logging any prior aggregated edits.
-            mVoiceInput.logTextModifiedByChooseSuggestion(suggestion.length());
+            mVoiceInput.logTextModifiedByChooseSuggestion(suggestion.toString(), index,
+                                                          mWordSeparators,
+                                                          getCurrentInputConnection());
         }
 
         final boolean correcting = TextEntryState.isCorrecting();
@@ -2426,8 +2425,7 @@
         }
         mAutoCorrectEnabled = sp.getBoolean(PREF_AUTO_COMPLETE,
                 mResources.getBoolean(R.bool.enable_autocorrect)) & mShowSuggestions;
-        //mBigramSuggestionEnabled = sp.getBoolean(
-        //        PREF_BIGRAM_SUGGESTIONS, true) & mShowSuggestions;
+        mBigramSuggestionEnabled = sp.getBoolean(PREF_BIGRAM_SUGGESTIONS, true) & mShowSuggestions;
         updateCorrectionMode();
         updateAutoTextEnabled(mResources.getConfiguration().locale);
         mLanguageSwitcher.loadLocales(sp);
diff --git a/java/src/com/android/inputmethod/voice/VoiceInput.java b/java/src/com/android/inputmethod/voice/VoiceInput.java
index f24c180..4c54dd3 100644
--- a/java/src/com/android/inputmethod/voice/VoiceInput.java
+++ b/java/src/com/android/inputmethod/voice/VoiceInput.java
@@ -16,6 +16,7 @@
 
 package com.android.inputmethod.voice;
 
+import com.android.inputmethod.latin.EditingUtil;
 import com.android.inputmethod.latin.R;
 
 import android.content.ContentResolver;
@@ -30,6 +31,7 @@
 import android.speech.SpeechRecognizer;
 import android.speech.RecognizerIntent;
 import android.util.Log;
+import android.view.inputmethod.InputConnection;
 import android.view.View;
 import android.view.View.OnClickListener;
 
@@ -423,8 +425,14 @@
         mLogger.textModifiedByTypingDeletion(length);
     }
 
-    public void logTextModifiedByChooseSuggestion(int length) {
-        mLogger.textModifiedByChooseSuggestion(length);
+    public void logTextModifiedByChooseSuggestion(String suggestion, int index,
+                                                  String wordSeparators, InputConnection ic) {
+        EditingUtil.Range range = new EditingUtil.Range();
+        String wordToBeReplaced = EditingUtil.getWordAtCursor(ic, wordSeparators, range);
+        // If we enable phrase-based alternatives, only send up the first word
+        // in suggestion and wordToBeReplaced.
+        mLogger.textModifiedByChooseSuggestion(suggestion.length(), wordToBeReplaced.length(),
+                                               index, wordToBeReplaced, suggestion);
     }
 
     public void logKeyboardWarningDialogShown() {
@@ -455,10 +463,6 @@
         mLogger.voiceInputDelivered(length);
     }
 
-    public void logNBestChoose(int index) {
-        mLogger.nBestChoose(index);
-    }
-
     public void logInputEnded() {
         mLogger.inputEnded();
     }
diff --git a/java/src/com/android/inputmethod/voice/VoiceInputLogger.java b/java/src/com/android/inputmethod/voice/VoiceInputLogger.java
index 9d3a920..4d50f5e 100644
--- a/java/src/com/android/inputmethod/voice/VoiceInputLogger.java
+++ b/java/src/com/android/inputmethod/voice/VoiceInputLogger.java
@@ -178,20 +178,19 @@
         mContext.sendBroadcast(i);
     }
 
-    public void textModifiedByChooseSuggestion(int length) {
+  public void textModifiedByChooseSuggestion(int suggestionLength, int replacedPhraseLength,
+                                             int index, String before, String after) {
         Intent i = newLoggingBroadcast(LoggingEvents.VoiceIme.TEXT_MODIFIED);
-        i.putExtra(LoggingEvents.VoiceIme.EXTRA_TEXT_MODIFIED_LENGTH, length);
+        i.putExtra(LoggingEvents.VoiceIme.EXTRA_TEXT_MODIFIED_LENGTH, suggestionLength);
+        i.putExtra(LoggingEvents.VoiceIme.EXTRA_TEXT_REPLACED_LENGTH, replacedPhraseLength);
         i.putExtra(LoggingEvents.VoiceIme.EXTRA_TEXT_MODIFIED_TYPE,
                 LoggingEvents.VoiceIme.TEXT_MODIFIED_TYPE_CHOOSE_SUGGESTION);
+        i.putExtra(LoggingEvents.VoiceIme.EXTRA_N_BEST_CHOOSE_INDEX, index);
+        i.putExtra(LoggingEvents.VoiceIme.EXTRA_BEFORE_N_BEST_CHOOSE, before);
+        i.putExtra(LoggingEvents.VoiceIme.EXTRA_AFTER_N_BEST_CHOOSE, after);
         mContext.sendBroadcast(i);
     }
 
-    public void nBestChoose(int index) {
-        Intent i = newLoggingBroadcast(LoggingEvents.VoiceIme.N_BEST_CHOOSE);
-        i.putExtra(LoggingEvents.VoiceIme.EXTRA_N_BEST_CHOOSE_INDEX, index);
-        mContext.sendBroadcast(i);
-    }
-    
     public void inputEnded() {
         mContext.sendBroadcast(newLoggingBroadcast(LoggingEvents.VoiceIme.INPUT_ENDED));
     }