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

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

Issue 2511273002: Decouple BrowserCompositorOutputSurface from BeginFrameSource. (Closed)
Patch Set: Another attempt to fix the crash Created 4 years, 1 month 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 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 }; 90 };
91 91
92 void SoftwareBrowserCompositorOutputSurfaceTest::SetUp() { 92 void SoftwareBrowserCompositorOutputSurfaceTest::SetUp() {
93 bool enable_pixel_output = false; 93 bool enable_pixel_output = false;
94 ui::ContextFactory* context_factory = 94 ui::ContextFactory* context_factory =
95 ui::InitializeContextFactoryForTests(enable_pixel_output); 95 ui::InitializeContextFactoryForTests(enable_pixel_output);
96 96
97 compositor_.reset( 97 compositor_.reset(
98 new ui::Compositor(context_factory, message_loop_.task_runner().get())); 98 new ui::Compositor(context_factory, message_loop_.task_runner().get()));
99 compositor_->SetAcceleratedWidget(gfx::kNullAcceleratedWidget); 99 compositor_->SetAcceleratedWidget(gfx::kNullAcceleratedWidget);
100 compositor_->vsync_manager()->AddObserver(&begin_frame_source_);
100 } 101 }
101 102
102 void SoftwareBrowserCompositorOutputSurfaceTest::TearDown() { 103 void SoftwareBrowserCompositorOutputSurfaceTest::TearDown() {
103 output_surface_.reset(); 104 output_surface_.reset();
104 compositor_.reset(); 105 compositor_.reset();
105 ui::TerminateContextFactoryForTests(); 106 ui::TerminateContextFactoryForTests();
106 } 107 }
107 108
108 std::unique_ptr<content::BrowserCompositorOutputSurface> 109 std::unique_ptr<content::BrowserCompositorOutputSurface>
109 SoftwareBrowserCompositorOutputSurfaceTest::CreateSurface( 110 SoftwareBrowserCompositorOutputSurfaceTest::CreateSurface(
110 std::unique_ptr<cc::SoftwareOutputDevice> device) { 111 std::unique_ptr<cc::SoftwareOutputDevice> device) {
111 return base::MakeUnique<content::SoftwareBrowserCompositorOutputSurface>( 112 return base::MakeUnique<content::SoftwareBrowserCompositorOutputSurface>(
112 std::move(device), compositor_->vsync_manager(), &begin_frame_source_, 113 std::move(device), compositor_->vsync_manager(),
113 base::ThreadTaskRunnerHandle::Get()); 114 base::ThreadTaskRunnerHandle::Get());
114 } 115 }
115 116
116 TEST_F(SoftwareBrowserCompositorOutputSurfaceTest, NoVSyncProvider) { 117 TEST_F(SoftwareBrowserCompositorOutputSurfaceTest, NoVSyncProvider) {
117 cc::FakeOutputSurfaceClient output_surface_client; 118 cc::FakeOutputSurfaceClient output_surface_client;
118 std::unique_ptr<cc::SoftwareOutputDevice> software_device( 119 std::unique_ptr<cc::SoftwareOutputDevice> software_device(
119 new cc::SoftwareOutputDevice()); 120 new cc::SoftwareOutputDevice());
120 output_surface_ = CreateSurface(std::move(software_device)); 121 output_surface_ = CreateSurface(std::move(software_device));
121 output_surface_->BindToClient(&output_surface_client); 122 output_surface_->BindToClient(&output_surface_client);
122 123
123 output_surface_->SwapBuffers(cc::OutputSurfaceFrame()); 124 output_surface_->SwapBuffers(cc::OutputSurfaceFrame());
124 EXPECT_EQ(NULL, output_surface_->software_device()->GetVSyncProvider()); 125 EXPECT_EQ(NULL, output_surface_->software_device()->GetVSyncProvider());
125 } 126 }
126 127
127 TEST_F(SoftwareBrowserCompositorOutputSurfaceTest, VSyncProviderUpdates) { 128 TEST_F(SoftwareBrowserCompositorOutputSurfaceTest, VSyncProviderUpdates) {
128 cc::FakeOutputSurfaceClient output_surface_client; 129 cc::FakeOutputSurfaceClient output_surface_client;
129 std::unique_ptr<cc::SoftwareOutputDevice> software_device( 130 std::unique_ptr<cc::SoftwareOutputDevice> software_device(
130 new FakeSoftwareOutputDevice()); 131 new FakeSoftwareOutputDevice());
131 output_surface_ = CreateSurface(std::move(software_device)); 132 output_surface_ = CreateSurface(std::move(software_device));
132 output_surface_->BindToClient(&output_surface_client); 133 output_surface_->BindToClient(&output_surface_client);
133 134
134 FakeVSyncProvider* vsync_provider = static_cast<FakeVSyncProvider*>( 135 FakeVSyncProvider* vsync_provider = static_cast<FakeVSyncProvider*>(
135 output_surface_->software_device()->GetVSyncProvider()); 136 output_surface_->software_device()->GetVSyncProvider());
136 EXPECT_EQ(0, vsync_provider->call_count()); 137 EXPECT_EQ(0, vsync_provider->call_count());
137 138
138 output_surface_->SwapBuffers(cc::OutputSurfaceFrame()); 139 output_surface_->SwapBuffers(cc::OutputSurfaceFrame());
139 EXPECT_EQ(1, vsync_provider->call_count()); 140 EXPECT_EQ(1, vsync_provider->call_count());
140 } 141 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698