Cleanup KeyboardId's hasCode method

Change-Id: I5fd8f6ac0f42152fb0e2aaaedc6092f6d82fe677
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardId.java b/java/src/com/android/inputmethod/keyboard/KeyboardId.java
index 46285bf..db5d8a8 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardId.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardId.java
@@ -104,23 +104,45 @@
 
         this.mEditorInfo = editorInfo;
 
-        this.mHashCode = Arrays.hashCode(new Object[] {
-                locale,
-                orientation,
-                width,
-                mode,
-                xmlId,
-                elementState,
-                mNavigateAction,
-                mPasswordInput,
-                mSettingsKeyEnabled,
-                mClobberSettingsKey,
-                shortcutKeyEnabled,
-                hasShortcutKey,
-                mImeAction,
+        this.mHashCode = hashCode(this);
+    }
+
+    private static int hashCode(KeyboardId id) {
+        return Arrays.hashCode(new Object[] {
+                id.mOrientation,
+                id.mElementState,
+                id.mMode,
+                id.mWidth,
+                id.mXmlId,
+                id.mNavigateAction,
+                id.mPasswordInput,
+                id.mSettingsKeyEnabled,
+                id.mClobberSettingsKey,
+                id.mShortcutKeyEnabled,
+                id.mHasShortcutKey,
+                id.mImeAction,
+                id.mLocale,
         });
     }
 
+    private boolean equals(KeyboardId other) {
+        if (other == this)
+            return true;
+        return other.mOrientation == this.mOrientation
+                && other.mElementState == this.mElementState
+                && other.mMode == this.mMode
+                && other.mWidth == this.mWidth
+                && other.mXmlId == this.mXmlId
+                && other.mNavigateAction == this.mNavigateAction
+                && other.mPasswordInput == this.mPasswordInput
+                && other.mSettingsKeyEnabled == this.mSettingsKeyEnabled
+                && other.mClobberSettingsKey == this.mClobberSettingsKey
+                && other.mShortcutKeyEnabled == this.mShortcutKeyEnabled
+                && other.mHasShortcutKey == this.mHasShortcutKey
+                && other.mImeAction == this.mImeAction
+                && other.mLocale.equals(this.mLocale);
+    }
+
     public KeyboardId cloneWithNewXml(int xmlId) {
         return new KeyboardId(xmlId, mElementState, mLocale, mOrientation, mWidth, mMode,
                 mEditorInfo, false, false, false, false);
@@ -171,22 +193,6 @@
         return other instanceof KeyboardId && equals((KeyboardId) other);
     }
 
-    private boolean equals(KeyboardId other) {
-        return other.mLocale.equals(this.mLocale)
-            && other.mOrientation == this.mOrientation
-            && other.mWidth == this.mWidth
-            && other.mMode == this.mMode
-            && other.mXmlId == this.mXmlId
-            && other.mElementState == this.mElementState
-            && other.mNavigateAction == this.mNavigateAction
-            && other.mPasswordInput == this.mPasswordInput
-            && other.mSettingsKeyEnabled == this.mSettingsKeyEnabled
-            && other.mClobberSettingsKey == this.mClobberSettingsKey
-            && other.mShortcutKeyEnabled == this.mShortcutKeyEnabled
-            && other.mHasShortcutKey == this.mHasShortcutKey
-            && other.mImeAction == this.mImeAction;
-    }
-
     @Override
     public int hashCode() {
         return mHashCode;