Merge "Make native bigram dictionary const"
diff --git a/java/res/values-zh-rCN/strings.xml b/java/res/values-zh-rCN/strings.xml
index f5e38f9..4907f20 100644
--- a/java/res/values-zh-rCN/strings.xml
+++ b/java/res/values-zh-rCN/strings.xml
@@ -24,7 +24,7 @@
     <string name="aosp_android_keyboard_ime_name" msgid="7877134937939182296">"Android 键盘 (AOSP)"</string>
     <string name="english_ime_settings" msgid="6661589557206947774">"Android 键盘设置"</string>
     <string name="english_ime_input_options" msgid="3909945612939668554">"输入选项"</string>
-    <string name="english_ime_research_log" msgid="8492602295696577851">"探究日志命令"</string>
+    <string name="english_ime_research_log" msgid="8492602295696577851">"研究记录命令"</string>
     <string name="spell_checker_service_name" msgid="7338064335159755926">"Android 拼写检查工具"</string>
     <string name="aosp_spell_checker_service_name" msgid="6985142605330377819">"Android 拼写检查工具 (AOSP)"</string>
     <string name="android_spell_checker_settings" msgid="5822324635435443689">"拼写检查设置"</string>
@@ -112,12 +112,12 @@
     <string name="voice_input_modes_summary_off" msgid="63875609591897607">"语音输入功能已停用"</string>
     <string name="configure_input_method" msgid="373356270290742459">"配置输入法"</string>
     <string name="language_selection_title" msgid="1651299598555326750">"输入语言"</string>
-    <string name="note_timestamp_for_researchlog" msgid="1889446857977976026">"在日志中记上时间"</string>
-    <string name="notify_recorded_timestamp" msgid="8036429032449612051">"已记录时间"</string>
+    <string name="note_timestamp_for_researchlog" msgid="1889446857977976026">"标记记录中的时间"</string>
+    <string name="notify_recorded_timestamp" msgid="8036429032449612051">"已标记时间"</string>
     <string name="do_not_log_this_session" msgid="413762473641146336">"不记录本次会话"</string>
-    <string name="notify_session_log_deleting" msgid="3299507647764414623">"正在删除会话日志"</string>
-    <string name="notify_session_log_deleted" msgid="8687927130100934686">"会话日志已删除"</string>
-    <string name="notify_session_log_not_deleted" msgid="2592908998810755970">"未能删除会话日志"</string>
+    <string name="notify_session_log_deleting" msgid="3299507647764414623">"正在删除会话记录"</string>
+    <string name="notify_session_log_deleted" msgid="8687927130100934686">"会话记录已删除"</string>
+    <string name="notify_session_log_not_deleted" msgid="2592908998810755970">"未能删除会话记录"</string>
     <string name="select_language" msgid="3693815588777926848">"输入语言"</string>
     <string name="hint_add_to_dictionary" msgid="573678656946085380">"再次触摸即可保存"</string>
     <string name="has_dictionary" msgid="6071847973466625007">"有可用词典"</string>
diff --git a/java/res/xml/prefs.xml b/java/res/xml/prefs.xml
index 3598a68..1379819 100644
--- a/java/res/xml/prefs.xml
+++ b/java/res/xml/prefs.xml
@@ -122,7 +122,6 @@
                 android:defaultValue="true" />
             <CheckBoxPreference
                 android:key="next_word_prediction"
-                android:dependency="next_word_suggestion"
                 android:title="@string/bigram_prediction"
                 android:summary="@string/bigram_prediction_summary"
                 android:persistent="true"
diff --git a/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboardView.java b/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboardView.java
index b4fa86d..be7644f 100644
--- a/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/MoreKeysKeyboardView.java
@@ -159,7 +159,7 @@
 
     @Override
     public boolean dismissMoreKeysPanel() {
-        if (mIsDismissing) return false;
+        if (mIsDismissing || mController == null) return false;
         mIsDismissing = true;
         final boolean dismissed = mController.dismissMoreKeysPanel();
         mIsDismissing = false;
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index b3a0f54..77a0ccf 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -1627,7 +1627,7 @@
     }
 
     public boolean isSuggestionsRequested() {
-        // TODO: move this method to mSettingsValues
+        // TODO: move this method to mCurrentSettings
         return (null != mInputAttributes && mInputAttributes.mIsSettingsSuggestionStripOn)
                 && (mCurrentSettings.isCorrectionOn() || isShowingSuggestionsStrip());
     }
@@ -1953,12 +1953,16 @@
             // showSuggestions will retrieve the word near the cursor, we don't want that here)
             showSuggestions(suggestedWords, "");
         } else {
-            if (!isShowingPunctuationList()) setPunctuationSuggestions();
+            clearSuggestions();
         }
     }
 
     public void setPunctuationSuggestions() {
-        setSuggestions(mCurrentSettings.mSuggestPuncList, false);
+        if (mCurrentSettings.mBigramPredictionEnabled) {
+            clearSuggestions();
+        } else {
+            setSuggestions(mCurrentSettings.mSuggestPuncList, false);
+        }
         setAutoCorrectionIndicator(false);
         setSuggestionStripShown(isSuggestionsStripVisible());
     }
diff --git a/java/src/com/android/inputmethod/latin/Settings.java b/java/src/com/android/inputmethod/latin/Settings.java
index c9ff0a5..152d668 100644
--- a/java/src/com/android/inputmethod/latin/Settings.java
+++ b/java/src/com/android/inputmethod/latin/Settings.java
@@ -149,10 +149,13 @@
             generalSettings.removePreference(mVoicePreference);
         }
 
+        final PreferenceGroup advancedSettings =
+                (PreferenceGroup) findPreference(PREF_ADVANCED_SETTINGS);
+        // Remove those meaningless options for now. TODO: delete them for good
+        advancedSettings.removePreference(findPreference(PREF_BIGRAM_SUGGESTION));
+        advancedSettings.removePreference(findPreference(PREF_KEY_ENABLE_SPAN_INSERT));
         if (!VibratorUtils.getInstance(context).hasVibrator()) {
             generalSettings.removePreference(findPreference(PREF_VIBRATE_ON));
-            final PreferenceGroup advancedSettings =
-                    (PreferenceGroup) findPreference(PREF_ADVANCED_SETTINGS);
             if (null != advancedSettings) { // Theoretically advancedSettings cannot be null
                 advancedSettings.removePreference(findPreference(PREF_VIBRATION_DURATION_SETTINGS));
             }
diff --git a/java/src/com/android/inputmethod/latin/SettingsValues.java b/java/src/com/android/inputmethod/latin/SettingsValues.java
index 6a79aa6..f8a0a4d 100644
--- a/java/src/com/android/inputmethod/latin/SettingsValues.java
+++ b/java/src/com/android/inputmethod/latin/SettingsValues.java
@@ -151,8 +151,8 @@
                 && isBigramSuggestionEnabled(prefs, res, mAutoCorrectEnabled);
         mBigramPredictionEnabled = mBigramSuggestionEnabled
                 && isBigramPredictionEnabled(prefs, res);
-        mEnableSuggestionSpanInsertion =
-                prefs.getBoolean(Settings.PREF_KEY_ENABLE_SPAN_INSERT, true);
+        // TODO: remove mEnableSuggestionSpanInsertion. It's always true.
+        mEnableSuggestionSpanInsertion = true;
         mVibrationDurationSettingsRawValue =
                 prefs.getInt(Settings.PREF_VIBRATION_DURATION_SETTINGS, -1);
         mKeypressSoundVolumeRawValue = prefs.getFloat(Settings.PREF_KEYPRESS_SOUND_VOLUME, -1.0f);
@@ -288,13 +288,8 @@
 
     private static boolean isBigramSuggestionEnabled(final SharedPreferences sp,
             final Resources resources, final boolean autoCorrectEnabled) {
-        final boolean showBigramSuggestionsOption = resources.getBoolean(
-                R.bool.config_enable_next_word_suggestions_option);
-        if (!showBigramSuggestionsOption) {
-            return autoCorrectEnabled;
-        }
-        return sp.getBoolean(Settings.PREF_BIGRAM_SUGGESTION, resources.getBoolean(
-                R.bool.config_default_next_word_suggestions));
+        // TODO: remove this method. Bigram suggestion is always true.
+        return true;
     }
 
     private static boolean isBigramPredictionEnabled(final SharedPreferences sp,
diff --git a/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java b/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java
index 8a29dcc..19287e3 100644
--- a/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java
+++ b/java/src/com/android/inputmethod/latin/suggestions/MoreSuggestionsView.java
@@ -167,7 +167,7 @@
 
     @Override
     public boolean dismissMoreKeysPanel() {
-        if (mIsDismissing) return false;
+        if (mIsDismissing || mController == null) return false;
         mIsDismissing = true;
         final boolean dismissed = mController.dismissMoreKeysPanel();
         mIsDismissing = false;
diff --git a/java/src/com/android/inputmethod/latin/suggestions/SuggestionsView.java b/java/src/com/android/inputmethod/latin/suggestions/SuggestionsView.java
index 3d593aa..e86390b 100644
--- a/java/src/com/android/inputmethod/latin/suggestions/SuggestionsView.java
+++ b/java/src/com/android/inputmethod/latin/suggestions/SuggestionsView.java
@@ -670,7 +670,7 @@
     }
 
     public void setSuggestions(SuggestedWords suggestedWords) {
-        if (suggestedWords == null || suggestedWords.size() == 0)
+        if (suggestedWords == null)
             return;
 
         clear();
@@ -884,5 +884,6 @@
         super.onDetachedFromWindow();
         mHandler.cancelAllMessages();
         hidePreview();
+        dismissMoreSuggestions();
     }
 }