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

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: Also export GLApiBase 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/memory/scoped_ptr.h"
7 #include "testing/gtest/include/gtest/gtest.h"
8 #include "ui/gl/gl_gl_api_implementation.h"
9 #include "ui/gl/gl_implementation.h"
10 #include "ui/gl/gl_switches.h"
11
12 namespace gfx {
13
14 class GLApiTest : public testing::Test {
15 public:
16 void SetUp() override {
17 fake_extension_string_ = "";
18 num_fake_extension_strings_ = 0;
19 fake_extension_strings_ = nullptr;
20
21 driver_.reset(new DriverGL());
22 api_.reset(new RealGLApi());
23
24 driver_->fn.glGetStringFn =
25 reinterpret_cast<glGetStringProc>(&FakeGetString);
26 driver_->fn.glGetStringiFn =
27 reinterpret_cast<glGetStringiProc>(&FakeGetStringi);
28 driver_->fn.glGetIntegervFn =
29 reinterpret_cast<glGetIntegervProc>(&FakeGetIntegervFn);
30 }
31
32 void TearDown() override {
33 api_.reset(nullptr);
34 driver_.reset(nullptr);
35
36 SetGLImplementation(kGLImplementationNone);
37 fake_extension_string_ = "";
38 num_fake_extension_strings_ = 0;
39 fake_extension_strings_ = nullptr;
40 }
41
42 void InitializeAPI(base::CommandLine* command_line) {
43 api_.reset(new RealGLApi());
44 if (command_line)
45 api_->InitializeWithCommandLine(driver_.get(), command_line);
46 else
47 api_->Initialize(driver_.get());
48 }
49
50 void SetFakeExtensionString(const char* fake_string) {
51 SetGLImplementation(kGLImplementationDesktopGL);
52 fake_extension_string_ = fake_string;
53 }
54
55 void SetFakeExtensionStrings(const char** fake_strings, uint32_t count) {
56 SetGLImplementation(kGLImplementationDesktopGLCoreProfile);
57 num_fake_extension_strings_ = count;
58 fake_extension_strings_ = fake_strings;
59 }
60
61 static const GLubyte* FakeGetString(GLenum name) {
62 return reinterpret_cast<const GLubyte*>(fake_extension_string_);
63 }
64
65 static void FakeGetIntegervFn(GLenum pname, GLint* params) {
66 *params = num_fake_extension_strings_;
67 }
68
69 static const GLubyte* FakeGetStringi(GLenum name, GLuint index) {
70 return (index < num_fake_extension_strings_) ?
71 reinterpret_cast<const GLubyte*>(fake_extension_strings_[index]) :
72 nullptr;
73 }
74
75 const char* GetExtensions() {
76 return reinterpret_cast<const char*>(api_->glGetStringFn(GL_EXTENSIONS));
77 }
78
79 uint32_t GetNumExtensions() {
80 GLint num_extensions = 0;
81 api_->glGetIntegervFn(GL_NUM_EXTENSIONS, &num_extensions);
82 return static_cast<uint32_t>(num_extensions);
83 }
84
85 const char* GetExtensioni(uint32_t index) {
86 return reinterpret_cast<const char*>(api_->glGetStringiFn(GL_EXTENSIONS,
87 index));
88 }
89
90 protected:
91 static const char* fake_extension_string_;
92
93 static uint32_t num_fake_extension_strings_;
94 static const char** fake_extension_strings_;
95
96 scoped_ptr<DriverGL> driver_;
97 scoped_ptr<RealGLApi> api_;
98 };
99
100 const char* GLApiTest::fake_extension_string_ = "";
101
102 uint32_t GLApiTest::num_fake_extension_strings_ = 0;
103 const char** GLApiTest::fake_extension_strings_ = nullptr;
104
105 TEST_F(GLApiTest, DisabledExtensionStringTest) {
106 static const char* kFakeExtensions = "GL_EXT_1 GL_EXT_2 GL_EXT_3 GL_EXT_4";
107 static const char* kFakeDisabledExtensions = "GL_EXT_1,GL_EXT_2,GL_FAKE";
108 static const char* kFilteredExtensions = "GL_EXT_3 GL_EXT_4";
109
110 SetFakeExtensionString(kFakeExtensions);
111 InitializeAPI(nullptr);
112
113 EXPECT_STREQ(kFakeExtensions, GetExtensions());
114
115 base::CommandLine command_line(base::CommandLine::NO_PROGRAM);
116 command_line.AppendSwitchASCII(switches::kDisableGLExtensions,
117 kFakeDisabledExtensions);
118 InitializeAPI(&command_line);
119
120 EXPECT_STREQ(kFilteredExtensions, GetExtensions());
121 }
122
123 TEST_F(GLApiTest, DisabledExtensionStringIndexTest) {
124 static const char* kFakeExtensions[] = {
125 "GL_EXT_1",
126 "GL_EXT_2",
127 "GL_EXT_3",
128 "GL_EXT_4"
129 };
130 static const char* kFakeDisabledExtensions = "GL_EXT_1,GL_EXT_2,GL_FAKE";
131 static const char* kFilteredExtensions[] = {
132 "GL_EXT_3",
133 "GL_EXT_4"
134 };
135
136 SetFakeExtensionStrings(kFakeExtensions, arraysize(kFakeExtensions));
137 InitializeAPI(nullptr);
138
139 EXPECT_EQ(arraysize(kFakeExtensions), GetNumExtensions());
140 for (uint32_t i = 0; i < arraysize(kFakeExtensions); ++i) {
141 EXPECT_STREQ(kFakeExtensions[i], GetExtensioni(i));
142 }
143
144 base::CommandLine command_line(base::CommandLine::NO_PROGRAM);
145 command_line.AppendSwitchASCII(switches::kDisableGLExtensions,
146 kFakeDisabledExtensions);
147 InitializeAPI(&command_line);
148
149 EXPECT_EQ(arraysize(kFilteredExtensions), GetNumExtensions());
150 for (uint32_t i = 0; i < arraysize(kFilteredExtensions); ++i) {
151 EXPECT_STREQ(kFilteredExtensions[i], GetExtensioni(i));
152 }
153 }
154
155 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698