Add support for "-rtl" in resources

- fix bug #7035019 Need to have "-rtl" support for Resource

Change-Id: I107169daf3a47239b081034d9a345c5d68e6557a
diff --git a/tests/tests/content/src/android/content/res/cts/ConfigurationTest.java b/tests/tests/content/src/android/content/res/cts/ConfigurationTest.java
index 70443b0..c45b873 100644
--- a/tests/tests/content/src/android/content/res/cts/ConfigurationTest.java
+++ b/tests/tests/content/src/android/content/res/cts/ConfigurationTest.java
@@ -22,6 +22,8 @@
 import android.content.res.Configuration;
 import android.os.Parcel;
 import android.test.AndroidTestCase;
+import android.util.LocaleUtil;
+import android.view.View;
 
 public class ConfigurationTest extends AndroidTestCase {
 
@@ -154,24 +156,29 @@
         doConfigCompare(ActivityInfo.CONFIG_MCC
                 | ActivityInfo.CONFIG_MNC, mConfigDefault, config);
         config.locale = Locale.getDefault();
+        config.setLayoutDirection(config.locale);
         doConfigCompare(ActivityInfo.CONFIG_MCC
                 | ActivityInfo.CONFIG_MNC
-                | ActivityInfo.CONFIG_LOCALE, mConfigDefault, config);
+                | ActivityInfo.CONFIG_LOCALE
+                | ActivityInfo.CONFIG_LAYOUT_DIRECTION, mConfigDefault, config);
         config.screenLayout = 1;
         doConfigCompare(ActivityInfo.CONFIG_MCC
                 | ActivityInfo.CONFIG_MNC
                 | ActivityInfo.CONFIG_LOCALE
+                | ActivityInfo.CONFIG_LAYOUT_DIRECTION
                 | ActivityInfo.CONFIG_SCREEN_LAYOUT, mConfigDefault, config);
         config.touchscreen = 1;
         doConfigCompare(ActivityInfo.CONFIG_MCC
                 | ActivityInfo.CONFIG_MNC
                 | ActivityInfo.CONFIG_LOCALE
+                | ActivityInfo.CONFIG_LAYOUT_DIRECTION
                 | ActivityInfo.CONFIG_SCREEN_LAYOUT
                 | ActivityInfo.CONFIG_TOUCHSCREEN, mConfigDefault, config);
         config.keyboard = 1;
         doConfigCompare(ActivityInfo.CONFIG_MCC
                 | ActivityInfo.CONFIG_MNC
                 | ActivityInfo.CONFIG_LOCALE
+                | ActivityInfo.CONFIG_LAYOUT_DIRECTION
                 | ActivityInfo.CONFIG_SCREEN_LAYOUT
                 | ActivityInfo.CONFIG_TOUCHSCREEN
                 | ActivityInfo.CONFIG_KEYBOARD, mConfigDefault, config);
@@ -179,6 +186,7 @@
         doConfigCompare(ActivityInfo.CONFIG_MCC
                 | ActivityInfo.CONFIG_MNC
                 | ActivityInfo.CONFIG_LOCALE
+                | ActivityInfo.CONFIG_LAYOUT_DIRECTION
                 | ActivityInfo.CONFIG_SCREEN_LAYOUT
                 | ActivityInfo.CONFIG_TOUCHSCREEN
                 | ActivityInfo.CONFIG_KEYBOARD
@@ -188,6 +196,7 @@
         doConfigCompare(ActivityInfo.CONFIG_MCC
                 | ActivityInfo.CONFIG_MNC
                 | ActivityInfo.CONFIG_LOCALE
+                | ActivityInfo.CONFIG_LAYOUT_DIRECTION
                 | ActivityInfo.CONFIG_SCREEN_LAYOUT
                 | ActivityInfo.CONFIG_TOUCHSCREEN
                 | ActivityInfo.CONFIG_KEYBOARD
@@ -197,6 +206,7 @@
         doConfigCompare(ActivityInfo.CONFIG_MCC
                 | ActivityInfo.CONFIG_MNC
                 | ActivityInfo.CONFIG_LOCALE
+                | ActivityInfo.CONFIG_LAYOUT_DIRECTION
                 | ActivityInfo.CONFIG_SCREEN_LAYOUT
                 | ActivityInfo.CONFIG_TOUCHSCREEN
                 | ActivityInfo.CONFIG_KEYBOARD
@@ -205,6 +215,7 @@
         doConfigCompare(ActivityInfo.CONFIG_MCC
                 | ActivityInfo.CONFIG_MNC
                 | ActivityInfo.CONFIG_LOCALE
+                | ActivityInfo.CONFIG_LAYOUT_DIRECTION
                 | ActivityInfo.CONFIG_SCREEN_LAYOUT
                 | ActivityInfo.CONFIG_TOUCHSCREEN
                 | ActivityInfo.CONFIG_KEYBOARD
@@ -214,6 +225,7 @@
         doConfigCompare(ActivityInfo.CONFIG_MCC
                 | ActivityInfo.CONFIG_MNC
                 | ActivityInfo.CONFIG_LOCALE
+                | ActivityInfo.CONFIG_LAYOUT_DIRECTION
                 | ActivityInfo.CONFIG_SCREEN_LAYOUT
                 | ActivityInfo.CONFIG_TOUCHSCREEN
                 | ActivityInfo.CONFIG_KEYBOARD
@@ -224,6 +236,7 @@
         doConfigCompare(ActivityInfo.CONFIG_MCC
                 | ActivityInfo.CONFIG_MNC
                 | ActivityInfo.CONFIG_LOCALE
+                | ActivityInfo.CONFIG_LAYOUT_DIRECTION
                 | ActivityInfo.CONFIG_SCREEN_LAYOUT
                 | ActivityInfo.CONFIG_TOUCHSCREEN
                 | ActivityInfo.CONFIG_KEYBOARD
@@ -235,6 +248,7 @@
         doConfigCompare(ActivityInfo.CONFIG_MCC
                 | ActivityInfo.CONFIG_MNC
                 | ActivityInfo.CONFIG_LOCALE
+                | ActivityInfo.CONFIG_LAYOUT_DIRECTION
                 | ActivityInfo.CONFIG_SCREEN_LAYOUT
                 | ActivityInfo.CONFIG_TOUCHSCREEN
                 | ActivityInfo.CONFIG_KEYBOARD
@@ -280,6 +294,64 @@
         assertWriteToParcel(createConfig(Locale.JAPAN), Parcel.obtain());
     }
 
+    public void testSetLocale() {
+        Configuration config = new Configuration();
+
+        config.setLocale(Locale.getDefault());
+        assertEquals(Locale.getDefault(), config.locale);
+        assertEquals(View.LAYOUT_DIRECTION_LTR, config.getLayoutDirection());
+
+        config.setLocale(Locale.ENGLISH);
+        assertEquals(Locale.ENGLISH, config.locale);
+        assertEquals(View.LAYOUT_DIRECTION_LTR, config.getLayoutDirection());
+
+        config.setLocale(Locale.US);
+        assertEquals(Locale.US, config.locale);
+        assertEquals(View.LAYOUT_DIRECTION_LTR, config.getLayoutDirection());
+
+        final Locale arEGLocale = new Locale("ar", "EG");
+        config.setLocale(arEGLocale);
+        assertEquals(arEGLocale, config.locale);
+        assertEquals(View.LAYOUT_DIRECTION_RTL, config.getLayoutDirection());
+
+        final Locale faFALocale = new Locale("fa", "FA");
+        config.setLocale(faFALocale);
+        assertEquals(faFALocale, config.locale);
+        assertEquals(View.LAYOUT_DIRECTION_RTL, config.getLayoutDirection());
+
+// TODO: uncomment when ICU is fixed (4.8.1.1 version of ICS broke the following unit tests)
+//        final Locale iwILLocale = new Locale("iw", "IL");
+//        config.setLocale(iwILLocale);
+//        assertEquals(iwILLocale, config.locale);
+//        assertEquals(View.LAYOUT_DIRECTION_RTL, config.getLayoutDirection());
+    }
+
+    public void testSetGetLayoutDirection() {
+        Configuration config = new Configuration();
+
+        config.setLayoutDirection(Locale.getDefault());
+        assertEquals(View.LAYOUT_DIRECTION_LTR, config.getLayoutDirection());
+
+        config.setLayoutDirection(Locale.ENGLISH);
+        assertEquals(View.LAYOUT_DIRECTION_LTR, config.getLayoutDirection());
+
+        config.setLayoutDirection(Locale.US);
+        assertEquals(View.LAYOUT_DIRECTION_LTR, config.getLayoutDirection());
+
+        final Locale arEGLocale = new Locale("ar", "EG");
+        config.setLayoutDirection(arEGLocale);
+        assertEquals(View.LAYOUT_DIRECTION_RTL, config.getLayoutDirection());
+
+        final Locale faFALocale = new Locale("fa", "FA");
+        config.setLayoutDirection(faFALocale);
+        assertEquals(View.LAYOUT_DIRECTION_RTL, config.getLayoutDirection());
+
+// TODO: uncomment when ICU is fixed (4.8.1.1 version of ICS broke the following unit tests)
+//        final Locale iwILLocale = new Locale("iw", "IL");
+//        config.setLayoutDirection(iwILLocale);
+//        assertEquals(View.LAYOUT_DIRECTION_RTL, config.getLayoutDirection());
+    }
+
     private Configuration createConfig(Locale locale) {
         Configuration config = new Configuration();
         config.fontScale = 13.37f;