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

Side by Side Diff: content/browser/compositor/software_browser_compositor_output_surface_unittest.cc

Issue 2029323004: Get rid of virtual Display::CreateScheduler. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@onscreendisplayclient
Patch Set: displaytest: ownership-all-the-things Created 4 years, 6 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/browser/compositor/software_browser_compositor_output_surface. h" 5 #include "content/browser/compositor/software_browser_compositor_output_surface. h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/memory/ptr_util.h"
11 #include "base/test/test_message_loop.h"
10 #include "base/threading/thread_task_runner_handle.h" 12 #include "base/threading/thread_task_runner_handle.h"
11 #include "cc/output/compositor_frame.h" 13 #include "cc/output/compositor_frame.h"
14 #include "cc/scheduler/begin_frame_source.h"
12 #include "cc/test/fake_output_surface_client.h" 15 #include "cc/test/fake_output_surface_client.h"
13 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
14 #include "ui/compositor/compositor.h" 17 #include "ui/compositor/compositor.h"
15 #include "ui/compositor/test/context_factories_for_test.h" 18 #include "ui/compositor/test/context_factories_for_test.h"
16 #include "ui/gfx/vsync_provider.h" 19 #include "ui/gfx/vsync_provider.h"
17 20
18 namespace { 21 namespace {
19 22
20 class FakeVSyncProvider : public gfx::VSyncProvider { 23 class FakeVSyncProvider : public gfx::VSyncProvider {
21 public: 24 public:
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 private: 56 private:
54 std::unique_ptr<gfx::VSyncProvider> vsync_provider_; 57 std::unique_ptr<gfx::VSyncProvider> vsync_provider_;
55 58
56 DISALLOW_COPY_AND_ASSIGN(FakeSoftwareOutputDevice); 59 DISALLOW_COPY_AND_ASSIGN(FakeSoftwareOutputDevice);
57 }; 60 };
58 61
59 } // namespace 62 } // namespace
60 63
61 class SoftwareBrowserCompositorOutputSurfaceTest : public testing::Test { 64 class SoftwareBrowserCompositorOutputSurfaceTest : public testing::Test {
62 public: 65 public:
63 SoftwareBrowserCompositorOutputSurfaceTest(); 66 SoftwareBrowserCompositorOutputSurfaceTest()
64 ~SoftwareBrowserCompositorOutputSurfaceTest() override; 67 : begin_frame_source_(message_loop_.task_runner().get(),
68 cc::BeginFrameArgs::DefaultInterval()) {}
69 ~SoftwareBrowserCompositorOutputSurfaceTest() override = default;
65 70
66 void SetUp() override; 71 void SetUp() override;
67 void TearDown() override; 72 void TearDown() override;
68 73
69 std::unique_ptr<content::BrowserCompositorOutputSurface> CreateSurface( 74 std::unique_ptr<content::BrowserCompositorOutputSurface> CreateSurface(
70 std::unique_ptr<cc::SoftwareOutputDevice> device); 75 std::unique_ptr<cc::SoftwareOutputDevice> device);
71 76
72 protected: 77 protected:
73 std::unique_ptr<content::BrowserCompositorOutputSurface> output_surface_; 78 std::unique_ptr<content::BrowserCompositorOutputSurface> output_surface_;
74 79
75 std::unique_ptr<base::MessageLoop> message_loop_; 80 // TODO(crbug.com/616973): We shouldn't be using ThreadTaskRunnerHandle::Get()
81 // inside the OutputSurface, so we shouldn't need a MessageLoop. The
82 // OutputSurface should be using the TaskRunner given to the compositor.
83 base::TestMessageLoop message_loop_;
84 cc::SyntheticBeginFrameSource begin_frame_source_;
76 std::unique_ptr<ui::Compositor> compositor_; 85 std::unique_ptr<ui::Compositor> compositor_;
77 86
78 DISALLOW_COPY_AND_ASSIGN(SoftwareBrowserCompositorOutputSurfaceTest); 87 DISALLOW_COPY_AND_ASSIGN(SoftwareBrowserCompositorOutputSurfaceTest);
79 }; 88 };
80 89
81 SoftwareBrowserCompositorOutputSurfaceTest::
82 SoftwareBrowserCompositorOutputSurfaceTest() {
83 // |message_loop_| is not used, but the main thread still has to exist for the
84 // compositor to use.
85 message_loop_.reset(new base::MessageLoopForUI);
86 }
87
88 SoftwareBrowserCompositorOutputSurfaceTest::
89 ~SoftwareBrowserCompositorOutputSurfaceTest() {}
90
91 void SoftwareBrowserCompositorOutputSurfaceTest::SetUp() { 90 void SoftwareBrowserCompositorOutputSurfaceTest::SetUp() {
92 bool enable_pixel_output = false; 91 bool enable_pixel_output = false;
93 ui::ContextFactory* context_factory = 92 ui::ContextFactory* context_factory =
94 ui::InitializeContextFactoryForTests(enable_pixel_output); 93 ui::InitializeContextFactoryForTests(enable_pixel_output);
95 94
96 compositor_.reset( 95 compositor_.reset(
97 new ui::Compositor(context_factory, base::ThreadTaskRunnerHandle::Get())); 96 new ui::Compositor(context_factory, message_loop_.task_runner().get()));
98 compositor_->SetAcceleratedWidget(gfx::kNullAcceleratedWidget); 97 compositor_->SetAcceleratedWidget(gfx::kNullAcceleratedWidget);
99 } 98 }
100 99
101 void SoftwareBrowserCompositorOutputSurfaceTest::TearDown() { 100 void SoftwareBrowserCompositorOutputSurfaceTest::TearDown() {
102 output_surface_.reset(); 101 output_surface_.reset();
103 compositor_.reset(); 102 compositor_.reset();
104 ui::TerminateContextFactoryForTests(); 103 ui::TerminateContextFactoryForTests();
105 } 104 }
106 105
107 std::unique_ptr<content::BrowserCompositorOutputSurface> 106 std::unique_ptr<content::BrowserCompositorOutputSurface>
108 SoftwareBrowserCompositorOutputSurfaceTest::CreateSurface( 107 SoftwareBrowserCompositorOutputSurfaceTest::CreateSurface(
109 std::unique_ptr<cc::SoftwareOutputDevice> device) { 108 std::unique_ptr<cc::SoftwareOutputDevice> device) {
110 return std::unique_ptr<content::BrowserCompositorOutputSurface>( 109 return base::MakeUnique<content::SoftwareBrowserCompositorOutputSurface>(
111 new content::SoftwareBrowserCompositorOutputSurface( 110 std::move(device), compositor_->vsync_manager(), &begin_frame_source_);
112 std::move(device), compositor_->vsync_manager(),
113 message_loop_->task_runner().get()));
114 } 111 }
115 112
116 TEST_F(SoftwareBrowserCompositorOutputSurfaceTest, NoVSyncProvider) { 113 TEST_F(SoftwareBrowserCompositorOutputSurfaceTest, NoVSyncProvider) {
117 cc::FakeOutputSurfaceClient output_surface_client; 114 cc::FakeOutputSurfaceClient output_surface_client;
118 std::unique_ptr<cc::SoftwareOutputDevice> software_device( 115 std::unique_ptr<cc::SoftwareOutputDevice> software_device(
119 new cc::SoftwareOutputDevice()); 116 new cc::SoftwareOutputDevice());
120 output_surface_ = CreateSurface(std::move(software_device)); 117 output_surface_ = CreateSurface(std::move(software_device));
121 CHECK(output_surface_->BindToClient(&output_surface_client)); 118 CHECK(output_surface_->BindToClient(&output_surface_client));
122 119
123 cc::CompositorFrame frame; 120 cc::CompositorFrame frame;
(...skipping 13 matching lines...) Expand all
137 FakeVSyncProvider* vsync_provider = static_cast<FakeVSyncProvider*>( 134 FakeVSyncProvider* vsync_provider = static_cast<FakeVSyncProvider*>(
138 output_surface_->software_device()->GetVSyncProvider()); 135 output_surface_->software_device()->GetVSyncProvider());
139 EXPECT_EQ(0, vsync_provider->call_count()); 136 EXPECT_EQ(0, vsync_provider->call_count());
140 137
141 cc::CompositorFrame frame; 138 cc::CompositorFrame frame;
142 output_surface_->SwapBuffers(&frame); 139 output_surface_->SwapBuffers(&frame);
143 140
144 EXPECT_EQ(1, output_surface_client.swap_count()); 141 EXPECT_EQ(1, output_surface_client.swap_count());
145 EXPECT_EQ(1, vsync_provider->call_count()); 142 EXPECT_EQ(1, vsync_provider->call_count());
146 } 143 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698