summaryrefslogtreecommitdiffstats
path: root/cc/output
diff options
context:
space:
mode:
authorshawnsingh@chromium.org <shawnsingh@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-16 20:06:20 +0000
committershawnsingh@chromium.org <shawnsingh@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-16 20:06:20 +0000
commit9d93213c27460f37df4862a045a71bd0382b9a0f (patch)
tree28dd77141bb281491c92a88dfb9d6689d1bca438 /cc/output
parent314ffea3329d2c9387fe0d9bf67d39f32f24510f (diff)
downloadchromium_src-9d93213c27460f37df4862a045a71bd0382b9a0f.zip
chromium_src-9d93213c27460f37df4862a045a71bd0382b9a0f.tar.gz
chromium_src-9d93213c27460f37df4862a045a71bd0382b9a0f.tar.bz2
Fix bad assumption in gl_renderer shader unit tests, and disable one test.
Disabling the test does not actually reduce test coverage, it was only passing because of the bas assumption in the first place. BUG=241318 Review URL: https://chromiumcodereview.appspot.com/15012028 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@200614 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc/output')
-rw-r--r--cc/output/gl_renderer_unittest.cc70
1 files changed, 68 insertions, 2 deletions
diff --git a/cc/output/gl_renderer_unittest.cc b/cc/output/gl_renderer_unittest.cc
index 5f6bb28..31f2603 100644
--- a/cc/output/gl_renderer_unittest.cc
+++ b/cc/output/gl_renderer_unittest.cc
@@ -4,6 +4,8 @@
#include "cc/output/gl_renderer.h"
+#include <set>
+
#include "cc/output/compositor_frame_metadata.h"
#include "cc/resources/prioritized_resource_manager.h"
#include "cc/resources/resource_provider.h"
@@ -269,10 +271,70 @@ class GLRendererTest : public testing::Test {
// declared above it.
} // namespace
+
+// Gives unique shader ids and unique program ids for tests that need them.
+class ShaderCreatorMockGraphicsContext : public TestWebGraphicsContext3D {
+ public:
+ ShaderCreatorMockGraphicsContext()
+ : next_program_id_number_(10000),
+ next_shader_id_number_(1) {}
+
+ bool hasShader(WebGLId shader) {
+ return shader_set_.find(shader) != shader_set_.end();
+ }
+
+ bool hasProgram(WebGLId program) {
+ return program_set_.find(program) != program_set_.end();
+ }
+
+ virtual WebGLId createProgram() {
+ unsigned program = next_program_id_number_;
+ program_set_.insert(program);
+ next_program_id_number_++;
+ return program;
+ }
+
+ virtual void deleteProgram(WebGLId program) {
+ ASSERT_TRUE(hasProgram(program));
+ program_set_.erase(program);
+ }
+
+ virtual void useProgram(WebGLId program) {
+ if (!program)
+ return;
+ ASSERT_TRUE(hasProgram(program));
+ }
+
+ virtual WebKit::WebGLId createShader(WebKit::WGC3Denum) {
+ unsigned shader = next_shader_id_number_;
+ shader_set_.insert(shader);
+ next_shader_id_number_++;
+ return shader;
+ }
+
+ virtual void deleteShader(WebKit::WebGLId shader) {
+ ASSERT_TRUE(hasShader(shader));
+ shader_set_.erase(shader);
+ }
+
+ virtual void attachShader(WebGLId program, WebGLId shader) {
+ ASSERT_TRUE(hasProgram(program));
+ ASSERT_TRUE(hasShader(shader));
+ }
+
+ protected:
+ unsigned next_program_id_number_;
+ unsigned next_shader_id_number_;
+ std::set<unsigned> program_set_;
+ std::set<unsigned> shader_set_;
+};
+
class GLRendererShaderTest : public testing::Test {
protected:
GLRendererShaderTest()
- : output_surface_(FakeOutputSurface::Create3d()),
+ : output_surface_(FakeOutputSurface::Create3d(
+ scoped_ptr<WebKit::WebGraphicsContext3D>(
+ new ShaderCreatorMockGraphicsContext()))),
resource_provider_(ResourceProvider::Create(output_surface_.get(), 0)),
renderer_(GLRenderer::Create(&mock_client_,
output_surface_.get(),
@@ -1023,7 +1085,11 @@ TEST(GLRendererTest2, ScissorTestWhenClearing) {
renderer.DrawFrame(mock_client.render_passes_in_draw_order());
}
-TEST_F(GLRendererShaderTest, DrawRenderPassQuadShaderPermutations) {
+// This test was never actually working as intended. Before adding
+// ShaderCreatorMockGraphicsContext, all shader programs received the same
+// program identifier from the TestWebGraphicsContext3D, so it always passed
+// when checking which shader was used.
+TEST_F(GLRendererShaderTest, DISABLED_DrawRenderPassQuadShaderPermutations) {
gfx::Rect viewport_rect(mock_client_.DeviceViewportSize());
ScopedPtrVector<RenderPass>* render_passes =
mock_client_.render_passes_in_draw_order();