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 |