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

Unified Diff: cc/output/renderer_unittest.cc

Issue 1531403002: Revert "Delete CC." (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/output/renderer_settings.cc ('k') | cc/output/shader.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/output/renderer_unittest.cc
diff --git a/cc/output/renderer_unittest.cc b/cc/output/renderer_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..a8f09ff94748002f7a031a2f8d65ba21ccab88da
--- /dev/null
+++ b/cc/output/renderer_unittest.cc
@@ -0,0 +1,115 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "cc/output/delegating_renderer.h"
+#include "cc/output/gl_renderer.h"
+#include "cc/output/output_surface.h"
+#include "cc/test/fake_output_surface_client.h"
+#include "cc/test/fake_renderer_client.h"
+#include "cc/test/test_context_provider.h"
+#include "cc/test/test_web_graphics_context_3d.h"
+#include "testing/gmock/include/gmock/gmock.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace cc {
+namespace {
+
+class TestOutputSurface : public OutputSurface {
+ public:
+ explicit TestOutputSurface(
+ const scoped_refptr<ContextProvider>& context_provider);
+ ~TestOutputSurface() override;
+
+ // OutputSurface implementation
+ void SwapBuffers(CompositorFrame* frame) override;
+};
+
+TestOutputSurface::TestOutputSurface(
+ const scoped_refptr<ContextProvider>& context_provider)
+ : OutputSurface(context_provider) {
+}
+
+TestOutputSurface::~TestOutputSurface() {
+}
+
+void TestOutputSurface::SwapBuffers(CompositorFrame* frame) {
+ client_->DidSwapBuffers();
+ client_->DidSwapBuffersComplete();
+}
+
+class MockContextProvider : public TestContextProvider {
+ public:
+ explicit MockContextProvider(scoped_ptr<TestWebGraphicsContext3D> context)
+ : TestContextProvider(context.Pass()) {}
+ MOCK_METHOD0(DeleteCachedResources, void());
+
+ protected:
+ ~MockContextProvider() {}
+};
+
+template <class T>
+scoped_ptr<Renderer> CreateRenderer(RendererClient* client,
+ const RendererSettings* settings,
+ OutputSurface* output_surface,
+ ResourceProvider* resource_provider);
+
+template <>
+scoped_ptr<Renderer> CreateRenderer<DelegatingRenderer>(
+ RendererClient* client,
+ const RendererSettings* settings,
+ OutputSurface* output_surface,
+ ResourceProvider* resource_provider) {
+ return DelegatingRenderer::Create(
+ client, settings, output_surface, resource_provider);
+}
+
+template <>
+scoped_ptr<Renderer> CreateRenderer<GLRenderer>(
+ RendererClient* client,
+ const RendererSettings* settings,
+ OutputSurface* output_surface,
+ ResourceProvider* resource_provider) {
+ return GLRenderer::Create(
+ client, settings, output_surface, resource_provider, NULL, 0);
+}
+
+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_->BindToClient(&output_surface_client_);
+ resource_provider_ = ResourceProvider::Create(
+ output_surface_.get(), NULL, NULL, NULL, 0, false, 1);
+ renderer_ = CreateRenderer<T>(&renderer_client_,
+ &tree_settings_,
+ output_surface_.get(),
+ resource_provider_.get());
+ }
+
+ FakeRendererClient renderer_client_;
+ RendererSettings tree_settings_;
+ FakeOutputSurfaceClient output_surface_client_;
+ scoped_refptr<MockContextProvider> context_provider_;
+ scoped_ptr<OutputSurface> output_surface_;
+ scoped_ptr<ResourceProvider> resource_provider_;
+ scoped_ptr<Renderer> renderer_;
+};
+
+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_TRUE(this->renderer_->visible());
+ this->renderer_->SetVisible(false);
+ EXPECT_FALSE(this->renderer_->visible());
+}
+
+} // namespace
+} // namespace cc
« no previous file with comments | « cc/output/renderer_settings.cc ('k') | cc/output/shader.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698