| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/android/context_menu_helper.h" | 5 #include "chrome/browser/ui/android/context_menu_helper.h" |
| 6 | 6 |
| 7 #include "base/android/jni_android.h" | 7 #include "base/android/jni_android.h" |
| 8 #include "base/android/jni_string.h" | 8 #include "base/android/jni_string.h" |
| 9 #include "components/data_reduction_proxy/core/common/data_reduction_proxy_heade
rs.h" | 9 #include "components/data_reduction_proxy/core/common/data_reduction_proxy_heade
rs.h" |
| 10 #include "content/public/browser/android/content_view_core.h" | 10 #include "content/public/browser/android/content_view_core.h" |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 50 | 50 |
| 51 JNIEnv* env = base::android::AttachCurrentThread(); | 51 JNIEnv* env = base::android::AttachCurrentThread(); |
| 52 context_menu_params_ = params; | 52 context_menu_params_ = params; |
| 53 Java_ContextMenuHelper_showContextMenu( | 53 Java_ContextMenuHelper_showContextMenu( |
| 54 env, | 54 env, |
| 55 java_obj_.obj(), | 55 java_obj_.obj(), |
| 56 jcontent_view_core.obj(), | 56 jcontent_view_core.obj(), |
| 57 ContextMenuHelper::CreateJavaContextMenuParams(params).obj()); | 57 ContextMenuHelper::CreateJavaContextMenuParams(params).obj()); |
| 58 } | 58 } |
| 59 | 59 |
| 60 // Called to show a custom context menu. Used by the NTP. | |
| 61 void ContextMenuHelper::ShowCustomContextMenu( | |
| 62 const content::ContextMenuParams& params, | |
| 63 const base::Callback<void(int)>& callback) { | |
| 64 context_menu_callback_ = callback; | |
| 65 ShowContextMenu(params); | |
| 66 } | |
| 67 | |
| 68 void ContextMenuHelper::SetPopulator(jobject jpopulator) { | 60 void ContextMenuHelper::SetPopulator(jobject jpopulator) { |
| 69 JNIEnv* env = base::android::AttachCurrentThread(); | 61 JNIEnv* env = base::android::AttachCurrentThread(); |
| 70 Java_ContextMenuHelper_setPopulator(env, java_obj_.obj(), jpopulator); | 62 Java_ContextMenuHelper_setPopulator(env, java_obj_.obj(), jpopulator); |
| 71 } | 63 } |
| 72 | 64 |
| 73 base::android::ScopedJavaLocalRef<jobject> | 65 base::android::ScopedJavaLocalRef<jobject> |
| 74 ContextMenuHelper::CreateJavaContextMenuParams( | 66 ContextMenuHelper::CreateJavaContextMenuParams( |
| 75 const content::ContextMenuParams& params) { | 67 const content::ContextMenuParams& params) { |
| 76 GURL sanitizedReferrer = (params.frame_url.is_empty() ? | 68 GURL sanitizedReferrer = (params.frame_url.is_empty() ? |
| 77 params.page_url : params.frame_url).GetAsReferrer(); | 69 params.page_url : params.frame_url).GetAsReferrer(); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 92 ConvertUTF16ToJavaString(env, params.link_text).obj(), | 84 ConvertUTF16ToJavaString(env, params.link_text).obj(), |
| 93 ConvertUTF8ToJavaString(env, params.unfiltered_link_url.spec()).obj(), | 85 ConvertUTF8ToJavaString(env, params.unfiltered_link_url.spec()).obj(), |
| 94 ConvertUTF8ToJavaString(env, params.src_url.spec()).obj(), | 86 ConvertUTF8ToJavaString(env, params.src_url.spec()).obj(), |
| 95 ConvertUTF16ToJavaString(env, params.selection_text).obj(), | 87 ConvertUTF16ToJavaString(env, params.selection_text).obj(), |
| 96 ConvertUTF16ToJavaString(env, params.title_text).obj(), | 88 ConvertUTF16ToJavaString(env, params.title_text).obj(), |
| 97 image_was_fetched_lo_fi, | 89 image_was_fetched_lo_fi, |
| 98 params.is_editable, | 90 params.is_editable, |
| 99 ConvertUTF8ToJavaString(env, sanitizedReferrer.spec()).obj(), | 91 ConvertUTF8ToJavaString(env, sanitizedReferrer.spec()).obj(), |
| 100 params.referrer_policy); | 92 params.referrer_policy); |
| 101 | 93 |
| 102 std::vector<content::MenuItem>::const_iterator i; | |
| 103 for (i = params.custom_items.begin(); i != params.custom_items.end(); ++i) { | |
| 104 ContextMenuParamsAndroid::Java_ContextMenuParams_addCustomItem( | |
| 105 env, | |
| 106 jmenu_info.obj(), | |
| 107 ConvertUTF16ToJavaString(env, i->label).obj(), | |
| 108 i->action); | |
| 109 } | |
| 110 | |
| 111 return jmenu_info; | 94 return jmenu_info; |
| 112 } | 95 } |
| 113 | 96 |
| 114 void ContextMenuHelper::OnCustomItemSelected(JNIEnv* env, | |
| 115 jobject obj, | |
| 116 jint action) { | |
| 117 if (!context_menu_callback_.is_null()) { | |
| 118 context_menu_callback_.Run(action); | |
| 119 context_menu_callback_.Reset(); | |
| 120 } | |
| 121 } | |
| 122 | |
| 123 void ContextMenuHelper::OnStartDownload(JNIEnv* env, | 97 void ContextMenuHelper::OnStartDownload(JNIEnv* env, |
| 124 jobject obj, | 98 jobject obj, |
| 125 jboolean jis_link) { | 99 jboolean jis_link) { |
| 126 content::DownloadControllerAndroid::Get()->StartContextMenuDownload( | 100 content::DownloadControllerAndroid::Get()->StartContextMenuDownload( |
| 127 context_menu_params_, | 101 context_menu_params_, |
| 128 web_contents_, | 102 web_contents_, |
| 129 jis_link); | 103 jis_link); |
| 130 } | 104 } |
| 131 | 105 |
| 132 bool RegisterContextMenuHelper(JNIEnv* env) { | 106 bool RegisterContextMenuHelper(JNIEnv* env) { |
| 133 return RegisterNativesImpl(env) && | 107 return RegisterNativesImpl(env) && |
| 134 ContextMenuParamsAndroid::RegisterNativesImpl(env); | 108 ContextMenuParamsAndroid::RegisterNativesImpl(env); |
| 135 } | 109 } |
| OLD | NEW |