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

Side by Side Diff: content/browser/gpu/gpu_data_manager_impl_unittest.cc

Issue 14794006: Refactor GpuDataManagerImpl to make it thread-safe, now and forever. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: better diff Created 7 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/command_line.h" 5 #include "base/command_line.h"
6 #include "base/message_loop.h" 6 #include "base/message_loop.h"
7 #include "base/run_loop.h" 7 #include "base/run_loop.h"
8 #include "base/time.h" 8 #include "base/time.h"
9 #include "content/browser/gpu/gpu_data_manager_impl.h" 9 #include "content/browser/gpu/gpu_data_manager_impl_private.h"
10 #include "content/public/browser/gpu_data_manager_observer.h" 10 #include "content/public/browser/gpu_data_manager_observer.h"
11 #include "content/public/common/gpu_feature_type.h" 11 #include "content/public/common/gpu_feature_type.h"
12 #include "content/public/common/gpu_info.h" 12 #include "content/public/common/gpu_info.h"
13 #include "googleurl/src/gurl.h" 13 #include "googleurl/src/gurl.h"
14 #include "gpu/command_buffer/service/gpu_switches.h" 14 #include "gpu/command_buffer/service/gpu_switches.h"
15 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
16 16
17 #define LONG_STRING_CONST(...) #__VA_ARGS__ 17 #define LONG_STRING_CONST(...) #__VA_ARGS__
18 18
19 namespace content { 19 namespace content {
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 static GURL GetDomain1ForTesting() { 53 static GURL GetDomain1ForTesting() {
54 return GURL("http://foo.com/"); 54 return GURL("http://foo.com/");
55 } 55 }
56 56
57 static GURL GetDomain2ForTesting() { 57 static GURL GetDomain2ForTesting() {
58 return GURL("http://bar.com/"); 58 return GURL("http://bar.com/");
59 } 59 }
60 60
61 } // namespace anonymous 61 } // namespace anonymous
62 62
63 class GpuDataManagerImplTest : public testing::Test { 63 class GpuDataManagerImplTest : public testing::Test {
Ken Russell (switch to Gerrit) 2013/05/09 20:21:16 This file should be renamed to gpu_data_manager_im
Zhenyao Mo 2013/05/09 23:35:12 Done.
64 public: 64 public:
65 GpuDataManagerImplTest() { } 65 GpuDataManagerImplTest() { }
66 66
67 virtual ~GpuDataManagerImplTest() { } 67 virtual ~GpuDataManagerImplTest() { }
68 68
69 protected: 69 protected:
70 // scoped_ptr doesn't work with GpuDataManagerImpl because its
71 // destructor is private. GpuDataManagerImplTest is however a friend
72 // so we can make a little helper class here.
73 class ScopedGpuDataManagerImpl {
74 public:
75 ScopedGpuDataManagerImpl() : impl_(new GpuDataManagerImpl()) {}
76 ~ScopedGpuDataManagerImpl() { delete impl_; }
77
78 GpuDataManagerImpl* get() const { return impl_; }
79 GpuDataManagerImpl* operator->() const { return impl_; }
80 // Small violation of C++ style guide to avoid polluting several
81 // tests with get() calls.
82 operator GpuDataManagerImpl*() { return impl_; }
83
84 private:
85 GpuDataManagerImpl* impl_;
86 DISALLOW_COPY_AND_ASSIGN(ScopedGpuDataManagerImpl);
87 };
88
89 virtual void SetUp() { 70 virtual void SetUp() {
90 } 71 }
91 72
92 virtual void TearDown() { 73 virtual void TearDown() {
93 } 74 }
94 75
95 base::Time JustBeforeExpiration(GpuDataManagerImpl* manager); 76 base::Time JustBeforeExpiration(const GpuDataManagerImplPrivate& manager);
96 base::Time JustAfterExpiration(GpuDataManagerImpl* manager); 77 base::Time JustAfterExpiration(const GpuDataManagerImplPrivate& manager);
97 void TestBlockingDomainFrom3DAPIs( 78 void TestBlockingDomainFrom3DAPIs(
98 GpuDataManagerImpl::DomainGuilt guilt_level); 79 GpuDataManagerImpl::DomainGuilt guilt_level);
99 void TestUnblockingDomainFrom3DAPIs( 80 void TestUnblockingDomainFrom3DAPIs(
100 GpuDataManagerImpl::DomainGuilt guilt_level); 81 GpuDataManagerImpl::DomainGuilt guilt_level);
101 82
102 base::MessageLoop message_loop_; 83 base::MessageLoop message_loop_;
103 }; 84 };
104 85
105 // We use new method instead of GetInstance() method because we want 86 // We use new method instead of GetInstance() method because we want
106 // each test to be independent of each other. 87 // each test to be independent of each other.
107 88
108 TEST_F(GpuDataManagerImplTest, GpuSideBlacklisting) { 89 TEST_F(GpuDataManagerImplTest, GpuSideBlacklisting) {
109 // If a feature is allowed in preliminary step (browser side), but 90 // If a feature is allowed in preliminary step (browser side), but
110 // disabled when GPU process launches and collects full GPU info, 91 // disabled when GPU process launches and collects full GPU info,
111 // it's too late to let renderer know, so we basically block all GPU 92 // it's too late to let renderer know, so we basically block all GPU
112 // access, to be on the safe side. 93 // access, to be on the safe side.
113 ScopedGpuDataManagerImpl manager; 94 GpuDataManagerImplPrivate manager;
114 ASSERT_TRUE(manager.get()); 95 EXPECT_EQ(0u, manager.GetBlacklistedFeatureCount());
115 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount());
116 std::string reason; 96 std::string reason;
117 EXPECT_TRUE(manager->GpuAccessAllowed(&reason)); 97 EXPECT_TRUE(manager.GpuAccessAllowed(&reason));
118 EXPECT_TRUE(reason.empty()); 98 EXPECT_TRUE(reason.empty());
119 99
120 const std::string blacklist_json = LONG_STRING_CONST( 100 const std::string blacklist_json = LONG_STRING_CONST(
121 { 101 {
122 "name": "gpu blacklist", 102 "name": "gpu blacklist",
123 "version": "0.1", 103 "version": "0.1",
124 "entries": [ 104 "entries": [
125 { 105 {
126 "id": 1, 106 "id": 1,
127 "features": [ 107 "features": [
(...skipping 10 matching lines...) Expand all
138 "accelerated_2d_canvas" 118 "accelerated_2d_canvas"
139 ] 119 ]
140 } 120 }
141 ] 121 ]
142 } 122 }
143 ); 123 );
144 124
145 GPUInfo gpu_info; 125 GPUInfo gpu_info;
146 gpu_info.gpu.vendor_id = 0x10de; 126 gpu_info.gpu.vendor_id = 0x10de;
147 gpu_info.gpu.device_id = 0x0640; 127 gpu_info.gpu.device_id = 0x0640;
148 manager->InitializeForTesting(blacklist_json, gpu_info); 128 manager.InitializeForTesting(blacklist_json, gpu_info);
149 129
150 EXPECT_TRUE(manager->GpuAccessAllowed(&reason)); 130 EXPECT_TRUE(manager.GpuAccessAllowed(&reason));
151 EXPECT_TRUE(reason.empty()); 131 EXPECT_TRUE(reason.empty());
152 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount()); 132 EXPECT_EQ(1u, manager.GetBlacklistedFeatureCount());
153 EXPECT_TRUE(manager->IsFeatureBlacklisted(GPU_FEATURE_TYPE_WEBGL)); 133 EXPECT_TRUE(manager.IsFeatureBlacklisted(GPU_FEATURE_TYPE_WEBGL));
154 134
155 gpu_info.gl_vendor = "NVIDIA"; 135 gpu_info.gl_vendor = "NVIDIA";
156 gpu_info.gl_renderer = "NVIDIA GeForce GT 120"; 136 gpu_info.gl_renderer = "NVIDIA GeForce GT 120";
157 manager->UpdateGpuInfo(gpu_info); 137 manager.UpdateGpuInfo(gpu_info);
158 EXPECT_FALSE(manager->GpuAccessAllowed(&reason)); 138 EXPECT_FALSE(manager.GpuAccessAllowed(&reason));
159 EXPECT_FALSE(reason.empty()); 139 EXPECT_FALSE(reason.empty());
160 EXPECT_EQ(2u, manager->GetBlacklistedFeatureCount()); 140 EXPECT_EQ(2u, manager.GetBlacklistedFeatureCount());
161 EXPECT_TRUE(manager->IsFeatureBlacklisted(GPU_FEATURE_TYPE_WEBGL)); 141 EXPECT_TRUE(manager.IsFeatureBlacklisted(GPU_FEATURE_TYPE_WEBGL));
162 EXPECT_TRUE(manager->IsFeatureBlacklisted( 142 EXPECT_TRUE(manager.IsFeatureBlacklisted(
163 GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS)); 143 GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS));
164 } 144 }
165 145
166 TEST_F(GpuDataManagerImplTest, GpuSideExceptions) { 146 TEST_F(GpuDataManagerImplTest, GpuSideExceptions) {
167 ScopedGpuDataManagerImpl manager; 147 GpuDataManagerImplPrivate manager;
168 ASSERT_TRUE(manager.get()); 148 EXPECT_EQ(0u, manager.GetBlacklistedFeatureCount());
169 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount()); 149 EXPECT_TRUE(manager.GpuAccessAllowed(NULL));
170 EXPECT_TRUE(manager->GpuAccessAllowed(NULL));
171 150
172 const std::string blacklist_json = LONG_STRING_CONST( 151 const std::string blacklist_json = LONG_STRING_CONST(
173 { 152 {
174 "name": "gpu blacklist", 153 "name": "gpu blacklist",
175 "version": "0.1", 154 "version": "0.1",
176 "entries": [ 155 "entries": [
177 { 156 {
178 "id": 1, 157 "id": 1,
179 "exceptions": [ 158 "exceptions": [
180 { 159 {
181 "gl_renderer": { 160 "gl_renderer": {
182 "op": "contains", 161 "op": "contains",
183 "value": "GeForce" 162 "value": "GeForce"
184 } 163 }
185 } 164 }
186 ], 165 ],
187 "features": [ 166 "features": [
188 "webgl" 167 "webgl"
189 ] 168 ]
190 } 169 }
191 ] 170 ]
192 } 171 }
193 ); 172 );
194 GPUInfo gpu_info; 173 GPUInfo gpu_info;
195 gpu_info.gpu.vendor_id = 0x10de; 174 gpu_info.gpu.vendor_id = 0x10de;
196 gpu_info.gpu.device_id = 0x0640; 175 gpu_info.gpu.device_id = 0x0640;
197 manager->InitializeForTesting(blacklist_json, gpu_info); 176 manager.InitializeForTesting(blacklist_json, gpu_info);
198 177
199 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); 178 EXPECT_TRUE(manager.GpuAccessAllowed(NULL));
200 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount()); 179 EXPECT_EQ(0u, manager.GetBlacklistedFeatureCount());
201 180
202 // Now assume gpu process launches and full GPU info is collected. 181 // Now assume gpu process launches and full GPU info is collected.
203 gpu_info.gl_renderer = "NVIDIA GeForce GT 120"; 182 gpu_info.gl_renderer = "NVIDIA GeForce GT 120";
204 manager->UpdateGpuInfo(gpu_info); 183 manager.UpdateGpuInfo(gpu_info);
205 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); 184 EXPECT_TRUE(manager.GpuAccessAllowed(NULL));
206 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount()); 185 EXPECT_EQ(0u, manager.GetBlacklistedFeatureCount());
207 } 186 }
208 187
209 TEST_F(GpuDataManagerImplTest, DisableHardwareAcceleration) { 188 TEST_F(GpuDataManagerImplTest, DisableHardwareAcceleration) {
210 ScopedGpuDataManagerImpl manager; 189 GpuDataManagerImplPrivate manager;
211 ASSERT_TRUE(manager.get()); 190 EXPECT_EQ(0u, manager.GetBlacklistedFeatureCount());
212 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount());
213 std::string reason; 191 std::string reason;
214 EXPECT_TRUE(manager->GpuAccessAllowed(&reason)); 192 EXPECT_TRUE(manager.GpuAccessAllowed(&reason));
215 EXPECT_TRUE(reason.empty()); 193 EXPECT_TRUE(reason.empty());
216 194
217 manager->DisableHardwareAcceleration(); 195 manager.DisableHardwareAcceleration();
218 EXPECT_FALSE(manager->GpuAccessAllowed(&reason)); 196 EXPECT_FALSE(manager.GpuAccessAllowed(&reason));
219 EXPECT_FALSE(reason.empty()); 197 EXPECT_FALSE(reason.empty());
220 EXPECT_EQ(static_cast<size_t>(NUMBER_OF_GPU_FEATURE_TYPES), 198 EXPECT_EQ(static_cast<size_t>(NUMBER_OF_GPU_FEATURE_TYPES),
221 manager->GetBlacklistedFeatureCount()); 199 manager.GetBlacklistedFeatureCount());
222 } 200 }
223 201
224 TEST_F(GpuDataManagerImplTest, SwiftShaderRendering) { 202 TEST_F(GpuDataManagerImplTest, SwiftShaderRendering) {
225 // Blacklist, then register SwiftShader. 203 // Blacklist, then register SwiftShader.
226 ScopedGpuDataManagerImpl manager; 204 GpuDataManagerImplPrivate manager;
227 ASSERT_TRUE(manager.get()); 205 EXPECT_EQ(0u, manager.GetBlacklistedFeatureCount());
228 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount()); 206 EXPECT_TRUE(manager.GpuAccessAllowed(NULL));
229 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); 207 EXPECT_FALSE(manager.ShouldUseSwiftShader());
230 EXPECT_FALSE(manager->ShouldUseSwiftShader());
231 208
232 manager->DisableHardwareAcceleration(); 209 manager.DisableHardwareAcceleration();
233 EXPECT_FALSE(manager->GpuAccessAllowed(NULL)); 210 EXPECT_FALSE(manager.GpuAccessAllowed(NULL));
234 EXPECT_FALSE(manager->ShouldUseSwiftShader()); 211 EXPECT_FALSE(manager.ShouldUseSwiftShader());
235 212
236 // If SwiftShader is enabled, even if we blacklist GPU, 213 // If SwiftShader is enabled, even if we blacklist GPU,
237 // GPU process is still allowed. 214 // GPU process is still allowed.
238 const base::FilePath test_path(FILE_PATH_LITERAL("AnyPath")); 215 const base::FilePath test_path(FILE_PATH_LITERAL("AnyPath"));
239 manager->RegisterSwiftShaderPath(test_path); 216 manager.RegisterSwiftShaderPath(test_path);
240 EXPECT_TRUE(manager->ShouldUseSwiftShader()); 217 EXPECT_TRUE(manager.ShouldUseSwiftShader());
241 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); 218 EXPECT_TRUE(manager.GpuAccessAllowed(NULL));
242 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount()); 219 EXPECT_EQ(1u, manager.GetBlacklistedFeatureCount());
243 EXPECT_TRUE( 220 EXPECT_TRUE(
244 manager->IsFeatureBlacklisted(GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS)); 221 manager.IsFeatureBlacklisted(GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS));
245 } 222 }
246 223
247 TEST_F(GpuDataManagerImplTest, SwiftShaderRendering2) { 224 TEST_F(GpuDataManagerImplTest, SwiftShaderRendering2) {
248 // Register SwiftShader, then blacklist. 225 // Register SwiftShader, then blacklist.
249 ScopedGpuDataManagerImpl manager; 226 GpuDataManagerImplPrivate manager;
250 ASSERT_TRUE(manager.get()); 227 EXPECT_EQ(0u, manager.GetBlacklistedFeatureCount());
251 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount()); 228 EXPECT_TRUE(manager.GpuAccessAllowed(NULL));
252 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); 229 EXPECT_FALSE(manager.ShouldUseSwiftShader());
253 EXPECT_FALSE(manager->ShouldUseSwiftShader());
254 230
255 const base::FilePath test_path(FILE_PATH_LITERAL("AnyPath")); 231 const base::FilePath test_path(FILE_PATH_LITERAL("AnyPath"));
256 manager->RegisterSwiftShaderPath(test_path); 232 manager.RegisterSwiftShaderPath(test_path);
257 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount()); 233 EXPECT_EQ(0u, manager.GetBlacklistedFeatureCount());
258 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); 234 EXPECT_TRUE(manager.GpuAccessAllowed(NULL));
259 EXPECT_FALSE(manager->ShouldUseSwiftShader()); 235 EXPECT_FALSE(manager.ShouldUseSwiftShader());
260 236
261 manager->DisableHardwareAcceleration(); 237 manager.DisableHardwareAcceleration();
262 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); 238 EXPECT_TRUE(manager.GpuAccessAllowed(NULL));
263 EXPECT_TRUE(manager->ShouldUseSwiftShader()); 239 EXPECT_TRUE(manager.ShouldUseSwiftShader());
264 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount()); 240 EXPECT_EQ(1u, manager.GetBlacklistedFeatureCount());
265 EXPECT_TRUE( 241 EXPECT_TRUE(
266 manager->IsFeatureBlacklisted(GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS)); 242 manager.IsFeatureBlacklisted(GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS));
267 } 243 }
268 244
269 TEST_F(GpuDataManagerImplTest, GpuInfoUpdate) { 245 TEST_F(GpuDataManagerImplTest, GpuInfoUpdate) {
270 ScopedGpuDataManagerImpl manager; 246 GpuDataManagerImplPrivate manager;
271 ASSERT_TRUE(manager.get());
272 247
273 TestObserver observer; 248 TestObserver observer;
274 manager->AddObserver(&observer); 249 manager.AddObserver(&observer);
275 250
276 { 251 {
277 base::RunLoop run_loop; 252 base::RunLoop run_loop;
278 run_loop.RunUntilIdle(); 253 run_loop.RunUntilIdle();
279 } 254 }
280 EXPECT_FALSE(observer.gpu_info_updated()); 255 EXPECT_FALSE(observer.gpu_info_updated());
281 256
282 GPUInfo gpu_info; 257 GPUInfo gpu_info;
283 manager->UpdateGpuInfo(gpu_info); 258 manager.UpdateGpuInfo(gpu_info);
284 { 259 {
285 base::RunLoop run_loop; 260 base::RunLoop run_loop;
286 run_loop.RunUntilIdle(); 261 run_loop.RunUntilIdle();
287 } 262 }
288 EXPECT_TRUE(observer.gpu_info_updated()); 263 EXPECT_TRUE(observer.gpu_info_updated());
289 } 264 }
290 265
291 TEST_F(GpuDataManagerImplTest, NoGpuInfoUpdateWithSwiftShader) { 266 TEST_F(GpuDataManagerImplTest, NoGpuInfoUpdateWithSwiftShader) {
292 ScopedGpuDataManagerImpl manager; 267 GpuDataManagerImplPrivate manager;
293 ASSERT_TRUE(manager.get());
294 268
295 manager->DisableHardwareAcceleration(); 269 manager.DisableHardwareAcceleration();
296 const base::FilePath test_path(FILE_PATH_LITERAL("AnyPath")); 270 const base::FilePath test_path(FILE_PATH_LITERAL("AnyPath"));
297 manager->RegisterSwiftShaderPath(test_path); 271 manager.RegisterSwiftShaderPath(test_path);
298 EXPECT_TRUE(manager->ShouldUseSwiftShader()); 272 EXPECT_TRUE(manager.ShouldUseSwiftShader());
299 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); 273 EXPECT_TRUE(manager.GpuAccessAllowed(NULL));
300 274
301 { 275 {
302 base::RunLoop run_loop; 276 base::RunLoop run_loop;
303 run_loop.RunUntilIdle(); 277 run_loop.RunUntilIdle();
304 } 278 }
305 279
306 TestObserver observer; 280 TestObserver observer;
307 manager->AddObserver(&observer); 281 manager.AddObserver(&observer);
308 { 282 {
309 base::RunLoop run_loop; 283 base::RunLoop run_loop;
310 run_loop.RunUntilIdle(); 284 run_loop.RunUntilIdle();
311 } 285 }
312 EXPECT_FALSE(observer.gpu_info_updated()); 286 EXPECT_FALSE(observer.gpu_info_updated());
313 287
314 GPUInfo gpu_info; 288 GPUInfo gpu_info;
315 manager->UpdateGpuInfo(gpu_info); 289 manager.UpdateGpuInfo(gpu_info);
316 { 290 {
317 base::RunLoop run_loop; 291 base::RunLoop run_loop;
318 run_loop.RunUntilIdle(); 292 run_loop.RunUntilIdle();
319 } 293 }
320 EXPECT_FALSE(observer.gpu_info_updated()); 294 EXPECT_FALSE(observer.gpu_info_updated());
321 } 295 }
322 296
323 TEST_F(GpuDataManagerImplTest, GPUVideoMemoryUsageStatsUpdate) { 297 TEST_F(GpuDataManagerImplTest, GPUVideoMemoryUsageStatsUpdate) {
324 ScopedGpuDataManagerImpl manager; 298 GpuDataManagerImplPrivate manager;
325 ASSERT_TRUE(manager.get());
326 299
327 TestObserver observer; 300 TestObserver observer;
328 manager->AddObserver(&observer); 301 manager.AddObserver(&observer);
329 302
330 { 303 {
331 base::RunLoop run_loop; 304 base::RunLoop run_loop;
332 run_loop.RunUntilIdle(); 305 run_loop.RunUntilIdle();
333 } 306 }
334 EXPECT_FALSE(observer.video_memory_usage_stats_updated()); 307 EXPECT_FALSE(observer.video_memory_usage_stats_updated());
335 308
336 GPUVideoMemoryUsageStats vram_stats; 309 GPUVideoMemoryUsageStats vram_stats;
337 manager->UpdateVideoMemoryUsageStats(vram_stats); 310 manager.UpdateVideoMemoryUsageStats(vram_stats);
338 { 311 {
339 base::RunLoop run_loop; 312 base::RunLoop run_loop;
340 run_loop.RunUntilIdle(); 313 run_loop.RunUntilIdle();
341 } 314 }
342 EXPECT_TRUE(observer.video_memory_usage_stats_updated()); 315 EXPECT_TRUE(observer.video_memory_usage_stats_updated());
343 } 316 }
344 317
345 base::Time GpuDataManagerImplTest::JustBeforeExpiration( 318 base::Time GpuDataManagerImplTest::JustBeforeExpiration(
346 GpuDataManagerImpl* manager) { 319 const GpuDataManagerImplPrivate& manager) {
347 return GetTimeForTesting() + base::TimeDelta::FromMilliseconds( 320 return GetTimeForTesting() + base::TimeDelta::FromMilliseconds(
348 manager->GetBlockAllDomainsDurationInMs()) - 321 manager.GetBlockAllDomainsDurationInMs()) -
349 base::TimeDelta::FromMilliseconds(3); 322 base::TimeDelta::FromMilliseconds(3);
350 } 323 }
351 324
352 base::Time GpuDataManagerImplTest::JustAfterExpiration( 325 base::Time GpuDataManagerImplTest::JustAfterExpiration(
353 GpuDataManagerImpl* manager) { 326 const GpuDataManagerImplPrivate& manager) {
354 return GetTimeForTesting() + base::TimeDelta::FromMilliseconds( 327 return GetTimeForTesting() + base::TimeDelta::FromMilliseconds(
355 manager->GetBlockAllDomainsDurationInMs()) + 328 manager.GetBlockAllDomainsDurationInMs()) +
356 base::TimeDelta::FromMilliseconds(3); 329 base::TimeDelta::FromMilliseconds(3);
357 } 330 }
358 331
359 void GpuDataManagerImplTest::TestBlockingDomainFrom3DAPIs( 332 void GpuDataManagerImplTest::TestBlockingDomainFrom3DAPIs(
360 GpuDataManagerImpl::DomainGuilt guilt_level) { 333 GpuDataManagerImpl::DomainGuilt guilt_level) {
361 ScopedGpuDataManagerImpl manager; 334 GpuDataManagerImplPrivate manager;
362 ASSERT_TRUE(manager.get());
363 335
364 manager->BlockDomainFrom3DAPIsAtTime(GetDomain1ForTesting(), 336 manager.BlockDomainFrom3DAPIsAtTime(GetDomain1ForTesting(),
365 guilt_level, 337 guilt_level,
366 GetTimeForTesting()); 338 GetTimeForTesting());
367 339
368 // This domain should be blocked no matter what. 340 // This domain should be blocked no matter what.
369 EXPECT_EQ(GpuDataManagerImpl::DOMAIN_BLOCK_STATUS_BLOCKED, 341 EXPECT_EQ(GpuDataManagerImpl::DOMAIN_BLOCK_STATUS_BLOCKED,
370 manager->Are3DAPIsBlockedAtTime(GetDomain1ForTesting(), 342 manager.Are3DAPIsBlockedAtTime(GetDomain1ForTesting(),
371 GetTimeForTesting())); 343 GetTimeForTesting()));
372 EXPECT_EQ(GpuDataManagerImpl::DOMAIN_BLOCK_STATUS_BLOCKED, 344 EXPECT_EQ(GpuDataManagerImpl::DOMAIN_BLOCK_STATUS_BLOCKED,
373 manager->Are3DAPIsBlockedAtTime(GetDomain1ForTesting(), 345 manager.Are3DAPIsBlockedAtTime(
374 JustBeforeExpiration(manager))); 346 GetDomain1ForTesting(), JustBeforeExpiration(manager)));
375 EXPECT_EQ(GpuDataManagerImpl::DOMAIN_BLOCK_STATUS_BLOCKED, 347 EXPECT_EQ(GpuDataManagerImpl::DOMAIN_BLOCK_STATUS_BLOCKED,
376 manager->Are3DAPIsBlockedAtTime(GetDomain1ForTesting(), 348 manager.Are3DAPIsBlockedAtTime(
377 JustAfterExpiration(manager))); 349 GetDomain1ForTesting(), JustAfterExpiration(manager)));
378 } 350 }
379 351
380 void GpuDataManagerImplTest::TestUnblockingDomainFrom3DAPIs( 352 void GpuDataManagerImplTest::TestUnblockingDomainFrom3DAPIs(
381 GpuDataManagerImpl::DomainGuilt guilt_level) { 353 GpuDataManagerImpl::DomainGuilt guilt_level) {
382 ScopedGpuDataManagerImpl manager; 354 GpuDataManagerImplPrivate manager;
383 ASSERT_TRUE(manager.get());
384 355
385 manager->BlockDomainFrom3DAPIsAtTime(GetDomain1ForTesting(), 356 manager.BlockDomainFrom3DAPIsAtTime(GetDomain1ForTesting(),
386 guilt_level, 357 guilt_level,
387 GetTimeForTesting()); 358 GetTimeForTesting());
388 359
389 // Unblocking the domain should work. 360 // Unblocking the domain should work.
390 manager->UnblockDomainFrom3DAPIs(GetDomain1ForTesting()); 361 manager.UnblockDomainFrom3DAPIs(GetDomain1ForTesting());
391 EXPECT_EQ(GpuDataManagerImpl::DOMAIN_BLOCK_STATUS_NOT_BLOCKED, 362 EXPECT_EQ(GpuDataManagerImpl::DOMAIN_BLOCK_STATUS_NOT_BLOCKED,
392 manager->Are3DAPIsBlockedAtTime(GetDomain1ForTesting(), 363 manager.Are3DAPIsBlockedAtTime(GetDomain1ForTesting(),
393 GetTimeForTesting())); 364 GetTimeForTesting()));
394 EXPECT_EQ(GpuDataManagerImpl::DOMAIN_BLOCK_STATUS_NOT_BLOCKED, 365 EXPECT_EQ(GpuDataManagerImpl::DOMAIN_BLOCK_STATUS_NOT_BLOCKED,
395 manager->Are3DAPIsBlockedAtTime(GetDomain1ForTesting(), 366 manager.Are3DAPIsBlockedAtTime(
396 JustBeforeExpiration(manager))); 367 GetDomain1ForTesting(), JustBeforeExpiration(manager)));
397 EXPECT_EQ(GpuDataManagerImpl::DOMAIN_BLOCK_STATUS_NOT_BLOCKED, 368 EXPECT_EQ(GpuDataManagerImpl::DOMAIN_BLOCK_STATUS_NOT_BLOCKED,
398 manager->Are3DAPIsBlockedAtTime(GetDomain1ForTesting(), 369 manager.Are3DAPIsBlockedAtTime(
399 JustAfterExpiration(manager))); 370 GetDomain1ForTesting(), JustAfterExpiration(manager)));
400 } 371 }
401 372
402 TEST_F(GpuDataManagerImplTest, BlockGuiltyDomainFrom3DAPIs) { 373 TEST_F(GpuDataManagerImplTest, BlockGuiltyDomainFrom3DAPIs) {
403 TestBlockingDomainFrom3DAPIs(GpuDataManagerImpl::DOMAIN_GUILT_KNOWN); 374 TestBlockingDomainFrom3DAPIs(GpuDataManagerImpl::DOMAIN_GUILT_KNOWN);
404 } 375 }
405 376
406 TEST_F(GpuDataManagerImplTest, BlockDomainOfUnknownGuiltFrom3DAPIs) { 377 TEST_F(GpuDataManagerImplTest, BlockDomainOfUnknownGuiltFrom3DAPIs) {
407 TestBlockingDomainFrom3DAPIs(GpuDataManagerImpl::DOMAIN_GUILT_UNKNOWN); 378 TestBlockingDomainFrom3DAPIs(GpuDataManagerImpl::DOMAIN_GUILT_UNKNOWN);
408 } 379 }
409 380
410 TEST_F(GpuDataManagerImplTest, BlockAllDomainsFrom3DAPIs) { 381 TEST_F(GpuDataManagerImplTest, BlockAllDomainsFrom3DAPIs) {
411 ScopedGpuDataManagerImpl manager; 382 GpuDataManagerImplPrivate manager;
412 ASSERT_TRUE(manager.get());
413 383
414 manager->BlockDomainFrom3DAPIsAtTime(GetDomain1ForTesting(), 384 manager.BlockDomainFrom3DAPIsAtTime(GetDomain1ForTesting(),
415 GpuDataManagerImpl::DOMAIN_GUILT_UNKNOWN, 385 GpuDataManagerImpl::DOMAIN_GUILT_UNKNOWN,
416 GetTimeForTesting()); 386 GetTimeForTesting());
417 387
418 // Blocking of other domains should expire. 388 // Blocking of other domains should expire.
419 EXPECT_EQ(GpuDataManagerImpl::DOMAIN_BLOCK_STATUS_ALL_DOMAINS_BLOCKED, 389 EXPECT_EQ(GpuDataManagerImpl::DOMAIN_BLOCK_STATUS_ALL_DOMAINS_BLOCKED,
420 manager->Are3DAPIsBlockedAtTime(GetDomain2ForTesting(), 390 manager.Are3DAPIsBlockedAtTime(
421 JustBeforeExpiration(manager))); 391 GetDomain2ForTesting(), JustBeforeExpiration(manager)));
422 EXPECT_EQ(GpuDataManagerImpl::DOMAIN_BLOCK_STATUS_NOT_BLOCKED, 392 EXPECT_EQ(GpuDataManagerImpl::DOMAIN_BLOCK_STATUS_NOT_BLOCKED,
423 manager->Are3DAPIsBlockedAtTime(GetDomain2ForTesting(), 393 manager.Are3DAPIsBlockedAtTime(
424 JustAfterExpiration(manager))); 394 GetDomain2ForTesting(), JustAfterExpiration(manager)));
425 } 395 }
426 396
427 TEST_F(GpuDataManagerImplTest, UnblockGuiltyDomainFrom3DAPIs) { 397 TEST_F(GpuDataManagerImplTest, UnblockGuiltyDomainFrom3DAPIs) {
428 TestUnblockingDomainFrom3DAPIs(GpuDataManagerImpl::DOMAIN_GUILT_KNOWN); 398 TestUnblockingDomainFrom3DAPIs(GpuDataManagerImpl::DOMAIN_GUILT_KNOWN);
429 } 399 }
430 400
431 TEST_F(GpuDataManagerImplTest, UnblockDomainOfUnknownGuiltFrom3DAPIs) { 401 TEST_F(GpuDataManagerImplTest, UnblockDomainOfUnknownGuiltFrom3DAPIs) {
432 TestUnblockingDomainFrom3DAPIs(GpuDataManagerImpl::DOMAIN_GUILT_UNKNOWN); 402 TestUnblockingDomainFrom3DAPIs(GpuDataManagerImpl::DOMAIN_GUILT_UNKNOWN);
433 } 403 }
434 404
435 TEST_F(GpuDataManagerImplTest, UnblockOtherDomainFrom3DAPIs) { 405 TEST_F(GpuDataManagerImplTest, UnblockOtherDomainFrom3DAPIs) {
436 ScopedGpuDataManagerImpl manager; 406 GpuDataManagerImplPrivate manager;
437 ASSERT_TRUE(manager.get());
438 407
439 manager->BlockDomainFrom3DAPIsAtTime(GetDomain1ForTesting(), 408 manager.BlockDomainFrom3DAPIsAtTime(GetDomain1ForTesting(),
440 GpuDataManagerImpl::DOMAIN_GUILT_UNKNOWN, 409 GpuDataManagerImpl::DOMAIN_GUILT_UNKNOWN,
441 GetTimeForTesting()); 410 GetTimeForTesting());
442 411
443 manager->UnblockDomainFrom3DAPIs(GetDomain2ForTesting()); 412 manager.UnblockDomainFrom3DAPIs(GetDomain2ForTesting());
444 413
445 EXPECT_EQ(GpuDataManagerImpl::DOMAIN_BLOCK_STATUS_NOT_BLOCKED, 414 EXPECT_EQ(GpuDataManagerImpl::DOMAIN_BLOCK_STATUS_NOT_BLOCKED,
446 manager->Are3DAPIsBlockedAtTime(GetDomain2ForTesting(), 415 manager.Are3DAPIsBlockedAtTime(
447 JustBeforeExpiration(manager))); 416 GetDomain2ForTesting(), JustBeforeExpiration(manager)));
448 417
449 // The original domain should still be blocked. 418 // The original domain should still be blocked.
450 EXPECT_EQ(GpuDataManagerImpl::DOMAIN_BLOCK_STATUS_BLOCKED, 419 EXPECT_EQ(GpuDataManagerImpl::DOMAIN_BLOCK_STATUS_BLOCKED,
451 manager->Are3DAPIsBlockedAtTime(GetDomain1ForTesting(), 420 manager.Are3DAPIsBlockedAtTime(
452 JustBeforeExpiration(manager))); 421 GetDomain1ForTesting(), JustBeforeExpiration(manager)));
453 } 422 }
454 423
455 TEST_F(GpuDataManagerImplTest, UnblockThisDomainFrom3DAPIs) { 424 TEST_F(GpuDataManagerImplTest, UnblockThisDomainFrom3DAPIs) {
456 ScopedGpuDataManagerImpl manager; 425 GpuDataManagerImplPrivate manager;
457 ASSERT_TRUE(manager.get());
458 426
459 manager->BlockDomainFrom3DAPIsAtTime(GetDomain1ForTesting(), 427 manager.BlockDomainFrom3DAPIsAtTime(GetDomain1ForTesting(),
460 GpuDataManagerImpl::DOMAIN_GUILT_UNKNOWN, 428 GpuDataManagerImpl::DOMAIN_GUILT_UNKNOWN,
461 GetTimeForTesting()); 429 GetTimeForTesting());
462 430
463 manager->UnblockDomainFrom3DAPIs(GetDomain1ForTesting()); 431 manager.UnblockDomainFrom3DAPIs(GetDomain1ForTesting());
464 432
465 // This behavior is debatable. Perhaps the GPU reset caused by 433 // This behavior is debatable. Perhaps the GPU reset caused by
466 // domain 1 should still cause other domains to be blocked. 434 // domain 1 should still cause other domains to be blocked.
467 EXPECT_EQ(GpuDataManagerImpl::DOMAIN_BLOCK_STATUS_NOT_BLOCKED, 435 EXPECT_EQ(GpuDataManagerImpl::DOMAIN_BLOCK_STATUS_NOT_BLOCKED,
468 manager->Are3DAPIsBlockedAtTime(GetDomain2ForTesting(), 436 manager.Are3DAPIsBlockedAtTime(
469 JustBeforeExpiration(manager))); 437 GetDomain2ForTesting(), JustBeforeExpiration(manager)));
470 } 438 }
471 439
472 #if defined(OS_LINUX) 440 #if defined(OS_LINUX)
473 TEST_F(GpuDataManagerImplTest, SetGLStrings) { 441 TEST_F(GpuDataManagerImplTest, SetGLStrings) {
474 const char* kGLVendorMesa = "Tungsten Graphics, Inc"; 442 const char* kGLVendorMesa = "Tungsten Graphics, Inc";
475 const char* kGLRendererMesa = "Mesa DRI Intel(R) G41"; 443 const char* kGLRendererMesa = "Mesa DRI Intel(R) G41";
476 const char* kGLVersionMesa801 = "2.1 Mesa 8.0.1-DEVEL"; 444 const char* kGLVersionMesa801 = "2.1 Mesa 8.0.1-DEVEL";
477 445
478 ScopedGpuDataManagerImpl manager; 446 GpuDataManagerImplPrivate manager;
479 ASSERT_TRUE(manager.get()); 447 EXPECT_EQ(0u, manager.GetBlacklistedFeatureCount());
480 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount()); 448 EXPECT_TRUE(manager.GpuAccessAllowed(NULL));
481 EXPECT_TRUE(manager->GpuAccessAllowed(NULL));
482 449
483 const std::string blacklist_json = LONG_STRING_CONST( 450 const std::string blacklist_json = LONG_STRING_CONST(
484 { 451 {
485 "name": "gpu blacklist", 452 "name": "gpu blacklist",
486 "version": "0.1", 453 "version": "0.1",
487 "entries": [ 454 "entries": [
488 { 455 {
489 "id": 1, 456 "id": 1,
490 "vendor_id": "0x8086", 457 "vendor_id": "0x8086",
491 "exceptions": [ 458 "exceptions": [
492 { 459 {
493 "device_id": ["0x0042"], 460 "device_id": ["0x0042"],
494 "driver_version": { 461 "driver_version": {
495 "op": ">=", 462 "op": ">=",
496 "number": "8.0.2" 463 "number": "8.0.2"
497 } 464 }
498 } 465 }
499 ], 466 ],
500 "features": [ 467 "features": [
501 "webgl" 468 "webgl"
502 ] 469 ]
503 } 470 }
504 ] 471 ]
505 } 472 }
506 ); 473 );
507 GPUInfo gpu_info; 474 GPUInfo gpu_info;
508 gpu_info.gpu.vendor_id = 0x8086; 475 gpu_info.gpu.vendor_id = 0x8086;
509 gpu_info.gpu.device_id = 0x0042; 476 gpu_info.gpu.device_id = 0x0042;
510 manager->InitializeForTesting(blacklist_json, gpu_info); 477 manager.InitializeForTesting(blacklist_json, gpu_info);
511 478
512 // Not enough GPUInfo. 479 // Not enough GPUInfo.
513 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); 480 EXPECT_TRUE(manager.GpuAccessAllowed(NULL));
514 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount()); 481 EXPECT_EQ(0u, manager.GetBlacklistedFeatureCount());
515 482
516 // Now assume browser gets GL strings from local state. 483 // Now assume browser gets GL strings from local state.
517 // The entry applies, blacklist more features than from the preliminary step. 484 // The entry applies, blacklist more features than from the preliminary step.
518 // However, GPU process is not blocked because this is all browser side and 485 // However, GPU process is not blocked because this is all browser side and
519 // happens before renderer launching. 486 // happens before renderer launching.
520 manager->SetGLStrings(kGLVendorMesa, kGLRendererMesa, kGLVersionMesa801); 487 manager.SetGLStrings(kGLVendorMesa, kGLRendererMesa, kGLVersionMesa801);
521 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); 488 EXPECT_TRUE(manager.GpuAccessAllowed(NULL));
522 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount()); 489 EXPECT_EQ(1u, manager.GetBlacklistedFeatureCount());
523 EXPECT_TRUE(manager->IsFeatureBlacklisted(GPU_FEATURE_TYPE_WEBGL)); 490 EXPECT_TRUE(manager.IsFeatureBlacklisted(GPU_FEATURE_TYPE_WEBGL));
524 } 491 }
525 492
526 TEST_F(GpuDataManagerImplTest, SetGLStringsNoEffects) { 493 TEST_F(GpuDataManagerImplTest, SetGLStringsNoEffects) {
527 const char* kGLVendorMesa = "Tungsten Graphics, Inc"; 494 const char* kGLVendorMesa = "Tungsten Graphics, Inc";
528 const char* kGLRendererMesa = "Mesa DRI Intel(R) G41"; 495 const char* kGLRendererMesa = "Mesa DRI Intel(R) G41";
529 const char* kGLVersionMesa801 = "2.1 Mesa 8.0.1-DEVEL"; 496 const char* kGLVersionMesa801 = "2.1 Mesa 8.0.1-DEVEL";
530 const char* kGLVersionMesa802 = "2.1 Mesa 8.0.2-DEVEL"; 497 const char* kGLVersionMesa802 = "2.1 Mesa 8.0.2-DEVEL";
531 498
532 ScopedGpuDataManagerImpl manager; 499 GpuDataManagerImplPrivate manager;
533 ASSERT_TRUE(manager.get()); 500 EXPECT_EQ(0u, manager.GetBlacklistedFeatureCount());
534 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount()); 501 EXPECT_TRUE(manager.GpuAccessAllowed(NULL));
535 EXPECT_TRUE(manager->GpuAccessAllowed(NULL));
536 502
537 const std::string blacklist_json = LONG_STRING_CONST( 503 const std::string blacklist_json = LONG_STRING_CONST(
538 { 504 {
539 "name": "gpu blacklist", 505 "name": "gpu blacklist",
540 "version": "0.1", 506 "version": "0.1",
541 "entries": [ 507 "entries": [
542 { 508 {
543 "id": 1, 509 "id": 1,
544 "vendor_id": "0x8086", 510 "vendor_id": "0x8086",
545 "exceptions": [ 511 "exceptions": [
(...skipping 13 matching lines...) Expand all
559 } 525 }
560 ); 526 );
561 GPUInfo gpu_info; 527 GPUInfo gpu_info;
562 gpu_info.gpu.vendor_id = 0x8086; 528 gpu_info.gpu.vendor_id = 0x8086;
563 gpu_info.gpu.device_id = 0x0042; 529 gpu_info.gpu.device_id = 0x0042;
564 gpu_info.gl_vendor = kGLVendorMesa; 530 gpu_info.gl_vendor = kGLVendorMesa;
565 gpu_info.gl_renderer = kGLRendererMesa; 531 gpu_info.gl_renderer = kGLRendererMesa;
566 gpu_info.gl_version = kGLVersionMesa801; 532 gpu_info.gl_version = kGLVersionMesa801;
567 gpu_info.driver_vendor = "Mesa"; 533 gpu_info.driver_vendor = "Mesa";
568 gpu_info.driver_version = "8.0.1"; 534 gpu_info.driver_version = "8.0.1";
569 manager->InitializeForTesting(blacklist_json, gpu_info); 535 manager.InitializeForTesting(blacklist_json, gpu_info);
570 536
571 // Full GPUInfo, the entry applies. 537 // Full GPUInfo, the entry applies.
572 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); 538 EXPECT_TRUE(manager.GpuAccessAllowed(NULL));
573 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount()); 539 EXPECT_EQ(1u, manager.GetBlacklistedFeatureCount());
574 EXPECT_TRUE(manager->IsFeatureBlacklisted(GPU_FEATURE_TYPE_WEBGL)); 540 EXPECT_TRUE(manager.IsFeatureBlacklisted(GPU_FEATURE_TYPE_WEBGL));
575 541
576 // Now assume browser gets GL strings from local state. 542 // Now assume browser gets GL strings from local state.
577 // SetGLStrings() has no effects because GPUInfo already got these strings. 543 // SetGLStrings() has no effects because GPUInfo already got these strings.
578 // (Otherwise the entry should not apply.) 544 // (Otherwise the entry should not apply.)
579 manager->SetGLStrings(kGLVendorMesa, kGLRendererMesa, kGLVersionMesa802); 545 manager.SetGLStrings(kGLVendorMesa, kGLRendererMesa, kGLVersionMesa802);
580 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); 546 EXPECT_TRUE(manager.GpuAccessAllowed(NULL));
581 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount()); 547 EXPECT_EQ(1u, manager.GetBlacklistedFeatureCount());
582 EXPECT_TRUE(manager->IsFeatureBlacklisted(GPU_FEATURE_TYPE_WEBGL)); 548 EXPECT_TRUE(manager.IsFeatureBlacklisted(GPU_FEATURE_TYPE_WEBGL));
583 } 549 }
584 #endif // OS_LINUX 550 #endif // OS_LINUX
585 551
586 TEST_F(GpuDataManagerImplTest, GpuDriverBugListSingle) { 552 TEST_F(GpuDataManagerImplTest, GpuDriverBugListSingle) {
587 ScopedGpuDataManagerImpl manager; 553 GpuDataManagerImplPrivate manager;
588 ASSERT_TRUE(manager.get()); 554 manager.gpu_driver_bugs_.insert(5);
589 manager->gpu_driver_bugs_.insert(5);
590 555
591 CommandLine command_line(0, NULL); 556 CommandLine command_line(0, NULL);
592 manager->AppendGpuCommandLine(&command_line); 557 manager.AppendGpuCommandLine(&command_line);
593 558
594 EXPECT_TRUE(command_line.HasSwitch(switches::kGpuDriverBugWorkarounds)); 559 EXPECT_TRUE(command_line.HasSwitch(switches::kGpuDriverBugWorkarounds));
595 std::string args = command_line.GetSwitchValueASCII( 560 std::string args = command_line.GetSwitchValueASCII(
596 switches::kGpuDriverBugWorkarounds); 561 switches::kGpuDriverBugWorkarounds);
597 EXPECT_STREQ("5", args.c_str()); 562 EXPECT_STREQ("5", args.c_str());
598 } 563 }
599 564
600 TEST_F(GpuDataManagerImplTest, GpuDriverBugListMultiple) { 565 TEST_F(GpuDataManagerImplTest, GpuDriverBugListMultiple) {
601 ScopedGpuDataManagerImpl manager; 566 GpuDataManagerImplPrivate manager;
602 ASSERT_TRUE(manager.get()); 567 manager.gpu_driver_bugs_.insert(5);
603 manager->gpu_driver_bugs_.insert(5); 568 manager.gpu_driver_bugs_.insert(7);
604 manager->gpu_driver_bugs_.insert(7);
605 569
606 CommandLine command_line(0, NULL); 570 CommandLine command_line(0, NULL);
607 manager->AppendGpuCommandLine(&command_line); 571 manager.AppendGpuCommandLine(&command_line);
608 572
609 EXPECT_TRUE(command_line.HasSwitch(switches::kGpuDriverBugWorkarounds)); 573 EXPECT_TRUE(command_line.HasSwitch(switches::kGpuDriverBugWorkarounds));
610 std::string args = command_line.GetSwitchValueASCII( 574 std::string args = command_line.GetSwitchValueASCII(
611 switches::kGpuDriverBugWorkarounds); 575 switches::kGpuDriverBugWorkarounds);
612 EXPECT_STREQ("5,7", args.c_str()); 576 EXPECT_STREQ("5,7", args.c_str());
613 } 577 }
614 578
615 TEST_F(GpuDataManagerImplTest, BlacklistAllFeatures) { 579 TEST_F(GpuDataManagerImplTest, BlacklistAllFeatures) {
616 ScopedGpuDataManagerImpl manager; 580 GpuDataManagerImplPrivate manager;
617 ASSERT_TRUE(manager.get()); 581 EXPECT_EQ(0u, manager.GetBlacklistedFeatureCount());
618 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount());
619 std::string reason; 582 std::string reason;
620 EXPECT_TRUE(manager->GpuAccessAllowed(&reason)); 583 EXPECT_TRUE(manager.GpuAccessAllowed(&reason));
621 EXPECT_TRUE(reason.empty()); 584 EXPECT_TRUE(reason.empty());
622 585
623 const std::string blacklist_json = LONG_STRING_CONST( 586 const std::string blacklist_json = LONG_STRING_CONST(
624 { 587 {
625 "name": "gpu blacklist", 588 "name": "gpu blacklist",
626 "version": "0.1", 589 "version": "0.1",
627 "entries": [ 590 "entries": [
628 { 591 {
629 "id": 1, 592 "id": 1,
630 "features": [ 593 "features": [
631 "all" 594 "all"
632 ] 595 ]
633 } 596 }
634 ] 597 ]
635 } 598 }
636 ); 599 );
637 600
638 GPUInfo gpu_info; 601 GPUInfo gpu_info;
639 gpu_info.gpu.vendor_id = 0x10de; 602 gpu_info.gpu.vendor_id = 0x10de;
640 gpu_info.gpu.device_id = 0x0640; 603 gpu_info.gpu.device_id = 0x0640;
641 manager->InitializeForTesting(blacklist_json, gpu_info); 604 manager.InitializeForTesting(blacklist_json, gpu_info);
642 605
643 EXPECT_EQ(static_cast<size_t>(NUMBER_OF_GPU_FEATURE_TYPES), 606 EXPECT_EQ(static_cast<size_t>(NUMBER_OF_GPU_FEATURE_TYPES),
644 manager->GetBlacklistedFeatureCount()); 607 manager.GetBlacklistedFeatureCount());
645 // TODO(zmo): remove the Linux specific behavior once we fix 608 // TODO(zmo): remove the Linux specific behavior once we fix
646 // crbug.com/238466. 609 // crbug.com/238466.
647 #if defined(OS_LINUX) 610 #if defined(OS_LINUX)
648 EXPECT_TRUE(manager->GpuAccessAllowed(&reason)); 611 EXPECT_TRUE(manager.GpuAccessAllowed(&reason));
649 EXPECT_TRUE(reason.empty()); 612 EXPECT_TRUE(reason.empty());
650 #else 613 #else
651 EXPECT_FALSE(manager->GpuAccessAllowed(&reason)); 614 EXPECT_FALSE(manager.GpuAccessAllowed(&reason));
652 EXPECT_FALSE(reason.empty()); 615 EXPECT_FALSE(reason.empty());
653 #endif 616 #endif
654 } 617 }
655 618
656 } // namespace content 619 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698