• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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)15 class 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