diff options
author | kenrb@chromium.org <kenrb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-01-03 22:21:55 +0000 |
---|---|---|
committer | kenrb@chromium.org <kenrb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-01-03 22:21:55 +0000 |
commit | 95d3182359968c2ede57e70e05b80d93ccdf2bf5 (patch) | |
tree | 896a720387bb30a39756d151575049a13a8e652a /content/renderer/browser_plugin | |
parent | 9e9ae7296cfed7bfc612b0e3eeef7ad0c936b1ba (diff) | |
download | chromium_src-95d3182359968c2ede57e70e05b80d93ccdf2bf5.zip chromium_src-95d3182359968c2ede57e70e05b80d93ccdf2bf5.tar.gz chromium_src-95d3182359968c2ede57e70e05b80d93ccdf2bf5.tar.bz2 |
Adding RenderWidgetHostViewChildFrame for OOPIF view.
RenderWidgetHostViewChildFrame becomes the view class for child frames being
rendered in a different process from their parent. CrossProcessFrameConnector
is a supporting class for that, encapsulating state specific to the
parent/child frame relationship.
RenderWidgetHostViewGuest is made a subclass of RenderWidgetHostViewChildFrame
in order to keep them synchronized. Gradually we will move all functionality
from RWHVGuest to RWHVChildFrame and then get rid of RWHVGuest altogether.
TBR=sadrul
BUG=325803
Review URL: https://codereview.chromium.org/100473010
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@242942 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/renderer/browser_plugin')
3 files changed, 42 insertions, 39 deletions
diff --git a/content/renderer/browser_plugin/browser_plugin.cc b/content/renderer/browser_plugin/browser_plugin.cc index 5f88fe1..eb67048 100644 --- a/content/renderer/browser_plugin/browser_plugin.cc +++ b/content/renderer/browser_plugin/browser_plugin.cc @@ -432,15 +432,14 @@ void BrowserPlugin::OnAttachACK( } void BrowserPlugin::OnBuffersSwapped( - int guest_instance_id, - const BrowserPluginMsg_BuffersSwapped_Params& params) { - DCHECK(guest_instance_id == guest_instance_id_); + int instance_id, + const FrameMsg_BuffersSwapped_Params& params) { EnableCompositing(true); compositing_helper_->OnBuffersSwapped(params.size, params.mailbox_name, - params.route_id, - params.host_id, + params.gpu_route_id, + params.gpu_host_id, GetDeviceScaleFactor()); } @@ -449,13 +448,13 @@ void BrowserPlugin::OnCompositorFrameSwapped(const IPC::Message& message) { if (!BrowserPluginMsg_CompositorFrameSwapped::Read(&message, ¶m)) return; scoped_ptr<cc::CompositorFrame> frame(new cc::CompositorFrame); - param.b.AssignTo(frame.get()); + param.b.frame.AssignTo(frame.get()); EnableCompositing(true); compositing_helper_->OnCompositorFrameSwapped(frame.Pass(), - param.c /* route_id */, - param.d /* output_surface_id */, - param.e /* host_id */); + param.b.producing_route_id, + param.b.output_surface_id, + param.b.producing_host_id); } void BrowserPlugin::OnCopyFromCompositingSurface(int guest_instance_id, diff --git a/content/renderer/browser_plugin/browser_plugin.h b/content/renderer/browser_plugin/browser_plugin.h index d2b21aa..162c8de 100644 --- a/content/renderer/browser_plugin/browser_plugin.h +++ b/content/renderer/browser_plugin/browser_plugin.h @@ -25,8 +25,8 @@ struct BrowserPluginHostMsg_AutoSize_Params; struct BrowserPluginHostMsg_ResizeGuest_Params; struct BrowserPluginMsg_Attach_ACK_Params; -struct BrowserPluginMsg_BuffersSwapped_Params; struct BrowserPluginMsg_UpdateRect_Params; +struct FrameMsg_BuffersSwapped_Params; namespace content { @@ -296,7 +296,7 @@ class CONTENT_EXPORT BrowserPlugin : void OnAttachACK(int instance_id, const BrowserPluginMsg_Attach_ACK_Params& ack_params); void OnBuffersSwapped(int instance_id, - const BrowserPluginMsg_BuffersSwapped_Params& params); + const FrameMsg_BuffersSwapped_Params& params); void OnCompositorFrameSwapped(const IPC::Message& message); void OnCopyFromCompositingSurface(int instance_id, int request_id, diff --git a/content/renderer/browser_plugin/browser_plugin_compositing_helper.cc b/content/renderer/browser_plugin/browser_plugin_compositing_helper.cc index a3ce844..89916e2 100644 --- a/content/renderer/browser_plugin/browser_plugin_compositing_helper.cc +++ b/content/renderer/browser_plugin/browser_plugin_compositing_helper.cc @@ -14,6 +14,7 @@ #include "cc/output/copy_output_result.h" #include "cc/resources/single_release_callback.h" #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_manager.h" #include "content/renderer/render_thread_impl.h" @@ -73,37 +74,38 @@ void BrowserPluginCompositingHelper::CopyFromCompositingSurface( void BrowserPluginCompositingHelper::DidCommitCompositorFrame() { if (software_ack_pending_) { - cc::CompositorFrameAck ack; + FrameHostMsg_CompositorFrameSwappedACK_Params params; + params.producing_host_id = last_host_id_; + params.producing_route_id = last_route_id_; + params.output_surface_id = last_output_surface_id_; if (!unacked_software_frames_.empty()) { - ack.last_software_frame_id = unacked_software_frames_.back(); + params.ack.last_software_frame_id = unacked_software_frames_.back(); unacked_software_frames_.pop_back(); } browser_plugin_manager_->Send( - new BrowserPluginHostMsg_CompositorFrameACK( + new BrowserPluginHostMsg_CompositorFrameSwappedACK( host_routing_id_, instance_id_, - last_route_id_, - last_output_surface_id_, - last_host_id_, - ack)); + params)); software_ack_pending_ = false; } if (!resource_collection_.get() || !ack_pending_) return; - cc::CompositorFrameAck ack; - resource_collection_->TakeUnusedResourcesForChildCompositor(&ack.resources); + FrameHostMsg_CompositorFrameSwappedACK_Params params; + params.producing_host_id = last_host_id_; + params.producing_route_id = last_route_id_; + params.output_surface_id = last_output_surface_id_; + resource_collection_->TakeUnusedResourcesForChildCompositor( + ¶ms.ack.resources); browser_plugin_manager_->Send( - new BrowserPluginHostMsg_CompositorFrameACK( + new BrowserPluginHostMsg_CompositorFrameSwappedACK( host_routing_id_, instance_id_, - last_route_id_, - last_output_surface_id_, - last_host_id_, - ack)); + params)); ack_pending_ = false; } @@ -173,31 +175,33 @@ void BrowserPluginCompositingHelper::MailboxReleased( case TEXTURE_IMAGE_TRANSPORT: { std::string mailbox_name(reinterpret_cast<const char*>(mailbox.name.name), sizeof(mailbox.name.name)); + FrameHostMsg_BuffersSwappedACK_Params params; + params.gpu_host_id = mailbox.host_id; + params.gpu_route_id = mailbox.route_id; + params.mailbox_name = mailbox_name; + params.sync_point = sync_point; browser_plugin_manager_->Send( new BrowserPluginHostMsg_BuffersSwappedACK( host_routing_id_, instance_id_, - mailbox.route_id, - mailbox.host_id, - mailbox_name, - sync_point)); + params)); break; } case GL_COMPOSITOR_FRAME: { - cc::CompositorFrameAck ack; - ack.gl_frame_data.reset(new cc::GLFrameData()); - ack.gl_frame_data->mailbox = mailbox.name; - ack.gl_frame_data->size = mailbox.size; - ack.gl_frame_data->sync_point = sync_point; + FrameHostMsg_CompositorFrameSwappedACK_Params params; + params.producing_host_id = mailbox.host_id; + params.producing_route_id = mailbox.route_id; + params.output_surface_id = mailbox.output_surface_id; + params.ack.gl_frame_data.reset(new cc::GLFrameData()); + params.ack.gl_frame_data->mailbox = mailbox.name; + params.ack.gl_frame_data->size = mailbox.size; + params.ack.gl_frame_data->sync_point = sync_point; browser_plugin_manager_->Send( - new BrowserPluginHostMsg_CompositorFrameACK( + new BrowserPluginHostMsg_CompositorFrameSwappedACK( host_routing_id_, instance_id_, - mailbox.route_id, - mailbox.output_surface_id, - mailbox.host_id, - ack)); + params)); break; } case SOFTWARE_COMPOSITOR_FRAME: |