Index: base/android/build_info.cc |
diff --git a/base/android/build_info.cc b/base/android/build_info.cc |
index 35e041fb192877c11e8ec2570f604261160e0339..c825be01a3c13bd1f981468b62767b944a5a3938 100644 |
--- a/base/android/build_info.cc |
+++ b/base/android/build_info.cc |
@@ -7,28 +7,38 @@ |
#include <string> |
#include "base/android/jni_android.h" |
-#include "base/android/jni_string.h" |
+#include "base/android/jni_array.h" |
#include "base/android/scoped_java_ref.h" |
#include "base/logging.h" |
#include "base/memory/singleton.h" |
+#include "base/strings/string_number_conversions.h" |
#include "jni/BuildInfo_jni.h" |
+namespace base { |
+namespace android { |
+ |
namespace { |
// We are leaking these strings. |
-const char* StrDupJString(const base::android::JavaRef<jstring>& java_string) { |
- std::string str = ConvertJavaStringToUTF8(java_string); |
- return strdup(str.c_str()); |
+const char* StrDupParam(const std::vector<std::string>& params, int index) { |
+ return strdup(params[index].c_str()); |
} |
-} // namespace |
+int SdkIntParam(const std::vector<std::string>& params, int index) { |
+ int ret = 0; |
+ DCHECK(StringToInt(params[index], &ret)); |
+ return ret; |
+} |
-namespace base { |
-namespace android { |
+} // namespace |
struct BuildInfoSingletonTraits { |
static BuildInfo* New() { |
- return new BuildInfo(AttachCurrentThread()); |
+ JNIEnv* env = AttachCurrentThread(); |
+ ScopedJavaLocalRef<jobjectArray> params_objs = Java_BuildInfo_getAll(env); |
+ std::vector<std::string> params; |
+ AppendJavaStringArrayToStringVector(env, params_objs.obj(), ¶ms); |
+ return new BuildInfo(params); |
} |
static void Delete(BuildInfo* x) { |
@@ -42,25 +52,21 @@ struct BuildInfoSingletonTraits { |
#endif |
}; |
-BuildInfo::BuildInfo(JNIEnv* env) |
- : device_(StrDupJString(Java_BuildInfo_getDevice(env))), |
- manufacturer_(StrDupJString(Java_BuildInfo_getDeviceManufacturer(env))), |
- model_(StrDupJString(Java_BuildInfo_getDeviceModel(env))), |
- brand_(StrDupJString(Java_BuildInfo_getBrand(env))), |
- android_build_id_(StrDupJString(Java_BuildInfo_getAndroidBuildId(env))), |
- android_build_fp_( |
- StrDupJString(Java_BuildInfo_getAndroidBuildFingerprint(env))), |
- gms_version_code_(StrDupJString(Java_BuildInfo_getGMSVersionCode(env))), |
- package_version_code_( |
- StrDupJString(Java_BuildInfo_getPackageVersionCode(env))), |
- package_version_name_( |
- StrDupJString(Java_BuildInfo_getPackageVersionName(env))), |
- package_label_(StrDupJString(Java_BuildInfo_getPackageLabel(env))), |
- package_name_(StrDupJString(Java_BuildInfo_getPackageName(env))), |
- build_type_(StrDupJString(Java_BuildInfo_getBuildType(env))), |
- extracted_file_suffix_( |
- ConvertJavaStringToUTF8(Java_BuildInfo_getExtractedFileSuffix(env))), |
- sdk_int_(Java_BuildInfo_getSdkInt(env)), |
+BuildInfo::BuildInfo(const std::vector<std::string>& params) |
+ : brand_(StrDupParam(params, 0)), |
+ device_(StrDupParam(params, 1)), |
+ android_build_id_(StrDupParam(params, 2)), |
+ manufacturer_(StrDupParam(params, 3)), |
+ model_(StrDupParam(params, 4)), |
+ sdk_int_(SdkIntParam(params, 5)), |
+ build_type_(StrDupParam(params, 6)), |
+ package_label_(StrDupParam(params, 7)), |
+ package_name_(StrDupParam(params, 8)), |
+ package_version_code_(StrDupParam(params, 9)), |
+ package_version_name_(StrDupParam(params, 10)), |
+ android_build_fp_(StrDupParam(params, 11)), |
+ gms_version_code_(StrDupParam(params, 12)), |
+ extracted_file_suffix_(params[13]), |
java_exception_info_(NULL) {} |
// static |