X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fcontent%2Fbrowser%2Frenderer_host%2Frender_widget_host_view_android.cc;h=ff24085f80388a03231cc8543a75f4b1e7697ff6;hb=b1be5ca53587d23e7aeb77b26861fdc0a181ffd8;hp=f4217357c753379b26a0ac67d7a27ff0d0c22425;hpb=490a4587e7e356282cb1453efaf36de4acc9762f;p=platform%2Fframework%2Fweb%2Fcrosswalk.git diff --git a/src/content/browser/renderer_host/render_widget_host_view_android.cc b/src/content/browser/renderer_host/render_widget_host_view_android.cc index f421735..ff24085 100644 --- a/src/content/browser/renderer_host/render_widget_host_view_android.cc +++ b/src/content/browser/renderer_host/render_widget_host_view_android.cc @@ -40,6 +40,7 @@ #include "content/browser/renderer_host/dip_util.h" #include "content/browser/renderer_host/image_transport_factory_android.h" #include "content/browser/renderer_host/input/synthetic_gesture_target_android.h" +#include "content/browser/renderer_host/input/web_input_event_builders_android.h" #include "content/browser/renderer_host/input/web_input_event_util.h" #include "content/browser/renderer_host/render_process_host_impl.h" #include "content/browser/renderer_host/render_view_host_impl.h" @@ -187,6 +188,7 @@ RenderWidgetHostViewAndroid::RenderWidgetHostViewAndroid( switches::kDisableOverscrollEdgeEffect)), overscroll_effect_(OverscrollGlow::Create(overscroll_effect_enabled_)), gesture_provider_(CreateGestureProviderConfig(), this), + gesture_text_selector_(this), flush_input_requested_(false), accelerated_surface_route_id_(0), using_synchronous_compositor_(SynchronousCompositorImpl::FromID( @@ -544,13 +546,11 @@ void RenderWidgetHostViewAndroid::OnStartContentIntent( } void RenderWidgetHostViewAndroid::OnSmartClipDataExtracted( - const base::string16& result) { - // Custom serialization over IPC isn't allowed normally for security reasons. - // Since this feature is only used in (single-process) WebView, there are no - // security issues. Enforce that it's only called in single process mode. - CHECK(RenderProcessHost::run_renderer_in_process()); + const base::string16& text, + const base::string16& html, + const gfx::Rect rect) { if (content_view_core_) - content_view_core_->OnSmartClipDataExtracted(result); + content_view_core_->OnSmartClipDataExtracted(text, html, rect); } bool RenderWidgetHostViewAndroid::OnTouchEvent( @@ -561,6 +561,11 @@ bool RenderWidgetHostViewAndroid::OnTouchEvent( if (!gesture_provider_.OnTouchEvent(event)) return false; + if (gesture_text_selector_.OnTouchEvent(event)) { + gesture_provider_.OnTouchEventAck(false); + return true; + } + // Short-circuit touch forwarding if no touch handlers exist. if (!host_->ShouldForwardTouchEvent()) { const bool event_consumed = false; @@ -1290,6 +1295,9 @@ void RenderWidgetHostViewAndroid::RunAckCallbacks() { void RenderWidgetHostViewAndroid::OnGestureEvent( const ui::GestureEventData& gesture) { + if (gesture_text_selector_.OnGestureEvent(gesture)) + return; + SendGestureEvent(CreateWebGestureEventFromGestureEventData(gesture)); } @@ -1437,6 +1445,31 @@ SkBitmap::Config RenderWidgetHostViewAndroid::PreferredReadbackFormat() { return SkBitmap::kARGB_8888_Config; } +void RenderWidgetHostViewAndroid::ShowSelectionHandlesAutomatically() { + if (content_view_core_) + content_view_core_->ShowSelectionHandlesAutomatically(); +} + +void RenderWidgetHostViewAndroid::SelectRange( + float x1, float y1, float x2, float y2) { + if (content_view_core_) + static_cast(content_view_core_->GetWebContents())-> + SelectRange(gfx::Point(x1, y1), gfx::Point(x2, y2)); +} + +void RenderWidgetHostViewAndroid::Unselect() { + if (content_view_core_) + content_view_core_->GetWebContents()->Unselect(); +} + +void RenderWidgetHostViewAndroid::LongPress( + base::TimeTicks time, float x, float y) { + blink::WebGestureEvent long_press = WebGestureEventBuilder::Build( + blink::WebInputEvent::GestureLongPress, + (time - base::TimeTicks()).InSecondsF(), x, y); + SendGestureEvent(long_press); +} + // static void RenderWidgetHostViewBase::GetDefaultScreenInfo( blink::WebScreenInfo* results) {