Snap for 9691662 from ec408496521e0cacde1da336aa63041bf424d444 to mainline-mediaprovider-release

Change-Id: I8bcea729179e1abd3a9f7b058ea6442d3cab0f28
diff --git a/native/utils/resources.cc b/native/utils/resources.cc
index 24b3a6f..0c3ace0 100644
--- a/native/utils/resources.cc
+++ b/native/utils/resources.cc
@@ -33,12 +33,26 @@
   return left->str() == right;
 }
 
+std::string NormalizeLanguageCode(const std::string& language_code) {
+  if (language_code == "id") {
+    return "in";
+  } else if (language_code == "iw") {
+    return "he";
+  } else if (language_code == "no") {
+    return "nb";
+  } else if (language_code == "tl") {
+    return "fil";
+  }
+  return language_code;
+}
+
 }  // namespace
 
 int Resources::LocaleMatch(const Locale& locale,
                            const LanguageTag* entry_locale) const {
   int match = LOCALE_NO_MATCH;
-  if (isExactMatch(entry_locale->language(), locale.Language())) {
+  if (isExactMatch(entry_locale->language(),
+                   NormalizeLanguageCode(locale.Language()))) {
     match |= LOCALE_LANGUAGE_MATCH;
   } else if (isWildcardMatch(entry_locale->language(), locale.Language())) {
     match |= LOCALE_LANGUAGE_WILDCARD_MATCH;
diff --git a/native/utils/resources_test.cc b/native/utils/resources_test.cc
index 6e3d0a1..82eec30 100644
--- a/native/utils/resources_test.cc
+++ b/native/utils/resources_test.cc
@@ -58,6 +58,8 @@
     test_resources.locale.emplace_back(new LanguageTagT);
     test_resources.locale.back()->language = "fr";
     test_resources.locale.back()->region = "CA";
+    test_resources.locale.emplace_back(new LanguageTagT);
+    test_resources.locale.back()->language = "in";
     if (add_default_language) {
       test_resources.locale.emplace_back(new LanguageTagT);  // default
     }
@@ -72,7 +74,7 @@
     test_resources.resource_entry.back()->resource.back()->locale.push_back(0);
     if (add_default_language) {
       test_resources.resource_entry.back()->resource.back()->locale.push_back(
-          9);
+          10);
     }
 
     // en-GB
@@ -115,6 +117,12 @@
     test_resources.resource_entry.back()->resource.back()->content = "龍";
     test_resources.resource_entry.back()->resource.back()->locale.push_back(7);
 
+    // in
+    test_resources.resource_entry.back()->resource.emplace_back(new ResourceT);
+    test_resources.resource_entry.back()->resource.back()->content =
+        "Apa kabar";
+    test_resources.resource_entry.back()->resource.back()->locale.push_back(9);
+
     flatbuffers::FlatBufferBuilder builder;
     builder.Finish(ResourcePool::Pack(builder, &test_resources));
 
@@ -147,6 +155,9 @@
   EXPECT_TRUE(resources.GetResourceContent({Locale::FromBCP47("fr-CA")},
                                            /*resource_name=*/"A", &content));
   EXPECT_EQ("localiser", content);
+  EXPECT_TRUE(resources.GetResourceContent({Locale::FromBCP47("id")},
+                                           /*resource_name=*/"A", &content));
+  EXPECT_EQ("Apa kabar", content);
 }
 
 TEST_F(ResourcesTest, CorrectlyHandlesTie) {