Move some methods to StringUtils

Change-Id: I29d87fdd65ec879d1c0bdf7e7792a677687c1693
diff --git a/java/src/com/android/inputmethod/keyboard/Key.java b/java/src/com/android/inputmethod/keyboard/Key.java
index c8c4d30..5fd70ea 100644
--- a/java/src/com/android/inputmethod/keyboard/Key.java
+++ b/java/src/com/android/inputmethod/keyboard/Key.java
@@ -331,16 +331,16 @@
             // code point nor as a surrogate pair.
             mLabel = new StringBuilder().appendCodePoint(code).toString();
         } else {
-            mLabel = KeySpecParser.toUpperCaseOfStringForLocale(style.getString(keyAttr,
+            mLabel = StringUtils.toUpperCaseOfStringForLocale(style.getString(keyAttr,
                     R.styleable.Keyboard_Key_keyLabel), needsToUpperCase, locale);
         }
         if ((mLabelFlags & LABEL_FLAGS_DISABLE_HINT_LABEL) != 0) {
             mHintLabel = null;
         } else {
-            mHintLabel = KeySpecParser.toUpperCaseOfStringForLocale(style.getString(keyAttr,
+            mHintLabel = StringUtils.toUpperCaseOfStringForLocale(style.getString(keyAttr,
                     R.styleable.Keyboard_Key_keyHintLabel), needsToUpperCase, locale);
         }
-        String outputText = KeySpecParser.toUpperCaseOfStringForLocale(style.getString(keyAttr,
+        String outputText = StringUtils.toUpperCaseOfStringForLocale(style.getString(keyAttr,
                 R.styleable.Keyboard_Key_keyOutputText), needsToUpperCase, locale);
         // Choose the first letter of the label as primary code if not specified.
         if (code == CODE_UNSPECIFIED && TextUtils.isEmpty(outputText)
@@ -367,9 +367,9 @@
                 mCode = CODE_OUTPUT_TEXT;
             }
         } else {
-            mCode = KeySpecParser.toUpperCaseOfCodeForLocale(code, needsToUpperCase, locale);
+            mCode = StringUtils.toUpperCaseOfCodeForLocale(code, needsToUpperCase, locale);
         }
-        final int altCode = KeySpecParser.toUpperCaseOfCodeForLocale(
+        final int altCode = StringUtils.toUpperCaseOfCodeForLocale(
                 KeySpecParser.parseCode(style.getString(keyAttr,
                 R.styleable.Keyboard_Key_altCode), params.mCodesSet, CODE_UNSPECIFIED),
                 needsToUpperCase, locale);
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java b/java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java
index accfaed..e9e2f42 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java
@@ -21,14 +21,12 @@
 
 import android.text.TextUtils;
 
-import com.android.inputmethod.latin.Constants;
 import com.android.inputmethod.latin.LatinImeLogger;
 import com.android.inputmethod.latin.utils.CollectionUtils;
 import com.android.inputmethod.latin.utils.StringUtils;
 
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Locale;
 
 /**
  * The string parser of more keys specification.
@@ -482,20 +480,4 @@
         }
         return value;
     }
-
-    public static int toUpperCaseOfCodeForLocale(final int code, final boolean needsToUpperCase,
-            final Locale locale) {
-        if (!Constants.isLetterCode(code) || !needsToUpperCase) return code;
-        final String text = StringUtils.newSingleCodePointString(code);
-        final String casedText = KeySpecParser.toUpperCaseOfStringForLocale(
-                text, needsToUpperCase, locale);
-        return StringUtils.codePointCount(casedText) == 1
-                ? casedText.codePointAt(0) : CODE_UNSPECIFIED;
-    }
-
-    public static String toUpperCaseOfStringForLocale(final String text,
-            final boolean needsToUpperCase, final Locale locale) {
-        if (text == null || !needsToUpperCase) return text;
-        return text.toUpperCase(locale);
-    }
 }
diff --git a/java/src/com/android/inputmethod/keyboard/internal/MoreKeySpec.java b/java/src/com/android/inputmethod/keyboard/internal/MoreKeySpec.java
index 110936f..889fc9c 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/MoreKeySpec.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/MoreKeySpec.java
@@ -31,9 +31,9 @@
 
     public MoreKeySpec(final String moreKeySpec, boolean needsToUpperCase, final Locale locale,
             final KeyboardCodesSet codesSet) {
-        mLabel = KeySpecParser.toUpperCaseOfStringForLocale(
+        mLabel = StringUtils.toUpperCaseOfStringForLocale(
                 KeySpecParser.getLabel(moreKeySpec), needsToUpperCase, locale);
-        final int code = KeySpecParser.toUpperCaseOfCodeForLocale(
+        final int code = StringUtils.toUpperCaseOfCodeForLocale(
                 KeySpecParser.getCode(moreKeySpec, codesSet), needsToUpperCase, locale);
         if (code == Constants.CODE_UNSPECIFIED) {
             // Some letter, for example German Eszett (U+00DF: "ß"), has multiple characters
@@ -42,7 +42,7 @@
             mOutputText = mLabel;
         } else {
             mCode = code;
-            mOutputText = KeySpecParser.toUpperCaseOfStringForLocale(
+            mOutputText = StringUtils.toUpperCaseOfStringForLocale(
                     KeySpecParser.getOutputText(moreKeySpec), needsToUpperCase, locale);
         }
         mIconId = KeySpecParser.getIconId(moreKeySpec);
diff --git a/java/src/com/android/inputmethod/latin/utils/StringUtils.java b/java/src/com/android/inputmethod/latin/utils/StringUtils.java
index b154623..c632a71 100644
--- a/java/src/com/android/inputmethod/latin/utils/StringUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/StringUtils.java
@@ -16,6 +16,8 @@
 
 package com.android.inputmethod.latin.utils;
 
+import static com.android.inputmethod.latin.Constants.CODE_UNSPECIFIED;
+
 import android.text.TextUtils;
 
 import com.android.inputmethod.annotations.UsedForTesting;
@@ -471,4 +473,20 @@
         }
         return bytes;
     }
+
+    public static String toUpperCaseOfStringForLocale(final String text,
+            final boolean needsToUpperCase, final Locale locale) {
+        if (text == null || !needsToUpperCase) return text;
+        return text.toUpperCase(locale);
+    }
+
+    public static int toUpperCaseOfCodeForLocale(final int code, final boolean needsToUpperCase,
+            final Locale locale) {
+        if (!Constants.isLetterCode(code) || !needsToUpperCase) return code;
+        final String text = newSingleCodePointString(code);
+        final String casedText = toUpperCaseOfStringForLocale(
+                text, needsToUpperCase, locale);
+        return codePointCount(casedText) == 1
+                ? casedText.codePointAt(0) : CODE_UNSPECIFIED;
+    }
 }