summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjbauman <jbauman@chromium.org>2016-02-04 17:07:10 -0800
committerCommit bot <commit-bot@chromium.org>2016-02-05 01:08:27 +0000
commit42dd9fb1e8ab9e0e4d1e5f813b1f2a8b52e835f1 (patch)
tree5a38ef7c4e98625b3553aed759b8324c2719f21e
parentea7809e7f3db13f2fdc2393c085e5debcd535bbe (diff)
downloadchromium_src-42dd9fb1e8ab9e0e4d1e5f813b1f2a8b52e835f1.zip
chromium_src-42dd9fb1e8ab9e0e4d1e5f813b1f2a8b52e835f1.tar.gz
chromium_src-42dd9fb1e8ab9e0e4d1e5f813b1f2a8b52e835f1.tar.bz2
Remove DelegatedRendererLayer and IPCs from OOPIF and webview
Surfaces should always be used instead of this path. BUG=579275 CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_site_isolation Review URL: https://codereview.chromium.org/1643573005 Cr-Commit-Position: refs/heads/master@{#373698}
-rw-r--r--content/browser/browser_plugin/browser_plugin_guest.cc56
-rw-r--r--content/browser/browser_plugin/browser_plugin_guest.h26
-rw-r--r--content/browser/frame_host/cross_process_frame_connector.cc34
-rw-r--r--content/browser/frame_host/cross_process_frame_connector.h12
-rw-r--r--content/browser/frame_host/render_widget_host_view_child_frame.cc28
-rw-r--r--content/browser/frame_host/render_widget_host_view_child_frame.h3
-rw-r--r--content/browser/frame_host/render_widget_host_view_child_frame_unittest.cc18
-rw-r--r--content/browser/frame_host/render_widget_host_view_guest.cc7
-rw-r--r--content/browser/frame_host/render_widget_host_view_guest_unittest.cc25
-rw-r--r--content/common/browser_plugin/browser_plugin_messages.h17
-rw-r--r--content/common/frame_messages.h21
-rw-r--r--content/common/frame_param.cc40
-rw-r--r--content/common/frame_param.h10
-rw-r--r--content/common/frame_param_macros.h60
-rw-r--r--content/common/swapped_out_messages.cc2
-rw-r--r--content/content_common.gypi3
-rw-r--r--content/renderer/browser_plugin/browser_plugin.cc26
-rw-r--r--content/renderer/browser_plugin/browser_plugin.h1
-rw-r--r--content/renderer/browser_plugin/browser_plugin_manager.cc26
-rw-r--r--content/renderer/browser_plugin/browser_plugin_manager.h3
-rw-r--r--content/renderer/child_frame_compositing_helper.cc149
-rw-r--r--content/renderer/child_frame_compositing_helper.h27
-rw-r--r--content/renderer/render_frame_proxy.cc30
23 files changed, 15 insertions, 609 deletions
diff --git a/content/browser/browser_plugin/browser_plugin_guest.cc b/content/browser/browser_plugin/browser_plugin_guest.cc
index 1855e5d..65ed156 100644
--- a/content/browser/browser_plugin/browser_plugin_guest.cc
+++ b/content/browser/browser_plugin/browser_plugin_guest.cc
@@ -250,8 +250,6 @@ bool BrowserPluginGuest::OnMessageReceivedFromEmbedder(
bool handled = true;
IPC_BEGIN_MESSAGE_MAP(BrowserPluginGuest, message)
- IPC_MESSAGE_HANDLER(BrowserPluginHostMsg_CompositorFrameSwappedACK,
- OnCompositorFrameSwappedACK)
IPC_MESSAGE_HANDLER(BrowserPluginHostMsg_Detach, OnDetach)
IPC_MESSAGE_HANDLER(BrowserPluginHostMsg_DragStatusUpdate,
OnDragStatusUpdate)
@@ -264,8 +262,6 @@ bool BrowserPluginGuest::OnMessageReceivedFromEmbedder(
IPC_MESSAGE_HANDLER(BrowserPluginHostMsg_ImeSetComposition,
OnImeSetComposition)
IPC_MESSAGE_HANDLER(BrowserPluginHostMsg_LockMouse_ACK, OnLockMouseAck)
- IPC_MESSAGE_HANDLER(BrowserPluginHostMsg_ReclaimCompositorResources,
- OnReclaimCompositorResources)
IPC_MESSAGE_HANDLER(BrowserPluginHostMsg_SetEditCommandsForNextKeyEvent,
OnSetEditCommandsForNextKeyEvent)
IPC_MESSAGE_HANDLER(BrowserPluginHostMsg_SetFocus, OnSetFocus)
@@ -397,24 +393,6 @@ void BrowserPluginGuest::PointerLockPermissionResponse(bool allow) {
new BrowserPluginMsg_SetMouseLock(browser_plugin_instance_id(), allow));
}
-// TODO(wjmaclean): Remove this once any remaining users of this pathway
-// are gone.
-void BrowserPluginGuest::SwapCompositorFrame(
- uint32_t output_surface_id,
- int host_process_id,
- int host_routing_id,
- scoped_ptr<cc::CompositorFrame> frame) {
- last_pending_frame_.reset(new FrameMsg_CompositorFrameSwapped_Params());
- frame->AssignTo(&last_pending_frame_->frame);
- last_pending_frame_->output_surface_id = output_surface_id;
- last_pending_frame_->producing_route_id = host_routing_id;
- last_pending_frame_->producing_host_id = host_process_id;
-
- SendMessageToEmbedder(
- new BrowserPluginMsg_CompositorFrameSwapped(
- browser_plugin_instance_id(), *last_pending_frame_));
-}
-
void BrowserPluginGuest::SetChildFrameSurface(
const cc::SurfaceId& surface_id,
const gfx::Size& frame_size,
@@ -752,21 +730,6 @@ void BrowserPluginGuest::Attach(
WebContentsImpl* embedder_web_contents,
const BrowserPluginHostMsg_Attach_Params& params) {
browser_plugin_instance_id_ = browser_plugin_instance_id;
- // If a guest is detaching from one container and attaching to another
- // container, then late arriving ACKs may be lost if the mapping from
- // |browser_plugin_instance_id| to |guest_instance_id| changes. Thus we
- // ensure that we always get new frames on attachment by ACKing the pending
- // frame if it's still waiting on the ACK.
- if (last_pending_frame_) {
- cc::CompositorFrameAck ack;
- RenderWidgetHostImpl::SendSwapCompositorFrameAck(
- last_pending_frame_->producing_route_id,
- last_pending_frame_->output_surface_id,
- last_pending_frame_->producing_host_id,
- ack);
- last_pending_frame_.reset();
- }
-
// The guest is owned by the embedder. Attach is queued up so we cannot
// change embedders before attach completes. If the embedder goes away,
// so does the guest and so we will never call WillAttachComplete because
@@ -817,16 +780,6 @@ void BrowserPluginGuest::OnWillAttachComplete(
RecordAction(base::UserMetricsAction("BrowserPlugin.Guest.Attached"));
}
-void BrowserPluginGuest::OnCompositorFrameSwappedACK(
- int browser_plugin_instance_id,
- const FrameHostMsg_CompositorFrameSwappedACK_Params& params) {
- RenderWidgetHostImpl::SendSwapCompositorFrameAck(params.producing_route_id,
- params.output_surface_id,
- params.producing_host_id,
- params.ack);
- last_pending_frame_.reset();
-}
-
void BrowserPluginGuest::OnDetach(int browser_plugin_instance_id) {
if (!attached())
return;
@@ -922,15 +875,6 @@ void BrowserPluginGuest::OnExtendSelectionAndDelete(
rfh->ExtendSelectionAndDelete(before, after);
}
-void BrowserPluginGuest::OnReclaimCompositorResources(
- int browser_plugin_instance_id,
- const FrameHostMsg_ReclaimCompositorResources_Params& params) {
- RenderWidgetHostImpl::SendReclaimCompositorResources(params.route_id,
- params.output_surface_id,
- params.renderer_host_id,
- params.ack);
-}
-
void BrowserPluginGuest::OnLockMouse(bool user_gesture,
bool last_unlocked_by_target,
bool privileged) {
diff --git a/content/browser/browser_plugin/browser_plugin_guest.h b/content/browser/browser_plugin/browser_plugin_guest.h
index 9cdc85e..e6676f7 100644
--- a/content/browser/browser_plugin/browser_plugin_guest.h
+++ b/content/browser/browser_plugin/browser_plugin_guest.h
@@ -45,9 +45,6 @@
#include "ui/gfx/geometry/rect.h"
struct BrowserPluginHostMsg_Attach_Params;
-struct FrameHostMsg_CompositorFrameSwappedACK_Params;
-struct FrameHostMsg_ReclaimCompositorResources_Params;
-struct FrameMsg_CompositorFrameSwapped_Params;
struct ViewHostMsg_TextInputState_Params;
#if defined(OS_MACOSX)
@@ -241,11 +238,7 @@ class CONTENT_EXPORT BrowserPluginGuest : public GuestHost,
void PointerLockPermissionResponse(bool allow);
- // The next two functions are virtual for test purposes.
- virtual void SwapCompositorFrame(uint32_t output_surface_id,
- int host_process_id,
- int host_routing_id,
- scoped_ptr<cc::CompositorFrame> frame);
+ // The next function is virtual for test purposes.
virtual void SetChildFrameSurface(const cc::SurfaceId& surface_id,
const gfx::Size& frame_size,
float scale_factor,
@@ -289,9 +282,6 @@ class CONTENT_EXPORT BrowserPluginGuest : public GuestHost,
const cc::SurfaceId& id,
const cc::SurfaceSequence& sequence);
// Message handlers for messages from embedder.
- void OnCompositorFrameSwappedACK(
- int instance_id,
- const FrameHostMsg_CompositorFrameSwappedACK_Params& params);
void OnDetach(int instance_id);
// Handles drag events from the embedder.
// When dragging, the drag events go to the embedder first, and if the drag
@@ -307,11 +297,6 @@ class CONTENT_EXPORT BrowserPluginGuest : public GuestHost,
void OnExecuteEditCommand(int instance_id,
const std::string& command);
- // Returns compositor resources reclaimed in the embedder to the guest.
- void OnReclaimCompositorResources(
- int instance_id,
- const FrameHostMsg_ReclaimCompositorResources_Params& params);
-
void OnLockMouse(bool user_gesture,
bool last_unlocked_by_target,
bool privileged);
@@ -456,15 +441,6 @@ class CONTENT_EXPORT BrowserPluginGuest : public GuestHost,
// Indicates the URL dragged into the guest if any.
GURL dragged_url_;
- // Guests generate frames and send a CompositorFrameSwapped (CFS) message
- // indicating the next frame is ready to be positioned and composited.
- // Subsequent frames are not generated until the IPC is ACKed. We would like
- // to ensure that the guest generates frames on attachment so we directly ACK
- // an unACKed CFS. ACKs could get lost between the time a guest is detached
- // from a container and the time it is attached elsewhere. This mitigates this
- // race by ensuring the guest is ACKed on attachment.
- scoped_ptr<FrameMsg_CompositorFrameSwapped_Params> last_pending_frame_;
-
// This is a queue of messages that are destined to be sent to the embedder
// once the guest is attached to a particular embedder.
std::deque<linked_ptr<IPC::Message> > pending_messages_;
diff --git a/content/browser/frame_host/cross_process_frame_connector.cc b/content/browser/frame_host/cross_process_frame_connector.cc
index fef7ff7..5105049 100644
--- a/content/browser/frame_host/cross_process_frame_connector.cc
+++ b/content/browser/frame_host/cross_process_frame_connector.cc
@@ -38,10 +38,6 @@ bool CrossProcessFrameConnector::OnMessageReceived(const IPC::Message& msg) {
bool handled = true;
IPC_BEGIN_MESSAGE_MAP(CrossProcessFrameConnector, msg)
- IPC_MESSAGE_HANDLER(FrameHostMsg_CompositorFrameSwappedACK,
- OnCompositorFrameSwappedACK)
- IPC_MESSAGE_HANDLER(FrameHostMsg_ReclaimCompositorResources,
- OnReclaimCompositorResources)
IPC_MESSAGE_HANDLER(FrameHostMsg_ForwardInputEvent, OnForwardInputEvent)
IPC_MESSAGE_HANDLER(FrameHostMsg_FrameRectChanged, OnFrameRectChanged)
IPC_MESSAGE_HANDLER(FrameHostMsg_VisibilityChanged, OnVisibilityChanged)
@@ -76,20 +72,6 @@ void CrossProcessFrameConnector::RenderProcessGone() {
frame_proxy_in_parent_renderer_->GetRoutingID()));
}
-void CrossProcessFrameConnector::ChildFrameCompositorFrameSwapped(
- uint32_t output_surface_id,
- int host_id,
- int route_id,
- scoped_ptr<cc::CompositorFrame> frame) {
- FrameMsg_CompositorFrameSwapped_Params params;
- frame->AssignTo(&params.frame);
- params.output_surface_id = output_surface_id;
- params.producing_route_id = route_id;
- params.producing_host_id = host_id;
- frame_proxy_in_parent_renderer_->Send(new FrameMsg_CompositorFrameSwapped(
- frame_proxy_in_parent_renderer_->GetRoutingID(), params));
-}
-
void CrossProcessFrameConnector::SetChildFrameSurface(
const cc::SurfaceId& surface_id,
const gfx::Size& frame_size,
@@ -120,22 +102,6 @@ void CrossProcessFrameConnector::OnRequireSequence(
surface->AddDestructionDependency(sequence);
}
-void CrossProcessFrameConnector::OnCompositorFrameSwappedACK(
- const FrameHostMsg_CompositorFrameSwappedACK_Params& params) {
- RenderWidgetHostImpl::SendSwapCompositorFrameAck(params.producing_route_id,
- params.output_surface_id,
- params.producing_host_id,
- params.ack);
-}
-
-void CrossProcessFrameConnector::OnReclaimCompositorResources(
- const FrameHostMsg_ReclaimCompositorResources_Params& params) {
- RenderWidgetHostImpl::SendReclaimCompositorResources(params.route_id,
- params.output_surface_id,
- params.renderer_host_id,
- params.ack);
-}
-
void CrossProcessFrameConnector::OnInitializeChildFrame(gfx::Rect frame_rect,
float scale_factor) {
if (scale_factor != device_scale_factor_)
diff --git a/content/browser/frame_host/cross_process_frame_connector.h b/content/browser/frame_host/cross_process_frame_connector.h
index 6ad56a2..9958c9e 100644
--- a/content/browser/frame_host/cross_process_frame_connector.h
+++ b/content/browser/frame_host/cross_process_frame_connector.h
@@ -25,9 +25,6 @@ namespace IPC {
class Message;
}
-struct FrameHostMsg_CompositorFrameSwappedACK_Params;
-struct FrameHostMsg_ReclaimCompositorResources_Params;
-
namespace content {
class RenderFrameProxyHost;
class RenderWidgetHostImpl;
@@ -87,11 +84,6 @@ class CONTENT_EXPORT CrossProcessFrameConnector {
void RenderProcessGone();
- virtual void ChildFrameCompositorFrameSwapped(
- uint32_t output_surface_id,
- int host_id,
- int route_id,
- scoped_ptr<cc::CompositorFrame> frame);
virtual void SetChildFrameSurface(const cc::SurfaceId& surface_id,
const gfx::Size& frame_size,
float scale_factor,
@@ -110,10 +102,6 @@ class CONTENT_EXPORT CrossProcessFrameConnector {
private:
// Handlers for messages received from the parent frame.
- void OnCompositorFrameSwappedACK(
- const FrameHostMsg_CompositorFrameSwappedACK_Params& params);
- void OnReclaimCompositorResources(
- const FrameHostMsg_ReclaimCompositorResources_Params& params);
void OnForwardInputEvent(const blink::WebInputEvent* event);
void OnFrameRectChanged(const gfx::Rect& frame_rect);
void OnVisibilityChanged(bool visible);
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 ee65594..f1399a0 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
@@ -36,19 +36,16 @@ namespace content {
RenderWidgetHostViewChildFrame::RenderWidgetHostViewChildFrame(
RenderWidgetHost* widget_host)
: host_(RenderWidgetHostImpl::From(widget_host)),
- use_surfaces_(true),
next_surface_sequence_(1u),
last_output_surface_id_(0),
current_surface_scale_factor_(1.f),
ack_pending_count_(0),
frame_connector_(nullptr),
weak_factory_(this) {
- if (use_surfaces_) {
- id_allocator_ = CreateSurfaceIdAllocator();
- if (host_->delegate() && host_->delegate()->GetInputEventRouter()) {
- host_->delegate()->GetInputEventRouter()->AddSurfaceIdNamespaceOwner(
- GetSurfaceIdNamespace(), this);
- }
+ id_allocator_ = CreateSurfaceIdAllocator();
+ if (host_->delegate() && host_->delegate()->GetInputEventRouter()) {
+ host_->delegate()->GetInputEventRouter()->AddSurfaceIdNamespaceOwner(
+ GetSurfaceIdNamespace(), this);
}
host_->SetView(this);
@@ -211,8 +208,7 @@ void RenderWidgetHostViewChildFrame::Destroy() {
frame_connector_ = NULL;
}
- if (use_surfaces_ && host_->delegate() &&
- host_->delegate()->GetInputEventRouter()) {
+ if (host_->delegate() && host_->delegate()->GetInputEventRouter()) {
host_->delegate()->GetInputEventRouter()->RemoveSurfaceIdNamespaceOwner(
GetSurfaceIdNamespace());
}
@@ -265,15 +261,6 @@ void RenderWidgetHostViewChildFrame::OnSwapCompositorFrame(
if (!frame_connector_)
return;
- // When not using surfaces, the frame just gets proxied to
- // the embedder's renderer to be composited.
- if (!frame->delegated_frame_data || !use_surfaces_) {
- frame_connector_->ChildFrameCompositorFrameSwapped(
- output_surface_id, host_->GetProcess()->GetID(), host_->GetRoutingID(),
- std::move(frame));
- return;
- }
-
cc::RenderPass* root_pass =
frame->delegated_frame_data->render_pass_list.back().get();
@@ -371,9 +358,6 @@ void RenderWidgetHostViewChildFrame::UnlockMouse() {
}
uint32_t RenderWidgetHostViewChildFrame::GetSurfaceIdNamespace() {
- if (!use_surfaces_)
- return 0;
-
return id_allocator_->id_namespace();
}
@@ -404,7 +388,7 @@ void RenderWidgetHostViewChildFrame::ProcessMouseWheelEvent(
gfx::Point RenderWidgetHostViewChildFrame::TransformPointToRootCoordSpace(
const gfx::Point& point) {
- if (!frame_connector_ || !use_surfaces_)
+ if (!frame_connector_)
return point;
return frame_connector_->TransformPointToRootCoordSpace(point, surface_id_);
diff --git a/content/browser/frame_host/render_widget_host_view_child_frame.h b/content/browser/frame_host/render_widget_host_view_child_frame.h
index 817bc2e..bfff4b1 100644
--- a/content/browser/frame_host/render_widget_host_view_child_frame.h
+++ b/content/browser/frame_host/render_widget_host_view_child_frame.h
@@ -195,9 +195,6 @@ class CONTENT_EXPORT RenderWidgetHostViewChildFrame
// The model object.
RenderWidgetHostImpl* host_;
- // Flag determining whether we render into a compositing Surface.
- bool use_surfaces_;
-
// Surface-related state.
scoped_ptr<cc::SurfaceIdAllocator> id_allocator_;
scoped_ptr<cc::SurfaceFactory> surface_factory_;
diff --git a/content/browser/frame_host/render_widget_host_view_child_frame_unittest.cc b/content/browser/frame_host/render_widget_host_view_child_frame_unittest.cc
index 97a7baf..4584e08 100644
--- a/content/browser/frame_host/render_widget_host_view_child_frame_unittest.cc
+++ b/content/browser/frame_host/render_widget_host_view_child_frame_unittest.cc
@@ -42,23 +42,9 @@ class MockRenderWidgetHostDelegate : public RenderWidgetHostDelegate {
class MockCrossProcessFrameConnector : public CrossProcessFrameConnector {
public:
MockCrossProcessFrameConnector()
- : CrossProcessFrameConnector(nullptr),
- last_scale_factor_received_(0.f),
- received_delegated_frame_(false) {}
+ : CrossProcessFrameConnector(nullptr), last_scale_factor_received_(0.f) {}
~MockCrossProcessFrameConnector() override {}
- void ChildFrameCompositorFrameSwapped(
- uint32_t output_surface_id,
- int host_id,
- int route_id,
- scoped_ptr<cc::CompositorFrame> frame) override {
- received_delegated_frame_ = true;
- last_frame_size_received_ =
- frame->delegated_frame_data->render_pass_list.back()
- ->output_rect.size();
- last_scale_factor_received_ = frame->metadata.device_scale_factor;
- }
-
void SetChildFrameSurface(const cc::SurfaceId& surface_id,
const gfx::Size& frame_size,
float scale_factor,
@@ -71,8 +57,6 @@ class MockCrossProcessFrameConnector : public CrossProcessFrameConnector {
cc::SurfaceId last_surface_id_received_;
gfx::Size last_frame_size_received_;
float last_scale_factor_received_;
-
- bool received_delegated_frame_;
};
} // namespace
diff --git a/content/browser/frame_host/render_widget_host_view_guest.cc b/content/browser/frame_host/render_widget_host_view_guest.cc
index a080567..a1a4a59 100644
--- a/content/browser/frame_host/render_widget_host_view_guest.cc
+++ b/content/browser/frame_host/render_widget_host_view_guest.cc
@@ -243,13 +243,6 @@ void RenderWidgetHostViewGuest::OnSwapCompositorFrame(
}
last_scroll_offset_ = frame->metadata.root_scroll_offset;
- // When not using surfaces, the frame just gets proxied to
- // the embedder's renderer to be composited.
- if (!frame->delegated_frame_data || !use_surfaces_) {
- guest_->SwapCompositorFrame(output_surface_id, host_->GetProcess()->GetID(),
- host_->GetRoutingID(), std::move(frame));
- return;
- }
cc::RenderPass* root_pass =
frame->delegated_frame_data->render_pass_list.back().get();
diff --git a/content/browser/frame_host/render_widget_host_view_guest_unittest.cc b/content/browser/frame_host/render_widget_host_view_guest_unittest.cc
index 8d2ac18..3d772d4 100644
--- a/content/browser/frame_host/render_widget_host_view_guest_unittest.cc
+++ b/content/browser/frame_host/render_widget_host_view_guest_unittest.cc
@@ -106,17 +106,15 @@ TEST_F(RenderWidgetHostViewGuestTest, VisibilityTest) {
class TestBrowserPluginGuest : public BrowserPluginGuest {
public:
TestBrowserPluginGuest(WebContentsImpl* web_contents,
- BrowserPluginGuestDelegate* delegate):
- BrowserPluginGuest(web_contents->HasOpener(), web_contents, delegate),
- last_scale_factor_received_(0.f),
- received_delegated_frame_(false) {}
+ BrowserPluginGuestDelegate* delegate)
+ : BrowserPluginGuest(web_contents->HasOpener(), web_contents, delegate),
+ last_scale_factor_received_(0.f) {}
~TestBrowserPluginGuest() override {}
void ResetTestData() {
last_surface_id_received_ = cc::SurfaceId();
last_frame_size_received_ = gfx::Size();
last_scale_factor_received_ = 0.f;
- received_delegated_frame_ = false;
}
void set_has_attached_since_surface_set(bool has_attached_since_surface_set) {
@@ -128,21 +126,6 @@ class TestBrowserPluginGuest : public BrowserPluginGuest {
BrowserPluginGuest::set_attached_for_test(attached);
}
- void SwapCompositorFrame(uint32_t output_surface_id,
- int host_process_id,
- int host_routing_id,
- scoped_ptr<cc::CompositorFrame> frame) override {
- received_delegated_frame_ = true;
- last_frame_size_received_ =
- frame->delegated_frame_data->render_pass_list.back()
- ->output_rect.size();
- last_scale_factor_received_ = frame->metadata.device_scale_factor;
-
- // Call base-class version so that we can test UpdateGuestSizeIfNecessary().
- BrowserPluginGuest::SwapCompositorFrame(output_surface_id, host_process_id,
- host_routing_id, std::move(frame));
- }
-
void SetChildFrameSurface(const cc::SurfaceId& surface_id,
const gfx::Size& frame_size,
float scale_factor,
@@ -156,8 +139,6 @@ class TestBrowserPluginGuest : public BrowserPluginGuest {
gfx::Size last_frame_size_received_;
float last_scale_factor_received_;
float update_scale_factor_received_;
-
- bool received_delegated_frame_;
};
// TODO(wjmaclean): we should restructure RenderWidgetHostViewChildFrameTest to
diff --git a/content/common/browser_plugin/browser_plugin_messages.h b/content/common/browser_plugin/browser_plugin_messages.h
index 1a264ce..04fa2b2 100644
--- a/content/common/browser_plugin/browser_plugin_messages.h
+++ b/content/common/browser_plugin/browser_plugin_messages.h
@@ -12,7 +12,6 @@
#include "content/common/content_param_traits.h"
#include "content/common/cursors/webcursor.h"
#include "content/common/edit_command.h"
-#include "content/common/frame_param_macros.h"
#include "content/public/common/common_param_traits.h"
#include "content/public/common/drop_data.h"
#include "ipc/ipc_channel_handle.h"
@@ -117,13 +116,6 @@ IPC_MESSAGE_CONTROL3(BrowserPluginHostMsg_HandleInputEvent,
gfx::Rect /* guest_window_rect */,
IPC::WebInputEventPointer /* event */)
-// Notify the guest renderer that some resources given to the embededer
-// are not used any more.
-IPC_MESSAGE_CONTROL2(
- BrowserPluginHostMsg_ReclaimCompositorResources,
- int /* browser_plugin_instance_id */,
- FrameHostMsg_ReclaimCompositorResources_Params /* params */)
-
// Tells the guest it has been shown or hidden.
IPC_MESSAGE_CONTROL2(BrowserPluginHostMsg_SetVisibility,
int /* browser_plugin_instance_id */,
@@ -185,10 +177,6 @@ IPC_MESSAGE_CONTROL2(BrowserPluginMsg_SetCursor,
int /* browser_plugin_instance_id */,
content::WebCursor /* cursor */)
-IPC_MESSAGE_CONTROL2(BrowserPluginMsg_CompositorFrameSwapped,
- int /* browser_plugin_instance_id */,
- FrameMsg_CompositorFrameSwapped_Params /* params */)
-
IPC_MESSAGE_CONTROL5(BrowserPluginMsg_SetChildFrameSurface,
int /* browser_plugin_instance_id */,
cc::SurfaceId /* surface_id */,
@@ -205,8 +193,3 @@ IPC_MESSAGE_CONTROL2(BrowserPluginMsg_SetMouseLock,
IPC_MESSAGE_CONTROL2(BrowserPluginMsg_SetTooltipText,
int /* browser_plugin_instance_id */,
base::string16 /* tooltip_text */)
-
-// Acknowledge that we presented an ubercomp frame.
-IPC_MESSAGE_CONTROL2(BrowserPluginHostMsg_CompositorFrameSwappedACK,
- int /* browser_plugin_instance_id */,
- FrameHostMsg_CompositorFrameSwappedACK_Params /* params */)
diff --git a/content/common/frame_messages.h b/content/common/frame_messages.h
index 568585e..96ecbf4 100644
--- a/content/common/frame_messages.h
+++ b/content/common/frame_messages.h
@@ -19,7 +19,6 @@
#include "content/common/content_export.h"
#include "content/common/content_param_traits.h"
#include "content/common/frame_message_enums.h"
-#include "content/common/frame_param.h"
#include "content/common/frame_replication_state.h"
#include "content/common/navigation_gesture.h"
#include "content/common/navigation_params.h"
@@ -44,6 +43,8 @@
#include "third_party/WebKit/public/web/WebFindOptions.h"
#include "third_party/WebKit/public/web/WebFrameOwnerProperties.h"
#include "third_party/WebKit/public/web/WebTreeScopeType.h"
+#include "ui/gfx/geometry/rect.h"
+#include "ui/gfx/geometry/rect_f.h"
#include "ui/gfx/ipc/gfx_param_traits.h"
#include "url/gurl.h"
#include "url/origin.h"
@@ -555,15 +556,6 @@ IPC_STRUCT_TRAITS_END()
// -----------------------------------------------------------------------------
// Messages sent from the browser to the renderer.
-// Notifies the embedding frame that a new CompositorFrame is ready to be
-// presented. When the frame finishes presenting, a matching
-// FrameHostMsg_CompositorFrameSwappedACK should be sent back to the
-// RenderViewHost that was produced the CompositorFrame.
-//
-// This is used in the ubercomp compositing path.
-IPC_MESSAGE_ROUTED1(FrameMsg_CompositorFrameSwapped,
- FrameMsg_CompositorFrameSwapped_Params /* params */)
-
IPC_MESSAGE_ROUTED4(FrameMsg_SetChildFrameSurface,
cc::SurfaceId /* surface_id */,
gfx::Size /* frame_size */,
@@ -1189,12 +1181,6 @@ IPC_MESSAGE_CONTROL3(FrameHostMsg_PluginInstanceThrottleStateChange,
bool /* is_throttled */)
#endif // defined(ENABLE_PLUGINS)
-// Acknowledge that we presented an ubercomp frame.
-//
-// See FrameMsg_CompositorFrameSwapped
-IPC_MESSAGE_ROUTED1(FrameHostMsg_CompositorFrameSwappedACK,
- FrameHostMsg_CompositorFrameSwappedACK_Params /* params */)
-
// Satisfies a Surface destruction dependency associated with |sequence|.
IPC_MESSAGE_ROUTED1(FrameHostMsg_SatisfySequence,
cc::SurfaceSequence /* sequence */)
@@ -1216,9 +1202,6 @@ IPC_MESSAGE_ROUTED3(FrameHostMsg_BeforeUnload_ACK,
// Indicates that the current frame has swapped out, after a SwapOut message.
IPC_MESSAGE_ROUTED0(FrameHostMsg_SwapOut_ACK)
-IPC_MESSAGE_ROUTED1(FrameHostMsg_ReclaimCompositorResources,
- FrameHostMsg_ReclaimCompositorResources_Params /* params */)
-
// Forwards an input event to a child.
// TODO(nick): Temporary bridge, revisit once the browser process can route
// input directly to subframes. http://crbug.com/339659
diff --git a/content/common/frame_param.cc b/content/common/frame_param.cc
deleted file mode 100644
index dbeaaa7..0000000
--- a/content/common/frame_param.cc
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "content/common/frame_param.h"
-#include "content/common/cc_messages.h"
-
-#define IPC_MESSAGE_IMPL
-#include "content/common/frame_param_macros.h"
-
-// Generate constructors.
-#include "ipc/struct_constructor_macros.h"
-#undef CONTENT_COMMON_FRAME_PARAM_MACROS_H_
-#include "content/common/frame_param_macros.h"
-
-// Generate destructors.
-#include "ipc/struct_destructor_macros.h"
-#undef CONTENT_COMMON_FRAME_PARAM_MACROS_H_
-#include "content/common/frame_param_macros.h"
-
-// Generate param traits write methods.
-#include "ipc/param_traits_write_macros.h"
-namespace IPC {
-#undef CONTENT_COMMON_FRAME_PARAM_MACROS_H_
-#include "content/common/frame_param_macros.h"
-} // namespace IPC
-
-// Generate param traits read methods.
-#include "ipc/param_traits_read_macros.h"
-namespace IPC {
-#undef CONTENT_COMMON_FRAME_PARAM_MACROS_H_
-#include "content/common/frame_param_macros.h"
-} // namespace IPC
-
-// Generate param traits log methods.
-#include "ipc/param_traits_log_macros.h"
-namespace IPC {
-#undef CONTENT_COMMON_FRAME_PARAM_MACROS_H_
-#include "content/common/frame_param_macros.h"
-} // namespace IPC
diff --git a/content/common/frame_param.h b/content/common/frame_param.h
deleted file mode 100644
index 29c4010..0000000
--- a/content/common/frame_param.h
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CONTENT_COMMON_FRAME_PARAM_H_
-#define CONTENT_COMMON_FRAME_PARAM_H_
-
-#include "content/common/frame_param_macros.h"
-
-#endif // CONTENT_COMMON_FRAME_PARAM_H_
diff --git a/content/common/frame_param_macros.h b/content/common/frame_param_macros.h
deleted file mode 100644
index fd2256d..0000000
--- a/content/common/frame_param_macros.h
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Allows for sharing of IPC param structures between BrowserPlugin code and
-// RenderFrame code. All these should be folded directly back into the IPCs in
-// frame_messages.h once BrowserPlugin has been fully converted over to use
-// the RenderFrame infrastructure.
-//
-// TODO(ajwong): Remove once BrowserPlugin has been converted to use
-// RenderFrames. http://crbug.com/330264
-
-#ifndef CONTENT_COMMON_FRAME_PARAM_MACROS_H_
-#define CONTENT_COMMON_FRAME_PARAM_MACROS_H_
-
-#include <stdint.h>
-
-#include "cc/output/compositor_frame.h"
-#include "cc/output/compositor_frame_ack.h"
-#include "content/public/common/common_param_traits.h"
-#include "ipc/ipc_message_macros.h"
-#include "ui/gfx/ipc/gfx_param_traits.h"
-
-#undef IPC_MESSAGE_EXPORT
-#define IPC_MESSAGE_EXPORT CONTENT_EXPORT
-
-IPC_STRUCT_BEGIN(FrameMsg_BuffersSwapped_Params)
- IPC_STRUCT_MEMBER(int, gpu_host_id)
- IPC_STRUCT_MEMBER(int, gpu_route_id)
- IPC_STRUCT_MEMBER(gpu::Mailbox, mailbox)
- IPC_STRUCT_MEMBER(gfx::Size, size)
-IPC_STRUCT_END()
-
-IPC_STRUCT_BEGIN(FrameMsg_CompositorFrameSwapped_Params)
- // Specifies which RenderWidget produced the CompositorFrame.
- IPC_STRUCT_MEMBER(int, producing_host_id)
- IPC_STRUCT_MEMBER(int, producing_route_id)
-
- IPC_STRUCT_MEMBER(cc::CompositorFrame, frame)
- IPC_STRUCT_MEMBER(uint32_t, output_surface_id)
- IPC_STRUCT_MEMBER(base::SharedMemoryHandle, shared_memory_handle)
-IPC_STRUCT_END()
-
-IPC_STRUCT_BEGIN(FrameHostMsg_CompositorFrameSwappedACK_Params)
- // Specifies which RenderWidget produced the CompositorFrame.
- IPC_STRUCT_MEMBER(int, producing_host_id)
- IPC_STRUCT_MEMBER(int, producing_route_id)
-
- IPC_STRUCT_MEMBER(uint32_t, output_surface_id)
- IPC_STRUCT_MEMBER(cc::CompositorFrameAck, ack)
-IPC_STRUCT_END()
-
-IPC_STRUCT_BEGIN(FrameHostMsg_ReclaimCompositorResources_Params)
- IPC_STRUCT_MEMBER(int, route_id)
- IPC_STRUCT_MEMBER(uint32_t, output_surface_id)
- IPC_STRUCT_MEMBER(int, renderer_host_id)
- IPC_STRUCT_MEMBER(cc::CompositorFrameAck, ack)
-IPC_STRUCT_END()
-
-#endif // CONTENT_COMMON_FRAME_PARAM_MACROS_H_
diff --git a/content/common/swapped_out_messages.cc b/content/common/swapped_out_messages.cc
index 7980014..a480310 100644
--- a/content/common/swapped_out_messages.cc
+++ b/content/common/swapped_out_messages.cc
@@ -40,8 +40,6 @@ bool SwappedOutMessages::CanSendWhileSwappedOut(const IPC::Message* msg) {
// Frame detach must occur after the RenderView has swapped out.
case FrameHostMsg_Detach::ID:
case FrameHostMsg_DomOperationResponse::ID:
- case FrameHostMsg_CompositorFrameSwappedACK::ID:
- case FrameHostMsg_ReclaimCompositorResources::ID:
// Input events propagate from parent to child.
case FrameHostMsg_ForwardInputEvent::ID:
case FrameHostMsg_InitializeChildFrame::ID:
diff --git a/content/content_common.gypi b/content/content_common.gypi
index b4d2e94..45809cd 100644
--- a/content/content_common.gypi
+++ b/content/content_common.gypi
@@ -273,9 +273,6 @@
'common/font_list_win.cc',
'common/frame_message_enums.h',
'common/frame_messages.h',
- 'common/frame_param.cc',
- 'common/frame_param.h',
- 'common/frame_param_macros.h',
'common/frame_replication_state.cc',
'common/frame_replication_state.h',
'common/gamepad_hardware_buffer.h',
diff --git a/content/renderer/browser_plugin/browser_plugin.cc b/content/renderer/browser_plugin/browser_plugin.cc
index 44bbbed..4e44c92 100644
--- a/content/renderer/browser_plugin/browser_plugin.cc
+++ b/content/renderer/browser_plugin/browser_plugin.cc
@@ -104,8 +104,6 @@ bool BrowserPlugin::OnMessageReceived(const IPC::Message& message) {
bool handled = true;
IPC_BEGIN_MESSAGE_MAP(BrowserPlugin, message)
IPC_MESSAGE_HANDLER(BrowserPluginMsg_AdvanceFocus, OnAdvanceFocus)
- IPC_MESSAGE_HANDLER_GENERIC(BrowserPluginMsg_CompositorFrameSwapped,
- OnCompositorFrameSwapped(message))
IPC_MESSAGE_HANDLER(BrowserPluginMsg_GuestGone, OnGuestGone)
IPC_MESSAGE_HANDLER(BrowserPluginMsg_SetCursor, OnSetCursor)
IPC_MESSAGE_HANDLER(BrowserPluginMsg_SetMouseLock, OnSetMouseLock)
@@ -188,8 +186,6 @@ void BrowserPlugin::Detach() {
}
void BrowserPlugin::DidCommitCompositorFrame() {
- if (compositing_helper_.get())
- compositing_helper_->DidCommitCompositorFrame();
}
void BrowserPlugin::OnAdvanceFocus(int browser_plugin_instance_id,
@@ -201,28 +197,6 @@ void BrowserPlugin::OnAdvanceFocus(int browser_plugin_instance_id,
render_view->GetWebView()->advanceFocus(reverse);
}
-void BrowserPlugin::OnCompositorFrameSwapped(const IPC::Message& message) {
- if (!attached())
- return;
-
- BrowserPluginMsg_CompositorFrameSwapped::Param param;
- if (!BrowserPluginMsg_CompositorFrameSwapped::Read(&message, &param))
- return;
- // Note that there is no need to send ACK for this message.
- // If the guest has updated pixels then it is no longer crashed.
- guest_crashed_ = false;
-
- scoped_ptr<cc::CompositorFrame> frame(new cc::CompositorFrame);
- base::get<1>(param).frame.AssignTo(frame.get());
-
- EnableCompositing(true);
- compositing_helper_->OnCompositorFrameSwapped(
- std::move(frame), base::get<1>(param).producing_route_id,
- base::get<1>(param).output_surface_id,
- base::get<1>(param).producing_host_id,
- base::get<1>(param).shared_memory_handle);
-}
-
void BrowserPlugin::OnGuestGone(int browser_plugin_instance_id) {
guest_crashed_ = true;
diff --git a/content/renderer/browser_plugin/browser_plugin.h b/content/renderer/browser_plugin/browser_plugin.h
index 8320f1d..f0ccb70 100644
--- a/content/renderer/browser_plugin/browser_plugin.h
+++ b/content/renderer/browser_plugin/browser_plugin.h
@@ -152,7 +152,6 @@ class CONTENT_EXPORT BrowserPlugin :
// IPC message handlers.
// Please keep in alphabetical order.
void OnAdvanceFocus(int instance_id, bool reverse);
- void OnCompositorFrameSwapped(const IPC::Message& message);
void OnGuestGone(int instance_id);
void OnSetChildFrameSurface(int instance_id,
const cc::SurfaceId& surface_id,
diff --git a/content/renderer/browser_plugin/browser_plugin_manager.cc b/content/renderer/browser_plugin/browser_plugin_manager.cc
index 9cde473..b6dbd2e 100644
--- a/content/renderer/browser_plugin/browser_plugin_manager.cc
+++ b/content/renderer/browser_plugin/browser_plugin_manager.cc
@@ -96,35 +96,11 @@ bool BrowserPluginManager::OnControlMessageReceived(
bool success = iter.ReadInt(&browser_plugin_instance_id);
DCHECK(success);
BrowserPlugin* plugin = GetBrowserPlugin(browser_plugin_instance_id);
- if (plugin && plugin->OnMessageReceived(message))
- return true;
-
- // TODO(fsamuel): This is probably forcing the compositor to continue working
- // even on display:none. We should optimize this.
- if (message.type() == BrowserPluginMsg_CompositorFrameSwapped::ID) {
- OnCompositorFrameSwappedPluginUnavailable(message);
- return true;
- }
-
- return false;
+ return plugin && plugin->OnMessageReceived(message);
}
bool BrowserPluginManager::Send(IPC::Message* msg) {
return RenderThreadImpl::current()->Send(msg);
}
-void BrowserPluginManager::OnCompositorFrameSwappedPluginUnavailable(
- const IPC::Message& message) {
- BrowserPluginMsg_CompositorFrameSwapped::Param param;
- if (!BrowserPluginMsg_CompositorFrameSwapped::Read(&message, &param))
- return;
-
- FrameHostMsg_CompositorFrameSwappedACK_Params params;
- params.producing_host_id = base::get<1>(param).producing_host_id;
- params.producing_route_id = base::get<1>(param).producing_route_id;
- params.output_surface_id = base::get<1>(param).output_surface_id;
- Send(new BrowserPluginHostMsg_CompositorFrameSwappedACK(
- base::get<0>(param), params));
-}
-
} // namespace content
diff --git a/content/renderer/browser_plugin/browser_plugin_manager.h b/content/renderer/browser_plugin/browser_plugin_manager.h
index 4703fd8..b8471af 100644
--- a/content/renderer/browser_plugin/browser_plugin_manager.h
+++ b/content/renderer/browser_plugin/browser_plugin_manager.h
@@ -64,9 +64,6 @@ class CONTENT_EXPORT BrowserPluginManager : public RenderProcessObserver {
bool OnControlMessageReceived(const IPC::Message& message) override;
private:
- // IPC message handlers.
- void OnCompositorFrameSwappedPluginUnavailable(const IPC::Message& message);
-
// This map is keyed by guest instance IDs.
IDMap<BrowserPlugin> instances_;
diff --git a/content/renderer/child_frame_compositing_helper.cc b/content/renderer/child_frame_compositing_helper.cc
index 9c45511..6909d12 100644
--- a/content/renderer/child_frame_compositing_helper.cc
+++ b/content/renderer/child_frame_compositing_helper.cc
@@ -7,8 +7,6 @@
#include <utility>
#include "cc/blink/web_layer_impl.h"
-#include "cc/layers/delegated_frame_provider.h"
-#include "cc/layers/delegated_frame_resource_collection.h"
#include "cc/layers/delegated_renderer_layer.h"
#include "cc/layers/solid_color_layer.h"
#include "cc/layers/surface_layer.h"
@@ -57,17 +55,11 @@ ChildFrameCompositingHelper::ChildFrameCompositingHelper(
RenderFrameProxy* render_frame_proxy,
int host_routing_id)
: host_routing_id_(host_routing_id),
- last_route_id_(0),
- last_output_surface_id_(0),
- last_host_id_(0),
- ack_pending_(true),
browser_plugin_(browser_plugin),
render_frame_proxy_(render_frame_proxy),
frame_(frame) {}
ChildFrameCompositingHelper::~ChildFrameCompositingHelper() {
- if (resource_collection_.get())
- resource_collection_->SetClient(nullptr);
}
BrowserPluginManager* ChildFrameCompositingHelper::GetBrowserPluginManager() {
@@ -91,50 +83,6 @@ int ChildFrameCompositingHelper::GetInstanceID() {
return browser_plugin_->browser_plugin_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 (GetBrowserPluginManager()) {
- GetBrowserPluginManager()->Send(
- new BrowserPluginHostMsg_CompositorFrameSwappedACK(GetInstanceID(),
- params));
- } else if (render_frame_proxy_) {
- render_frame_proxy_->Send(
- new FrameHostMsg_CompositorFrameSwappedACK(host_routing_id_, params));
- }
-}
-
-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 (GetBrowserPluginManager()) {
- GetBrowserPluginManager()->Send(
- new BrowserPluginHostMsg_ReclaimCompositorResources(GetInstanceID(),
- params));
- } else if (render_frame_proxy_) {
- render_frame_proxy_->Send(
- new FrameHostMsg_ReclaimCompositorResources(host_routing_id_, params));
- }
-}
-
-void ChildFrameCompositingHelper::DidCommitCompositorFrame() {
- if (!resource_collection_.get() || !ack_pending_)
- return;
-
- 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(
- &params.ack.resources);
-
- SendCompositorFrameSwappedACKToBrowser(params);
-
- ack_pending_ = false;
-}
-
void ChildFrameCompositingHelper::UpdateWebLayer(blink::WebLayer* layer) {
if (GetContainer()) {
GetContainer()->setWebLayer(layer);
@@ -160,18 +108,7 @@ void ChildFrameCompositingHelper::CheckSizeAndAdjustLayerProperties(
}
void ChildFrameCompositingHelper::OnContainerDestroy() {
- // If we have a pending ACK, then ACK now so we don't lose frames in the
- // future.
- DidCommitCompositorFrame();
-
UpdateWebLayer(nullptr);
-
- if (resource_collection_.get())
- resource_collection_->SetClient(nullptr);
-
- ack_pending_ = false;
- resource_collection_ = nullptr;
- frame_provider_ = nullptr;
}
void ChildFrameCompositingHelper::ChildFrameGone() {
@@ -183,72 +120,6 @@ void ChildFrameCompositingHelper::ChildFrameGone() {
UpdateWebLayer(layer);
}
-void ChildFrameCompositingHelper::OnCompositorFrameSwapped(
- scoped_ptr<cc::CompositorFrame> frame,
- int route_id,
- uint32_t output_surface_id,
- int host_id,
- base::SharedMemoryHandle handle) {
- cc::DelegatedFrameData* frame_data = frame->delegated_frame_data.get();
-
- // Do nothing if we are getting destroyed or have no frame data.
- if (!frame_data)
- return;
-
- DCHECK(!frame_data->render_pass_list.empty());
- cc::RenderPass* root_pass = frame_data->render_pass_list.back().get();
- gfx::Size frame_size = root_pass->output_rect.size();
-
- if (last_route_id_ != route_id ||
- last_output_surface_id_ != output_surface_id ||
- last_host_id_ != host_id) {
- // Resource ids are scoped by the output surface.
- // If the originating output surface doesn't match the last one, it
- // indicates the guest's output surface may have been recreated, in which
- // case we should recreate the DelegatedRendererLayer, to avoid matching
- // resources from the old one with resources from the new one which would
- // have the same id.
- frame_provider_ = nullptr;
-
- // Drop the cc::DelegatedFrameResourceCollection so that we will not return
- // any resources from the old output surface with the new output surface id.
- if (resource_collection_.get()) {
- resource_collection_->SetClient(nullptr);
-
- if (resource_collection_->LoseAllResources())
- SendReturnedDelegatedResources();
- resource_collection_ = nullptr;
- }
- last_output_surface_id_ = output_surface_id;
- last_route_id_ = route_id;
- last_host_id_ = host_id;
- }
- if (!resource_collection_.get()) {
- resource_collection_ = new cc::DelegatedFrameResourceCollection;
- resource_collection_->SetClient(this);
- }
- if (!frame_provider_.get() || frame_provider_->frame_size() != frame_size) {
- frame_provider_ = new cc::DelegatedFrameProvider(
- resource_collection_.get(), std::move(frame->delegated_frame_data));
- scoped_refptr<cc::DelegatedRendererLayer> delegated_layer =
- cc::DelegatedRendererLayer::Create(
- cc_blink::WebLayerImpl::LayerSettings(), frame_provider_.get());
- delegated_layer->SetIsDrawable(true);
- buffer_size_ = gfx::Size();
- blink::WebLayer* layer = new cc_blink::WebLayerImpl(delegated_layer);
- UpdateWebLayer(layer);
- } else {
- frame_provider_->SetFrameData(std::move(frame->delegated_frame_data));
- }
-
- CheckSizeAndAdjustLayerProperties(
- frame_data->render_pass_list.back()->output_rect.size(),
- frame->metadata.device_scale_factor,
- static_cast<cc_blink::WebLayerImpl*>(web_layer_.get())->layer());
-
- ack_pending_ = true;
-}
-
// static
void ChildFrameCompositingHelper::SatisfyCallback(
scoped_refptr<ThreadSafeSender> sender,
@@ -350,24 +221,4 @@ void ChildFrameCompositingHelper::UpdateVisibility(bool visible) {
web_layer_->setDrawsContent(visible);
}
-void ChildFrameCompositingHelper::UnusedResourcesAreAvailable() {
- if (ack_pending_)
- return;
-
- SendReturnedDelegatedResources();
-}
-
-void ChildFrameCompositingHelper::SendReturnedDelegatedResources() {
- FrameHostMsg_ReclaimCompositorResources_Params params;
- if (resource_collection_.get())
- resource_collection_->TakeUnusedResourcesForChildCompositor(
- &params.ack.resources);
- DCHECK(!params.ack.resources.empty());
-
- params.route_id = last_route_id_;
- params.output_surface_id = last_output_surface_id_;
- params.renderer_host_id = last_host_id_;
- SendReclaimCompositorResourcesToBrowser(params);
-}
-
} // namespace content
diff --git a/content/renderer/child_frame_compositing_helper.h b/content/renderer/child_frame_compositing_helper.h
index 707955c..2f2e3c3 100644
--- a/content/renderer/child_frame_compositing_helper.h
+++ b/content/renderer/child_frame_compositing_helper.h
@@ -30,9 +30,6 @@ class CompositorFrame;
class Layer;
class SolidColorLayer;
class SurfaceLayer;
-class DelegatedFrameProvider;
-class DelegatedFrameResourceCollection;
-class DelegatedRendererLayer;
}
namespace blink {
@@ -57,21 +54,14 @@ class RenderFrameProxy;
class ThreadSafeSender;
class CONTENT_EXPORT ChildFrameCompositingHelper
- : public base::RefCounted<ChildFrameCompositingHelper>,
- public cc::DelegatedFrameResourceCollectionClient {
+ : public base::RefCounted<ChildFrameCompositingHelper> {
public:
static ChildFrameCompositingHelper* CreateForBrowserPlugin(
const base::WeakPtr<BrowserPlugin>& browser_plugin);
static ChildFrameCompositingHelper* CreateForRenderFrameProxy(
RenderFrameProxy* render_frame_proxy);
- void DidCommitCompositorFrame();
void OnContainerDestroy();
- void OnCompositorFrameSwapped(scoped_ptr<cc::CompositorFrame> frame,
- int route_id,
- uint32_t output_surface_id,
- int host_id,
- base::SharedMemoryHandle handle);
void OnSetSurface(const cc::SurfaceId& surface_id,
const gfx::Size& frame_size,
float scale_factor,
@@ -81,9 +71,6 @@ class CONTENT_EXPORT ChildFrameCompositingHelper
cc::SurfaceId surface_id() const { return surface_id_; }
- // cc::DelegatedFrameProviderClient implementation.
- void UnusedResourcesAreAvailable() override;
-
protected:
// Friend RefCounted so that the dtor can be non-public.
friend class base::RefCounted<ChildFrameCompositingHelper>;
@@ -101,14 +88,9 @@ class CONTENT_EXPORT ChildFrameCompositingHelper
blink::WebPluginContainer* GetContainer();
int GetInstanceID();
- void SendCompositorFrameSwappedACKToBrowser(
- FrameHostMsg_CompositorFrameSwappedACK_Params& params);
- void SendReclaimCompositorResourcesToBrowser(
- FrameHostMsg_ReclaimCompositorResources_Params& params);
void CheckSizeAndAdjustLayerProperties(const gfx::Size& new_size,
float device_scale_factor,
cc::Layer* layer);
- void SendReturnedDelegatedResources();
static void SatisfyCallback(scoped_refptr<ThreadSafeSender> sender,
int host_routing_id,
cc::SurfaceSequence sequence);
@@ -130,10 +112,6 @@ class CONTENT_EXPORT ChildFrameCompositingHelper
void UpdateWebLayer(blink::WebLayer* layer);
int host_routing_id_;
- int last_route_id_;
- uint32_t last_output_surface_id_;
- int last_host_id_;
- bool ack_pending_;
bool opaque_;
gfx::Size buffer_size_;
@@ -144,9 +122,6 @@ class CONTENT_EXPORT ChildFrameCompositingHelper
base::WeakPtr<BrowserPlugin> browser_plugin_;
RenderFrameProxy* render_frame_proxy_;
- scoped_refptr<cc::DelegatedFrameResourceCollection> resource_collection_;
- scoped_refptr<cc::DelegatedFrameProvider> frame_provider_;
-
scoped_ptr<blink::WebLayer> web_layer_;
cc::SurfaceId surface_id_;
blink::WebFrame* frame_;
diff --git a/content/renderer/render_frame_proxy.cc b/content/renderer/render_frame_proxy.cc
index 7a52f2c..3c4df02 100644
--- a/content/renderer/render_frame_proxy.cc
+++ b/content/renderer/render_frame_proxy.cc
@@ -207,8 +207,6 @@ void RenderFrameProxy::WillBeginCompositorFrame() {
}
void RenderFrameProxy::DidCommitCompositorFrame() {
- if (compositing_helper_.get())
- compositing_helper_->DidCommitCompositorFrame();
}
void RenderFrameProxy::SetReplicatedState(const FrameReplicationState& state) {
@@ -246,8 +244,6 @@ bool RenderFrameProxy::OnMessageReceived(const IPC::Message& msg) {
IPC_BEGIN_MESSAGE_MAP(RenderFrameProxy, msg)
IPC_MESSAGE_HANDLER(FrameMsg_DeleteProxy, OnDeleteProxy)
IPC_MESSAGE_HANDLER(FrameMsg_ChildFrameProcessGone, OnChildFrameProcessGone)
- IPC_MESSAGE_HANDLER_GENERIC(FrameMsg_CompositorFrameSwapped,
- OnCompositorFrameSwapped(msg))
IPC_MESSAGE_HANDLER(FrameMsg_SetChildFrameSurface, OnSetChildFrameSurface)
IPC_MESSAGE_HANDLER(FrameMsg_UpdateOpener, OnUpdateOpener)
IPC_MESSAGE_HANDLER(FrameMsg_DidStartLoading, OnDidStartLoading)
@@ -281,32 +277,6 @@ void RenderFrameProxy::OnChildFrameProcessGone() {
compositing_helper_->ChildFrameGone();
}
-void RenderFrameProxy::OnCompositorFrameSwapped(const IPC::Message& message) {
- // If this WebFrame has already been detached, its parent will be null. This
- // can happen when swapping a WebRemoteFrame with a WebLocalFrame, where this
- // message may arrive after the frame was removed from the frame tree, but
- // before the frame has been destroyed. http://crbug.com/446575.
- if (!web_frame()->parent())
- return;
-
- FrameMsg_CompositorFrameSwapped::Param param;
- if (!FrameMsg_CompositorFrameSwapped::Read(&message, &param))
- return;
-
- scoped_ptr<cc::CompositorFrame> frame(new cc::CompositorFrame);
- base::get<0>(param).frame.AssignTo(frame.get());
-
- if (!compositing_helper_.get()) {
- compositing_helper_ =
- ChildFrameCompositingHelper::CreateForRenderFrameProxy(this);
- }
- compositing_helper_->OnCompositorFrameSwapped(
- std::move(frame), base::get<0>(param).producing_route_id,
- base::get<0>(param).output_surface_id,
- base::get<0>(param).producing_host_id,
- base::get<0>(param).shared_memory_handle);
-}
-
void RenderFrameProxy::OnSetChildFrameSurface(
const cc::SurfaceId& surface_id,
const gfx::Size& frame_size,