diff --git a/tests/tests/content/src/android/content/res/cts/AssetManagerTest.java b/tests/tests/content/src/android/content/res/cts/AssetManagerTest.java
index 21a8682..fe98b72 100644
--- a/tests/tests/content/src/android/content/res/cts/AssetManagerTest.java
+++ b/tests/tests/content/src/android/content/res/cts/AssetManagerTest.java
@@ -32,6 +32,8 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
+import java.util.Arrays;
+import java.util.HashSet;
 
 
 public class AssetManagerTest extends AndroidTestCase{
@@ -115,6 +117,50 @@
 
     }
 
+
+    public void testGetNonSystemLocales() {
+        // This is the list of locales built into this test package. It is basically the locales
+        // specified in the Android.mk files (assuming they have corresponding resources), plus the
+        // special case for Filipino.
+        final String KNOWN_LOCALES[] = {
+            "cs",
+            "fa-IR",
+            "fil",
+            "fil-PH",
+            "fr",
+            "fr-FR",
+            "kok",
+            "kok-419",
+            "kok-419-variant",
+            "kok-IN",
+            "kok-Knda",
+            "kok-Knda-419",
+            "kok-Knda-419-variant",
+            "kok-variant",
+            "tgl",
+            "tgl-PH",
+            "xx",
+            "xx-YY"
+        };
+
+        final HashSet<String> KNOWN_LOCALES_SET =
+                new HashSet<String>(Arrays.asList(KNOWN_LOCALES));
+
+        final String PSEUDO_OR_EMPTY_LOCALES[] = {
+            "",
+            "en-XA",
+            "ar-XB"
+        };
+
+        String locales[] = mAssets.getNonSystemLocales();
+        HashSet<String> localesSet = new HashSet<String>(Arrays.asList(locales));
+        for (String l : PSEUDO_OR_EMPTY_LOCALES) {
+            localesSet.remove(l);
+        }
+
+        assertEquals(KNOWN_LOCALES_SET, localesSet);
+    }
+
     private void assertContextEquals(final String expect, final InputStream inputStream)
             throws IOException {
         final BufferedReader bf = new BufferedReader(new InputStreamReader(inputStream));
diff --git a/tests/tests/util/src/android/util/cts/LocaleListTest.java b/tests/tests/util/src/android/util/cts/LocaleListTest.java
index f824aa8..ccf6475 100644
--- a/tests/tests/util/src/android/util/cts/LocaleListTest.java
+++ b/tests/tests/util/src/android/util/cts/LocaleListTest.java
@@ -325,4 +325,36 @@
                 Locale.forLanguageTag("hr-HR"),
                 LocaleList.forLanguageTags("hr-HR,sr-Latn-ME").getFirstMatch(oneSerbianAsset));
     }
+
+    public void testGetFirstMatch_LtrPseudoLocale() {
+        String[] onePseudoLocale = {"en-XA"};
+        // "en-XA" matches itself
+        assertEquals(
+                Locale.forLanguageTag("en-XA"),
+                LocaleList.forLanguageTags("sr,en-XA").getFirstMatch(onePseudoLocale));
+
+        // "en-XA" doesn't match "en" or "en-US"
+        assertEquals(
+                Locale.forLanguageTag("sr"),
+                LocaleList.forLanguageTags("sr,en").getFirstMatch(onePseudoLocale));
+        assertEquals(
+                Locale.forLanguageTag("sr"),
+                LocaleList.forLanguageTags("sr,en-US").getFirstMatch(onePseudoLocale));
+    }
+
+    public void testGetFirstMatch_RtlPseudoLocale() {
+        String[] onePseudoLocale = {"ar-XB"};
+        // "ar-XB" matches itself
+        assertEquals(
+                Locale.forLanguageTag("ar-XB"),
+                LocaleList.forLanguageTags("sr,ar-XB").getFirstMatch(onePseudoLocale));
+
+        // "ar-XB" doesn't match "ar" or "ar-EG"
+        assertEquals(
+                Locale.forLanguageTag("sr"),
+                LocaleList.forLanguageTags("sr,ar").getFirstMatch(onePseudoLocale));
+        assertEquals(
+                Locale.forLanguageTag("sr"),
+                LocaleList.forLanguageTags("sr,ar-EG").getFirstMatch(onePseudoLocale));
+    }
 }
