15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef BASE_ANDROID_JNI_STRING_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define BASE_ANDROID_JNI_STRING_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <jni.h> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/android/scoped_java_ref.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/base_export.h" 13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/strings/string_piece.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace base { 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace android { 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Convert a Java string to UTF8. Returns a std string. 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)BASE_EXPORT void ConvertJavaStringToUTF8(JNIEnv* env, 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) jstring str, 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::string* result); 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)BASE_EXPORT std::string ConvertJavaStringToUTF8(JNIEnv* env, jstring str); 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)BASE_EXPORT std::string ConvertJavaStringToUTF8(const JavaRef<jstring>& str); 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Convert a std string to Java string. 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)BASE_EXPORT ScopedJavaLocalRef<jstring> ConvertUTF8ToJavaString( 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) JNIEnv* env, 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::StringPiece& str); 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Convert a Java string to UTF16. Returns a string16. 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)BASE_EXPORT void ConvertJavaStringToUTF16(JNIEnv* env, 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) jstring str, 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) string16* result); 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)BASE_EXPORT string16 ConvertJavaStringToUTF16(JNIEnv* env, jstring str); 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)BASE_EXPORT string16 ConvertJavaStringToUTF16(const JavaRef<jstring>& str); 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Convert a string16 to a Java string. 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)BASE_EXPORT ScopedJavaLocalRef<jstring> ConvertUTF16ToJavaString( 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) JNIEnv* env, 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::StringPiece16& str); 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace android 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace base 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // BASE_ANDROID_JNI_STRING_H_ 46