Chromium Code Reviews| Index: ui/gl/gl_api_unittest.cc |
| diff --git a/ui/gl/gl_api_unittest.cc b/ui/gl/gl_api_unittest.cc |
| index 9b15bec443e97ea48fdb27f19ac16f14d52df41e..40f8f58da6b8e885ea5d19ed37a157818831413a 100644 |
| --- a/ui/gl/gl_api_unittest.cc |
| +++ b/ui/gl/gl_api_unittest.cc |
| @@ -5,12 +5,34 @@ |
| #include "base/command_line.h" |
| #include "base/memory/scoped_ptr.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| +#include "ui/gl/gl_context.h" |
| #include "ui/gl/gl_gl_api_implementation.h" |
| #include "ui/gl/gl_implementation.h" |
| #include "ui/gl/gl_switches.h" |
| +#include "ui/gl/gpu_timing.h" |
| namespace gfx { |
| +class GLContextFake : public GLContext { |
| + public: |
| + bool Initialize(GLSurface* compatible_surface, |
| + GpuPreference gpu_preference) override { |
| + return true; |
| + } |
| + void Destroy() override {} |
| + bool MakeCurrent(GLSurface* surface) override { return true; } |
| + void ReleaseCurrent(GLSurface* surface) override {} |
| + bool IsCurrent(GLSurface* surface) override { return true; } |
| + void* GetHandle() override { return NULL; } |
| + scoped_refptr<gfx::GPUTimingClient> CreateGPUTimingClient() override { |
| + return NULL; |
| + } |
| + void OnSetSwapInterval(int interval) override {} |
| + GLContextFake() : GLContext(NULL) {} |
| + protected: |
| + ~GLContextFake() override {} |
| +}; |
| + |
| class GLApiTest : public testing::Test { |
| public: |
| void SetUp() override { |
| @@ -18,17 +40,25 @@ class GLApiTest : public testing::Test { |
| num_fake_extension_strings_ = 0; |
| fake_extension_strings_ = nullptr; |
| - driver_.reset(new DriverGL()); |
| + g_current_gl_context_tls = new base::ThreadLocalPointer<GLApi>; |
| api_.reset(new RealGLApi()); |
| - driver_->fn.glGetStringFn = &FakeGetString; |
| - driver_->fn.glGetStringiFn = &FakeGetStringi; |
| - driver_->fn.glGetIntegervFn = &FakeGetIntegervFn; |
| + g_driver_gl.ClearBindings(); |
| + g_driver_gl.fn.glGetStringFn = &FakeGetString; |
| + g_driver_gl.fn.glGetStringiFn = &FakeGetStringi; |
| + g_driver_gl.fn.glGetIntegervFn = &FakeGetIntegervFn; |
| + |
| + SetGLGetProcAddressProc( |
| + static_cast<GLGetProcAddressProc>(&FakeGLGetProcAddress)); |
| + } |
| + |
| + static void* GL_BINDING_CALL FakeGLGetProcAddress(const char *proc) { |
| + return reinterpret_cast<void*>(0x1); |
| } |
| void TearDown() override { |
| api_.reset(nullptr); |
| - driver_.reset(nullptr); |
| + delete g_current_gl_context_tls; |
| SetGLImplementation(kGLImplementationNone); |
| fake_extension_string_ = ""; |
| @@ -38,10 +68,15 @@ class GLApiTest : public testing::Test { |
| void InitializeAPI(base::CommandLine* command_line) { |
| api_.reset(new RealGLApi()); |
| + g_current_gl_context_tls->Set(api_.get()); |
| + |
| + fake_context_ = new GLContextFake(); |
| if (command_line) |
| - api_->InitializeWithCommandLine(driver_.get(), command_line); |
| + api_->InitializeWithCommandLine(&g_driver_gl, command_line); |
| else |
| - api_->Initialize(driver_.get()); |
| + api_->Initialize(&g_driver_gl); |
| + api_->InitializeFilteredExtensions(); |
|
no sievers
2015/07/23 23:45:57
Doesn't InitializeWithContext() call this?
Tobias Sargeant
2015/07/24 09:29:14
Not any more. It's safe to remove InitializeWithCo
|
| + g_driver_gl.InitializeCustomDynamicBindings(fake_context_.get()); |
| api_->InitializeWithContext(); |
| } |
| @@ -92,6 +127,7 @@ class GLApiTest : public testing::Test { |
| static uint32_t num_fake_extension_strings_; |
| static const char** fake_extension_strings_; |
| + scoped_refptr<GLContext> fake_context_; |
| scoped_ptr<DriverGL> driver_; |
| scoped_ptr<RealGLApi> api_; |
| }; |
| @@ -119,6 +155,25 @@ TEST_F(GLApiTest, DisabledExtensionStringTest) { |
| EXPECT_STREQ(kFilteredExtensions, GetExtensions()); |
| } |
| +TEST_F(GLApiTest, DisabledExtensionBitTest) { |
| + static const char* kFakeExtensions[] = { |
| + "GL_ARB_timer_query" |
| + }; |
| + static const char* kFakeDisabledExtensions = "GL_ARB_timer_query"; |
| + |
| + SetFakeExtensionStrings(kFakeExtensions, arraysize(kFakeExtensions)); |
| + InitializeAPI(nullptr); |
| + |
| + EXPECT_TRUE(g_driver_gl.ext.b_GL_ARB_timer_query); |
| + |
| + base::CommandLine command_line(base::CommandLine::NO_PROGRAM); |
| + command_line.AppendSwitchASCII(switches::kDisableGLExtensions, |
| + kFakeDisabledExtensions); |
| + InitializeAPI(&command_line); |
| + |
| + EXPECT_FALSE(g_driver_gl.ext.b_GL_ARB_timer_query); |
| +} |
| + |
| TEST_F(GLApiTest, DisabledExtensionStringIndexTest) { |
| static const char* kFakeExtensions[] = { |
| "GL_EXT_1", |