1 // Copyright 2012 The Chromium Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef BASE_ANDROID_JNI_STRING_H_ 6 #define BASE_ANDROID_JNI_STRING_H_ 7 8 #include <jni.h> 9 10 #include <string> 11 #include <string_view> 12 13 #include "base/android/scoped_java_ref.h" 14 #include "base/base_export.h" 15 16 namespace base { 17 namespace android { 18 19 // Convert a Java string to UTF8. Returns a std string. 20 BASE_EXPORT void ConvertJavaStringToUTF8(JNIEnv* env, 21 jstring str, 22 std::string* result); 23 BASE_EXPORT std::string ConvertJavaStringToUTF8(JNIEnv* env, jstring str); 24 BASE_EXPORT std::string ConvertJavaStringToUTF8(const JavaRef<jstring>& str); 25 BASE_EXPORT std::string ConvertJavaStringToUTF8(JNIEnv* env, 26 const JavaRef<jstring>& str); 27 28 // Convert a std string to Java string. 29 BASE_EXPORT ScopedJavaLocalRef<jstring> ConvertUTF8ToJavaString( 30 JNIEnv* env, 31 std::string_view str); 32 33 // Convert a Java string to UTF16. Returns a std::u16string. 34 BASE_EXPORT void ConvertJavaStringToUTF16(JNIEnv* env, 35 jstring str, 36 std::u16string* result); 37 BASE_EXPORT std::u16string ConvertJavaStringToUTF16(JNIEnv* env, jstring str); 38 BASE_EXPORT std::u16string ConvertJavaStringToUTF16( 39 const JavaRef<jstring>& str); 40 BASE_EXPORT std::u16string ConvertJavaStringToUTF16( 41 JNIEnv* env, 42 const JavaRef<jstring>& str); 43 44 // Convert a std::u16string to a Java string. 45 BASE_EXPORT ScopedJavaLocalRef<jstring> ConvertUTF16ToJavaString( 46 JNIEnv* env, 47 std::u16string_view str); 48 49 } // namespace android 50 } // namespace base 51 52 #endif // BASE_ANDROID_JNI_STRING_H_ 53