| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/frame_host/cross_process_frame_connector.h" | 5 #include "content/browser/frame_host/cross_process_frame_connector.h" |
| 6 | 6 |
| 7 #include "cc/surfaces/surface.h" |
| 8 #include "cc/surfaces/surface_manager.h" |
| 7 #include "content/browser/frame_host/render_frame_proxy_host.h" | 9 #include "content/browser/frame_host/render_frame_proxy_host.h" |
| 8 #include "content/browser/frame_host/render_widget_host_view_child_frame.h" | 10 #include "content/browser/frame_host/render_widget_host_view_child_frame.h" |
| 9 #include "content/browser/renderer_host/render_view_host_impl.h" | 11 #include "content/browser/renderer_host/render_view_host_impl.h" |
| 10 #include "content/browser/renderer_host/render_widget_host_impl.h" | 12 #include "content/browser/renderer_host/render_widget_host_impl.h" |
| 11 #include "content/common/frame_messages.h" | 13 #include "content/common/frame_messages.h" |
| 12 #include "content/common/gpu/gpu_messages.h" | 14 #include "content/common/gpu/gpu_messages.h" |
| 13 #include "third_party/WebKit/public/web/WebInputEvent.h" | 15 #include "third_party/WebKit/public/web/WebInputEvent.h" |
| 14 | 16 |
| 15 namespace content { | 17 namespace content { |
| 16 | 18 |
| (...skipping 13 matching lines...) Expand all Loading... |
| 30 bool handled = true; | 32 bool handled = true; |
| 31 | 33 |
| 32 IPC_BEGIN_MESSAGE_MAP(CrossProcessFrameConnector, msg) | 34 IPC_BEGIN_MESSAGE_MAP(CrossProcessFrameConnector, msg) |
| 33 IPC_MESSAGE_HANDLER(FrameHostMsg_CompositorFrameSwappedACK, | 35 IPC_MESSAGE_HANDLER(FrameHostMsg_CompositorFrameSwappedACK, |
| 34 OnCompositorFrameSwappedACK) | 36 OnCompositorFrameSwappedACK) |
| 35 IPC_MESSAGE_HANDLER(FrameHostMsg_ReclaimCompositorResources, | 37 IPC_MESSAGE_HANDLER(FrameHostMsg_ReclaimCompositorResources, |
| 36 OnReclaimCompositorResources) | 38 OnReclaimCompositorResources) |
| 37 IPC_MESSAGE_HANDLER(FrameHostMsg_ForwardInputEvent, OnForwardInputEvent) | 39 IPC_MESSAGE_HANDLER(FrameHostMsg_ForwardInputEvent, OnForwardInputEvent) |
| 38 IPC_MESSAGE_HANDLER(FrameHostMsg_InitializeChildFrame, | 40 IPC_MESSAGE_HANDLER(FrameHostMsg_InitializeChildFrame, |
| 39 OnInitializeChildFrame) | 41 OnInitializeChildFrame) |
| 42 IPC_MESSAGE_HANDLER(FrameHostMsg_SatisfySequence, OnSatisfySequence) |
| 43 IPC_MESSAGE_HANDLER(FrameHostMsg_RequireSequence, OnRequireSequence) |
| 40 IPC_MESSAGE_UNHANDLED(handled = false) | 44 IPC_MESSAGE_UNHANDLED(handled = false) |
| 41 IPC_END_MESSAGE_MAP() | 45 IPC_END_MESSAGE_MAP() |
| 42 | 46 |
| 43 return handled; | 47 return handled; |
| 44 } | 48 } |
| 45 | 49 |
| 46 void CrossProcessFrameConnector::set_view( | 50 void CrossProcessFrameConnector::set_view( |
| 47 RenderWidgetHostViewChildFrame* view) { | 51 RenderWidgetHostViewChildFrame* view) { |
| 48 // Detach ourselves from the previous |view_|. | 52 // Detach ourselves from the previous |view_|. |
| 49 if (view_) | 53 if (view_) |
| (...skipping 21 matching lines...) Expand all Loading... |
| 71 scoped_ptr<cc::CompositorFrame> frame) { | 75 scoped_ptr<cc::CompositorFrame> frame) { |
| 72 FrameMsg_CompositorFrameSwapped_Params params; | 76 FrameMsg_CompositorFrameSwapped_Params params; |
| 73 frame->AssignTo(¶ms.frame); | 77 frame->AssignTo(¶ms.frame); |
| 74 params.output_surface_id = output_surface_id; | 78 params.output_surface_id = output_surface_id; |
| 75 params.producing_route_id = route_id; | 79 params.producing_route_id = route_id; |
| 76 params.producing_host_id = host_id; | 80 params.producing_host_id = host_id; |
| 77 frame_proxy_in_parent_renderer_->Send(new FrameMsg_CompositorFrameSwapped( | 81 frame_proxy_in_parent_renderer_->Send(new FrameMsg_CompositorFrameSwapped( |
| 78 frame_proxy_in_parent_renderer_->GetRoutingID(), params)); | 82 frame_proxy_in_parent_renderer_->GetRoutingID(), params)); |
| 79 } | 83 } |
| 80 | 84 |
| 85 void CrossProcessFrameConnector::SetChildFrameSurface( |
| 86 cc::SurfaceId& surface_id, |
| 87 gfx::Size frame_size, |
| 88 float scale_factor, |
| 89 cc::SurfaceSequence& sequence) { |
| 90 frame_proxy_in_parent_renderer_->Send(new FrameMsg_SetChildFrameSurface( |
| 91 frame_proxy_in_parent_renderer_->GetRoutingID(), surface_id, frame_size, |
| 92 scale_factor, sequence)); |
| 93 } |
| 94 |
| 95 void CrossProcessFrameConnector::OnSatisfySequence( |
| 96 const cc::SurfaceSequence& sequence) { |
| 97 #if !defined(OS_ANDROID) |
| 98 std::vector<uint32_t> sequences; |
| 99 sequences.push_back(sequence.sequence); |
| 100 cc::SurfaceManager* manager = |
| 101 ImageTransportFactory::GetInstance()->GetSurfaceManager(); |
| 102 manager->DidSatisfySequences(sequence.id_namespace, &sequences); |
| 103 #endif |
| 104 } |
| 105 |
| 106 void CrossProcessFrameConnector::OnRequireSequence( |
| 107 const cc::SurfaceId& id, |
| 108 const cc::SurfaceSequence& sequence) { |
| 109 #if !defined(OS_ANDROID) |
| 110 cc::SurfaceManager* manager = |
| 111 ImageTransportFactory::GetInstance()->GetSurfaceManager(); |
| 112 cc::Surface* surface = manager->GetSurfaceForId(id); |
| 113 if (!surface) { |
| 114 LOG(ERROR) << "Attempting to require callback on nonexistent surface"; |
| 115 return; |
| 116 } |
| 117 surface->AddDestructionDependency(sequence); |
| 118 #endif |
| 119 } |
| 120 |
| 81 void CrossProcessFrameConnector::OnCompositorFrameSwappedACK( | 121 void CrossProcessFrameConnector::OnCompositorFrameSwappedACK( |
| 82 const FrameHostMsg_CompositorFrameSwappedACK_Params& params) { | 122 const FrameHostMsg_CompositorFrameSwappedACK_Params& params) { |
| 83 RenderWidgetHostImpl::SendSwapCompositorFrameAck(params.producing_route_id, | 123 RenderWidgetHostImpl::SendSwapCompositorFrameAck(params.producing_route_id, |
| 84 params.output_surface_id, | 124 params.output_surface_id, |
| 85 params.producing_host_id, | 125 params.producing_host_id, |
| 86 params.ack); | 126 params.ack); |
| 87 } | 127 } |
| 88 | 128 |
| 89 void CrossProcessFrameConnector::OnReclaimCompositorResources( | 129 void CrossProcessFrameConnector::OnReclaimCompositorResources( |
| 90 const FrameHostMsg_ReclaimCompositorResources_Params& params) { | 130 const FrameHostMsg_ReclaimCompositorResources_Params& params) { |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 149 } | 189 } |
| 150 } | 190 } |
| 151 | 191 |
| 152 void CrossProcessFrameConnector::SetSize(gfx::Rect frame_rect) { | 192 void CrossProcessFrameConnector::SetSize(gfx::Rect frame_rect) { |
| 153 child_frame_rect_ = frame_rect; | 193 child_frame_rect_ = frame_rect; |
| 154 if (view_) | 194 if (view_) |
| 155 view_->SetSize(frame_rect.size()); | 195 view_->SetSize(frame_rect.size()); |
| 156 } | 196 } |
| 157 | 197 |
| 158 } // namespace content | 198 } // namespace content |
| OLD | NEW |