1 // Copyright 2019 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 URL_ANDROID_GURL_ANDROID_H_ 6 #define URL_ANDROID_GURL_ANDROID_H_ 7 8 #include "base/component_export.h" 9 #include "base/containers/span.h" 10 #include "third_party/jni_zero/jni_zero.h" 11 #include "url/gurl.h" 12 13 namespace url { 14 COMPONENT_EXPORT(URL)15class COMPONENT_EXPORT(URL) GURLAndroid { 16 public: 17 static GURL ToNativeGURL(JNIEnv* env, 18 const jni_zero::JavaRef<jobject>& j_gurl); 19 static jni_zero::ScopedJavaLocalRef<jobject> FromNativeGURL(JNIEnv* env, 20 const GURL& gurl); 21 static jni_zero::ScopedJavaLocalRef<jobject> EmptyGURL(JNIEnv* env); 22 }; 23 24 } // namespace url 25 26 namespace jni_zero { 27 28 // Convert from java GURL.java pointer to native GURL object. 29 template <> 30 inline GURL FromJniType<GURL>(JNIEnv* env, const JavaRef<jobject>& j_gurl) { 31 return url::GURLAndroid::ToNativeGURL(env, j_gurl); 32 } 33 34 // Convert from native GURL object to a GURL.java object pointer. 35 template <> 36 inline ScopedJavaLocalRef<jobject> ToJniType<GURL>(JNIEnv* env, 37 const GURL& gurl) { 38 return url::GURLAndroid::FromNativeGURL(env, gurl); 39 } 40 } // namespace jni_zero 41 42 #endif // URL_ANDROID_GURL_ANDROID_H_ 43