Skip to content

Commit aa17186

Browse files
authored
[fml] Use common FML string encoding utils (flutter#31378)
General UTF8/UTF16 string conversion utility functions were recently added to FML. This migrates calls in the Android JNI utils to the common implementations. No additional tests added since we're just dropping one implementation of UTF8/UTF16 functions and making use of an equivalent set that already has unit tests of its own. The rest of the Android-related code is already covered by existing unit tests. Issue: flutter#98061 Related PR: flutter/engine#31334
1 parent d36d25f commit aa17186

File tree

1 file changed

+5
-15
lines changed

1 file changed

+5
-15
lines changed

fml/platform/android/jni_util.cc

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66

77
#include <sys/prctl.h>
88

9-
#include <codecvt>
109
#include <string>
1110

1211
#include "flutter/fml/logging.h"
12+
#include "flutter/fml/string_conversion.h"
1313
#include "flutter/fml/thread_local.h"
1414

1515
namespace fml {
@@ -67,12 +67,6 @@ void DetachFromVM() {
6767
}
6868
}
6969

70-
static std::string UTF16StringToUTF8String(const char16_t* chars, size_t len) {
71-
std::u16string u16_string(chars, len);
72-
return std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t>{}
73-
.to_bytes(u16_string);
74-
}
75-
7670
std::string JavaStringToString(JNIEnv* env, jstring str) {
7771
if (env == nullptr || str == nullptr) {
7872
return "";
@@ -81,21 +75,17 @@ std::string JavaStringToString(JNIEnv* env, jstring str) {
8175
if (chars == nullptr) {
8276
return "";
8377
}
84-
std::string u8_string = UTF16StringToUTF8String(
85-
reinterpret_cast<const char16_t*>(chars), env->GetStringLength(str));
78+
std::u16string u16_string(reinterpret_cast<const char16_t*>(chars),
79+
env->GetStringLength(str));
80+
std::string u8_string = Utf16ToUtf8(u16_string);
8681
env->ReleaseStringChars(str, chars);
8782
ASSERT_NO_EXCEPTION();
8883
return u8_string;
8984
}
9085

91-
static std::u16string UTF8StringToUTF16String(const std::string& string) {
92-
return std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t>{}
93-
.from_bytes(string);
94-
}
95-
9686
ScopedJavaLocalRef<jstring> StringToJavaString(JNIEnv* env,
9787
const std::string& u8_string) {
98-
std::u16string u16_string = UTF8StringToUTF16String(u8_string);
88+
std::u16string u16_string = Utf8ToUtf16(u8_string);
9989
auto result = ScopedJavaLocalRef<jstring>(
10090
env, env->NewString(reinterpret_cast<const jchar*>(u16_string.data()),
10191
u16_string.length()));

0 commit comments

Comments
 (0)