Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(164)

Side by Side Diff: content/renderer/gpu/render_widget_compositor_unittest.cc

Issue 1245863003: Initialize CompositorDependencies in RenderWidget's constructor. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/renderer/gpu/render_widget_compositor.h" 5 #include "content/renderer/gpu/render_widget_compositor.h"
6 6
7 #include "base/location.h" 7 #include "base/location.h"
8 #include "base/single_thread_task_runner.h" 8 #include "base/single_thread_task_runner.h"
9 #include "base/thread_task_runner_handle.h" 9 #include "base/thread_task_runner_handle.h"
10 #include "cc/output/begin_frame_args.h" 10 #include "cc/output/begin_frame_args.h"
(...skipping 14 matching lines...) Expand all
25 namespace content { 25 namespace content {
26 namespace { 26 namespace {
27 27
28 class MockWebWidget : public blink::WebWidget { 28 class MockWebWidget : public blink::WebWidget {
29 public: 29 public:
30 MOCK_METHOD1(beginFrame, void(const blink::WebBeginFrameArgs& args)); 30 MOCK_METHOD1(beginFrame, void(const blink::WebBeginFrameArgs& args));
31 }; 31 };
32 32
33 class TestRenderWidget : public RenderWidget { 33 class TestRenderWidget : public RenderWidget {
34 public: 34 public:
35 TestRenderWidget() 35 explicit TestRenderWidget(CompositorDependencies* compositor_deps)
36 : RenderWidget(blink::WebPopupTypeNone, 36 : RenderWidget(compositor_deps,
37 blink::WebPopupTypeNone,
37 blink::WebScreenInfo(), 38 blink::WebScreenInfo(),
38 true, 39 true,
39 false, 40 false,
40 false) { 41 false) {
41 webwidget_ = &mock_webwidget_; 42 webwidget_ = &mock_webwidget_;
42 } 43 }
43 44
44 MockWebWidget mock_webwidget_; 45 MockWebWidget mock_webwidget_;
45 46
46 protected: 47 protected:
47 ~TestRenderWidget() override { webwidget_ = NULL; } 48 ~TestRenderWidget() override { webwidget_ = NULL; }
48 49
49 DISALLOW_COPY_AND_ASSIGN(TestRenderWidget); 50 DISALLOW_COPY_AND_ASSIGN(TestRenderWidget);
50 }; 51 };
51 52
52 class RenderWidgetCompositorTest : public testing::Test { 53 class RenderWidgetCompositorTest : public testing::Test {
53 public: 54 public:
54 RenderWidgetCompositorTest() 55 RenderWidgetCompositorTest()
55 : render_widget_(new TestRenderWidget()), 56 : compositor_deps_(new FakeCompositorDependencies),
56 compositor_deps_(new FakeCompositorDependencies), 57 render_widget_(new TestRenderWidget(compositor_deps_.get())),
57 render_widget_compositor_( 58 render_widget_compositor_(
58 RenderWidgetCompositor::Create(render_widget_.get(), 59 RenderWidgetCompositor::Create(render_widget_.get(),
59 compositor_deps_.get())) {} 60 compositor_deps_.get())) {}
60 ~RenderWidgetCompositorTest() override {} 61 ~RenderWidgetCompositorTest() override {}
61 62
62 protected: 63 protected:
63 base::MessageLoop loop_; 64 base::MessageLoop loop_;
64 MockRenderThread render_thread_; 65 MockRenderThread render_thread_;
66 scoped_ptr<FakeCompositorDependencies> compositor_deps_;
65 scoped_refptr<TestRenderWidget> render_widget_; 67 scoped_refptr<TestRenderWidget> render_widget_;
66 scoped_ptr<FakeCompositorDependencies> compositor_deps_;
67 scoped_ptr<RenderWidgetCompositor> render_widget_compositor_; 68 scoped_ptr<RenderWidgetCompositor> render_widget_compositor_;
68 69
69 private: 70 private:
70 DISALLOW_COPY_AND_ASSIGN(RenderWidgetCompositorTest); 71 DISALLOW_COPY_AND_ASSIGN(RenderWidgetCompositorTest);
71 }; 72 };
72 73
73 TEST_F(RenderWidgetCompositorTest, BeginMainFrame) { 74 TEST_F(RenderWidgetCompositorTest, BeginMainFrame) {
74 base::TimeTicks frame_time(base::TimeTicks() + 75 base::TimeTicks frame_time(base::TimeTicks() +
75 base::TimeDelta::FromSeconds(1)); 76 base::TimeDelta::FromSeconds(1));
76 base::TimeTicks deadline(base::TimeTicks() + base::TimeDelta::FromSeconds(2)); 77 base::TimeTicks deadline(base::TimeTicks() + base::TimeDelta::FromSeconds(2));
77 base::TimeDelta interval(base::TimeDelta::FromSeconds(3)); 78 base::TimeDelta interval(base::TimeDelta::FromSeconds(3));
78 cc::BeginFrameArgs args( 79 cc::BeginFrameArgs args(
79 cc::BeginFrameArgs::Create(BEGINFRAME_FROM_HERE, frame_time, deadline, 80 cc::BeginFrameArgs::Create(BEGINFRAME_FROM_HERE, frame_time, deadline,
80 interval, cc::BeginFrameArgs::NORMAL)); 81 interval, cc::BeginFrameArgs::NORMAL));
81 82
82 EXPECT_CALL(render_widget_->mock_webwidget_, 83 EXPECT_CALL(render_widget_->mock_webwidget_,
83 beginFrame(AllOf( 84 beginFrame(AllOf(
84 Field(&blink::WebBeginFrameArgs::lastFrameTimeMonotonic, 1), 85 Field(&blink::WebBeginFrameArgs::lastFrameTimeMonotonic, 1),
85 Field(&blink::WebBeginFrameArgs::deadline, 2), 86 Field(&blink::WebBeginFrameArgs::deadline, 2),
86 Field(&blink::WebBeginFrameArgs::interval, 3)))); 87 Field(&blink::WebBeginFrameArgs::interval, 3))));
87 88
88 render_widget_compositor_->BeginMainFrame(args); 89 render_widget_compositor_->BeginMainFrame(args);
89 } 90 }
90 91
91 class RenderWidgetCompositorOutputSurface; 92 class RenderWidgetCompositorOutputSurface;
92 93
93 class RenderWidgetOutputSurface : public TestRenderWidget { 94 class RenderWidgetOutputSurface : public TestRenderWidget {
94 public: 95 public:
95 RenderWidgetOutputSurface() : compositor_(NULL) {} 96 explicit RenderWidgetOutputSurface(CompositorDependencies* compositor_deps)
97 : TestRenderWidget(compositor_deps), compositor_(NULL) {}
96 void SetCompositor(RenderWidgetCompositorOutputSurface* compositor); 98 void SetCompositor(RenderWidgetCompositorOutputSurface* compositor);
97 99
98 scoped_ptr<cc::OutputSurface> CreateOutputSurface(bool fallback) override; 100 scoped_ptr<cc::OutputSurface> CreateOutputSurface(bool fallback) override;
99 101
100 protected: 102 protected:
101 ~RenderWidgetOutputSurface() override {} 103 ~RenderWidgetOutputSurface() override {}
102 104
103 private: 105 private:
104 RenderWidgetCompositorOutputSurface* compositor_; 106 RenderWidgetCompositorOutputSurface* compositor_;
105 107
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 int num_failures_; 229 int num_failures_;
228 bool last_create_was_fallback_; 230 bool last_create_was_fallback_;
229 bool use_null_output_surface_; 231 bool use_null_output_surface_;
230 232
231 DISALLOW_COPY_AND_ASSIGN(RenderWidgetCompositorOutputSurface); 233 DISALLOW_COPY_AND_ASSIGN(RenderWidgetCompositorOutputSurface);
232 }; 234 };
233 235
234 class RenderWidgetCompositorOutputSurfaceTest : public testing::Test { 236 class RenderWidgetCompositorOutputSurfaceTest : public testing::Test {
235 public: 237 public:
236 RenderWidgetCompositorOutputSurfaceTest() 238 RenderWidgetCompositorOutputSurfaceTest()
237 : render_widget_(new RenderWidgetOutputSurface), 239 : compositor_deps_(new FakeCompositorDependencies),
238 compositor_deps_(new FakeCompositorDependencies) { 240 render_widget_(new RenderWidgetOutputSurface(compositor_deps_.get())) {
239 render_widget_compositor_.reset(new RenderWidgetCompositorOutputSurface( 241 render_widget_compositor_.reset(new RenderWidgetCompositorOutputSurface(
240 render_widget_.get(), compositor_deps_.get())); 242 render_widget_.get(), compositor_deps_.get()));
241 render_widget_compositor_->Initialize(); 243 render_widget_compositor_->Initialize();
242 render_widget_->SetCompositor(render_widget_compositor_.get()); 244 render_widget_->SetCompositor(render_widget_compositor_.get());
243 } 245 }
244 246
245 void RunTest(bool use_null_output_surface, 247 void RunTest(bool use_null_output_surface,
246 int num_failures_before_success, 248 int num_failures_before_success,
247 int expected_successes, 249 int expected_successes,
248 int expected_fallback_succeses) { 250 int expected_fallback_succeses) {
249 render_widget_compositor_->SetUp( 251 render_widget_compositor_->SetUp(
250 use_null_output_surface, num_failures_before_success, 252 use_null_output_surface, num_failures_before_success,
251 expected_successes, expected_fallback_succeses); 253 expected_successes, expected_fallback_succeses);
252 render_widget_compositor_->StartCompositor(); 254 render_widget_compositor_->StartCompositor();
253 base::ThreadTaskRunnerHandle::Get()->PostTask( 255 base::ThreadTaskRunnerHandle::Get()->PostTask(
254 FROM_HERE, 256 FROM_HERE,
255 base::Bind(&RenderWidgetCompositorOutputSurface::SynchronousComposite, 257 base::Bind(&RenderWidgetCompositorOutputSurface::SynchronousComposite,
256 base::Unretained(render_widget_compositor_.get()))); 258 base::Unretained(render_widget_compositor_.get())));
257 base::MessageLoop::current()->Run(); 259 base::MessageLoop::current()->Run();
258 render_widget_compositor_->AfterTest(); 260 render_widget_compositor_->AfterTest();
259 } 261 }
260 262
261 protected: 263 protected:
262 base::MessageLoop ye_olde_message_loope_; 264 base::MessageLoop ye_olde_message_loope_;
263 MockRenderThread render_thread_; 265 MockRenderThread render_thread_;
266 scoped_ptr<FakeCompositorDependencies> compositor_deps_;
264 scoped_refptr<RenderWidgetOutputSurface> render_widget_; 267 scoped_refptr<RenderWidgetOutputSurface> render_widget_;
265 scoped_ptr<FakeCompositorDependencies> compositor_deps_;
266 scoped_ptr<RenderWidgetCompositorOutputSurface> render_widget_compositor_; 268 scoped_ptr<RenderWidgetCompositorOutputSurface> render_widget_compositor_;
267 269
268 private: 270 private:
269 DISALLOW_COPY_AND_ASSIGN(RenderWidgetCompositorOutputSurfaceTest); 271 DISALLOW_COPY_AND_ASSIGN(RenderWidgetCompositorOutputSurfaceTest);
270 }; 272 };
271 273
272 scoped_ptr<cc::OutputSurface> RenderWidgetOutputSurface::CreateOutputSurface( 274 scoped_ptr<cc::OutputSurface> RenderWidgetOutputSurface::CreateOutputSurface(
273 bool fallback) { 275 bool fallback) {
274 return compositor_->CreateOutputSurface(fallback); 276 return compositor_->CreateOutputSurface(fallback);
275 } 277 }
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
312 } 314 }
313 315
314 TEST_F(RenderWidgetCompositorOutputSurfaceTest, FallbackSuccessNormalSuccess) { 316 TEST_F(RenderWidgetCompositorOutputSurfaceTest, FallbackSuccessNormalSuccess) {
315 // The first success is a fallback, but the next should not be a fallback. 317 // The first success is a fallback, but the next should not be a fallback.
316 RunTest(false, RenderWidgetCompositor::OUTPUT_SURFACE_RETRIES_BEFORE_FALLBACK, 318 RunTest(false, RenderWidgetCompositor::OUTPUT_SURFACE_RETRIES_BEFORE_FALLBACK,
317 1, 1); 319 1, 1);
318 } 320 }
319 321
320 } // namespace 322 } // namespace
321 } // namespace content 323 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698