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/browser/frame_host/render_widget_host_view_child_frame.h" | 5 #include "content/browser/frame_host/render_widget_host_view_child_frame.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include <utility> | 9 #include <utility> |
10 | 10 |
11 #include "base/macros.h" | 11 #include "base/macros.h" |
12 #include "base/memory/ptr_util.h" | 12 #include "base/memory/ptr_util.h" |
13 #include "base/run_loop.h" | 13 #include "base/run_loop.h" |
14 #include "base/single_thread_task_runner.h" | 14 #include "base/single_thread_task_runner.h" |
15 #include "base/test/scoped_task_environment.h" | 15 #include "base/test/scoped_task_environment.h" |
16 #include "base/threading/thread_task_runner_handle.h" | 16 #include "base/threading/thread_task_runner_handle.h" |
17 #include "build/build_config.h" | 17 #include "build/build_config.h" |
18 #include "cc/surfaces/compositor_frame_sink_support.h" | 18 #include "cc/surfaces/compositor_frame_sink_support.h" |
19 #include "cc/surfaces/surface.h" | 19 #include "cc/surfaces/surface.h" |
20 #include "cc/surfaces/surface_manager.h" | 20 #include "cc/surfaces/surface_manager.h" |
21 #include "cc/surfaces/surface_sequence.h" | 21 #include "cc/surfaces/surface_sequence.h" |
22 #include "cc/test/begin_frame_args_test.h" | 22 #include "cc/test/begin_frame_args_test.h" |
23 #include "cc/test/fake_external_begin_frame_source.h" | 23 #include "cc/test/fake_external_begin_frame_source.h" |
24 #include "cc/test/test_begin_frame_ack_tracker.h" | |
24 #include "content/browser/compositor/test/no_transport_image_transport_factory.h " | 25 #include "content/browser/compositor/test/no_transport_image_transport_factory.h " |
25 #include "content/browser/frame_host/cross_process_frame_connector.h" | 26 #include "content/browser/frame_host/cross_process_frame_connector.h" |
26 #include "content/browser/gpu/compositor_util.h" | 27 #include "content/browser/gpu/compositor_util.h" |
27 #include "content/browser/renderer_host/render_widget_host_delegate.h" | 28 #include "content/browser/renderer_host/render_widget_host_delegate.h" |
28 #include "content/browser/renderer_host/render_widget_host_impl.h" | 29 #include "content/browser/renderer_host/render_widget_host_impl.h" |
29 #include "content/common/view_messages.h" | 30 #include "content/common/view_messages.h" |
30 #include "content/public/browser/render_widget_host_view.h" | 31 #include "content/public/browser/render_widget_host_view.h" |
31 #include "content/public/test/mock_render_process_host.h" | 32 #include "content/public/test/mock_render_process_host.h" |
32 #include "content/public/test/test_browser_context.h" | 33 #include "content/public/test/test_browser_context.h" |
33 #include "content/test/fake_renderer_compositor_frame_sink.h" | 34 #include "content/test/fake_renderer_compositor_frame_sink.h" |
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
237 | 238 |
238 // Submit another frame with the same local surface id. The same id should be | 239 // Submit another frame with the same local surface id. The same id should be |
239 // usable. | 240 // usable. |
240 view_->SubmitCompositorFrame( | 241 view_->SubmitCompositorFrame( |
241 kArbitraryLocalSurfaceId, | 242 kArbitraryLocalSurfaceId, |
242 CreateDelegatedFrame(scale_factor, view_size, view_rect)); | 243 CreateDelegatedFrame(scale_factor, view_size, view_rect)); |
243 EXPECT_EQ(kArbitraryLocalSurfaceId, GetLocalSurfaceId()); | 244 EXPECT_EQ(kArbitraryLocalSurfaceId, GetLocalSurfaceId()); |
244 EXPECT_TRUE(view_->has_frame()); | 245 EXPECT_TRUE(view_->has_frame()); |
245 } | 246 } |
246 | 247 |
247 // TODO(eseckler): Add back tests for BeginFrameAck forwarding through | 248 // 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)
| |
248 // RenderWidgetHostViewChildFrame and CompositorFrameSinkSupport when we add | 249 // SwapCompositorFrame and DidNotProduceFrame IPCs through the |
249 // plumbing of BeginFrameAcks through SurfaceObservers. | 250 // CompositorFrameSinkSupport. |
251 TEST_F(RenderWidgetHostViewChildFrameTest, ForwardsBeginFrameAcks) { | |
252 gfx::Size view_size(100, 100); | |
253 gfx::Rect view_rect(view_size); | |
254 float scale_factor = 1.f; | |
255 | |
256 view_->SetSize(view_size); | |
257 view_->Show(); | |
258 view_->SetNeedsBeginFrames(true); | |
259 | |
260 cc::TestBeginFrameAckTracker ack_tracker; | |
261 view_->support_->surface_manager()->AddObserver(&ack_tracker); | |
262 | |
263 { | |
264 // Ack from CompositorFrame is forwarded. | |
265 cc::BeginFrameAck ack(0, 5, 4, true); | |
266 cc::CompositorFrame frame = | |
267 CreateDelegatedFrame(scale_factor, view_size, view_rect); | |
268 frame.metadata.begin_frame_ack = ack; | |
269 view_->SubmitCompositorFrame(kArbitraryLocalSurfaceId, std::move(frame)); | |
270 EXPECT_EQ(ack, ack_tracker.last_ack()); | |
271 } | |
272 | |
273 { | |
274 // Explicit ack through OnDidNotProduceFrame is forwarded. | |
275 cc::BeginFrameAck ack(0, 6, 4, false); | |
276 view_->OnDidNotProduceFrame(ack); | |
277 EXPECT_EQ(ack, ack_tracker.last_ack()); | |
278 } | |
279 | |
280 view_->support_->surface_manager()->RemoveObserver(&ack_tracker); | |
281 view_->SetNeedsBeginFrames(false); | |
282 } | |
250 | 283 |
251 } // namespace content | 284 } // namespace content |
OLD | NEW |