Commit 17d33e70 authored by Akira Baruah's avatar Akira Baruah Committed by Commit Bot

Implement GetFactoryLocaleList() using AThings Factory API.

Bug: b/79936337
Bug: b/111880157
Test: Install APK on device and verify via logcat
Change-Id: I51a0a34540de6e21f4a8dc5abb4e75d58f8fe4cf
Merge-With: eureka-internal/205878
Reviewed-on: https://chromium-review.googlesource.com/c/1259611
Commit-Queue: Akira Baruah <akirabaruah@chromium.org>
Reviewed-by: default avatarSimeon Anfinrud <sanfin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#601320}
parent e898b99e
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include "base/android/jni_string.h" #include "base/android/jni_string.h"
#include "chromecast/chromecast_buildflags.h" #include "chromecast/chromecast_buildflags.h"
#if BUILDFLAG(IS_ANDROID_THINGS_NON_PUBLIC) #if BUILDFLAG(IS_ANDROID_THINGS_NON_PUBLIC)
#include "base/android/jni_array.h"
#include "jni/CastSysInfoAndroidThings_jni.h" #include "jni/CastSysInfoAndroidThings_jni.h"
#endif #endif
...@@ -55,4 +56,16 @@ std::string CastSysInfoAndroidThings::GetSystemReleaseChannel() { ...@@ -55,4 +56,16 @@ std::string CastSysInfoAndroidThings::GetSystemReleaseChannel() {
#endif #endif
} }
// static
std::vector<std::string> CastSysInfo::GetFactoryLocaleList() {
std::vector<std::string> locale_list;
#if BUILDFLAG(IS_ANDROID_THINGS_NON_PUBLIC)
JNIEnv* env = base::android::AttachCurrentThread();
base::android::AppendJavaStringArrayToStringVector(
env, Java_CastSysInfoAndroidThings_getFactoryLocaleList(env).obj(),
&locale_list);
#endif
return locale_list;
}
} // namespace chromecast } // namespace chromecast
...@@ -5,16 +5,27 @@ ...@@ -5,16 +5,27 @@
package org.chromium.chromecast.shell; package org.chromium.chromecast.shell;
import com.google.android.things.AndroidThings; import com.google.android.things.AndroidThings;
import com.google.android.things.factory.FactoryDataManager;
import com.google.android.things.update.UpdateManager; import com.google.android.things.update.UpdateManager;
import org.chromium.base.Log;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.JNINamespace;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
/** /**
* Java implementation of CastSysInfoAndroidThings methods. * Java implementation of CastSysInfoAndroidThings methods.
*/ */
@JNINamespace("chromecast") @JNINamespace("chromecast")
public final class CastSysInfoAndroidThings { public final class CastSysInfoAndroidThings {
private static final String TAG = "CastSysInfoAndroidThings";
private static final String FACTORY_LOCALE_LIST_FILE = "locale_list.txt";
@CalledByNative @CalledByNative
private static String getProductName() { private static String getProductName() {
return AndroidThings.Product.NAME; return AndroidThings.Product.NAME;
...@@ -34,4 +45,24 @@ public final class CastSysInfoAndroidThings { ...@@ -34,4 +45,24 @@ public final class CastSysInfoAndroidThings {
private static String getReleaseChannel() { private static String getReleaseChannel() {
return UpdateManager.getInstance().getChannel(); return UpdateManager.getInstance().getChannel();
} }
@CalledByNative
private static String[] getFactoryLocaleList() {
ArrayList<String> locale_list = new ArrayList<String>();
try {
FactoryDataManager factoryManager = FactoryDataManager.getInstance();
try (InputStream input = factoryManager.openFile(FACTORY_LOCALE_LIST_FILE);
BufferedReader reader = new BufferedReader(new InputStreamReader(input))) {
for (String line = reader.readLine(); line != null; line = reader.readLine()) {
locale_list.add(line);
}
}
} catch (IllegalStateException e) {
Log.e(TAG, "Failed to connect to FactoryDataService", e);
} catch (IllegalArgumentException | IOException e) {
Log.w(TAG, "Factory file %s doesn't exist or can't be opened.",
FACTORY_LOCALE_LIST_FILE, e);
}
return locale_list.toArray(new String[locale_list.size()]);
}
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment