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

Side by Side Diff: ui/gl/gl_api_unittest.cc

Issue 1110923003: Added switch to disable specified GL extensions. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added gn rule and reinterpret cast for function pointers Created 5 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "base/command_line.h"
6 #include "base/strings/string_split.h"
7 #include "base/strings/string_util.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9 #include "ui/gl/gl_gl_api_implementation.h"
10 #include "ui/gl/gl_surface.h"
11 #include "ui/gl/gl_switches.h"
12
13 namespace gfx {
14
15 class GLApiTest : public testing::Test {
16 public:
17 void SetUp() override {
18 g_fake_extension_string = "";
19 g_num_fake_extension_strings = 0;
20 g_fake_extension_strings = nullptr;
21
22 driver_.fn.glGetStringFn =
23 reinterpret_cast<glGetStringProc>(&FakeGetString);
24 driver_.fn.glGetStringiFn =
25 reinterpret_cast<glGetStringiProc>(&FakeGetStringi);
26 driver_.fn.glGetIntegervFn =
27 reinterpret_cast<glGetIntegervProc>(&FakeGetIntegervFn);
28 }
29
30 void TearDown() override {
31 SetGLImplementation(kGLImplementationNone);
32 g_fake_extension_string = "";
33 g_num_fake_extension_strings = 0;
34 g_fake_extension_strings = nullptr;
35 }
36
37 void SetFakeExtensionString(const char* fake_string) {
38 SetGLImplementation(kGLImplementationDesktopGL);
39 g_fake_extension_string = fake_string;
40 }
41
42 void SetFakeExtensionStrings(const char** fake_strings, uint32_t count) {
43 SetGLImplementation(kGLImplementationDesktopGLCoreProfile);
44 g_num_fake_extension_strings = count;
45 g_fake_extension_strings = fake_strings;
46 }
47
48 static const GLubyte* FakeGetString(GLenum name) {
49 return reinterpret_cast<const GLubyte*>(g_fake_extension_string);
50 }
51
52 static void FakeGetIntegervFn(GLenum pname, GLint* params) {
53 *params = g_num_fake_extension_strings;
54 }
55
56 static const GLubyte* FakeGetStringi(GLenum name, GLuint index) {
57 return (index < g_num_fake_extension_strings) ?
58 reinterpret_cast<const GLubyte*>(g_fake_extension_strings[index]) :
59 nullptr;
60 }
61
62 const char* GetExtensions() {
63 return reinterpret_cast<const char*>(api_.glGetStringFn(GL_EXTENSIONS));
64 }
65
66 uint32_t GetNumExtensions() {
67 GLint num_extensions = 0;
68 api_.glGetIntegervFn(GL_NUM_EXTENSIONS, &num_extensions);
69 return static_cast<uint32_t>(num_extensions);
70 }
71
72 const char* GetExtensioni(uint32_t index) {
73 return reinterpret_cast<const char*>(api_.glGetStringiFn(GL_EXTENSIONS,
74 index));
75 }
76
77 protected:
78 static const char* g_fake_extension_string;
79
80 static uint32_t g_num_fake_extension_strings;
81 static const char** g_fake_extension_strings;
82
83 DriverGL driver_;
84 RealGLApi api_;
85 };
86
87 const char* GLApiTest::g_fake_extension_string = "";
88
89 uint32_t GLApiTest::g_num_fake_extension_strings = 0;
90 const char** GLApiTest::g_fake_extension_strings = nullptr;
91
92 TEST_F(GLApiTest, DisabledExtensionStringTest) {
93 static const char* kFakeExtensions = "GL_EXT_1 GL_EXT_2 GL_EXT_3 GL_EXT_4";
94 static const char* kFakeDisabledExtensions = "GL_EXT_1,GL_EXT_2,GL_FAKE";
95 static const char* kFilteredExtensions = "GL_EXT_3 GL_EXT_4";
96
97 SetFakeExtensionString(kFakeExtensions);
98 api_.Initialize(&driver_);
99
100 EXPECT_STREQ(kFakeExtensions, GetExtensions());
101
102 base::CommandLine command_line(base::CommandLine::NO_PROGRAM);
103 command_line.AppendSwitchASCII(switches::kDisableGLExtensions,
104 kFakeDisabledExtensions);
105 api_.InitializeWithCommandLine(&driver_, &command_line);
106
107 EXPECT_STREQ(kFilteredExtensions, GetExtensions());
108 }
109
110 TEST_F(GLApiTest, DisabledExtensionStringIndexTest) {
111 static const char* kFakeExtensions[] = {
112 "GL_EXT_1",
113 "GL_EXT_2",
114 "GL_EXT_3",
115 "GL_EXT_4"
116 };
117 static const char* kFakeDisabledExtensions = "GL_EXT_1,GL_EXT_2,GL_FAKE";
118 static const char* kFilteredExtensions[] = {
119 "GL_EXT_3",
120 "GL_EXT_4"
121 };
122
123 SetFakeExtensionStrings(kFakeExtensions, arraysize(kFakeExtensions));
124 api_.Initialize(&driver_);
125
126 EXPECT_EQ(arraysize(kFakeExtensions), GetNumExtensions());
127 for (uint32_t i = 0; i < arraysize(kFakeExtensions); ++i) {
128 EXPECT_STREQ(kFakeExtensions[i], GetExtensioni(i));
129 }
130
131 base::CommandLine command_line(base::CommandLine::NO_PROGRAM);
132 command_line.AppendSwitchASCII(switches::kDisableGLExtensions,
133 kFakeDisabledExtensions);
134 api_.InitializeWithCommandLine(&driver_, &command_line);
135
136 EXPECT_EQ(arraysize(kFilteredExtensions), GetNumExtensions());
137 for (uint32_t i = 0; i < arraysize(kFilteredExtensions); ++i) {
138 EXPECT_STREQ(kFilteredExtensions[i], GetExtensioni(i));
139 }
140 }
141
142 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698