Index: chrome/browser/dom_distiller/tab_utils_android.cc |
diff --git a/chrome/browser/dom_distiller/tab_utils_android.cc b/chrome/browser/dom_distiller/tab_utils_android.cc |
index 805f7e3657fef83d1b79e0bfa997da0efa4ad1ce..855fba687e7b83c013d60bc1c9000568ef1e2654 100644 |
--- a/chrome/browser/dom_distiller/tab_utils_android.cc |
+++ b/chrome/browser/dom_distiller/tab_utils_android.cc |
@@ -6,9 +6,17 @@ |
#include <string> |
+#include "base/android/jni_string.h" |
+#include "base/prefs/pref_service.h" |
#include "chrome/browser/dom_distiller/tab_utils.h" |
+#include "chrome/browser/profiles/profile.h" |
+#include "chrome/browser/profiles/profile_manager.h" |
+#include "chrome/common/pref_names.h" |
#include "content/public/browser/web_contents.h" |
+#include "content/public/common/content_constants.h" |
nyquist
2014/08/12 21:57:50
Nit: What is this include for?
sunangel
2014/08/12 22:00:01
content::kMaxURLDisplayChars
On 2014/08/12 21:57:5
|
#include "jni/DomDistillerTabUtils_jni.h" |
+#include "net/base/net_util.h" |
+#include "url/gurl.h" |
namespace android { |
@@ -20,6 +28,33 @@ void DistillCurrentPageAndView(JNIEnv* env, |
::DistillCurrentPageAndView(web_contents); |
} |
+jstring GetFormattedUrlFromOriginalDistillerUrl(JNIEnv* env, |
+ jclass clazz, |
+ jstring j_url) { |
+ GURL url(base::android::ConvertJavaStringToUTF8(env, j_url)); |
+ Profile* profile = ProfileManager::GetLastUsedProfile(); |
+ std::string languages; // Empty if Profile cannot be retrieved. |
+ if (profile) { |
+ languages = profile->GetPrefs()->GetString(prefs::kAcceptLanguages); |
+ } |
+ |
+ if (url.spec().length() > content::kMaxURLDisplayChars) |
+ url = url.IsStandard() ? url.GetOrigin() : GURL(url.scheme() + ":"); |
+ |
+ // Note that we can't unescape spaces here, because if the user copies this |
+ // and pastes it into another program, that program may think the URL ends at |
+ // the space. |
+ return base::android::ConvertUTF16ToJavaString( |
+ env, |
+ net::FormatUrl(url, |
+ languages, |
+ net::kFormatUrlOmitAll, |
+ net::UnescapeRule::NORMAL, |
+ NULL, |
+ NULL, |
+ NULL)).Release(); |
+} |
+ |
} // namespace android |
bool RegisterDomDistillerTabUtils(JNIEnv* env) { |