1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "components/dom_distiller/core/url_utils_android.h" 6 7#include <string> 8 9#include "base/android/jni_string.h" 10#include "components/dom_distiller/core/url_constants.h" 11#include "components/dom_distiller/core/url_utils.h" 12#include "jni/DomDistillerUrlUtils_jni.h" 13#include "net/base/url_util.h" 14#include "url/gurl.h" 15 16namespace dom_distiller { 17 18namespace url_utils { 19 20namespace android { 21 22jstring GetDistillerViewUrlFromUrl(JNIEnv* env, 23 jclass clazz, 24 jstring j_scheme, 25 jstring j_url) { 26 std::string scheme(base::android::ConvertJavaStringToUTF8(env, j_scheme)); 27 GURL url(base::android::ConvertJavaStringToUTF8(env, j_url)); 28 if (!url.is_valid()) { 29 return NULL; 30 } 31 GURL view_url = 32 dom_distiller::url_utils::GetDistillerViewUrlFromUrl(scheme, url); 33 if (!view_url.is_valid()) { 34 return NULL; 35 } 36 return base::android::ConvertUTF8ToJavaString(env, view_url.spec()).Release(); 37} 38 39jstring GetOriginalUrlFromDistillerUrl(JNIEnv* env, 40 jclass clazz, 41 jstring j_url) { 42 GURL url(base::android::ConvertJavaStringToUTF8(env, j_url)); 43 if (!url.is_valid()) 44 return NULL; 45 46 std::string original_url_str; 47 net::GetValueForKeyInQuery(url, kUrlKey, &original_url_str); 48 GURL original_url(original_url_str); 49 if (!original_url.is_valid()) 50 return NULL; 51 52 return base::android::ConvertUTF8ToJavaString(env, original_url.spec()) 53 .Release(); 54} 55 56jboolean IsDistilledPage(JNIEnv* env, jclass clazz, jstring j_url) { 57 GURL url(base::android::ConvertJavaStringToUTF8(env, j_url)); 58 return dom_distiller::url_utils::IsDistilledPage(url); 59} 60 61jboolean IsUrlDistillable(JNIEnv* env, jclass clazz, jstring j_url) { 62 GURL url(base::android::ConvertJavaStringToUTF8(env, j_url)); 63 return dom_distiller::url_utils::IsUrlDistillable(url); 64} 65 66jstring GetIsDistillableJs(JNIEnv* env, jclass clazz) { 67 return base::android::ConvertUTF8ToJavaString( 68 env, dom_distiller::url_utils::GetIsDistillableJs()).Release(); 69} 70 71jstring GetValueForKeyInUrl(JNIEnv* env, 72 jclass clazz, 73 jstring j_url, 74 jstring j_key) { 75 GURL url(base::android::ConvertJavaStringToUTF8(env, j_url)); 76 std::string key = base::android::ConvertJavaStringToUTF8(env, j_key); 77 return base::android:: 78 ConvertUTF8ToJavaString( 79 env, dom_distiller::url_utils::GetValueForKeyInUrl(url, key)) 80 .Release(); 81} 82 83bool RegisterUrlUtils(JNIEnv* env) { return RegisterNativesImpl(env); } 84 85} // namespace android 86 87} // namespace url_utils 88 89} // namespace dom_distiller 90