Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5750)

Unified Diff: chrome/browser/ui/android/context_menu_helper.cc

Issue 178193033: Android: support http referrers for context menu navigations. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix TestShellTab compile error. Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..ef9dbe6942fea21d8c9ef9bde48167a56827b0bc 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,19 @@ ContextMenuHelper::CreateJavaContextMenuParams(
return jmenu_info;
}
+GURL ContextMenuHelper::SanitizeReferrer(const GURL& referring_url) {
+ // This mirrors sanitization done on Desktop in RenderViewContextMenu.
+ 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) {

Powered by Google App Engine
This is Rietveld 408576698