Merge "Add final and volatile for members of InputLogic."
diff --git a/java/res/layout/suggestions_strip.xml b/java/res/layout/suggestions_strip.xml
index b962abe..0b61499 100644
--- a/java/res/layout/suggestions_strip.xml
+++ b/java/res/layout/suggestions_strip.xml
@@ -52,7 +52,6 @@
         android:layout_height="match_parent">
         <TextView
             android:id="@+id/important_notice_title"
-            android:text="@string/important_notice_title"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:padding="6sp"
diff --git a/java/res/values-af/strings-config-important-notice.xml b/java/res/values-af/strings-config-important-notice.xml
index eca184a..f0857c9 100644
--- a/java/res/values-af/strings-config-important-notice.xml
+++ b/java/res/values-af/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"Leer uit jou kommunikasie en getikte data om voorstelle te verbeter"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-am/strings-config-important-notice.xml b/java/res/values-am/strings-config-important-notice.xml
index 2fba008..f0857c9 100644
--- a/java/res/values-am/strings-config-important-notice.xml
+++ b/java/res/values-am/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"የጥቆማ አስተያየቶችን ለማሻሻል ከእርስዎ ግንኙነቶች እና የተተየበ ውሂብ ይማሩ"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-ar/strings-config-important-notice.xml b/java/res/values-ar/strings-config-important-notice.xml
index b2c4d30..f0857c9 100644
--- a/java/res/values-ar/strings-config-important-notice.xml
+++ b/java/res/values-ar/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"التعلم من اتصالاتك والبيانات التي تكتبها لتحسين الاقتراحات"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-az-rAZ/strings-config-important-notice.xml b/java/res/values-az-rAZ/strings-config-important-notice.xml
index 477a270..f0857c9 100644
--- a/java/res/values-az-rAZ/strings-config-important-notice.xml
+++ b/java/res/values-az-rAZ/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"Təklifləri inkişaf etdirmək üçün rabitənizdən və yazılmış datadan məlumat əldə edin"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-bg/strings-config-important-notice.xml b/java/res/values-bg/strings-config-important-notice.xml
index 2ab2f33..f0857c9 100644
--- a/java/res/values-bg/strings-config-important-notice.xml
+++ b/java/res/values-bg/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"Ползване на съобщ. ви и въведени от вас данни за подобряване на предложенията"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-ca/strings-config-important-notice.xml b/java/res/values-ca/strings-config-important-notice.xml
index a3761a7..f0857c9 100644
--- a/java/res/values-ca/strings-config-important-notice.xml
+++ b/java/res/values-ca/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"Considera comunicacions i dades introduïdes per millorar sugger."</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-cs/strings-config-important-notice.xml b/java/res/values-cs/strings-config-important-notice.xml
index a70140d..f0857c9 100644
--- a/java/res/values-cs/strings-config-important-notice.xml
+++ b/java/res/values-cs/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"Zlepšovat návrhy na základě vaší komunikace a zadaných dat"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-da/strings-config-important-notice.xml b/java/res/values-da/strings-config-important-notice.xml
index 14d870e..f0857c9 100644
--- a/java/res/values-da/strings-config-important-notice.xml
+++ b/java/res/values-da/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"Giv bedre forslag ud fra tidligere kommunikation og data"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-de/strings-config-important-notice.xml b/java/res/values-de/strings-config-important-notice.xml
index 11430c3..f0857c9 100644
--- a/java/res/values-de/strings-config-important-notice.xml
+++ b/java/res/values-de/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"Vorschläge anhand bisheriger Nachrichten und Eingaben verbessern"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-el/strings-config-important-notice.xml b/java/res/values-el/strings-config-important-notice.xml
index f47f0dd..f0857c9 100644
--- a/java/res/values-el/strings-config-important-notice.xml
+++ b/java/res/values-el/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"Χρήση επικοινωνιών/δεδομένων πληκτρολόγησης για βελτίωση προτάσεων"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-en-rGB/strings-config-important-notice.xml b/java/res/values-en-rGB/strings-config-important-notice.xml
index 3b41bfa..f0857c9 100644
--- a/java/res/values-en-rGB/strings-config-important-notice.xml
+++ b/java/res/values-en-rGB/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"Learn from your communications and typed data to improve suggestions"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-en-rIN/strings-config-important-notice.xml b/java/res/values-en-rIN/strings-config-important-notice.xml
index 3b41bfa..f0857c9 100644
--- a/java/res/values-en-rIN/strings-config-important-notice.xml
+++ b/java/res/values-en-rIN/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"Learn from your communications and typed data to improve suggestions"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-es-rUS/strings-config-important-notice.xml b/java/res/values-es-rUS/strings-config-important-notice.xml
index f019ee4..f0857c9 100644
--- a/java/res/values-es-rUS/strings-config-important-notice.xml
+++ b/java/res/values-es-rUS/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"Aprende de mensajes y datos ingresados para mejorar sugerencias."</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-es/strings-config-important-notice.xml b/java/res/values-es/strings-config-important-notice.xml
index 79ea6b9..f0857c9 100644
--- a/java/res/values-es/strings-config-important-notice.xml
+++ b/java/res/values-es/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"Aprende de mensajes y datos escritos para mejorar sugerencias"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-et-rEE/strings-config-important-notice.xml b/java/res/values-et-rEE/strings-config-important-notice.xml
index d6c5b73..f0857c9 100644
--- a/java/res/values-et-rEE/strings-config-important-notice.xml
+++ b/java/res/values-et-rEE/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"Suhtlusest ja sisest. andmetest õppimine soovituste täiustamiseks"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-fa/strings-config-important-notice.xml b/java/res/values-fa/strings-config-important-notice.xml
index 8f4d091..f0857c9 100644
--- a/java/res/values-fa/strings-config-important-notice.xml
+++ b/java/res/values-fa/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"یادگیری از ارتباطات و اطلاعات تایپ شده شما برای بهبود پیشنهادات"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-fi/strings-config-important-notice.xml b/java/res/values-fi/strings-config-important-notice.xml
index d4b1a11..f0857c9 100644
--- a/java/res/values-fi/strings-config-important-notice.xml
+++ b/java/res/values-fi/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"Ehdotusten parannus viestinnän ja kirjoitettujen tietojen avulla"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-fr-rCA/strings-config-important-notice.xml b/java/res/values-fr-rCA/strings-config-important-notice.xml
index 9f0dcc1..f0857c9 100644
--- a/java/res/values-fr-rCA/strings-config-important-notice.xml
+++ b/java/res/values-fr-rCA/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"Apprendre de vos comm. et données entrées pour amél. suggestions"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-fr/strings-config-important-notice.xml b/java/res/values-fr/strings-config-important-notice.xml
index 9013a39..f0857c9 100644
--- a/java/res/values-fr/strings-config-important-notice.xml
+++ b/java/res/values-fr/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"Améliorer suggestions en fonction des messages et données saisies"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-hi/strings-config-important-notice.xml b/java/res/values-hi/strings-config-important-notice.xml
index 45240b0..f0857c9 100644
--- a/java/res/values-hi/strings-config-important-notice.xml
+++ b/java/res/values-hi/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"सुझावों में सुधार हेतु अपने संचार और लिखे गए डेटा से जानकारी पाएं"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-hr/strings-config-important-notice.xml b/java/res/values-hr/strings-config-important-notice.xml
index 553fbf3..f0857c9 100644
--- a/java/res/values-hr/strings-config-important-notice.xml
+++ b/java/res/values-hr/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"Upotrijebi poruke i upisane podatke za poboljšanje prijedloga"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-hu/strings-config-important-notice.xml b/java/res/values-hu/strings-config-important-notice.xml
index af78095..f0857c9 100644
--- a/java/res/values-hu/strings-config-important-notice.xml
+++ b/java/res/values-hu/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"Javaslatok javítása a kommunikáció és begépelt adatok alapján"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-hy-rAM/strings-config-important-notice.xml b/java/res/values-hy-rAM/strings-config-important-notice.xml
index e6ace36..f0857c9 100644
--- a/java/res/values-hy-rAM/strings-config-important-notice.xml
+++ b/java/res/values-hy-rAM/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"Բարելավեք առաջարկները` ձեր զրույցներից և մուտքագրած տվյալներից"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-in/strings-config-important-notice.xml b/java/res/values-in/strings-config-important-notice.xml
index 603b408..f0857c9 100644
--- a/java/res/values-in/strings-config-important-notice.xml
+++ b/java/res/values-in/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"Belajar dari komunikasi &amp; data terketik untuk meningkatkan saran"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-it/strings-config-important-notice.xml b/java/res/values-it/strings-config-important-notice.xml
index 4a4bb07..f0857c9 100644
--- a/java/res/values-it/strings-config-important-notice.xml
+++ b/java/res/values-it/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"Usa comunicazioni e dati digitati per migliorare i suggerimenti"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-iw/strings-config-important-notice.xml b/java/res/values-iw/strings-config-important-notice.xml
index c04e240..f0857c9 100644
--- a/java/res/values-iw/strings-config-important-notice.xml
+++ b/java/res/values-iw/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"למד מהתכתבויות ומנתונים שהקלדת כדי לשפר את ההצעות"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-ja/strings-config-important-notice.xml b/java/res/values-ja/strings-config-important-notice.xml
index 0d4da7e..f0857c9 100644
--- a/java/res/values-ja/strings-config-important-notice.xml
+++ b/java/res/values-ja/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"メッセージなどのやり取りや入力したデータから入力候補を予測します"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-ka-rGE/strings-config-important-notice.xml b/java/res/values-ka-rGE/strings-config-important-notice.xml
index fe2d136..f0857c9 100644
--- a/java/res/values-ka-rGE/strings-config-important-notice.xml
+++ b/java/res/values-ka-rGE/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"უკეთესი შეთავაზებისთვის თქვენი კომუნიკაციიდან და ტექსტიდან სწავლა"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-km-rKH/strings-config-important-notice.xml b/java/res/values-km-rKH/strings-config-important-notice.xml
index 301e544..f0857c9 100644
--- a/java/res/values-km-rKH/strings-config-important-notice.xml
+++ b/java/res/values-km-rKH/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"រៀន​ពី​ការ​ភ្ជាប់​របស់​អ្នក និង​ទិន្នន័យ​​ដែល​បាន​បញ្ចូល ដើម្បី​​លើក​កម្ពស់​ការ​ស្នើ"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-ko/strings-config-important-notice.xml b/java/res/values-ko/strings-config-important-notice.xml
index 1ede0e5..f0857c9 100644
--- a/java/res/values-ko/strings-config-important-notice.xml
+++ b/java/res/values-ko/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"사용자의 대화 내용과 입력한 데이터를 통해 추천 검색어의 정확도를 개선합니다."</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-lo-rLA/strings-config-important-notice.xml b/java/res/values-lo-rLA/strings-config-important-notice.xml
index 6b2bc5b..f0857c9 100644
--- a/java/res/values-lo-rLA/strings-config-important-notice.xml
+++ b/java/res/values-lo-rLA/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"ຮຽນຮູ້ຈາກການສື່ສານ ແລະຂໍ້ມູນທີ່ເຄີຍພິມຂອງທ່ານເພື່ອປັບປຸງຄຳແນະນຳ"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-lt/strings-config-important-notice.xml b/java/res/values-lt/strings-config-important-notice.xml
index 7468e4a..f0857c9 100644
--- a/java/res/values-lt/strings-config-important-notice.xml
+++ b/java/res/values-lt/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"Mokytis iš ryšių ir įvestų duomenų, siekiant pagerinti pasiūlymus"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-lv/strings-config-important-notice.xml b/java/res/values-lv/strings-config-important-notice.xml
index 8a80a0b..f0857c9 100644
--- a/java/res/values-lv/strings-config-important-notice.xml
+++ b/java/res/values-lv/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"Izmantojiet saziņu un ievadītos datus, lai uzlabotu ieteikumus."</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-mn-rMN/strings-config-important-notice.xml b/java/res/values-mn-rMN/strings-config-important-notice.xml
index a101765..f0857c9 100644
--- a/java/res/values-mn-rMN/strings-config-important-notice.xml
+++ b/java/res/values-mn-rMN/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"Зөвлөмжүүдийг сайжруулахын тулд таны харилцсан, бичсэн зүйлсээс суралцана"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-ms-rMY/strings-config-important-notice.xml b/java/res/values-ms-rMY/strings-config-important-notice.xml
index 47ef54e..f0857c9 100644
--- a/java/res/values-ms-rMY/strings-config-important-notice.xml
+++ b/java/res/values-ms-rMY/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"Belajar daripada komunikasi &amp; data ditaip utk memperbaik cadangan"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-nb/strings-config-important-notice.xml b/java/res/values-nb/strings-config-important-notice.xml
index ab2563b..f0857c9 100644
--- a/java/res/values-nb/strings-config-important-notice.xml
+++ b/java/res/values-nb/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"Lær av kommunikasjonen og inndataene dine for å få bedre forslag"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-ne-rNP/strings-config-important-notice.xml b/java/res/values-ne-rNP/strings-config-important-notice.xml
index cb74c95..f0857c9 100644
--- a/java/res/values-ne-rNP/strings-config-important-notice.xml
+++ b/java/res/values-ne-rNP/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"सुझावहरू सुधार गर्न तपाईँको सञ्‍चारहरू र टाइप गरिएको डेटाबाट जान्नुहोस्"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-nl/strings-config-important-notice.xml b/java/res/values-nl/strings-config-important-notice.xml
index bb12d41..f0857c9 100644
--- a/java/res/values-nl/strings-config-important-notice.xml
+++ b/java/res/values-nl/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"Suggesties verbeteren met uw communicatie en getypte gegevens"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-pl/strings-config-important-notice.xml b/java/res/values-pl/strings-config-important-notice.xml
index f87cd2b..f0857c9 100644
--- a/java/res/values-pl/strings-config-important-notice.xml
+++ b/java/res/values-pl/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"Analizuj wiadomości i wpisywane dane, by ulepszać podpowiedzi"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-pt-rPT/strings-config-important-notice.xml b/java/res/values-pt-rPT/strings-config-important-notice.xml
index f330c4b..f0857c9 100644
--- a/java/res/values-pt-rPT/strings-config-important-notice.xml
+++ b/java/res/values-pt-rPT/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"Aprender com comunicações e dados introd. para melhorar sugestões"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-pt/strings-config-important-notice.xml b/java/res/values-pt/strings-config-important-notice.xml
index de5ce0c..f0857c9 100644
--- a/java/res/values-pt/strings-config-important-notice.xml
+++ b/java/res/values-pt/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"Aprender com mensagens e dados digitados para melhorar sugestões"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-ro/strings-config-important-notice.xml b/java/res/values-ro/strings-config-important-notice.xml
index bbd02e8..f0857c9 100644
--- a/java/res/values-ro/strings-config-important-notice.xml
+++ b/java/res/values-ro/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"Utilizați comunic. și datele introd. pt. a îmbunătăți sugestiile"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-ru/strings-config-important-notice.xml b/java/res/values-ru/strings-config-important-notice.xml
index 01fa5bd..f0857c9 100644
--- a/java/res/values-ru/strings-config-important-notice.xml
+++ b/java/res/values-ru/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"Устройство будет запоминать то, что вы вводите чаще всего"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-sk/strings-config-important-notice.xml b/java/res/values-sk/strings-config-important-notice.xml
index 0cabcda..f0857c9 100644
--- a/java/res/values-sk/strings-config-important-notice.xml
+++ b/java/res/values-sk/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"Zlepšovať návrhy na základe komunikácie a zadaných údajov"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-sl/strings-config-important-notice.xml b/java/res/values-sl/strings-config-important-notice.xml
index 2bbdee3..f0857c9 100644
--- a/java/res/values-sl/strings-config-important-notice.xml
+++ b/java/res/values-sl/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"Vaša sporočila in vnesene podatke uporabi za boljše predloge"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-sr/strings-config-important-notice.xml b/java/res/values-sr/strings-config-important-notice.xml
index 0a4510b..f0857c9 100644
--- a/java/res/values-sr/strings-config-important-notice.xml
+++ b/java/res/values-sr/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"Користи комуникације и унете податке ради побољшања предлога"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-sv/strings-config-important-notice.xml b/java/res/values-sv/strings-config-important-notice.xml
index bc56640..f0857c9 100644
--- a/java/res/values-sv/strings-config-important-notice.xml
+++ b/java/res/values-sv/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"Få bättre förslag genom att använda tidigare angiven data och annan kommunikation"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-sw/strings-config-important-notice.xml b/java/res/values-sw/strings-config-important-notice.xml
index b5aac5f..f0857c9 100644
--- a/java/res/values-sw/strings-config-important-notice.xml
+++ b/java/res/values-sw/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"Jifunze kutoka kwa mawasiliano yako na data iliyocharazwa ili kuboresha mapendekezo"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-th/strings-config-important-notice.xml b/java/res/values-th/strings-config-important-notice.xml
index 9fb02c4..f0857c9 100644
--- a/java/res/values-th/strings-config-important-notice.xml
+++ b/java/res/values-th/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"เรียนรู้จากการสื่อสารและข้อมูลที่พิมพ์ของคุณเพื่อปรับปรุงคำแนะนำ"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-tl/strings-config-important-notice.xml b/java/res/values-tl/strings-config-important-notice.xml
index 454208c..f0857c9 100644
--- a/java/res/values-tl/strings-config-important-notice.xml
+++ b/java/res/values-tl/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"Pahusayin ang suhestiyon batay sa pag-uusap at na-type na data"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-tr/strings-config-important-notice.xml b/java/res/values-tr/strings-config-important-notice.xml
index 3f15b82..f0857c9 100644
--- a/java/res/values-tr/strings-config-important-notice.xml
+++ b/java/res/values-tr/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"Önerileri iyileştirmek için iletişimlerimden ve yazılan verilerden öğren"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-uk/strings-config-important-notice.xml b/java/res/values-uk/strings-config-important-notice.xml
index cb97f7f..f0857c9 100644
--- a/java/res/values-uk/strings-config-important-notice.xml
+++ b/java/res/values-uk/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"Пристрій буде запам’ятовувати, що ви пишете, надсилаєте й отримуєте"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-vi/strings-config-important-notice.xml b/java/res/values-vi/strings-config-important-notice.xml
index 8586112..f0857c9 100644
--- a/java/res/values-vi/strings-config-important-notice.xml
+++ b/java/res/values-vi/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"Tìm hiểu từ thông tin liên lạc và dữ liệu đã nhập của bạn để cải thiện đề xuất"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-zh-rCN/strings-config-important-notice.xml b/java/res/values-zh-rCN/strings-config-important-notice.xml
index 9ca18b5..f0857c9 100644
--- a/java/res/values-zh-rCN/strings-config-important-notice.xml
+++ b/java/res/values-zh-rCN/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"根据您的通信记录和以往输入的数据来完善建议"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-zh-rHK/strings-config-important-notice.xml b/java/res/values-zh-rHK/strings-config-important-notice.xml
index 6b38076..f0857c9 100644
--- a/java/res/values-zh-rHK/strings-config-important-notice.xml
+++ b/java/res/values-zh-rHK/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"根據您的通訊記錄和已輸入的資料改善建議"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-zh-rTW/strings-config-important-notice.xml b/java/res/values-zh-rTW/strings-config-important-notice.xml
index a3948d2..f0857c9 100644
--- a/java/res/values-zh-rTW/strings-config-important-notice.xml
+++ b/java/res/values-zh-rTW/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"根據您的通訊紀錄和以往輸入的資料改善建議項目"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values-zu/strings-config-important-notice.xml b/java/res/values-zu/strings-config-important-notice.xml
index 2e75539..f0857c9 100644
--- a/java/res/values-zu/strings-config-important-notice.xml
+++ b/java/res/values-zu/strings-config-important-notice.xml
@@ -22,5 +22,6 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="important_notice_title" msgid="1836002733109536160"></string>
     <string name="important_notice_contents" msgid="897137043719116217"></string>
-    <string name="use_personalized_dicts_summary" msgid="4331467814162666438">"Funda kusuka kwezoxhumano zakho nedatha ethayiphiwe ukuze uthuthukise iziphakamiso"</string>
+    <!-- no translation found for use_personalized_dicts_summary (590432261305469627) -->
+    <skip />
 </resources>
diff --git a/java/res/values/config-common.xml b/java/res/values/config-common.xml
index 224aabd..20d5860 100644
--- a/java/res/values/config-common.xml
+++ b/java/res/values/config-common.xml
@@ -35,10 +35,10 @@
 
     <integer name="config_ignore_alt_code_key_timeout">350</integer>
 
-    <integer name="config_key_preview_show_up_duration">0</integer>
-    <integer name="config_key_preview_dismiss_duration">70</integer>
-    <fraction name="config_key_preview_show_up_start_scale">100%</fraction>
-    <fraction name="config_key_preview_dismiss_end_scale">100%</fraction>
+    <integer name="config_key_preview_show_up_duration">17</integer>
+    <integer name="config_key_preview_dismiss_duration">53</integer>
+    <fraction name="config_key_preview_show_up_start_scale">98%</fraction>
+    <fraction name="config_key_preview_dismiss_end_scale">94%</fraction>
     <!-- TODO: consolidate key preview linger timeout with the above animation parameters. -->
     <integer name="config_key_preview_linger_timeout">70</integer>
     <!-- Suppress showing key preview duration after batch input in millisecond -->
diff --git a/java/res/values/strings-config-important-notice.xml b/java/res/values/strings-config-important-notice.xml
index 6a9fe28..3be95d3 100644
--- a/java/res/values/strings-config-important-notice.xml
+++ b/java/res/values/strings-config-important-notice.xml
@@ -20,7 +20,8 @@
 
 <resources>
     <integer name="config_important_notice_version">0</integer>
-    <!-- The title of the important notice displayed on the suggestion strip. -->
+    <!-- TODO: Make title and contents resource to string array indexed by version. -->
+    <!-- The text of the important notice displayed on the suggestion strip. -->
     <string name="important_notice_title"></string>
     <!-- The contents of the important notice. -->
     <string name="important_notice_contents"></string>
diff --git a/java/src/com/android/inputmethod/keyboard/KeyDetector.java b/java/src/com/android/inputmethod/keyboard/KeyDetector.java
index 282c8e8..03d9def 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyDetector.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyDetector.java
@@ -16,8 +16,6 @@
 
 package com.android.inputmethod.keyboard;
 
-import com.android.inputmethod.latin.Constants;
-
 /**
  * This class handles key detection.
  */
@@ -41,13 +39,15 @@
      * @param keyHysteresisDistanceForSlidingModifier the same parameter for sliding input that
      * starts from a modifier key such as shift and symbols key.
      */
-    public KeyDetector(float keyHysteresisDistance, float keyHysteresisDistanceForSlidingModifier) {
+    public KeyDetector(final float keyHysteresisDistance,
+            final float keyHysteresisDistanceForSlidingModifier) {
         mKeyHysteresisDistanceSquared = (int)(keyHysteresisDistance * keyHysteresisDistance);
         mKeyHysteresisDistanceForSlidingModifierSquared = (int)(
                 keyHysteresisDistanceForSlidingModifier * keyHysteresisDistanceForSlidingModifier);
     }
 
-    public void setKeyboard(Keyboard keyboard, float correctionX, float correctionY) {
+    public void setKeyboard(final Keyboard keyboard, final float correctionX,
+            final float correctionY) {
         if (keyboard == null) {
             throw new NullPointerException();
         }
@@ -56,24 +56,21 @@
         mKeyboard = keyboard;
     }
 
-    public int getKeyHysteresisDistanceSquared(boolean isSlidingFromModifier) {
+    public int getKeyHysteresisDistanceSquared(final boolean isSlidingFromModifier) {
         return isSlidingFromModifier
                 ? mKeyHysteresisDistanceForSlidingModifierSquared : mKeyHysteresisDistanceSquared;
     }
 
-    public int getTouchX(int x) {
+    public int getTouchX(final int x) {
         return x + mCorrectionX;
     }
 
     // TODO: Remove vertical correction.
-    public int getTouchY(int y) {
+    public int getTouchY(final int y) {
         return y + mCorrectionY;
     }
 
     public Keyboard getKeyboard() {
-        if (mKeyboard == null) {
-            throw new IllegalStateException("keyboard isn't set");
-        }
         return mKeyboard;
     }
 
@@ -88,7 +85,7 @@
      * @param y The y-coordinate of a touch point
      * @return the key that the touch point hits.
      */
-    public Key detectHitKey(int x, int y) {
+    public Key detectHitKey(final int x, final int y) {
         final int touchX = getTouchX(x);
         final int touchY = getTouchY(y);
 
@@ -113,20 +110,4 @@
         }
         return primaryKey;
     }
-
-    public static String printableCode(Key key) {
-        return key != null ? Constants.printableCode(key.getCode()) : "none";
-    }
-
-    public static String printableCodes(int[] codes) {
-        final StringBuilder sb = new StringBuilder();
-        boolean addDelimiter = false;
-        for (final int code : codes) {
-            if (code == Constants.NOT_A_CODE) break;
-            if (addDelimiter) sb.append(", ");
-            sb.append(Constants.printableCode(code));
-            addDelimiter = true;
-        }
-        return "[" + sb + "]";
-    }
 }
diff --git a/java/src/com/android/inputmethod/keyboard/MoreKeysDetector.java b/java/src/com/android/inputmethod/keyboard/MoreKeysDetector.java
index 4a80279..abff202 100644
--- a/java/src/com/android/inputmethod/keyboard/MoreKeysDetector.java
+++ b/java/src/com/android/inputmethod/keyboard/MoreKeysDetector.java
@@ -33,13 +33,17 @@
     }
 
     @Override
-    public Key detectHitKey(int x, int y) {
+    public Key detectHitKey(final int x, final int y) {
+        final Keyboard keyboard = getKeyboard();
+        if (keyboard == null) {
+            return null;
+        }
         final int touchX = getTouchX(x);
         final int touchY = getTouchY(y);
 
         Key nearestKey = null;
         int nearestDist = (y < 0) ? mSlideAllowanceSquareTop : mSlideAllowanceSquare;
-        for (final Key key : getKeyboard().getKeys()) {
+        for (final Key key : keyboard.getKeys()) {
             final int dist = key.squaredDistanceToEdge(touchX, touchY);
             if (dist < nearestDist) {
                 nearestKey = key;
diff --git a/java/src/com/android/inputmethod/keyboard/PointerTracker.java b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
index befc4e6..59cf64d 100644
--- a/java/src/com/android/inputmethod/keyboard/PointerTracker.java
+++ b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
@@ -257,12 +257,15 @@
     }
 
     public static void setKeyDetector(final KeyDetector keyDetector) {
+        final Keyboard keyboard = keyDetector.getKeyboard();
+        if (keyboard == null) {
+            return;
+        }
         final int trackersSize = sTrackers.size();
         for (int i = 0; i < trackersSize; ++i) {
             final PointerTracker tracker = sTrackers.get(i);
             tracker.setKeyDetectorInner(keyDetector);
         }
-        final Keyboard keyboard = keyDetector.getKeyboard();
         sGestureEnabler.setPasswordMode(keyboard.mId.passwordInput());
     }
 
@@ -301,7 +304,7 @@
         final boolean ignoreModifierKey = mIsInDraggingFinger && key.isModifier();
         if (DEBUG_LISTENER) {
             Log.d(TAG, String.format("[%d] onPress    : %s%s%s%s", mPointerId,
-                    KeyDetector.printableCode(key),
+                    (key == null ? "none" : Constants.printableCode(key.getCode())),
                     ignoreModifierKey ? " ignoreModifier" : "",
                     key.isEnabled() ? "" : " disabled",
                     repeatCount > 0 ? " repeatCount=" + repeatCount : ""));
@@ -402,11 +405,14 @@
 
     private void setKeyDetectorInner(final KeyDetector keyDetector) {
         final Keyboard keyboard = keyDetector.getKeyboard();
+        if (keyboard == null) {
+            return;
+        }
         if (keyDetector == mKeyDetector && keyboard == mKeyboard) {
             return;
         }
         mKeyDetector = keyDetector;
-        mKeyboard = keyDetector.getKeyboard();
+        mKeyboard = keyboard;
         // Mark that keyboard layout has been changed.
         mKeyboardLayoutHasBeenChanged = true;
         final int keyWidth = mKeyboard.mMostCommonKeyWidth;
@@ -1235,7 +1241,7 @@
     private void printTouchEvent(final String title, final int x, final int y,
             final long eventTime) {
         final Key key = mKeyDetector.detectHitKey(x, y);
-        final String code = KeyDetector.printableCode(key);
+        final String code = (key == null ? "none" : Constants.printableCode(key.getCode()));
         Log.d(TAG, String.format("[%d]%s%s %4d %4d %5d %s", mPointerId,
                 (mIsTrackingForActionDisabled ? "-" : " "), title, x, y, eventTime, code));
     }
diff --git a/java/src/com/android/inputmethod/latin/Constants.java b/java/src/com/android/inputmethod/latin/Constants.java
index d6ac71f..d1ff714 100644
--- a/java/src/com/android/inputmethod/latin/Constants.java
+++ b/java/src/com/android/inputmethod/latin/Constants.java
@@ -252,6 +252,18 @@
         }
     }
 
+    public static String printableCodes(final int[] codes) {
+        final StringBuilder sb = new StringBuilder();
+        boolean addDelimiter = false;
+        for (final int code : codes) {
+            if (code == NOT_A_CODE) break;
+            if (addDelimiter) sb.append(", ");
+            sb.append(printableCode(code));
+            addDelimiter = true;
+        }
+        return "[" + sb + "]";
+    }
+
     public static final int MAX_INT_BIT_COUNT = 32;
 
     /**
diff --git a/java/src/com/android/inputmethod/latin/ContactsBinaryDictionary.java b/java/src/com/android/inputmethod/latin/ContactsBinaryDictionary.java
index 11a9d1f..ae9bdf3f 100644
--- a/java/src/com/android/inputmethod/latin/ContactsBinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/ContactsBinaryDictionary.java
@@ -89,8 +89,6 @@
     }
 
     private synchronized void registerObserver(final Context context) {
-        // Perform a managed query. The Activity will handle closing and requerying the cursor
-        // when needed.
         if (mObserver != null) return;
         ContentResolver cres = context.getContentResolver();
         cres.registerContentObserver(Contacts.CONTENT_URI, true, mObserver =
diff --git a/java/src/com/android/inputmethod/latin/DictionaryFacilitatorForSuggest.java b/java/src/com/android/inputmethod/latin/DictionaryFacilitatorForSuggest.java
index 259c137..138a626 100644
--- a/java/src/com/android/inputmethod/latin/DictionaryFacilitatorForSuggest.java
+++ b/java/src/com/android/inputmethod/latin/DictionaryFacilitatorForSuggest.java
@@ -512,7 +512,6 @@
         }
     }
 
-    @UsedForTesting
     public void clearUserHistoryDictionary() {
         if (mUserHistoryDictionary == null) {
             return;
diff --git a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
index 3b9be43..230739d 100644
--- a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
@@ -62,7 +62,7 @@
     private static final boolean DBG_STRESS_TEST = false;
 
     private static final int TIMEOUT_FOR_READ_OPS_IN_MILLISECONDS = 100;
-    private static final int TIMEOUT_FOR_READ_OPS_FOR_TESTS_IN_MILLISECONDS = 1000;
+    private static final int TIMEOUT_FOR_READ_OPS_FOR_TESTS_IN_MILLISECONDS = 10000;
 
     /**
      * The maximum length of a word in this dictionary.
@@ -750,7 +750,7 @@
     @UsedForTesting
     public boolean isInUnderlyingBinaryDictionaryForTests(final String word) {
         final AsyncResultHolder<Boolean> holder = new AsyncResultHolder<Boolean>();
-        getExecutor(mDictName).executePrioritized(new Runnable() {
+        getExecutor(mDictName).execute(new Runnable() {
             @Override
             public void run() {
                 if (mDictType == Dictionary.TYPE_USER_HISTORY) {
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 459f6d8..346ba85 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -25,6 +25,9 @@
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.DialogInterface;
+import android.content.DialogInterface.OnClickListener;
+import android.content.DialogInterface.OnDismissListener;
+import android.content.DialogInterface.OnShowListener;
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.SharedPreferences;
@@ -531,18 +534,33 @@
     }
 
     private void refreshPersonalizationDictionarySession() {
+        final Suggest suggest = mInputLogic.mSuggest;
+        final boolean shouldKeepUserHistoryDictionaries;
+        final boolean shouldKeepPersonalizationDictionaries;
         if (mSettings.getCurrent().mUsePersonalizedDicts) {
-            if (mSubtypeSwitcher.isSystemLocaleSameAsLocaleOfAllEnabledSubtypes()) {
-                final DictionaryFacilitatorForSuggest dictionaryFacilitator =
-                        (mInputLogic.mSuggest == null) ?
-                                null : mInputLogic.mSuggest.mDictionaryFacilitator;
-                PersonalizationDictionarySessionRegistrar.init(this, dictionaryFacilitator);
-            } else {
-                PersonalizationDictionarySessionRegistrar.close(this);
-            }
+            shouldKeepUserHistoryDictionaries = true;
+            // TODO: Eliminate this restriction
+            shouldKeepPersonalizationDictionaries =
+                    mSubtypeSwitcher.isSystemLocaleSameAsLocaleOfAllEnabledSubtypesOfEnabledImes();
         } else {
-            PersonalizationHelper.removeAllPersonalizedDictionaries(this);
+            shouldKeepUserHistoryDictionaries = false;
+            shouldKeepPersonalizationDictionaries = false;
+        }
+        if (!shouldKeepUserHistoryDictionaries) {
+            // Remove user history dictionaries.
+            PersonalizationHelper.removeAllUserHistoryDictionaries(this);
+            if (suggest != null) {
+                suggest.mDictionaryFacilitator.clearUserHistoryDictionary();
+            }
+        }
+        if (!shouldKeepPersonalizationDictionaries) {
+            // Remove personalization dictionaries.
+            PersonalizationHelper.removeAllPersonalizationDictionaries(this);
             PersonalizationDictionarySessionRegistrar.resetAll(this);
+        } else {
+            final DictionaryFacilitatorForSuggest dictionaryFacilitator =
+                    (suggest == null) ? null : suggest.mDictionaryFacilitator;
+            PersonalizationDictionarySessionRegistrar.init(this, dictionaryFacilitator);
         }
     }
 
@@ -1165,27 +1183,33 @@
     @Override
     public void showImportantNoticeContents() {
         final Context context = this;
-        final DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener() {
+        final AlertDialog.Builder builder =
+                new AlertDialog.Builder(context, AlertDialog.THEME_HOLO_DARK);
+        builder.setMessage(ImportantNoticeUtils.getNextImportantNoticeContents(context));
+        builder.setPositiveButton(android.R.string.ok, null /* listener */);
+        final OnClickListener onClickListener = new OnClickListener() {
             @Override
-            public void onClick(final DialogInterface di, final int position) {
-                di.dismiss();
-                ImportantNoticeUtils.updateLastImportantNoticeVersion(context);
-                if (position == DialogInterface.BUTTON_POSITIVE) {
-                    setNeutralSuggestionStrip();
-                    return;
-                }
+            public void onClick(final DialogInterface dialog, final int position) {
                 if (position == DialogInterface.BUTTON_NEGATIVE) {
                     launchSettings();
-                    return;
                 }
             }
         };
-        final AlertDialog.Builder builder =
-                new AlertDialog.Builder(context, AlertDialog.THEME_HOLO_DARK);
-        builder.setMessage(R.string.important_notice_contents)
-                .setPositiveButton(android.R.string.ok, listener)
-                .setNegativeButton(R.string.go_to_settings, listener);
-        showOptionDialog(builder.create(), true /* cancelable */);
+        builder.setNegativeButton(R.string.go_to_settings, onClickListener);
+        final AlertDialog importantNoticeDialog = builder.create();
+        importantNoticeDialog.setOnShowListener(new OnShowListener() {
+            @Override
+            public void onShow(final DialogInterface dialog) {
+                ImportantNoticeUtils.updateLastImportantNoticeVersion(context);
+            }
+        });
+        importantNoticeDialog.setOnDismissListener(new OnDismissListener() {
+            @Override
+            public void onDismiss(final DialogInterface dialog) {
+                setNeutralSuggestionStrip();
+            }
+        });
+        showOptionDialog(importantNoticeDialog);
     }
 
     public void displaySettingsDialog() {
@@ -1639,7 +1663,7 @@
                 getString(R.string.language_selection_title),
                 getString(ApplicationUtils.getActivityTitleResId(this, SettingsActivity.class)),
         };
-        final DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener() {
+        final OnClickListener listener = new OnClickListener() {
             @Override
             public void onClick(DialogInterface di, int position) {
                 di.dismiss();
@@ -1660,18 +1684,18 @@
         };
         final AlertDialog.Builder builder =
                 new AlertDialog.Builder(this).setItems(items, listener).setTitle(title);
-        showOptionDialog(builder.create(), true /*cancelable */);
+        showOptionDialog(builder.create());
     }
 
     // TODO: Move this method out of {@link LatinIME}.
-    private void showOptionDialog(final AlertDialog dialog, final boolean cancelable) {
+    private void showOptionDialog(final AlertDialog dialog) {
         final IBinder windowToken = mKeyboardSwitcher.getMainKeyboardView().getWindowToken();
         if (windowToken == null) {
             return;
         }
 
-        dialog.setCancelable(cancelable);
-        dialog.setCanceledOnTouchOutside(cancelable);
+        dialog.setCancelable(true /* cancelable */);
+        dialog.setCanceledOnTouchOutside(true /* cancelable */);
 
         final Window window = dialog.getWindow();
         final WindowManager.LayoutParams lp = window.getAttributes();
diff --git a/java/src/com/android/inputmethod/latin/RichInputConnection.java b/java/src/com/android/inputmethod/latin/RichInputConnection.java
index ebad9bc..cc2db4c 100644
--- a/java/src/com/android/inputmethod/latin/RichInputConnection.java
+++ b/java/src/com/android/inputmethod/latin/RichInputConnection.java
@@ -810,11 +810,11 @@
         if (mExpectedSelStart == newSelStart && mExpectedSelEnd == newSelEnd) return true;
         // This update is not belated if mExpectedSelStart and mExpectedSelEnd match the old
         // values, and one of newSelStart or newSelEnd is updated to a different value. In this
-        // case, there is likely something other than the IME has moved the selection endpoint
+        // case, it is likely that something other than the IME has moved the selection endpoint
         // to the new value.
         if (mExpectedSelStart == oldSelStart && mExpectedSelEnd == oldSelEnd
                 && (oldSelStart != newSelStart || oldSelEnd != newSelEnd)) return false;
-        // If nether of the above two cases holds, then the system may be having trouble keeping up
+        // If neither of the above two cases hold, then the system may be having trouble keeping up
         // with updates. If 1) the selection is a cursor, 2) newSelStart is between oldSelStart
         // and mExpectedSelStart, and 3) newSelEnd is between oldSelEnd and mExpectedSelEnd, then
         // assume a belated update.
diff --git a/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java b/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java
index 860575a..935dd96 100644
--- a/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java
+++ b/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java
@@ -37,9 +37,11 @@
 import com.android.inputmethod.latin.utils.LocaleUtils;
 import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
 
+import java.util.HashSet;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
+import java.util.Set;
 
 public final class SubtypeSwitcher {
     private static boolean DBG = LatinImeLogger.sDBG;
@@ -273,12 +275,26 @@
         return mNeedsToDisplayLanguage.getValue();
     }
 
-    public boolean isSystemLocaleSameAsLocaleOfAllEnabledSubtypes() {
+    public boolean isSystemLocaleSameAsLocaleOfAllEnabledSubtypesOfEnabledImes() {
         final Locale systemLocale = mResources.getConfiguration().locale;
-        final List<InputMethodSubtype> enabledSubtypesOfThisIme =
-                mRichImm.getMyEnabledInputMethodSubtypeList(true);
-        for (final InputMethodSubtype subtype : enabledSubtypesOfThisIme) {
-            if (!systemLocale.equals(SubtypeLocaleUtils.getSubtypeLocale(subtype))) {
+        final Set<InputMethodSubtype> enabledSubtypesOfEnabledImes =
+                new HashSet<InputMethodSubtype>();
+        final InputMethodManager inputMethodManager = mRichImm.getInputMethodManager();
+        final List<InputMethodInfo> enabledInputMethodInfoList =
+                inputMethodManager.getEnabledInputMethodList();
+        for (final InputMethodInfo info : enabledInputMethodInfoList) {
+            final List<InputMethodSubtype> enabledSubtypes =
+                    inputMethodManager.getEnabledInputMethodSubtypeList(
+                            info, true /* allowsImplicitlySelectedSubtypes */);
+            if (enabledSubtypes.isEmpty()) {
+                // An IME with no subtypes is found.
+                return false;
+            }
+            enabledSubtypesOfEnabledImes.addAll(enabledSubtypes);
+        }
+        for (final InputMethodSubtype subtype : enabledSubtypesOfEnabledImes) {
+            if (!subtype.isAuxiliary() && !subtype.getLocale().isEmpty()
+                    && !systemLocale.equals(SubtypeLocaleUtils.getSubtypeLocale(subtype))) {
                 return false;
             }
         }
diff --git a/java/src/com/android/inputmethod/latin/UserBinaryDictionary.java b/java/src/com/android/inputmethod/latin/UserBinaryDictionary.java
index 2a195f5..3e3cbf0 100644
--- a/java/src/com/android/inputmethod/latin/UserBinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/UserBinaryDictionary.java
@@ -97,8 +97,6 @@
             mLocale = localeStr;
         }
         mAlsoUseMoreRestrictiveLocales = alsoUseMoreRestrictiveLocales;
-        // Perform a managed query. The Activity will handle closing and re-querying the cursor
-        // when needed.
         ContentResolver cres = context.getContentResolver();
 
         mObserver = new ContentObserver(null) {
diff --git a/java/src/com/android/inputmethod/latin/makedict/Ver4DictDecoder.java b/java/src/com/android/inputmethod/latin/makedict/Ver4DictDecoder.java
index 23aa05d..88fff38 100644
--- a/java/src/com/android/inputmethod/latin/makedict/Ver4DictDecoder.java
+++ b/java/src/com/android/inputmethod/latin/makedict/Ver4DictDecoder.java
@@ -53,6 +53,10 @@
 
     @Override
     public DictionaryHeader readHeader() throws IOException, UnsupportedFormatException {
+        final DictionaryHeader header = mBinaryDictionary.getHeader();
+        if (header == null) {
+            throw new IOException("Cannot read the dictionary header.");
+        }
         return mBinaryDictionary.getHeader();
     }
 
diff --git a/java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java b/java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java
index df64bce..5ae2fb6 100644
--- a/java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java
+++ b/java/src/com/android/inputmethod/latin/personalization/PersonalizationHelper.java
@@ -93,13 +93,16 @@
         }
     }
 
-    public static void removeAllPersonalizedDictionaries(final Context context) {
-        removeAllDictionaries(context, sLangUserHistoryDictCache,
-                UserHistoryDictionary.NAME);
+    public static void removeAllPersonalizationDictionaries(final Context context) {
         removeAllDictionaries(context, sLangPersonalizationDictCache,
                 PersonalizationDictionary.NAME);
     }
 
+    public static void removeAllUserHistoryDictionaries(final Context context) {
+        removeAllDictionaries(context, sLangUserHistoryDictCache,
+                UserHistoryDictionary.NAME);
+    }
+
     private static <T extends DecayingExpandableBinaryDictionaryBase> void removeAllDictionaries(
             final Context context, final ConcurrentHashMap<String, SoftReference<T>> dictionaryMap,
             final String dictNamePrefix) {
diff --git a/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripLayoutHelper.java b/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripLayoutHelper.java
index e77c550..8ea7128 100644
--- a/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripLayoutHelper.java
+++ b/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripLayoutHelper.java
@@ -504,12 +504,13 @@
                 hintView, 1.0f - mCenterSuggestionWeight, ViewGroup.LayoutParams.MATCH_PARENT);
     }
 
-    public void layoutImportantNotice(final View importantNoticeStrip, final int stripWidth) {
+    public void layoutImportantNotice(final View importantNoticeStrip, final int stripWidth,
+            final String importantNoticeTitle) {
         final TextView titleView = (TextView)importantNoticeStrip.findViewById(
                 R.id.important_notice_title);
         final int width = stripWidth - titleView.getPaddingLeft() - titleView.getPaddingRight();
         titleView.setTextColor(mColorAutoCorrect);
-        final CharSequence importantNoticeTitle = titleView.getText();
+        titleView.setText(importantNoticeTitle);
         titleView.setTextScaleX(1.0f); // Reset textScaleX.
         final float titleScaleX = getTextScaleX(
                 importantNoticeTitle, width, titleView.getPaint());
diff --git a/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripView.java b/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripView.java
index 1f80c4c..4ef562d 100644
--- a/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripView.java
+++ b/java/src/com/android/inputmethod/latin/suggestions/SuggestionStripView.java
@@ -20,6 +20,7 @@
 import android.content.res.Resources;
 import android.graphics.Color;
 import android.support.v4.view.ViewCompat;
+import android.text.TextUtils;
 import android.util.AttributeSet;
 import android.util.TypedValue;
 import android.view.GestureDetector;
@@ -236,7 +237,12 @@
         if (width <= 0) {
             return false;
         }
-        mLayoutHelper.layoutImportantNotice(mImportantNoticeStrip, width);
+        final String importantNoticeTitle = ImportantNoticeUtils.getNextImportantNoticeTitle(
+                getContext());
+        if (TextUtils.isEmpty(importantNoticeTitle)) {
+            return false;
+        }
+        mLayoutHelper.layoutImportantNotice(mImportantNoticeStrip, width, importantNoticeTitle);
         mStripVisibilityGroup.showImportantNoticeStrip();
         mImportantNoticeStrip.setOnClickListener(this);
         return true;
diff --git a/java/src/com/android/inputmethod/latin/userdictionary/UserDictionaryList.java b/java/src/com/android/inputmethod/latin/userdictionary/UserDictionaryList.java
index 2f41ce9..97a924d 100644
--- a/java/src/com/android/inputmethod/latin/userdictionary/UserDictionaryList.java
+++ b/java/src/com/android/inputmethod/latin/userdictionary/UserDictionaryList.java
@@ -53,8 +53,7 @@
     }
 
     public static TreeSet<String> getUserDictionaryLocalesSet(Activity activity) {
-        @SuppressWarnings("deprecation")
-        final Cursor cursor = activity.managedQuery(UserDictionary.Words.CONTENT_URI,
+        final Cursor cursor = activity.getContentResolver().query(UserDictionary.Words.CONTENT_URI,
                 new String[] { UserDictionary.Words.LOCALE },
                 null, null, null);
         final TreeSet<String> localeSet = new TreeSet<String>();
diff --git a/java/src/com/android/inputmethod/latin/userdictionary/UserDictionarySettings.java b/java/src/com/android/inputmethod/latin/userdictionary/UserDictionarySettings.java
index 220efb5..cf2014a 100644
--- a/java/src/com/android/inputmethod/latin/userdictionary/UserDictionarySettings.java
+++ b/java/src/com/android/inputmethod/latin/userdictionary/UserDictionarySettings.java
@@ -141,7 +141,10 @@
 
         mLocale = locale;
         // WARNING: The following cursor is never closed! TODO: don't put that in a member, and
-        // make sure all cursors are correctly closed.
+        // make sure all cursors are correctly closed. Also, this comes from a call to
+        // Activity#managedQuery, which has been deprecated for a long time (and which FORBIDS
+        // closing the cursor, so take care when resolving this TODO). We should either use a
+        // regular query and close the cursor, or switch to a LoaderManager and a CursorLoader.
         mCursor = createCursor(locale);
         TextView emptyView = (TextView) getView().findViewById(android.R.id.empty);
         emptyView.setText(R.string.user_dict_settings_empty_text);
diff --git a/java/src/com/android/inputmethod/latin/utils/ImportantNoticeUtils.java b/java/src/com/android/inputmethod/latin/utils/ImportantNoticeUtils.java
index 50a9423..6b0bb86 100644
--- a/java/src/com/android/inputmethod/latin/utils/ImportantNoticeUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/ImportantNoticeUtils.java
@@ -30,8 +30,9 @@
 
     // {@link SharedPreferences} name to save the last important notice version that has been
     // displayed to users.
-    private static final String PREFERENCE_NAME = "important_notice";
+    private static final String PREFERENCE_NAME = "important_notice_pref";
     private static final String KEY_IMPORTANT_NOTICE_VERSION = "important_notice_version";
+    public static final int VERSION_TO_ENABLE_PERSONALIZED_SUGGESTIONS = 1;
 
     // Copy of the hidden {@link Settings.Secure#USER_SETUP_COMPLETE} settings key.
     // The value is zero until each multiuser completes system setup wizard.
@@ -59,13 +60,20 @@
         return context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);
     }
 
-    private static int getCurrentImportantNoticeVersion(final Context context) {
+    public static int getCurrentImportantNoticeVersion(final Context context) {
         return context.getResources().getInteger(R.integer.config_important_notice_version);
     }
 
+    private static int getLastImportantNoticeVersion(final Context context) {
+        return getImportantNoticePreferences(context).getInt(KEY_IMPORTANT_NOTICE_VERSION, 0);
+    }
+
+    private static int getNextImportantNoticeVersion(final Context context) {
+        return getLastImportantNoticeVersion(context) + 1;
+    }
+
     private static boolean hasNewImportantNotice(final Context context) {
-        final SharedPreferences prefs = getImportantNoticePreferences(context);
-        final int lastVersion = prefs.getInt(KEY_IMPORTANT_NOTICE_VERSION, 0);
+        final int lastVersion = getLastImportantNoticeVersion(context);
         return getCurrentImportantNoticeVersion(context) > lastVersion;
     }
 
@@ -78,9 +86,29 @@
     }
 
     public static void updateLastImportantNoticeVersion(final Context context) {
-        final SharedPreferences prefs = getImportantNoticePreferences(context);
-        prefs.edit()
-                .putInt(KEY_IMPORTANT_NOTICE_VERSION, getCurrentImportantNoticeVersion(context))
+        getImportantNoticePreferences(context)
+                .edit()
+                .putInt(KEY_IMPORTANT_NOTICE_VERSION, getNextImportantNoticeVersion(context))
                 .apply();
     }
+
+    // TODO: Make title resource to string array indexed by version.
+    public static String getNextImportantNoticeTitle(final Context context) {
+        switch (getNextImportantNoticeVersion(context)) {
+        case VERSION_TO_ENABLE_PERSONALIZED_SUGGESTIONS:
+            return context.getString(R.string.important_notice_title);
+        default:
+            return null;
+        }
+    }
+
+    // TODO: Make content resource to string array indexed by version.
+    public static String getNextImportantNoticeContents(final Context context) {
+        switch (getNextImportantNoticeVersion(context)) {
+        case VERSION_TO_ENABLE_PERSONALIZED_SUGGESTIONS:
+            return context.getString(R.string.important_notice_contents);
+        default:
+            return null;
+        }
+    }
 }
diff --git a/tests/src/com/android/inputmethod/latin/personalization/UserHistoryDictionaryTests.java b/tests/src/com/android/inputmethod/latin/personalization/UserHistoryDictionaryTests.java
index dff5a77..449030c 100644
--- a/tests/src/com/android/inputmethod/latin/personalization/UserHistoryDictionaryTests.java
+++ b/tests/src/com/android/inputmethod/latin/personalization/UserHistoryDictionaryTests.java
@@ -20,6 +20,7 @@
 import android.test.suitebuilder.annotation.LargeTest;
 import android.util.Log;
 
+import com.android.inputmethod.latin.BinaryDictionary;
 import com.android.inputmethod.latin.ExpandableBinaryDictionary;
 import com.android.inputmethod.latin.utils.CollectionUtils;
 import com.android.inputmethod.latin.utils.FileUtils;
@@ -44,6 +45,43 @@
         "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"
     };
 
+    private int mCurrentTime = 0;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mCurrentTime = 0;
+        setCurrentTimeForTestMode(mCurrentTime);
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        stopTestModeInNativeCode();
+        super.tearDown();
+    }
+
+    private void forcePassingShortTime() {
+        // 4 days.
+        final int timeToElapse = (int)TimeUnit.DAYS.toSeconds(4);
+        mCurrentTime += timeToElapse;
+        setCurrentTimeForTestMode(mCurrentTime);
+    }
+
+    private void forcePassingLongTime() {
+        // 60 days.
+        final int timeToElapse = (int)TimeUnit.DAYS.toSeconds(60);
+        mCurrentTime += timeToElapse;
+        setCurrentTimeForTestMode(mCurrentTime);
+    }
+
+    private static int setCurrentTimeForTestMode(final int currentTime) {
+        return BinaryDictionary.setCurrentTimeForTest(currentTime);
+    }
+
+    private static int stopTestModeInNativeCode() {
+        return BinaryDictionary.setCurrentTimeForTest(-1);
+    }
+
     /**
      * Generates a random word.
      */
@@ -207,4 +245,28 @@
             FileUtils.deleteRecursively(dictFile);
         }
     }
+
+    public void testDecaying() {
+        final Locale dummyLocale = new Locale("test_decaying" + System.currentTimeMillis());
+        final int numberOfWords = 5000;
+        final Random random = new Random(123456);
+        clearHistory(dummyLocale);
+        final List<String> words = generateWords(numberOfWords, random);
+        final UserHistoryDictionary dict =
+                PersonalizationHelper.getUserHistoryDictionary(getContext(), dummyLocale);
+        String prevWord = null;
+        for (final String word : words) {
+            dict.addToDictionary(prevWord, word, true, mCurrentTime);
+            prevWord = word;
+            assertTrue(dict.isInUnderlyingBinaryDictionaryForTests(word));
+        }
+        forcePassingShortTime();
+        for (final String word : words) {
+            assertTrue(dict.isInUnderlyingBinaryDictionaryForTests(word));
+        }
+        forcePassingLongTime();
+        for (final String word : words) {
+            assertFalse(dict.isInUnderlyingBinaryDictionaryForTests(word));
+        }
+    }
 }