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

Unified Diff: cc/output/renderer_unittest.cc

Issue 1985973002: Defer compositor context creation to the thread. Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: cc/output/renderer_unittest.cc
diff --git a/cc/output/renderer_unittest.cc b/cc/output/renderer_unittest.cc
index 67d13caf40a7f6af65e2308488ea2268fc4c30d1..a69f5d4feb7dd7f68cf8620ec64a7c2ce17d00b4 100644
--- a/cc/output/renderer_unittest.cc
+++ b/cc/output/renderer_unittest.cc
@@ -18,7 +18,8 @@ namespace {
class TestOutputSurface : public OutputSurface {
public:
- explicit TestOutputSurface(scoped_refptr<ContextProvider> context_provider);
+ explicit TestOutputSurface(
+ std::unique_ptr<ContextProvider::DeferredCreate> context_provider_create);
~TestOutputSurface() override;
// OutputSurface implementation
@@ -26,8 +27,8 @@ class TestOutputSurface : public OutputSurface {
};
TestOutputSurface::TestOutputSurface(
- scoped_refptr<ContextProvider> context_provider)
- : OutputSurface(std::move(context_provider)) {}
+ std::unique_ptr<ContextProvider::DeferredCreate> context_provider_create)
+ : OutputSurface(std::move(context_provider_create)) {}
TestOutputSurface::~TestOutputSurface() {
}
@@ -39,9 +40,23 @@ void TestOutputSurface::SwapBuffers(CompositorFrame* frame) {
class MockContextProvider : public TestContextProvider {
public:
- explicit MockContextProvider(
- std::unique_ptr<TestWebGraphicsContext3D> context)
- : TestContextProvider(std::move(context)) {}
+ MockContextProvider()
+ : TestContextProvider(TestWebGraphicsContext3D::Create()) {}
+
+ class DeferredCreate : public ContextProvider::DeferredCreate {
+ public:
+ explicit DeferredCreate(MockContextProvider** created)
+ : created_(created) {}
+ scoped_refptr<ContextProvider> CreateContext() override {
+ scoped_refptr<MockContextProvider> context(new MockContextProvider);
+ *created_ = context.get();
+ return context;
+ }
+
+ private:
+ MockContextProvider** created_;
+ };
+
MOCK_METHOD0(DeleteCachedResources, void());
protected:
@@ -78,9 +93,9 @@ template <typename T>
class RendererTest : public ::testing::Test {
protected:
virtual void SetUp() {
- context_provider_ =
- new MockContextProvider(TestWebGraphicsContext3D::Create());
- output_surface_.reset(new TestOutputSurface(context_provider_));
+ output_surface_.reset(new TestOutputSurface(
+ base::MakeUnique<MockContextProvider::DeferredCreate>(
+ &context_provider_)));
piman 2016/05/17 03:41:40 How about still creating the context provider here
danakj 2016/05/17 19:53:33 That is a pretty good idea. Done.
output_surface_->BindToClient(&output_surface_client_);
resource_provider_ =
FakeResourceProvider::Create(output_surface_.get(), nullptr);
@@ -93,7 +108,7 @@ class RendererTest : public ::testing::Test {
FakeRendererClient renderer_client_;
RendererSettings tree_settings_;
FakeOutputSurfaceClient output_surface_client_;
- scoped_refptr<MockContextProvider> context_provider_;
+ MockContextProvider* context_provider_;
std::unique_ptr<OutputSurface> output_surface_;
std::unique_ptr<ResourceProvider> resource_provider_;
std::unique_ptr<Renderer> renderer_;
@@ -103,8 +118,7 @@ typedef ::testing::Types<DelegatingRenderer, GLRenderer> RendererTypes;
TYPED_TEST_CASE(RendererTest, RendererTypes);
TYPED_TEST(RendererTest, ContextPurgedWhenRendererBecomesInvisible) {
- EXPECT_CALL(*(this->context_provider_.get()), DeleteCachedResources())
- .Times(1);
+ EXPECT_CALL(*this->context_provider_, DeleteCachedResources()).Times(1);
EXPECT_TRUE(this->renderer_->visible());
this->renderer_->SetVisible(false);

Powered by Google App Engine
This is Rietveld 408576698