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

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

Issue 2511273002: Decouple BrowserCompositorOutputSurface from BeginFrameSource. (Closed)
Patch Set: Bring back GpuBrowserCompositorOutputSurface destructor Created 4 years 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" 10 #include "base/memory/ptr_util.h"
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 class SoftwareBrowserCompositorOutputSurfaceTest : public testing::Test { 65 class SoftwareBrowserCompositorOutputSurfaceTest : public testing::Test {
66 public: 66 public:
67 SoftwareBrowserCompositorOutputSurfaceTest() 67 SoftwareBrowserCompositorOutputSurfaceTest()
68 : begin_frame_source_(base::MakeUnique<cc::DelayBasedTimeSource>( 68 : begin_frame_source_(base::MakeUnique<cc::DelayBasedTimeSource>(
69 message_loop_.task_runner().get())) {} 69 message_loop_.task_runner().get())) {}
70 ~SoftwareBrowserCompositorOutputSurfaceTest() override = default; 70 ~SoftwareBrowserCompositorOutputSurfaceTest() override = default;
71 71
72 void SetUp() override; 72 void SetUp() override;
73 void TearDown() override; 73 void TearDown() override;
74 74
75 void UpdateVSyncParameters(base::TimeTicks timebase,
76 base::TimeDelta interval);
77
75 std::unique_ptr<content::BrowserCompositorOutputSurface> CreateSurface( 78 std::unique_ptr<content::BrowserCompositorOutputSurface> CreateSurface(
76 std::unique_ptr<cc::SoftwareOutputDevice> device); 79 std::unique_ptr<cc::SoftwareOutputDevice> device);
77 80
78 protected: 81 protected:
79 std::unique_ptr<content::BrowserCompositorOutputSurface> output_surface_; 82 std::unique_ptr<content::BrowserCompositorOutputSurface> output_surface_;
80 83
81 // TODO(crbug.com/616973): We shouldn't be using ThreadTaskRunnerHandle::Get() 84 // TODO(crbug.com/616973): We shouldn't be using ThreadTaskRunnerHandle::Get()
82 // inside the OutputSurface, so we shouldn't need a MessageLoop. The 85 // inside the OutputSurface, so we shouldn't need a MessageLoop. The
83 // OutputSurface should be using the TaskRunner given to the compositor. 86 // OutputSurface should be using the TaskRunner given to the compositor.
84 base::TestMessageLoop message_loop_; 87 base::TestMessageLoop message_loop_;
85 cc::DelayBasedBeginFrameSource begin_frame_source_; 88 cc::DelayBasedBeginFrameSource begin_frame_source_;
86 std::unique_ptr<ui::Compositor> compositor_; 89 std::unique_ptr<ui::Compositor> compositor_;
90 int update_vsync_parameters_call_count_ = 0;
87 91
88 private: 92 private:
89 DISALLOW_COPY_AND_ASSIGN(SoftwareBrowserCompositorOutputSurfaceTest); 93 DISALLOW_COPY_AND_ASSIGN(SoftwareBrowserCompositorOutputSurfaceTest);
90 }; 94 };
91 95
92 void SoftwareBrowserCompositorOutputSurfaceTest::SetUp() { 96 void SoftwareBrowserCompositorOutputSurfaceTest::SetUp() {
93 bool enable_pixel_output = false; 97 bool enable_pixel_output = false;
94 ui::ContextFactory* context_factory = 98 ui::ContextFactory* context_factory =
95 ui::InitializeContextFactoryForTests(enable_pixel_output); 99 ui::InitializeContextFactoryForTests(enable_pixel_output);
96 100
97 compositor_.reset( 101 compositor_.reset(
98 new ui::Compositor(context_factory, message_loop_.task_runner().get())); 102 new ui::Compositor(context_factory, message_loop_.task_runner().get()));
99 compositor_->SetAcceleratedWidget(gfx::kNullAcceleratedWidget); 103 compositor_->SetAcceleratedWidget(gfx::kNullAcceleratedWidget);
100 } 104 }
101 105
102 void SoftwareBrowserCompositorOutputSurfaceTest::TearDown() { 106 void SoftwareBrowserCompositorOutputSurfaceTest::TearDown() {
103 output_surface_.reset(); 107 output_surface_.reset();
104 compositor_.reset(); 108 compositor_.reset();
105 ui::TerminateContextFactoryForTests(); 109 ui::TerminateContextFactoryForTests();
106 } 110 }
107 111
108 std::unique_ptr<content::BrowserCompositorOutputSurface> 112 std::unique_ptr<content::BrowserCompositorOutputSurface>
109 SoftwareBrowserCompositorOutputSurfaceTest::CreateSurface( 113 SoftwareBrowserCompositorOutputSurfaceTest::CreateSurface(
110 std::unique_ptr<cc::SoftwareOutputDevice> device) { 114 std::unique_ptr<cc::SoftwareOutputDevice> device) {
111 return base::MakeUnique<content::SoftwareBrowserCompositorOutputSurface>( 115 return base::MakeUnique<content::SoftwareBrowserCompositorOutputSurface>(
112 std::move(device), compositor_->vsync_manager(), &begin_frame_source_, 116 std::move(device),
117 base::Bind(
118 &SoftwareBrowserCompositorOutputSurfaceTest::UpdateVSyncParameters,
119 base::Unretained(this)),
113 base::ThreadTaskRunnerHandle::Get()); 120 base::ThreadTaskRunnerHandle::Get());
114 } 121 }
115 122
123 void SoftwareBrowserCompositorOutputSurfaceTest::UpdateVSyncParameters(
124 base::TimeTicks timebase,
125 base::TimeDelta interval) {
126 update_vsync_parameters_call_count_++;
127 }
128
116 TEST_F(SoftwareBrowserCompositorOutputSurfaceTest, NoVSyncProvider) { 129 TEST_F(SoftwareBrowserCompositorOutputSurfaceTest, NoVSyncProvider) {
117 cc::FakeOutputSurfaceClient output_surface_client; 130 cc::FakeOutputSurfaceClient output_surface_client;
118 std::unique_ptr<cc::SoftwareOutputDevice> software_device( 131 std::unique_ptr<cc::SoftwareOutputDevice> software_device(
119 new cc::SoftwareOutputDevice()); 132 new cc::SoftwareOutputDevice());
120 output_surface_ = CreateSurface(std::move(software_device)); 133 output_surface_ = CreateSurface(std::move(software_device));
121 output_surface_->BindToClient(&output_surface_client); 134 output_surface_->BindToClient(&output_surface_client);
122 135
123 output_surface_->SwapBuffers(cc::OutputSurfaceFrame()); 136 output_surface_->SwapBuffers(cc::OutputSurfaceFrame());
124 EXPECT_EQ(NULL, output_surface_->software_device()->GetVSyncProvider()); 137 EXPECT_EQ(NULL, output_surface_->software_device()->GetVSyncProvider());
138 EXPECT_EQ(0, update_vsync_parameters_call_count_);
125 } 139 }
126 140
127 TEST_F(SoftwareBrowserCompositorOutputSurfaceTest, VSyncProviderUpdates) { 141 TEST_F(SoftwareBrowserCompositorOutputSurfaceTest, VSyncProviderUpdates) {
128 cc::FakeOutputSurfaceClient output_surface_client; 142 cc::FakeOutputSurfaceClient output_surface_client;
129 std::unique_ptr<cc::SoftwareOutputDevice> software_device( 143 std::unique_ptr<cc::SoftwareOutputDevice> software_device(
130 new FakeSoftwareOutputDevice()); 144 new FakeSoftwareOutputDevice());
131 output_surface_ = CreateSurface(std::move(software_device)); 145 output_surface_ = CreateSurface(std::move(software_device));
132 output_surface_->BindToClient(&output_surface_client); 146 output_surface_->BindToClient(&output_surface_client);
133 147
134 FakeVSyncProvider* vsync_provider = static_cast<FakeVSyncProvider*>( 148 FakeVSyncProvider* vsync_provider = static_cast<FakeVSyncProvider*>(
135 output_surface_->software_device()->GetVSyncProvider()); 149 output_surface_->software_device()->GetVSyncProvider());
136 EXPECT_EQ(0, vsync_provider->call_count()); 150 EXPECT_EQ(0, vsync_provider->call_count());
137 151
138 output_surface_->SwapBuffers(cc::OutputSurfaceFrame()); 152 output_surface_->SwapBuffers(cc::OutputSurfaceFrame());
139 EXPECT_EQ(1, vsync_provider->call_count()); 153 EXPECT_EQ(1, vsync_provider->call_count());
154 EXPECT_EQ(1, update_vsync_parameters_call_count_);
140 } 155 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698