| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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 "content/browser/android/content_view_core_impl.h" | 5 #include "content/browser/android/content_view_core_impl.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.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 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 45 #include "content/public/browser/render_frame_host.h" | 45 #include "content/public/browser/render_frame_host.h" |
| 46 #include "content/public/browser/render_view_host.h" | 46 #include "content/public/browser/render_view_host.h" |
| 47 #include "content/public/browser/ssl_host_state_delegate.h" | 47 #include "content/public/browser/ssl_host_state_delegate.h" |
| 48 #include "content/public/browser/web_contents.h" | 48 #include "content/public/browser/web_contents.h" |
| 49 #include "content/public/common/content_client.h" | 49 #include "content/public/common/content_client.h" |
| 50 #include "content/public/common/content_switches.h" | 50 #include "content/public/common/content_switches.h" |
| 51 #include "content/public/common/menu_item.h" | 51 #include "content/public/common/menu_item.h" |
| 52 #include "content/public/common/user_agent.h" | 52 #include "content/public/common/user_agent.h" |
| 53 #include "device/geolocation/geolocation_service_context.h" | 53 #include "device/geolocation/geolocation_service_context.h" |
| 54 #include "jni/ContentViewCore_jni.h" | 54 #include "jni/ContentViewCore_jni.h" |
| 55 #include "jni/DragEvent_jni.h" | |
| 56 #include "third_party/WebKit/public/platform/WebInputEvent.h" | 55 #include "third_party/WebKit/public/platform/WebInputEvent.h" |
| 57 #include "third_party/WebKit/public/web/WebContextMenuData.h" | 56 #include "third_party/WebKit/public/web/WebContextMenuData.h" |
| 58 #include "ui/android/view_android.h" | 57 #include "ui/android/view_android.h" |
| 59 #include "ui/android/window_android.h" | 58 #include "ui/android/window_android.h" |
| 60 #include "ui/base/clipboard/clipboard.h" | |
| 61 #include "ui/base/ui_base_switches_util.h" | |
| 62 #include "ui/events/android/motion_event_android.h" | |
| 63 #include "ui/events/blink/blink_event_util.h" | 59 #include "ui/events/blink/blink_event_util.h" |
| 64 #include "ui/events/blink/web_input_event_traits.h" | 60 #include "ui/events/blink/web_input_event_traits.h" |
| 65 #include "ui/events/event_utils.h" | 61 #include "ui/events/event_utils.h" |
| 66 #include "ui/events/gesture_detection/motion_event.h" | 62 #include "ui/events/gesture_detection/motion_event.h" |
| 67 #include "ui/gfx/android/java_bitmap.h" | 63 #include "ui/gfx/android/java_bitmap.h" |
| 68 #include "ui/gfx/geometry/point_conversions.h" | 64 #include "ui/gfx/geometry/point_conversions.h" |
| 69 #include "ui/gfx/geometry/size_conversions.h" | 65 #include "ui/gfx/geometry/size_conversions.h" |
| 70 #include "ui/gfx/geometry/size_f.h" | 66 #include "ui/gfx/geometry/size_f.h" |
| 71 | 67 |
| 72 using base::android::AttachCurrentThread; | 68 using base::android::AttachCurrentThread; |
| 73 using base::android::ConvertJavaStringToUTF16; | 69 using base::android::ConvertJavaStringToUTF16; |
| 74 using base::android::ConvertJavaStringToUTF8; | 70 using base::android::ConvertJavaStringToUTF8; |
| 75 using base::android::ConvertUTF16ToJavaString; | 71 using base::android::ConvertUTF16ToJavaString; |
| 76 using base::android::ConvertUTF8ToJavaString; | 72 using base::android::ConvertUTF8ToJavaString; |
| 77 using base::android::JavaParamRef; | 73 using base::android::JavaParamRef; |
| 78 using base::android::JavaRef; | 74 using base::android::JavaRef; |
| 79 using base::android::ScopedJavaLocalRef; | 75 using base::android::ScopedJavaLocalRef; |
| 80 using blink::WebContextMenuData; | 76 using blink::WebContextMenuData; |
| 81 using blink::WebGestureEvent; | 77 using blink::WebGestureEvent; |
| 82 using blink::WebInputEvent; | 78 using blink::WebInputEvent; |
| 83 using ui::MotionEventAndroid; | |
| 84 | 79 |
| 85 namespace content { | 80 namespace content { |
| 86 | 81 |
| 87 namespace { | 82 namespace { |
| 88 | 83 |
| 89 // Describes the type and enabled state of a select popup item. | 84 // Describes the type and enabled state of a select popup item. |
| 90 // | 85 // |
| 91 // A Java counterpart will be generated for this enum. | 86 // A Java counterpart will be generated for this enum. |
| 92 // GENERATED_JAVA_ENUM_PACKAGE: org.chromium.content.browser.input | 87 // GENERATED_JAVA_ENUM_PACKAGE: org.chromium.content.browser.input |
| 93 enum PopupItemType { | 88 enum PopupItemType { |
| (...skipping 1044 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1138 const JavaParamRef<jobject>& jobj, | 1133 const JavaParamRef<jobject>& jobj, |
| 1139 jboolean opaque) { | 1134 jboolean opaque) { |
| 1140 if (GetRenderWidgetHostViewAndroid()) { | 1135 if (GetRenderWidgetHostViewAndroid()) { |
| 1141 if (opaque) | 1136 if (opaque) |
| 1142 GetRenderWidgetHostViewAndroid()->SetBackgroundColorToDefault(); | 1137 GetRenderWidgetHostViewAndroid()->SetBackgroundColorToDefault(); |
| 1143 else | 1138 else |
| 1144 GetRenderWidgetHostViewAndroid()->SetBackgroundColor(SK_ColorTRANSPARENT); | 1139 GetRenderWidgetHostViewAndroid()->SetBackgroundColor(SK_ColorTRANSPARENT); |
| 1145 } | 1140 } |
| 1146 } | 1141 } |
| 1147 | 1142 |
| 1148 bool ContentViewCoreImpl::IsTouchDragDropEnabled( | |
| 1149 JNIEnv* env, | |
| 1150 const base::android::JavaParamRef<jobject>& jobj) { | |
| 1151 return switches::IsTouchDragDropEnabled(); | |
| 1152 } | |
| 1153 | |
| 1154 void ContentViewCoreImpl::OnDragEvent( | |
| 1155 JNIEnv* env, | |
| 1156 const base::android::JavaParamRef<jobject>& jobj, | |
| 1157 jint action, | |
| 1158 jint x, | |
| 1159 jint y, | |
| 1160 jint screen_x, | |
| 1161 jint screen_y, | |
| 1162 const base::android::JavaParamRef<jobjectArray>& j_mimeTypes, | |
| 1163 const base::android::JavaParamRef<jstring>& j_content) { | |
| 1164 WebContentsViewAndroid* wcva = static_cast<WebContentsViewAndroid*>( | |
| 1165 static_cast<WebContentsImpl*>(web_contents())->GetView()); | |
| 1166 | |
| 1167 const gfx::Point location(x, y); | |
| 1168 const gfx::Point screen_location(screen_x, screen_y); | |
| 1169 | |
| 1170 std::vector<base::string16> mime_types; | |
| 1171 base::android::AppendJavaStringArrayToStringVector(env, j_mimeTypes, | |
| 1172 &mime_types); | |
| 1173 switch (action) { | |
| 1174 case JNI_DragEvent::ACTION_DRAG_ENTERED: { | |
| 1175 std::vector<DropData::Metadata> metadata; | |
| 1176 for (const base::string16& mime_type : mime_types) { | |
| 1177 metadata.push_back(DropData::Metadata::CreateForMimeType( | |
| 1178 DropData::Kind::STRING, mime_type)); | |
| 1179 } | |
| 1180 wcva->OnDragEntered(metadata, location, screen_location); | |
| 1181 break; | |
| 1182 } | |
| 1183 case JNI_DragEvent::ACTION_DRAG_LOCATION: { | |
| 1184 wcva->OnDragUpdated(location, screen_location); | |
| 1185 break; | |
| 1186 } | |
| 1187 case JNI_DragEvent::ACTION_DROP: { | |
| 1188 base::string16 text_to_drop = ConvertJavaStringToUTF16(env, j_content); | |
| 1189 DropData drop_data; | |
| 1190 drop_data.did_originate_from_renderer = false; | |
| 1191 for (const base::string16& mime_type : mime_types) { | |
| 1192 if (base::EqualsASCII(mime_type, ui::Clipboard::kMimeTypeURIList)) { | |
| 1193 drop_data.url = GURL(text_to_drop); | |
| 1194 } else if (base::EqualsASCII(mime_type, ui::Clipboard::kMimeTypeText)) { | |
| 1195 drop_data.text = base::NullableString16(text_to_drop, false); | |
| 1196 } else { | |
| 1197 drop_data.html = base::NullableString16(text_to_drop, false); | |
| 1198 } | |
| 1199 } | |
| 1200 | |
| 1201 wcva->OnPerformDrop(&drop_data, location, screen_location); | |
| 1202 break; | |
| 1203 } | |
| 1204 case JNI_DragEvent::ACTION_DRAG_EXITED: | |
| 1205 wcva->OnDragExited(); | |
| 1206 break; | |
| 1207 case JNI_DragEvent::ACTION_DRAG_ENDED: | |
| 1208 wcva->OnDragEnded(); | |
| 1209 break; | |
| 1210 case JNI_DragEvent::ACTION_DRAG_STARTED: | |
| 1211 // Nothing meaningful to do. | |
| 1212 break; | |
| 1213 } | |
| 1214 } | |
| 1215 | |
| 1216 void ContentViewCoreImpl::OnShowUnhandledTapUIIfNeeded(int x_dip, int y_dip) { | 1143 void ContentViewCoreImpl::OnShowUnhandledTapUIIfNeeded(int x_dip, int y_dip) { |
| 1217 JNIEnv* env = AttachCurrentThread(); | 1144 JNIEnv* env = AttachCurrentThread(); |
| 1218 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); | 1145 ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); |
| 1219 if (obj.is_null()) | 1146 if (obj.is_null()) |
| 1220 return; | 1147 return; |
| 1221 Java_ContentViewCore_onShowUnhandledTapUIIfNeeded( | 1148 Java_ContentViewCore_onShowUnhandledTapUIIfNeeded( |
| 1222 env, obj, static_cast<jint>(x_dip * dpi_scale()), | 1149 env, obj, static_cast<jint>(x_dip * dpi_scale()), |
| 1223 static_cast<jint>(y_dip * dpi_scale())); | 1150 static_cast<jint>(y_dip * dpi_scale())); |
| 1224 } | 1151 } |
| 1225 | 1152 |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1289 return ScopedJavaLocalRef<jobject>(); | 1216 return ScopedJavaLocalRef<jobject>(); |
| 1290 | 1217 |
| 1291 return view->GetJavaObject(); | 1218 return view->GetJavaObject(); |
| 1292 } | 1219 } |
| 1293 | 1220 |
| 1294 bool RegisterContentViewCore(JNIEnv* env) { | 1221 bool RegisterContentViewCore(JNIEnv* env) { |
| 1295 return RegisterNativesImpl(env); | 1222 return RegisterNativesImpl(env); |
| 1296 } | 1223 } |
| 1297 | 1224 |
| 1298 } // namespace content | 1225 } // namespace content |
| OLD | NEW |