From daf75d275e7041bd9669315eb162489ddbf558a8 Mon Sep 17 00:00:00 2001
From: "Tadashi G. Takaoka" <takaoka@google.com>
Date: Tue, 8 Apr 2014 15:34:41 +0900
Subject: [PATCH] Add en_IN subtype

Bug: 13914988
Change-Id: Ifd497a6a1d2686490e388e10e391475e97e9c166
---
 java/res/xml/key_styles_currency.xml          | 26 +++++++++
 java/res/xml/method.xml                       |  9 +++
 .../KeyboardLayoutSetSubtypesCountTests.java  |  4 +-
 .../inputmethod/keyboard/layout/Hindi.java    |  4 +-
 .../keyboard/layout/tests/TestsEnglishIN.java | 55 +++++++++++++++++++
 5 files changed, 94 insertions(+), 4 deletions(-)
 create mode 100644 tests/src/com/android/inputmethod/keyboard/layout/tests/TestsEnglishIN.java

diff --git a/java/res/xml/key_styles_currency.xml b/java/res/xml/key_styles_currency.xml
index 29e2eae3d2..0bb2bb4082 100644
--- a/java/res/xml/key_styles_currency.xml
+++ b/java/res/xml/key_styles_currency.xml
@@ -129,6 +129,32 @@
                 latin:styleName="moreCurrency4KeyStyle"
                 latin:keySpec="&#x00A2;" />
         </case>
+        <!-- IN: India (Rupee) -->
+        <case
+            latin:countryCode="IN"
+        >
+            <!-- U+20B9: "₹" INDIAN RUPEE SIGN
+                 U+00A3: "£" POUND SIGN
+                 U+20AC: "€" EURO SIGN
+                 U+00A2: "¢" CENT SIGN -->
+            <key-style
+                latin:styleName="currencyKeyStyle"
+                latin:keySpec="&#x20B9;"
+                latin:moreKeys="!text/morekeys_currency" />
+            <key-style
+                latin:styleName="moreCurrency1KeyStyle"
+                latin:keySpec="&#x00A3;" />
+            <key-style
+                latin:styleName="moreCurrency2KeyStyle"
+                latin:keySpec="&#x20AC;" />
+            <key-style
+                latin:styleName="moreCurrency3KeyStyle"
+                latin:keySpec="$"
+                latin:moreKeys="&#x00A2;" />
+            <key-style
+                latin:styleName="moreCurrency4KeyStyle"
+                latin:keySpec="&#x00A2;" />
+        </case>
         <!-- GB: United Kingdom (Pound) -->
         <case
             latin:countryCode="GB"
diff --git a/java/res/xml/method.xml b/java/res/xml/method.xml
index 6db80b857b..1bef3c2542 100644
--- a/java/res/xml/method.xml
+++ b/java/res/xml/method.xml
@@ -34,6 +34,7 @@
     de: German/qwertz
     de_CH: German (Switzerland)/swiss
     el: Greek/greek
+    en_IN: English (India)/qwerty
     en_US: English (United States)/qwerty
     en_GB: English (Great Britain)/qwerty
     eo: Esperanto/spanish
@@ -215,6 +216,14 @@
             android:imeSubtypeExtraValue="KeyboardLayoutSet=greek,EmojiCapable"
             android:isAsciiCapable="false"
     />
+    <subtype android:icon="@drawable/ic_ime_switcher_dark"
+            android:label="@string/subtype_generic"
+            android:subtypeId="0x8d58fc2d"
+            android:imeSubtypeLocale="en_IN"
+            android:imeSubtypeMode="keyboard"
+            android:imeSubtypeExtraValue="KeyboardLayoutSet=qwerty,AsciiCapable,EmojiCapable"
+            android:isAsciiCapable="true"
+    />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
             android:subtypeId="0x4090554a"
diff --git a/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetSubtypesCountTests.java b/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetSubtypesCountTests.java
index d6d12ea566..57d2950587 100644
--- a/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetSubtypesCountTests.java
+++ b/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetSubtypesCountTests.java
@@ -25,8 +25,8 @@ import java.util.ArrayList;
 
 @SmallTest
 public class KeyboardLayoutSetSubtypesCountTests extends KeyboardLayoutSetTestsBase {
-    private static final int NUMBER_OF_SUBTYPES = 67;
-    private static final int NUMBER_OF_ASCII_CAPABLE_SUBTYPES = 42;
+    private static final int NUMBER_OF_SUBTYPES = 68;
+    private static final int NUMBER_OF_ASCII_CAPABLE_SUBTYPES = 43;
     private static final int NUMBER_OF_PREDEFINED_ADDITIONAL_SUBTYPES = 2;
 
     private static String toString(final ArrayList<InputMethodSubtype> subtypeList) {
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Hindi.java b/tests/src/com/android/inputmethod/keyboard/layout/Hindi.java
index c3f45313fd..b12b8be643 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/Hindi.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Hindi.java
@@ -51,7 +51,7 @@ public final class Hindi extends LayoutBase {
         public ExpectedKey getBackToSymbolsKey() { return HINDI_BACK_TO_SYMBOLS_KEY; }
 
         @Override
-        public ExpectedKey getCurrencyKey() { return CURRENCY_HINDI; }
+        public ExpectedKey getCurrencyKey() { return CURRENCY_RUPEE; }
 
         @Override
         public ExpectedKey[] getOtherCurrencyKeys() {
@@ -78,7 +78,7 @@ public final class Hindi extends LayoutBase {
                 Constants.CODE_SHIFT);
 
         // U+20B9: "₹" INDIAN RUPEE SIGN
-        private static final ExpectedKey CURRENCY_HINDI = key("\u20B9",
+        private static final ExpectedKey CURRENCY_RUPEE = key("\u20B9",
                 Symbols.CURRENCY_GENERIC_MORE_KEYS);
     }
 
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsEnglishIN.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsEnglishIN.java
new file mode 100644
index 0000000000..c80b250248
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsEnglishIN.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.Qwerty;
+import com.android.inputmethod.keyboard.layout.Symbols;
+import com.android.inputmethod.keyboard.layout.SymbolsShifted;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+
+import java.util.Locale;
+
+/*
+ * en_IN: English (India)/qwerty
+ */
+@SmallTest
+public final class TestsEnglishIN extends TestsEnglishUS {
+    private static final Locale LOCALE = new Locale("en", "IN");
+    private static final LayoutBase LAYOUT = new Qwerty(new EnglishINCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class EnglishINCustomizer extends EnglishCustomizer {
+        public EnglishINCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey getCurrencyKey() { return CURRENCY_RUPEE; }
+
+        @Override
+        public ExpectedKey[] getOtherCurrencyKeys() {
+            return SymbolsShifted.CURRENCIES_OTHER_GENERIC;
+        }
+
+        // U+20B9: "₹" INDIAN RUPEE SIGN
+        private static final ExpectedKey CURRENCY_RUPEE = key("\u20B9",
+            Symbols.CURRENCY_GENERIC_MORE_KEYS);
+    }
+}
-- 
GitLab