Index: content/renderer/child_frame_compositing_helper.cc |
diff --git a/content/renderer/child_frame_compositing_helper.cc b/content/renderer/child_frame_compositing_helper.cc |
index 433d652175429289ea8c3b928d790aaf3c21f70e..fcbb0cf25fc441227d49115d2bfd45bcb02d7585 100644 |
--- a/content/renderer/child_frame_compositing_helper.cc |
+++ b/content/renderer/child_frame_compositing_helper.cc |
@@ -16,6 +16,7 @@ |
#include "content/common/browser_plugin/browser_plugin_messages.h" |
#include "content/common/frame_messages.h" |
#include "content/common/gpu/client/context_provider_command_buffer.h" |
+#include "content/renderer/browser_plugin/browser_plugin.h" |
#include "content/renderer/browser_plugin/browser_plugin_manager.h" |
#include "content/renderer/render_frame_impl.h" |
#include "content/renderer/render_thread_impl.h" |
@@ -39,12 +40,9 @@ ChildFrameCompositingHelper::SwapBuffersInfo::SwapBuffersInfo() |
ChildFrameCompositingHelper* |
ChildFrameCompositingHelper::CreateCompositingHelperForBrowserPlugin( |
- blink::WebPluginContainer* container, |
- BrowserPluginManager* manager, |
- int instance_id, |
- int host_routing_id) { |
+ const base::WeakPtr<BrowserPlugin>& browser_plugin) { |
return new ChildFrameCompositingHelper( |
- container, NULL, manager, NULL, instance_id, host_routing_id); |
+ browser_plugin, NULL, NULL, browser_plugin->render_view_routing_id()); |
} |
ChildFrameCompositingHelper* |
@@ -53,18 +51,15 @@ ChildFrameCompositingHelper::CreateCompositingHelperForRenderFrame( |
RenderFrameImpl* render_frame, |
int host_routing_id) { |
return new ChildFrameCompositingHelper( |
- NULL, frame, NULL, render_frame, 0, host_routing_id); |
+ base::WeakPtr<BrowserPlugin>(), frame, render_frame, host_routing_id); |
} |
ChildFrameCompositingHelper::ChildFrameCompositingHelper( |
- blink::WebPluginContainer* container, |
+ const base::WeakPtr<BrowserPlugin>& browser_plugin, |
blink::WebFrame* frame, |
- BrowserPluginManager* manager, |
RenderFrameImpl* render_frame, |
- int instance_id, |
int host_routing_id) |
- : instance_id_(instance_id), |
- host_routing_id_(host_routing_id), |
+ : host_routing_id_(host_routing_id), |
last_route_id_(0), |
last_output_surface_id_(0), |
last_host_id_(0), |
@@ -72,23 +67,42 @@ ChildFrameCompositingHelper::ChildFrameCompositingHelper( |
ack_pending_(true), |
software_ack_pending_(false), |
opaque_(true), |
- container_(container), |
frame_(frame), |
- browser_plugin_manager_(manager), |
+ browser_plugin_(browser_plugin), |
render_frame_(render_frame) {} |
ChildFrameCompositingHelper::~ChildFrameCompositingHelper() {} |
+BrowserPluginManager* ChildFrameCompositingHelper::GetBrowserPluginManager() { |
+ if (!browser_plugin_) |
kenrb
2014/01/31 23:44:37
nit: is this check necessary? If BrowerPlugin owns
Fady Samuel
2014/02/03 18:04:20
I just attempted this. There are a couple of callb
|
+ return NULL; |
+ |
+ return browser_plugin_->browser_plugin_manager(); |
+} |
+ |
+blink::WebPluginContainer* ChildFrameCompositingHelper::GetContainer() { |
+ if (!browser_plugin_) |
+ return NULL; |
+ |
+ return browser_plugin_->container(); |
+} |
+ |
+int ChildFrameCompositingHelper::GetInstanceID() { |
+ if (!browser_plugin_) |
+ return 0; |
+ |
+ return browser_plugin_->guest_instance_id(); |
+} |
+ |
void ChildFrameCompositingHelper::SendCompositorFrameSwappedACKToBrowser( |
FrameHostMsg_CompositorFrameSwappedACK_Params& params) { |
// This function will be removed when BrowserPluginManager is removed and |
// BrowserPlugin is modified to use a RenderFrame. |
- if (browser_plugin_manager_) { |
- browser_plugin_manager_->Send( |
+ if (GetBrowserPluginManager()) { |
+ GetBrowserPluginManager()->Send( |
new BrowserPluginHostMsg_CompositorFrameSwappedACK( |
- host_routing_id_, instance_id_, params)); |
- } else { |
- DCHECK(render_frame_); |
+ host_routing_id_, GetInstanceID(), params)); |
+ } else if (render_frame_) { |
render_frame_->Send( |
new FrameHostMsg_CompositorFrameSwappedACK(host_routing_id_, params)); |
} |
@@ -98,11 +112,10 @@ void ChildFrameCompositingHelper::SendBuffersSwappedACKToBrowser( |
FrameHostMsg_BuffersSwappedACK_Params& params) { |
// This function will be removed when BrowserPluginManager is removed and |
// BrowserPlugin is modified to use a RenderFrame. |
- if (browser_plugin_manager_) { |
- browser_plugin_manager_->Send(new BrowserPluginHostMsg_BuffersSwappedACK( |
- host_routing_id_, instance_id_, params)); |
- } else { |
- DCHECK(render_frame_); |
+ if (GetBrowserPluginManager()) { |
+ GetBrowserPluginManager()->Send(new BrowserPluginHostMsg_BuffersSwappedACK( |
+ host_routing_id_, GetInstanceID(), params)); |
+ } else if (render_frame_) { |
render_frame_->Send( |
new FrameHostMsg_BuffersSwappedACK(host_routing_id_, params)); |
} |
@@ -112,12 +125,11 @@ void ChildFrameCompositingHelper::SendReclaimCompositorResourcesToBrowser( |
FrameHostMsg_ReclaimCompositorResources_Params& params) { |
// This function will be removed when BrowserPluginManager is removed and |
// BrowserPlugin is modified to use a RenderFrame. |
- if (browser_plugin_manager_) { |
- browser_plugin_manager_->Send( |
+ if (GetBrowserPluginManager()) { |
+ GetBrowserPluginManager()->Send( |
new BrowserPluginHostMsg_ReclaimCompositorResources( |
- host_routing_id_, instance_id_, params)); |
- } else { |
- DCHECK(render_frame_); |
+ host_routing_id_, GetInstanceID(), params)); |
+ } else if (render_frame_) { |
render_frame_->Send( |
new FrameHostMsg_ReclaimCompositorResources(host_routing_id_, params)); |
} |
@@ -177,9 +189,9 @@ void ChildFrameCompositingHelper::EnableCompositing(bool enable) { |
web_layer_.reset(new webkit::WebLayerImpl(background_layer_)); |
} |
- if (container_) { |
- container_->setWebLayer(enable ? web_layer_.get() : NULL); |
- } else { |
+ if (GetContainer()) { |
+ GetContainer()->setWebLayer(enable ? web_layer_.get() : NULL); |
+ } else if (frame_) { |
frame_->setRemoteWebLayer(enable ? web_layer_.get() : NULL); |
} |
} |
@@ -262,9 +274,8 @@ void ChildFrameCompositingHelper::MailboxReleased(SwapBuffersInfo mailbox, |
} |
void ChildFrameCompositingHelper::OnContainerDestroy() { |
- if (container_) |
- container_->setWebLayer(NULL); |
- container_ = NULL; |
+ if (GetContainer()) |
+ GetContainer()->setWebLayer(NULL); |
if (resource_collection_) |
resource_collection_->SetClient(NULL); |
@@ -544,9 +555,11 @@ void ChildFrameCompositingHelper::CopyFromCompositingSurfaceHasResult( |
dest_size.width(), |
dest_size.height()); |
} |
- browser_plugin_manager_->Send( |
- new BrowserPluginHostMsg_CopyFromCompositingSurfaceAck( |
- host_routing_id_, instance_id_, request_id, resized_bitmap)); |
+ if (GetBrowserPluginManager()) { |
+ GetBrowserPluginManager()->Send( |
+ new BrowserPluginHostMsg_CopyFromCompositingSurfaceAck( |
+ host_routing_id_, GetInstanceID(), request_id, resized_bitmap)); |
+ } |
} |
} // namespace content |