Index: base/android/build_info.cc |
diff --git a/base/android/build_info.cc b/base/android/build_info.cc |
index c825be01a3c13bd1f981468b62767b944a5a3938..35e041fb192877c11e8ec2570f604261160e0339 100644 |
--- a/base/android/build_info.cc |
+++ b/base/android/build_info.cc |
@@ -7,38 +7,28 @@ |
#include <string> |
#include "base/android/jni_android.h" |
-#include "base/android/jni_array.h" |
+#include "base/android/jni_string.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 { |
+ |
+// 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()); |
+} |
+ |
+} // namespace |
namespace base { |
namespace android { |
-namespace { |
- |
-// We are leaking these strings. |
-const char* StrDupParam(const std::vector<std::string>& params, int index) { |
- return strdup(params[index].c_str()); |
-} |
- |
-int SdkIntParam(const std::vector<std::string>& params, int index) { |
- int ret = 0; |
- DCHECK(StringToInt(params[index], &ret)); |
- return ret; |
-} |
- |
-} // namespace |
- |
struct BuildInfoSingletonTraits { |
static BuildInfo* New() { |
- 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); |
+ return new BuildInfo(AttachCurrentThread()); |
} |
static void Delete(BuildInfo* x) { |
@@ -52,21 +42,25 @@ |
#endif |
}; |
-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]), |
+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)), |
java_exception_info_(NULL) {} |
// static |