Add navigateEmoji

Bug: 11074625
Change-Id: I1ef6b81ef923684b502c24fddb4ced8fe1691733
diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml
index 31945d0..e5fe564 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -413,6 +413,7 @@
         </attr>
         <attr name="navigateNext" format="boolean" />
         <attr name="navigatePrevious" format="boolean" />
+        <attr name="navigateEmoji" format="boolean" />
         <attr name="passwordInput" format="boolean" />
         <attr name="clobberSettingsKey" format="boolean" />
         <attr name="shortcutKeyEnabled" format="boolean" />
diff --git a/java/res/xml/key_styles_enter.xml b/java/res/xml/key_styles_enter.xml
index 5976e95..68c0a23 100644
--- a/java/res/xml/key_styles_enter.xml
+++ b/java/res/xml/key_styles_enter.xml
@@ -23,9 +23,11 @@
 >
     <!-- Navigate more keys style -->
     <switch>
+        <!-- navigateEmoji="false" -->
         <case
             latin:imeAction="actionNext"
             latin:navigatePrevious="true"
+            latin:navigateEmoji="false"
         >
             <key-style
                 latin:styleName="navigateMoreKeysStyle"
@@ -35,6 +37,7 @@
         <case
             latin:imeAction="actionNext"
             latin:navigatePrevious="false"
+            latin:navigateEmoji="false"
         >
             <key-style
                 latin:styleName="navigateMoreKeysStyle" />
@@ -42,6 +45,7 @@
         <case
             latin:imeAction="actionPrevious"
             latin:navigateNext="true"
+            latin:navigateEmoji="false"
         >
             <key-style
                 latin:styleName="navigateMoreKeysStyle"
@@ -51,6 +55,7 @@
         <case
             latin:imeAction="actionPrevious"
             latin:navigateNext="false"
+            latin:navigateEmoji="false"
         >
             <key-style
                 latin:styleName="navigateMoreKeysStyle" />
@@ -59,6 +64,7 @@
         <case
             latin:navigateNext="true"
             latin:navigatePrevious="true"
+            latin:navigateEmoji="false"
         >
             <key-style
                 latin:styleName="navigateMoreKeysStyle"
@@ -68,6 +74,7 @@
         <case
             latin:navigateNext="true"
             latin:navigatePrevious="false"
+            latin:navigateEmoji="false"
         >
             <key-style
                 latin:styleName="navigateMoreKeysStyle"
@@ -77,13 +84,100 @@
         <case
             latin:navigateNext="false"
             latin:navigatePrevious="true"
+            latin:navigateEmoji="false"
         >
             <key-style
                 latin:styleName="navigateMoreKeysStyle"
                 latin:keyLabelFlags="hasPopupHint|preserveCase"
                 latin:moreKeys="!text/action_previous_as_more_key" />
         </case>
-        <!-- naviagteNext="false" and navigatePrevious="false" -->
+        <case
+            latin:navigateNext="false"
+            latin:navigatePrevious="false"
+            latin:navigateEmoji="false"
+        >
+            <key-style
+                latin:styleName="navigateMoreKeysStyle" />
+        </case>
+        <!-- navigateEmoji="true" -->
+        <case
+            latin:imeAction="actionNext"
+            latin:navigatePrevious="true"
+            latin:navigateEmoji="true"
+        >
+            <key-style
+                latin:styleName="navigateMoreKeysStyle"
+                latin:keyLabelFlags="hasPopupHint|preserveCase"
+                latin:moreKeys="!fixedColumnOrder!2,!needsDividers!,!text/emoji_key_as_more_key,!text/action_previous_as_more_key" />
+        </case>
+        <case
+            latin:imeAction="actionNext"
+            latin:navigatePrevious="false"
+            latin:navigateEmoji="true"
+        >
+            <key-style
+                latin:styleName="navigateMoreKeysStyle"
+                latin:moreKeys="!text/emoji_key_as_more_key" />
+        </case>
+        <case
+            latin:imeAction="actionPrevious"
+            latin:navigateNext="true"
+            latin:navigateEmoji="true"
+        >
+            <key-style
+                latin:styleName="navigateMoreKeysStyle"
+                latin:keyLabelFlags="hasPopupHint|preserveCase"
+                latin:moreKeys="!fixedColumnOrder!2,!needsDividers!,!text/emoji_key_as_more_key,!text/action_next_as_more_key" />
+        </case>
+        <case
+            latin:imeAction="actionPrevious"
+            latin:navigateNext="false"
+            latin:navigateEmoji="true"
+        >
+            <key-style
+                latin:styleName="navigateMoreKeysStyle"
+                latin:moreKeys="!text/emoji_key_as_more_key" />
+        </case>
+        <!-- imeAction!="actionNext" and imeAction!="actionPrevious" -->
+        <case
+            latin:navigateNext="true"
+            latin:navigatePrevious="true"
+            latin:navigateEmoji="true"
+        >
+            <key-style
+                latin:styleName="navigateMoreKeysStyle"
+                latin:keyLabelFlags="hasPopupHint|preserveCase"
+                latin:moreKeys="!fixedColumnOrder!3,!needsDividers!,!text/emoji_key_as_more_key,!text/action_previous_as_more_key,!text/action_next_as_more_key" />
+        </case>
+        <case
+            latin:navigateNext="true"
+            latin:navigatePrevious="false"
+            latin:navigateEmoji="true"
+        >
+            <key-style
+                latin:styleName="navigateMoreKeysStyle"
+                latin:keyLabelFlags="hasPopupHint|preserveCase"
+                latin:moreKeys="!fixedColumnOrder!2,!needsDividers!,!text/emoji_key_as_more_key,!text/action_next_as_more_key" />
+        </case>
+        <case
+            latin:navigateNext="false"
+            latin:navigatePrevious="true"
+            latin:navigateEmoji="true"
+        >
+            <key-style
+                latin:styleName="navigateMoreKeysStyle"
+                latin:keyLabelFlags="hasPopupHint|preserveCase"
+                latin:moreKeys="!fixedColumnOrder!2,!needsDividers!,!text/emoji_key_as_more_key,!text/action_previous_as_more_key" />
+        </case>
+        <case
+            latin:navigateNext="false"
+            latin:navigatePrevious="false"
+            latin:navigateEmoji="true"
+        >
+            <key-style
+                latin:styleName="navigateMoreKeysStyle"
+                latin:moreKeys="!text/emoji_key_as_more_key" />
+        </case>
         <default>
             <key-style
                 latin:styleName="navigateMoreKeysStyle" />
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java
index 684cf63..d219e81 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java
@@ -251,6 +251,7 @@
         /* 146 */ "more_keys_for_single_quote",
         /* 147 */ "more_keys_for_double_quote",
         /* 148 */ "more_keys_for_tablet_double_quote",
+        /* 149 */ "emoji_key_as_more_key",
     };
 
     private static final String EMPTY = "";
@@ -439,6 +440,7 @@
         /* 146 */ "!fixedColumnOrder!5,!text/single_quotes,!text/single_angle_quotes",
         /* 147 */ "!fixedColumnOrder!5,!text/double_quotes,!text/double_angle_quotes",
         /* 148 */ "!fixedColumnOrder!6,!text/double_quotes,!text/single_quotes,!text/double_angle_quotes,!text/single_angle_quotes",
+        /* 149 */ "!icon/emoji_key|!code/key_emoji",
     };
 
     /* Language af: Afrikaans */
diff --git a/tools/make-keyboard-text/res/values/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values/donottranslate-more-keys.xml
index 44aa64c..39ecfab 100644
--- a/tools/make-keyboard-text/res/values/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values/donottranslate-more-keys.xml
@@ -246,4 +246,5 @@
     <string name="more_keys_for_single_quote">!fixedColumnOrder!5,!text/single_quotes,!text/single_angle_quotes</string>
     <string name="more_keys_for_double_quote">!fixedColumnOrder!5,!text/double_quotes,!text/double_angle_quotes</string>
     <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!6,!text/double_quotes,!text/single_quotes,!text/double_angle_quotes,!text/single_angle_quotes</string>
+    <string name="emoji_key_as_more_key">!icon/emoji_key|!code/key_emoji</string>
 </resources>