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/renderer/render_frame_proxy.h" | 5 #include "content/renderer/render_frame_proxy.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 | 8 |
9 #include "base/lazy_instance.h" | 9 #include "base/lazy_instance.h" |
10 #include "content/common/frame_messages.h" | 10 #include "content/common/frame_messages.h" |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
130 | 130 |
131 // TODO(nick): Should all RenderFrameProxies remain observers of their views? | 131 // TODO(nick): Should all RenderFrameProxies remain observers of their views? |
132 render_view_->RegisterRenderFrameProxy(this); | 132 render_view_->RegisterRenderFrameProxy(this); |
133 | 133 |
134 std::pair<FrameMap::iterator, bool> result = | 134 std::pair<FrameMap::iterator, bool> result = |
135 g_frame_map.Get().insert(std::make_pair(web_frame_, this)); | 135 g_frame_map.Get().insert(std::make_pair(web_frame_, this)); |
136 CHECK(result.second) << "Inserted a duplicate item."; | 136 CHECK(result.second) << "Inserted a duplicate item."; |
137 } | 137 } |
138 | 138 |
139 void RenderFrameProxy::DidCommitCompositorFrame() { | 139 void RenderFrameProxy::DidCommitCompositorFrame() { |
140 if (compositing_helper_) | 140 if (compositing_helper_.get()) |
141 compositing_helper_->DidCommitCompositorFrame(); | 141 compositing_helper_->DidCommitCompositorFrame(); |
142 } | 142 } |
143 | 143 |
144 bool RenderFrameProxy::OnMessageReceived(const IPC::Message& msg) { | 144 bool RenderFrameProxy::OnMessageReceived(const IPC::Message& msg) { |
145 bool handled = true; | 145 bool handled = true; |
146 IPC_BEGIN_MESSAGE_MAP(RenderFrameProxy, msg) | 146 IPC_BEGIN_MESSAGE_MAP(RenderFrameProxy, msg) |
147 IPC_MESSAGE_HANDLER(FrameMsg_DeleteProxy, OnDeleteProxy) | 147 IPC_MESSAGE_HANDLER(FrameMsg_DeleteProxy, OnDeleteProxy) |
148 IPC_MESSAGE_HANDLER(FrameMsg_ChildFrameProcessGone, OnChildFrameProcessGone) | 148 IPC_MESSAGE_HANDLER(FrameMsg_ChildFrameProcessGone, OnChildFrameProcessGone) |
149 IPC_MESSAGE_HANDLER(FrameMsg_BuffersSwapped, OnBuffersSwapped) | 149 IPC_MESSAGE_HANDLER(FrameMsg_BuffersSwapped, OnBuffersSwapped) |
150 IPC_MESSAGE_HANDLER_GENERIC(FrameMsg_CompositorFrameSwapped, | 150 IPC_MESSAGE_HANDLER_GENERIC(FrameMsg_CompositorFrameSwapped, |
(...skipping 23 matching lines...) Expand all Loading... |
174 RenderFrameImpl* render_frame = | 174 RenderFrameImpl* render_frame = |
175 RenderFrameImpl::FromRoutingID(frame_routing_id_); | 175 RenderFrameImpl::FromRoutingID(frame_routing_id_); |
176 | 176 |
177 if (render_frame) | 177 if (render_frame) |
178 render_frame->set_render_frame_proxy(NULL); | 178 render_frame->set_render_frame_proxy(NULL); |
179 | 179 |
180 delete this; | 180 delete this; |
181 } | 181 } |
182 | 182 |
183 void RenderFrameProxy::OnChildFrameProcessGone() { | 183 void RenderFrameProxy::OnChildFrameProcessGone() { |
184 if (compositing_helper_) | 184 if (compositing_helper_.get()) |
185 compositing_helper_->ChildFrameGone(); | 185 compositing_helper_->ChildFrameGone(); |
186 } | 186 } |
187 | 187 |
188 void RenderFrameProxy::OnBuffersSwapped( | 188 void RenderFrameProxy::OnBuffersSwapped( |
189 const FrameMsg_BuffersSwapped_Params& params) { | 189 const FrameMsg_BuffersSwapped_Params& params) { |
190 if (!compositing_helper_) { | 190 if (!compositing_helper_.get()) { |
191 compositing_helper_ = | 191 compositing_helper_ = |
192 ChildFrameCompositingHelper::CreateForRenderFrameProxy(this); | 192 ChildFrameCompositingHelper::CreateForRenderFrameProxy(this); |
193 compositing_helper_->EnableCompositing(true); | 193 compositing_helper_->EnableCompositing(true); |
194 } | 194 } |
195 compositing_helper_->OnBuffersSwapped( | 195 compositing_helper_->OnBuffersSwapped( |
196 params.size, | 196 params.size, |
197 params.mailbox, | 197 params.mailbox, |
198 params.gpu_route_id, | 198 params.gpu_route_id, |
199 params.gpu_host_id, | 199 params.gpu_host_id, |
200 web_frame()->view()->deviceScaleFactor()); | 200 web_frame()->view()->deviceScaleFactor()); |
201 } | 201 } |
202 | 202 |
203 void RenderFrameProxy::OnCompositorFrameSwapped(const IPC::Message& message) { | 203 void RenderFrameProxy::OnCompositorFrameSwapped(const IPC::Message& message) { |
204 FrameMsg_CompositorFrameSwapped::Param param; | 204 FrameMsg_CompositorFrameSwapped::Param param; |
205 if (!FrameMsg_CompositorFrameSwapped::Read(&message, ¶m)) | 205 if (!FrameMsg_CompositorFrameSwapped::Read(&message, ¶m)) |
206 return; | 206 return; |
207 | 207 |
208 scoped_ptr<cc::CompositorFrame> frame(new cc::CompositorFrame); | 208 scoped_ptr<cc::CompositorFrame> frame(new cc::CompositorFrame); |
209 param.a.frame.AssignTo(frame.get()); | 209 param.a.frame.AssignTo(frame.get()); |
210 | 210 |
211 if (!compositing_helper_) { | 211 if (!compositing_helper_.get()) { |
212 compositing_helper_ = | 212 compositing_helper_ = |
213 ChildFrameCompositingHelper::CreateForRenderFrameProxy(this); | 213 ChildFrameCompositingHelper::CreateForRenderFrameProxy(this); |
214 compositing_helper_->EnableCompositing(true); | 214 compositing_helper_->EnableCompositing(true); |
215 } | 215 } |
216 compositing_helper_->OnCompositorFrameSwapped(frame.Pass(), | 216 compositing_helper_->OnCompositorFrameSwapped(frame.Pass(), |
217 param.a.producing_route_id, | 217 param.a.producing_route_id, |
218 param.a.output_surface_id, | 218 param.a.output_surface_id, |
219 param.a.producing_host_id, | 219 param.a.producing_host_id, |
220 param.a.shared_memory_handle); | 220 param.a.shared_memory_handle); |
221 } | 221 } |
222 | 222 |
223 } // namespace | 223 } // namespace |
OLD | NEW |