Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1027)

Unified Diff: content/browser/frame_host/render_widget_host_view_child_frame.cc

Issue 1729373003: Implement touch events for site-isolation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Use positioned iframe in test to simplify event targeting. Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/frame_host/render_widget_host_view_child_frame.cc
diff --git a/content/browser/frame_host/render_widget_host_view_child_frame.cc b/content/browser/frame_host/render_widget_host_view_child_frame.cc
index acc2a0055ae0972cc20728150421b83f217cbbb0..35749e9f4d43b02111087ba6e94344951c17f8af 100644
--- a/content/browser/frame_host/render_widget_host_view_child_frame.cc
+++ b/content/browser/frame_host/render_widget_host_view_child_frame.cc
@@ -43,10 +43,7 @@ RenderWidgetHostViewChildFrame::RenderWidgetHostViewChildFrame(
frame_connector_(nullptr),
weak_factory_(this) {
id_allocator_ = CreateSurfaceIdAllocator();
- if (host_->delegate() && host_->delegate()->GetInputEventRouter()) {
- host_->delegate()->GetInputEventRouter()->AddSurfaceIdNamespaceOwner(
- GetSurfaceIdNamespace(), this);
- }
+ RegisterSurfaceNamespaceId();
host_->SetView(this);
}
@@ -253,6 +250,24 @@ void RenderWidgetHostViewChildFrame::UnlockCompositingSurface() {
NOTIMPLEMENTED();
}
+void RenderWidgetHostViewChildFrame::RegisterSurfaceNamespaceId() {
+ DCHECK(host_);
+ if (host_->delegate() && host_->delegate()->GetInputEventRouter()) {
+ RenderWidgetHostInputEventRouter* router =
+ host_->delegate()->GetInputEventRouter();
+ if (!router->is_registered(GetSurfaceIdNamespace()))
+ router->AddSurfaceIdNamespaceOwner(GetSurfaceIdNamespace(), this);
+ }
+}
+
+void RenderWidgetHostViewChildFrame::UnregisterSurfaceNamespaceId() {
+ DCHECK(host_);
+ if (host_->delegate() && host_->delegate()->GetInputEventRouter()) {
+ host_->delegate()->GetInputEventRouter()->RemoveSurfaceIdNamespaceOwner(
+ GetSurfaceIdNamespace());
+ }
+}
+
void RenderWidgetHostViewChildFrame::SurfaceDrawn(uint32_t output_surface_id,
cc::SurfaceDrawStatus drawn) {
cc::CompositorFrameAck ack;
@@ -364,12 +379,14 @@ gfx::Rect RenderWidgetHostViewChildFrame::GetBoundsInRootWindow() {
return rect;
}
-#if defined(USE_AURA)
void RenderWidgetHostViewChildFrame::ProcessAckedTouchEvent(
const TouchEventWithLatencyInfo& touch,
InputEventAckState ack_result) {
+ if (!frame_connector_)
+ return;
+
+ frame_connector_->ForwardProcessAckedTouchEvent(touch, ack_result);
}
-#endif // defined(USE_AURA)
bool RenderWidgetHostViewChildFrame::LockMouse() {
return false;
@@ -398,6 +415,17 @@ void RenderWidgetHostViewChildFrame::ProcessMouseWheelEvent(
host_->ForwardWheelEvent(event);
}
+void RenderWidgetHostViewChildFrame::ProcessTouchEvent(
+ const blink::WebTouchEvent& event,
+ const ui::LatencyInfo& latency) {
+ if (event.type == blink::WebInputEvent::TouchStart &&
+ frame_connector_ && !frame_connector_->HasFocus()) {
+ frame_connector_->FocusRootView();
+ }
+
+ host_->ForwardTouchEventWithLatencyInfo(event, latency);
+}
+
gfx::Point RenderWidgetHostViewChildFrame::TransformPointToRootCoordSpace(
const gfx::Point& point) {
if (!frame_connector_)

Powered by Google App Engine
This is Rietveld 408576698