Index: chrome/browser/ui/android/context_menu_helper.cc |
diff --git a/chrome/browser/ui/android/context_menu_helper.cc b/chrome/browser/ui/android/context_menu_helper.cc |
index 6544143363a59e14c022cfdd44c15be802851f6b..fe40bfaab8015d28a54b3153fc474561ffc151e7 100644 |
--- a/chrome/browser/ui/android/context_menu_helper.cc |
+++ b/chrome/browser/ui/android/context_menu_helper.cc |
@@ -66,6 +66,9 @@ void ContextMenuHelper::SetPopulator(jobject jpopulator) { |
base::android::ScopedJavaLocalRef<jobject> |
ContextMenuHelper::CreateJavaContextMenuParams( |
const content::ContextMenuParams& params) { |
+ GURL sanitizedReferrer = SanitizeReferrer( |
+ params.frame_url.is_empty() ? params.page_url : params.frame_url); |
+ |
JNIEnv* env = base::android::AttachCurrentThread(); |
base::android::ScopedJavaLocalRef<jobject> jmenu_info = |
ContextMenuParamsAndroid::Java_ContextMenuParams_create( |
@@ -76,7 +79,9 @@ ContextMenuHelper::CreateJavaContextMenuParams( |
ConvertUTF8ToJavaString(env, params.unfiltered_link_url.spec()).obj(), |
ConvertUTF8ToJavaString(env, params.src_url.spec()).obj(), |
ConvertUTF16ToJavaString(env, params.selection_text).obj(), |
- params.is_editable); |
+ params.is_editable, |
+ ConvertUTF8ToJavaString(env, sanitizedReferrer.spec()).obj(), |
+ params.referrer_policy); |
std::vector<content::MenuItem>::const_iterator i; |
for (i = params.custom_items.begin(); i != params.custom_items.end(); ++i) { |
@@ -90,6 +95,20 @@ ContextMenuHelper::CreateJavaContextMenuParams( |
return jmenu_info; |
} |
+GURL ContextMenuHelper::SanitizeReferrer(const GURL& referring_url) { |
+ // This mirrors sanitization done on Desktop in RenderViewContextMenu. |
+ // TODO(ppi): consider extracting into a helper method in GURL? |
ppi
2014/03/05 20:01:45
As for this TODO - I also sent https://codereview.
Ted C
2014/03/05 22:20:53
I would say that if the other review doesn't go th
ppi
2014/03/06 11:41:04
Agreed. I will remove it already and include this
|
+ if (referring_url.is_valid() && (referring_url.has_ref() || |
+ referring_url.has_username() || referring_url.has_password())) { |
+ GURL::Replacements referrer_mods; |
+ referrer_mods.ClearRef(); |
+ referrer_mods.ClearUsername(); |
+ referrer_mods.ClearPassword(); |
+ return referring_url.ReplaceComponents(referrer_mods); |
+ } |
+ return referring_url; |
+} |
+ |
void ContextMenuHelper::OnCustomItemSelected(JNIEnv* env, |
jobject obj, |
jint action) { |