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

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: Created 6 years, 10 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..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) {

Powered by Google App Engine
This is Rietveld 408576698