Chromium Code Reviews| Index: content/browser/frame_host/render_widget_host_view_child_frame_unittest.cc |
| 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 601a40a4d9a7792daa29a2a808b92f9b8722c95e..f642a792bd6b2a6a9d4cd605a65cad66c44f6aa1 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 |
| @@ -21,6 +21,7 @@ |
| #include "cc/surfaces/surface_sequence.h" |
| #include "cc/test/begin_frame_args_test.h" |
| #include "cc/test/fake_external_begin_frame_source.h" |
| +#include "cc/test/test_begin_frame_ack_tracker.h" |
| #include "content/browser/compositor/test/no_transport_image_transport_factory.h" |
| #include "content/browser/frame_host/cross_process_frame_connector.h" |
| #include "content/browser/gpu/compositor_util.h" |
| @@ -244,8 +245,40 @@ TEST_F(RenderWidgetHostViewChildFrameTest, FrameEviction) { |
| EXPECT_TRUE(view_->has_frame()); |
| } |
| -// TODO(eseckler): Add back tests for BeginFrameAck forwarding through |
| -// RenderWidgetHostViewChildFrame and CompositorFrameSinkSupport when we add |
| -// plumbing of BeginFrameAcks through SurfaceObservers. |
| +// Tests that BeginFrameAcks are forwarded correctly from the |
|
sunnyps
2017/05/25 20:49:13
nit: We don't need this test because we're already
Eric Seckler
2017/05/26 10:57:52
Done. (see DirectCFS comment)
|
| +// SwapCompositorFrame and DidNotProduceFrame IPCs through the |
| +// CompositorFrameSinkSupport. |
| +TEST_F(RenderWidgetHostViewChildFrameTest, ForwardsBeginFrameAcks) { |
| + gfx::Size view_size(100, 100); |
| + gfx::Rect view_rect(view_size); |
| + float scale_factor = 1.f; |
| + |
| + view_->SetSize(view_size); |
| + view_->Show(); |
| + view_->SetNeedsBeginFrames(true); |
| + |
| + cc::TestBeginFrameAckTracker ack_tracker; |
| + view_->support_->surface_manager()->AddObserver(&ack_tracker); |
| + |
| + { |
| + // Ack from CompositorFrame is forwarded. |
| + cc::BeginFrameAck ack(0, 5, 4, true); |
| + cc::CompositorFrame frame = |
| + CreateDelegatedFrame(scale_factor, view_size, view_rect); |
| + frame.metadata.begin_frame_ack = ack; |
| + view_->SubmitCompositorFrame(kArbitraryLocalSurfaceId, std::move(frame)); |
| + EXPECT_EQ(ack, ack_tracker.last_ack()); |
| + } |
| + |
| + { |
| + // Explicit ack through OnDidNotProduceFrame is forwarded. |
| + cc::BeginFrameAck ack(0, 6, 4, false); |
| + view_->OnDidNotProduceFrame(ack); |
| + EXPECT_EQ(ack, ack_tracker.last_ack()); |
| + } |
| + |
| + view_->support_->surface_manager()->RemoveObserver(&ack_tracker); |
| + view_->SetNeedsBeginFrames(false); |
| +} |
| } // namespace content |