|  | // Copyright 2016 The Chromium Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #include <string> | 
|  |  | 
|  | #include "base/android/jni_android.h" | 
|  | #include "base/android/jni_string.h" | 
|  | #include "components/url_formatter/elide_url.h" | 
|  | #include "components/url_formatter/url_fixer.h" | 
|  | #include "components/url_formatter/url_formatter.h" | 
|  | #include "jni/UrlFormatter_jni.h" | 
|  | #include "url/gurl.h" | 
|  |  | 
|  | using base::android::JavaParamRef; | 
|  | using base::android::ScopedJavaLocalRef; | 
|  |  | 
|  | namespace { | 
|  |  | 
|  | GURL JNI_UrlFormatter_ConvertJavaStringToGURL(JNIEnv* env, jstring url) { | 
|  | return url ? GURL(base::android::ConvertJavaStringToUTF8(env, url)) : GURL(); | 
|  | } | 
|  |  | 
|  | }  // namespace | 
|  |  | 
|  | namespace url_formatter { | 
|  |  | 
|  | namespace android { | 
|  |  | 
|  | static ScopedJavaLocalRef<jstring> JNI_UrlFormatter_FixupUrl( | 
|  | JNIEnv* env, | 
|  | const JavaParamRef<jstring>& url) { | 
|  | DCHECK(url); | 
|  | GURL fixed_url = url_formatter::FixupURL( | 
|  | base::android::ConvertJavaStringToUTF8(env, url), std::string()); | 
|  |  | 
|  | return fixed_url.is_valid() | 
|  | ? base::android::ConvertUTF8ToJavaString(env, fixed_url.spec()) | 
|  | : ScopedJavaLocalRef<jstring>(); | 
|  | } | 
|  |  | 
|  | static ScopedJavaLocalRef<jstring> | 
|  | JNI_UrlFormatter_FormatUrlForDisplayOmitScheme( | 
|  | JNIEnv* env, | 
|  | const JavaParamRef<jstring>& url) { | 
|  | return base::android::ConvertUTF16ToJavaString( | 
|  | env, url_formatter::FormatUrl( | 
|  | JNI_UrlFormatter_ConvertJavaStringToGURL(env, url), | 
|  | url_formatter::kFormatUrlOmitDefaults | | 
|  | url_formatter::kFormatUrlOmitHTTPS, | 
|  | net::UnescapeRule::SPACES, nullptr, nullptr, nullptr)); | 
|  | } | 
|  |  | 
|  | static ScopedJavaLocalRef<jstring> | 
|  | JNI_UrlFormatter_FormatUrlForDisplayOmitHTTPScheme( | 
|  | JNIEnv* env, | 
|  | const JavaParamRef<jstring>& url) { | 
|  | return base::android::ConvertUTF16ToJavaString( | 
|  | env, url_formatter::FormatUrl( | 
|  | JNI_UrlFormatter_ConvertJavaStringToGURL(env, url), | 
|  | url_formatter::kFormatUrlOmitDefaults, net::UnescapeRule::SPACES, | 
|  | nullptr, nullptr, nullptr)); | 
|  | } | 
|  |  | 
|  | static ScopedJavaLocalRef<jstring> JNI_UrlFormatter_FormatUrlForCopy( | 
|  | JNIEnv* env, | 
|  | const JavaParamRef<jstring>& url) { | 
|  | return base::android::ConvertUTF16ToJavaString( | 
|  | env, url_formatter::FormatUrl( | 
|  | JNI_UrlFormatter_ConvertJavaStringToGURL(env, url), | 
|  | url_formatter::kFormatUrlOmitNothing, net::UnescapeRule::NORMAL, | 
|  | nullptr, nullptr, nullptr)); | 
|  | } | 
|  |  | 
|  | static ScopedJavaLocalRef<jstring> JNI_UrlFormatter_FormatUrlForSecurityDisplay( | 
|  | JNIEnv* env, | 
|  | const JavaParamRef<jstring>& url) { | 
|  | return base::android::ConvertUTF16ToJavaString( | 
|  | env, url_formatter::FormatUrlForSecurityDisplay( | 
|  | JNI_UrlFormatter_ConvertJavaStringToGURL(env, url))); | 
|  | } | 
|  |  | 
|  | static ScopedJavaLocalRef<jstring> | 
|  | JNI_UrlFormatter_FormatUrlForSecurityDisplayOmitScheme( | 
|  | JNIEnv* env, | 
|  | const JavaParamRef<jstring>& url) { | 
|  | return base::android::ConvertUTF16ToJavaString( | 
|  | env, url_formatter::FormatUrlForSecurityDisplay( | 
|  | JNI_UrlFormatter_ConvertJavaStringToGURL(env, url), | 
|  | url_formatter::SchemeDisplay::OMIT_HTTP_AND_HTTPS)); | 
|  | } | 
|  |  | 
|  | }  // namespace android | 
|  |  | 
|  | }  // namespace url_formatter |