| 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 <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #include "base/android/jni_android.h" | 9 #include "base/android/jni_android.h" |
| 10 #include "base/android/jni_array.h" | 10 #include "base/android/jni_array.h" |
| (...skipping 28 matching lines...) Expand all Loading... |
| 39 : web_contents_(web_contents) { | 39 : web_contents_(web_contents) { |
| 40 JNIEnv* env = base::android::AttachCurrentThread(); | 40 JNIEnv* env = base::android::AttachCurrentThread(); |
| 41 java_obj_.Reset( | 41 java_obj_.Reset( |
| 42 env, | 42 env, |
| 43 Java_ContextMenuHelper_create(env, reinterpret_cast<long>(this)).obj()); | 43 Java_ContextMenuHelper_create(env, reinterpret_cast<long>(this)).obj()); |
| 44 DCHECK(!java_obj_.is_null()); | 44 DCHECK(!java_obj_.is_null()); |
| 45 } | 45 } |
| 46 | 46 |
| 47 ContextMenuHelper::~ContextMenuHelper() { | 47 ContextMenuHelper::~ContextMenuHelper() { |
| 48 JNIEnv* env = base::android::AttachCurrentThread(); | 48 JNIEnv* env = base::android::AttachCurrentThread(); |
| 49 Java_ContextMenuHelper_destroy(env, java_obj_.obj()); | 49 Java_ContextMenuHelper_destroy(env, java_obj_); |
| 50 } | 50 } |
| 51 | 51 |
| 52 bool ContextMenuHelper::ShowContextMenu( | 52 bool ContextMenuHelper::ShowContextMenu( |
| 53 content::RenderFrameHost* render_frame_host, | 53 content::RenderFrameHost* render_frame_host, |
| 54 const content::ContextMenuParams& params) { | 54 const content::ContextMenuParams& params) { |
| 55 content::ContentViewCore* content_view_core = | 55 content::ContentViewCore* content_view_core = |
| 56 content::ContentViewCore::FromWebContents(web_contents_); | 56 content::ContentViewCore::FromWebContents(web_contents_); |
| 57 | 57 |
| 58 if (!content_view_core) | 58 if (!content_view_core) |
| 59 return false; | 59 return false; |
| 60 | 60 |
| 61 base::android::ScopedJavaLocalRef<jobject> jcontent_view_core( | 61 base::android::ScopedJavaLocalRef<jobject> jcontent_view_core( |
| 62 content_view_core->GetJavaObject()); | 62 content_view_core->GetJavaObject()); |
| 63 | 63 |
| 64 if (jcontent_view_core.is_null()) | 64 if (jcontent_view_core.is_null()) |
| 65 return false; | 65 return false; |
| 66 | 66 |
| 67 JNIEnv* env = base::android::AttachCurrentThread(); | 67 JNIEnv* env = base::android::AttachCurrentThread(); |
| 68 context_menu_params_ = params; | 68 context_menu_params_ = params; |
| 69 render_frame_id_ = render_frame_host->GetRoutingID(); | 69 render_frame_id_ = render_frame_host->GetRoutingID(); |
| 70 render_process_id_ = render_frame_host->GetProcess()->GetID(); | 70 render_process_id_ = render_frame_host->GetProcess()->GetID(); |
| 71 | 71 |
| 72 return Java_ContextMenuHelper_showContextMenu( | 72 return Java_ContextMenuHelper_showContextMenu( |
| 73 env, java_obj_.obj(), jcontent_view_core.obj(), | 73 env, java_obj_, jcontent_view_core, |
| 74 ContextMenuHelper::CreateJavaContextMenuParams(params).obj()); | 74 ContextMenuHelper::CreateJavaContextMenuParams(params)); |
| 75 } | 75 } |
| 76 | 76 |
| 77 void ContextMenuHelper::SetPopulator(jobject jpopulator) { | 77 void ContextMenuHelper::SetPopulator(jobject jpopulator) { |
| 78 JNIEnv* env = base::android::AttachCurrentThread(); | 78 JNIEnv* env = base::android::AttachCurrentThread(); |
| 79 Java_ContextMenuHelper_setPopulator(env, java_obj_.obj(), jpopulator); | 79 Java_ContextMenuHelper_setPopulator(env, java_obj_, jpopulator); |
| 80 } | 80 } |
| 81 | 81 |
| 82 base::android::ScopedJavaLocalRef<jobject> | 82 base::android::ScopedJavaLocalRef<jobject> |
| 83 ContextMenuHelper::CreateJavaContextMenuParams( | 83 ContextMenuHelper::CreateJavaContextMenuParams( |
| 84 const content::ContextMenuParams& params) { | 84 const content::ContextMenuParams& params) { |
| 85 GURL sanitizedReferrer = (params.frame_url.is_empty() ? | 85 GURL sanitizedReferrer = (params.frame_url.is_empty() ? |
| 86 params.page_url : params.frame_url).GetAsReferrer(); | 86 params.page_url : params.frame_url).GetAsReferrer(); |
| 87 | 87 |
| 88 std::map<std::string, std::string>::const_iterator it = | 88 std::map<std::string, std::string>::const_iterator it = |
| 89 params.properties.find(data_reduction_proxy::chrome_proxy_header()); | 89 params.properties.find(data_reduction_proxy::chrome_proxy_header()); |
| 90 bool image_was_fetched_lo_fi = | 90 bool image_was_fetched_lo_fi = |
| 91 it != params.properties.end() && | 91 it != params.properties.end() && |
| 92 it->second == data_reduction_proxy::chrome_proxy_lo_fi_directive(); | 92 it->second == data_reduction_proxy::chrome_proxy_lo_fi_directive(); |
| 93 bool can_save = params.media_flags & blink::WebContextMenuData::MediaCanSave; | 93 bool can_save = params.media_flags & blink::WebContextMenuData::MediaCanSave; |
| 94 JNIEnv* env = base::android::AttachCurrentThread(); | 94 JNIEnv* env = base::android::AttachCurrentThread(); |
| 95 base::android::ScopedJavaLocalRef<jobject> jmenu_info = | 95 base::android::ScopedJavaLocalRef<jobject> jmenu_info = |
| 96 ContextMenuParamsAndroid::Java_ContextMenuParams_create( | 96 ContextMenuParamsAndroid::Java_ContextMenuParams_create( |
| 97 env, | 97 env, params.media_type, |
| 98 params.media_type, | 98 ConvertUTF8ToJavaString(env, params.page_url.spec()), |
| 99 ConvertUTF8ToJavaString(env, params.page_url.spec()).obj(), | 99 ConvertUTF8ToJavaString(env, params.link_url.spec()), |
| 100 ConvertUTF8ToJavaString(env, params.link_url.spec()).obj(), | 100 ConvertUTF16ToJavaString(env, params.link_text), |
| 101 ConvertUTF16ToJavaString(env, params.link_text).obj(), | 101 ConvertUTF8ToJavaString(env, params.unfiltered_link_url.spec()), |
| 102 ConvertUTF8ToJavaString(env, params.unfiltered_link_url.spec()).obj(), | 102 ConvertUTF8ToJavaString(env, params.src_url.spec()), |
| 103 ConvertUTF8ToJavaString(env, params.src_url.spec()).obj(), | 103 ConvertUTF16ToJavaString(env, params.title_text), |
| 104 ConvertUTF16ToJavaString(env, params.title_text).obj(), | |
| 105 image_was_fetched_lo_fi, | 104 image_was_fetched_lo_fi, |
| 106 ConvertUTF8ToJavaString(env, sanitizedReferrer.spec()).obj(), | 105 ConvertUTF8ToJavaString(env, sanitizedReferrer.spec()), |
| 107 params.referrer_policy, | 106 params.referrer_policy, can_save); |
| 108 can_save); | |
| 109 | 107 |
| 110 return jmenu_info; | 108 return jmenu_info; |
| 111 } | 109 } |
| 112 | 110 |
| 113 void ContextMenuHelper::OnStartDownload( | 111 void ContextMenuHelper::OnStartDownload( |
| 114 JNIEnv* env, | 112 JNIEnv* env, |
| 115 const JavaParamRef<jobject>& obj, | 113 const JavaParamRef<jobject>& obj, |
| 116 jboolean jis_link, | 114 jboolean jis_link, |
| 117 jboolean jis_data_reduction_proxy_enabled) { | 115 jboolean jis_data_reduction_proxy_enabled) { |
| 118 std::string headers; | 116 std::string headers; |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 165 | 163 |
| 166 if (jwindow_android.is_null()) | 164 if (jwindow_android.is_null()) |
| 167 return; | 165 return; |
| 168 | 166 |
| 169 JNIEnv* env = base::android::AttachCurrentThread(); | 167 JNIEnv* env = base::android::AttachCurrentThread(); |
| 170 base::android::ScopedJavaLocalRef<jbyteArray> j_bytes = | 168 base::android::ScopedJavaLocalRef<jbyteArray> j_bytes = |
| 171 base::android::ToJavaByteArray( | 169 base::android::ToJavaByteArray( |
| 172 env, reinterpret_cast<const uint8_t*>(thumbnail_data.data()), | 170 env, reinterpret_cast<const uint8_t*>(thumbnail_data.data()), |
| 173 thumbnail_data.length()); | 171 thumbnail_data.length()); |
| 174 | 172 |
| 175 Java_ContextMenuHelper_onShareImageReceived( | 173 Java_ContextMenuHelper_onShareImageReceived(env, java_obj_, jwindow_android, |
| 176 env, | 174 j_bytes); |
| 177 java_obj_.obj(), | |
| 178 jwindow_android.obj(), | |
| 179 j_bytes.obj()); | |
| 180 } | 175 } |
| 181 | 176 |
| 182 bool RegisterContextMenuHelper(JNIEnv* env) { | 177 bool RegisterContextMenuHelper(JNIEnv* env) { |
| 183 return RegisterNativesImpl(env); | 178 return RegisterNativesImpl(env); |
| 184 } | 179 } |
| OLD | NEW |