OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 <vector> | 5 #include <vector> |
6 | 6 |
7 #include "base/base_paths.h" | 7 #include "base/base_paths.h" |
8 #include "base/file_path.h" | 8 #include "base/file_path.h" |
9 #include "base/file_util.h" | 9 #include "base/file_util.h" |
10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
52 .Append(FILE_PATH_LITERAL("software_rendering_list")) | 52 .Append(FILE_PATH_LITERAL("software_rendering_list")) |
53 .Append(FILE_PATH_LITERAL("software_rendering_list.json")); | 53 .Append(FILE_PATH_LITERAL("software_rendering_list.json")); |
54 ASSERT_TRUE(file_util::PathExists(data_file)); | 54 ASSERT_TRUE(file_util::PathExists(data_file)); |
55 int64 data_file_size64 = 0; | 55 int64 data_file_size64 = 0; |
56 ASSERT_TRUE(file_util::GetFileSize(data_file, &data_file_size64)); | 56 ASSERT_TRUE(file_util::GetFileSize(data_file, &data_file_size64)); |
57 int data_file_size = static_cast<int>(data_file_size64); | 57 int data_file_size = static_cast<int>(data_file_size64); |
58 scoped_array<char> data(new char[data_file_size]); | 58 scoped_array<char> data(new char[data_file_size]); |
59 ASSERT_EQ(file_util::ReadFile(data_file, data.get(), data_file_size), | 59 ASSERT_EQ(file_util::ReadFile(data_file, data.get(), data_file_size), |
60 data_file_size); | 60 data_file_size); |
61 std::string json_string(data.get(), data_file_size); | 61 std::string json_string(data.get(), data_file_size); |
62 GpuBlacklist blacklist("1.0 unknown"); | 62 GpuBlacklist blacklist("1.0"); |
63 EXPECT_TRUE(blacklist.LoadGpuBlacklist(json_string, GpuBlacklist::kAllOs)); | 63 EXPECT_TRUE(blacklist.LoadGpuBlacklist(json_string, GpuBlacklist::kAllOs)); |
64 EXPECT_FALSE(blacklist.contains_unknown_fields()); | 64 EXPECT_FALSE(blacklist.contains_unknown_fields()); |
65 } | 65 } |
66 | 66 |
67 TEST_F(GpuBlacklistTest, DefaultBlacklistSettings) { | 67 TEST_F(GpuBlacklistTest, DefaultBlacklistSettings) { |
68 scoped_ptr<Version> os_version(Version::GetVersionFromString("10.6.4")); | 68 scoped_ptr<Version> os_version(Version::GetVersionFromString("10.6.4")); |
69 GpuBlacklist blacklist("1.0 unknown"); | 69 GpuBlacklist blacklist("1.0"); |
70 // Default blacklist settings: all feature are allowed. | 70 // Default blacklist settings: all feature are allowed. |
71 GpuFeatureFlags flags = blacklist.DetermineGpuFeatureFlags( | 71 GpuFeatureFlags flags = blacklist.DetermineGpuFeatureFlags( |
72 GpuBlacklist::kOsMacosx, os_version.get(), gpu_info()); | 72 GpuBlacklist::kOsMacosx, os_version.get(), gpu_info()); |
73 EXPECT_EQ(flags.flags(), 0u); | 73 EXPECT_EQ(flags.flags(), 0u); |
74 } | 74 } |
75 | 75 |
76 TEST_F(GpuBlacklistTest, EmptyBlacklist) { | 76 TEST_F(GpuBlacklistTest, EmptyBlacklist) { |
77 // Empty list: all features are allowed. | 77 // Empty list: all features are allowed. |
78 const std::string empty_list_json = | 78 const std::string empty_list_json = |
79 "{\n" | 79 "{\n" |
80 " \"name\": \"gpu blacklist\",\n" | 80 " \"name\": \"gpu blacklist\",\n" |
81 " \"version\": \"2.5\",\n" | 81 " \"version\": \"2.5\",\n" |
82 " \"entries\": [\n" | 82 " \"entries\": [\n" |
83 " ]\n" | 83 " ]\n" |
84 "}"; | 84 "}"; |
85 scoped_ptr<Version> os_version(Version::GetVersionFromString("10.6.4")); | 85 scoped_ptr<Version> os_version(Version::GetVersionFromString("10.6.4")); |
86 GpuBlacklist blacklist("1.0 unknown"); | 86 GpuBlacklist blacklist("1.0"); |
87 | 87 |
88 EXPECT_TRUE( | 88 EXPECT_TRUE( |
89 blacklist.LoadGpuBlacklist(empty_list_json, GpuBlacklist::kAllOs)); | 89 blacklist.LoadGpuBlacklist(empty_list_json, GpuBlacklist::kAllOs)); |
90 uint16 major, minor; | 90 uint16 major, minor; |
91 EXPECT_TRUE(blacklist.GetVersion(&major, &minor)); | 91 EXPECT_TRUE(blacklist.GetVersion(&major, &minor)); |
92 EXPECT_EQ(major, 2u); | 92 EXPECT_EQ(major, 2u); |
93 EXPECT_EQ(minor, 5u); | 93 EXPECT_EQ(minor, 5u); |
94 GpuFeatureFlags flags = blacklist.DetermineGpuFeatureFlags( | 94 GpuFeatureFlags flags = blacklist.DetermineGpuFeatureFlags( |
95 GpuBlacklist::kOsMacosx, os_version.get(), gpu_info()); | 95 GpuBlacklist::kOsMacosx, os_version.get(), gpu_info()); |
96 EXPECT_EQ(flags.flags(), 0u); | 96 EXPECT_EQ(flags.flags(), 0u); |
(...skipping 21 matching lines...) Expand all Loading... |
118 " \"op\": \"=\",\n" | 118 " \"op\": \"=\",\n" |
119 " \"number\": \"1.6.18\"\n" | 119 " \"number\": \"1.6.18\"\n" |
120 " },\n" | 120 " },\n" |
121 " \"blacklist\": [\n" | 121 " \"blacklist\": [\n" |
122 " \"accelerated_compositing\"\n" | 122 " \"accelerated_compositing\"\n" |
123 " ]\n" | 123 " ]\n" |
124 " }\n" | 124 " }\n" |
125 " ]\n" | 125 " ]\n" |
126 "}"; | 126 "}"; |
127 scoped_ptr<Version> os_version(Version::GetVersionFromString("10.6.4")); | 127 scoped_ptr<Version> os_version(Version::GetVersionFromString("10.6.4")); |
128 GpuBlacklist blacklist("1.0 unknown"); | 128 GpuBlacklist blacklist("1.0"); |
129 | 129 |
130 EXPECT_TRUE( | 130 EXPECT_TRUE( |
131 blacklist.LoadGpuBlacklist(exact_list_json, GpuBlacklist::kAllOs)); | 131 blacklist.LoadGpuBlacklist(exact_list_json, GpuBlacklist::kAllOs)); |
132 GpuFeatureFlags flags = blacklist.DetermineGpuFeatureFlags( | 132 GpuFeatureFlags flags = blacklist.DetermineGpuFeatureFlags( |
133 GpuBlacklist::kOsMacosx, os_version.get(), gpu_info()); | 133 GpuBlacklist::kOsMacosx, os_version.get(), gpu_info()); |
134 EXPECT_EQ( | 134 EXPECT_EQ( |
135 flags.flags(), | 135 flags.flags(), |
136 static_cast<uint32>(GpuFeatureFlags::kGpuFeatureAcceleratedCompositing)); | 136 static_cast<uint32>(GpuFeatureFlags::kGpuFeatureAcceleratedCompositing)); |
137 | 137 |
138 // Invalid json input should not change the current blacklist settings. | 138 // Invalid json input should not change the current blacklist settings. |
(...skipping 28 matching lines...) Expand all Loading... |
167 " {\n" | 167 " {\n" |
168 " \"id\": 1,\n" | 168 " \"id\": 1,\n" |
169 " \"vendor_id\": \"0x10de\",\n" | 169 " \"vendor_id\": \"0x10de\",\n" |
170 " \"blacklist\": [\n" | 170 " \"blacklist\": [\n" |
171 " \"webgl\"\n" | 171 " \"webgl\"\n" |
172 " ]\n" | 172 " ]\n" |
173 " }\n" | 173 " }\n" |
174 " ]\n" | 174 " ]\n" |
175 "}"; | 175 "}"; |
176 scoped_ptr<Version> os_version(Version::GetVersionFromString("10.6.4")); | 176 scoped_ptr<Version> os_version(Version::GetVersionFromString("10.6.4")); |
177 GpuBlacklist blacklist("1.0 unknown"); | 177 GpuBlacklist blacklist("1.0"); |
178 | 178 |
179 // Blacklist entries won't be filtered to the current OS only upon loading. | 179 // Blacklist entries won't be filtered to the current OS only upon loading. |
180 EXPECT_TRUE(blacklist.LoadGpuBlacklist(vendor_json, GpuBlacklist::kAllOs)); | 180 EXPECT_TRUE(blacklist.LoadGpuBlacklist(vendor_json, GpuBlacklist::kAllOs)); |
181 GpuFeatureFlags flags = blacklist.DetermineGpuFeatureFlags( | 181 GpuFeatureFlags flags = blacklist.DetermineGpuFeatureFlags( |
182 GpuBlacklist::kOsMacosx, os_version.get(), gpu_info()); | 182 GpuBlacklist::kOsMacosx, os_version.get(), gpu_info()); |
183 EXPECT_EQ(flags.flags(), | 183 EXPECT_EQ(flags.flags(), |
184 static_cast<uint32>(GpuFeatureFlags::kGpuFeatureWebgl)); | 184 static_cast<uint32>(GpuFeatureFlags::kGpuFeatureWebgl)); |
185 flags = blacklist.DetermineGpuFeatureFlags( | 185 flags = blacklist.DetermineGpuFeatureFlags( |
186 GpuBlacklist::kOsWin, os_version.get(), gpu_info()); | 186 GpuBlacklist::kOsWin, os_version.get(), gpu_info()); |
187 EXPECT_EQ(flags.flags(), | 187 EXPECT_EQ(flags.flags(), |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
223 " \"type\": \"linux\"\n" | 223 " \"type\": \"linux\"\n" |
224 " },\n" | 224 " },\n" |
225 " \"vendor_id\": \"0x10de\",\n" | 225 " \"vendor_id\": \"0x10de\",\n" |
226 " \"blacklist\": [\n" | 226 " \"blacklist\": [\n" |
227 " \"accelerated_2d_canvas\"\n" | 227 " \"accelerated_2d_canvas\"\n" |
228 " ]\n" | 228 " ]\n" |
229 " }\n" | 229 " }\n" |
230 " ]\n" | 230 " ]\n" |
231 "}"; | 231 "}"; |
232 scoped_ptr<Version> os_version(Version::GetVersionFromString("10.6.4")); | 232 scoped_ptr<Version> os_version(Version::GetVersionFromString("10.6.4")); |
233 GpuBlacklist blacklist("1.0 unknown"); | 233 GpuBlacklist blacklist("1.0"); |
234 | 234 |
235 EXPECT_TRUE( | 235 EXPECT_TRUE( |
236 blacklist.LoadGpuBlacklist(vendor_linux_json, GpuBlacklist::kAllOs)); | 236 blacklist.LoadGpuBlacklist(vendor_linux_json, GpuBlacklist::kAllOs)); |
237 GpuFeatureFlags flags = blacklist.DetermineGpuFeatureFlags( | 237 GpuFeatureFlags flags = blacklist.DetermineGpuFeatureFlags( |
238 GpuBlacklist::kOsMacosx, os_version.get(), gpu_info()); | 238 GpuBlacklist::kOsMacosx, os_version.get(), gpu_info()); |
239 EXPECT_EQ(flags.flags(), 0u); | 239 EXPECT_EQ(flags.flags(), 0u); |
240 flags = blacklist.DetermineGpuFeatureFlags( | 240 flags = blacklist.DetermineGpuFeatureFlags( |
241 GpuBlacklist::kOsWin, os_version.get(), gpu_info()); | 241 GpuBlacklist::kOsWin, os_version.get(), gpu_info()); |
242 EXPECT_EQ(flags.flags(), 0u); | 242 EXPECT_EQ(flags.flags(), 0u); |
243 flags = blacklist.DetermineGpuFeatureFlags( | 243 flags = blacklist.DetermineGpuFeatureFlags( |
(...skipping 20 matching lines...) Expand all Loading... |
264 " \"vendor_id\": \"0x10de\"\n" | 264 " \"vendor_id\": \"0x10de\"\n" |
265 " }\n" | 265 " }\n" |
266 " ],\n" | 266 " ],\n" |
267 " \"blacklist\": [\n" | 267 " \"blacklist\": [\n" |
268 " \"accelerated_2d_canvas\"\n" | 268 " \"accelerated_2d_canvas\"\n" |
269 " ]\n" | 269 " ]\n" |
270 " }\n" | 270 " }\n" |
271 " ]\n" | 271 " ]\n" |
272 "}"; | 272 "}"; |
273 scoped_ptr<Version> os_version(Version::GetVersionFromString("10.6.4")); | 273 scoped_ptr<Version> os_version(Version::GetVersionFromString("10.6.4")); |
274 GpuBlacklist blacklist("1.0 unknown"); | 274 GpuBlacklist blacklist("1.0"); |
275 | 275 |
276 EXPECT_TRUE(blacklist.LoadGpuBlacklist(linux_except_nvidia_json, | 276 EXPECT_TRUE(blacklist.LoadGpuBlacklist(linux_except_nvidia_json, |
277 GpuBlacklist::kAllOs)); | 277 GpuBlacklist::kAllOs)); |
278 GpuFeatureFlags flags = blacklist.DetermineGpuFeatureFlags( | 278 GpuFeatureFlags flags = blacklist.DetermineGpuFeatureFlags( |
279 GpuBlacklist::kOsMacosx, os_version.get(), gpu_info()); | 279 GpuBlacklist::kOsMacosx, os_version.get(), gpu_info()); |
280 EXPECT_EQ(flags.flags(), 0u); | 280 EXPECT_EQ(flags.flags(), 0u); |
281 flags = blacklist.DetermineGpuFeatureFlags( | 281 flags = blacklist.DetermineGpuFeatureFlags( |
282 GpuBlacklist::kOsWin, os_version.get(), gpu_info()); | 282 GpuBlacklist::kOsWin, os_version.get(), gpu_info()); |
283 EXPECT_EQ(flags.flags(), 0u); | 283 EXPECT_EQ(flags.flags(), 0u); |
284 flags = blacklist.DetermineGpuFeatureFlags( | 284 flags = blacklist.DetermineGpuFeatureFlags( |
(...skipping 18 matching lines...) Expand all Loading... |
303 " \"vendor_id\": \"0x8086\"\n" | 303 " \"vendor_id\": \"0x8086\"\n" |
304 " }\n" | 304 " }\n" |
305 " ],\n" | 305 " ],\n" |
306 " \"blacklist\": [\n" | 306 " \"blacklist\": [\n" |
307 " \"accelerated_2d_canvas\"\n" | 307 " \"accelerated_2d_canvas\"\n" |
308 " ]\n" | 308 " ]\n" |
309 " }\n" | 309 " }\n" |
310 " ]\n" | 310 " ]\n" |
311 "}"; | 311 "}"; |
312 scoped_ptr<Version> os_version(Version::GetVersionFromString("10.6.4")); | 312 scoped_ptr<Version> os_version(Version::GetVersionFromString("10.6.4")); |
313 GpuBlacklist blacklist("1.0 unknown"); | 313 GpuBlacklist blacklist("1.0"); |
314 | 314 |
315 EXPECT_TRUE(blacklist.LoadGpuBlacklist(linux_except_intel_json, | 315 EXPECT_TRUE(blacklist.LoadGpuBlacklist(linux_except_intel_json, |
316 GpuBlacklist::kAllOs)); | 316 GpuBlacklist::kAllOs)); |
317 GpuFeatureFlags flags = blacklist.DetermineGpuFeatureFlags( | 317 GpuFeatureFlags flags = blacklist.DetermineGpuFeatureFlags( |
318 GpuBlacklist::kOsMacosx, os_version.get(), gpu_info()); | 318 GpuBlacklist::kOsMacosx, os_version.get(), gpu_info()); |
319 EXPECT_EQ(flags.flags(), 0u); | 319 EXPECT_EQ(flags.flags(), 0u); |
320 flags = blacklist.DetermineGpuFeatureFlags( | 320 flags = blacklist.DetermineGpuFeatureFlags( |
321 GpuBlacklist::kOsWin, os_version.get(), gpu_info()); | 321 GpuBlacklist::kOsWin, os_version.get(), gpu_info()); |
322 EXPECT_EQ(flags.flags(), 0u); | 322 EXPECT_EQ(flags.flags(), 0u); |
323 flags = blacklist.DetermineGpuFeatureFlags( | 323 flags = blacklist.DetermineGpuFeatureFlags( |
(...skipping 19 matching lines...) Expand all Loading... |
343 " \"op\": \"<\",\n" | 343 " \"op\": \"<\",\n" |
344 " \"number\": \"2010.1\"\n" | 344 " \"number\": \"2010.1\"\n" |
345 " },\n" | 345 " },\n" |
346 " \"blacklist\": [\n" | 346 " \"blacklist\": [\n" |
347 " \"accelerated_2d_canvas\"\n" | 347 " \"accelerated_2d_canvas\"\n" |
348 " ]\n" | 348 " ]\n" |
349 " }\n" | 349 " }\n" |
350 " ]\n" | 350 " ]\n" |
351 "}"; | 351 "}"; |
352 scoped_ptr<Version> os_version(Version::GetVersionFromString("10.6.4")); | 352 scoped_ptr<Version> os_version(Version::GetVersionFromString("10.6.4")); |
353 GpuBlacklist blacklist("1.0 unknown"); | 353 GpuBlacklist blacklist("1.0"); |
354 | 354 |
355 EXPECT_TRUE( | 355 EXPECT_TRUE( |
356 blacklist.LoadGpuBlacklist(date_windows_json, GpuBlacklist::kAllOs)); | 356 blacklist.LoadGpuBlacklist(date_windows_json, GpuBlacklist::kAllOs)); |
357 GpuFeatureFlags flags = blacklist.DetermineGpuFeatureFlags( | 357 GpuFeatureFlags flags = blacklist.DetermineGpuFeatureFlags( |
358 GpuBlacklist::kOsMacosx, os_version.get(), gpu_info()); | 358 GpuBlacklist::kOsMacosx, os_version.get(), gpu_info()); |
359 EXPECT_EQ(flags.flags(), 0u); | 359 EXPECT_EQ(flags.flags(), 0u); |
360 flags = blacklist.DetermineGpuFeatureFlags( | 360 flags = blacklist.DetermineGpuFeatureFlags( |
361 GpuBlacklist::kOsLinux, os_version.get(), gpu_info()); | 361 GpuBlacklist::kOsLinux, os_version.get(), gpu_info()); |
362 EXPECT_EQ(flags.flags(), 0u); | 362 EXPECT_EQ(flags.flags(), 0u); |
363 flags = blacklist.DetermineGpuFeatureFlags( | 363 flags = blacklist.DetermineGpuFeatureFlags( |
(...skipping 13 matching lines...) Expand all Loading... |
377 " \"id\": 1,\n" | 377 " \"id\": 1,\n" |
378 " \"vendor_id\": \"0x10de\",\n" | 378 " \"vendor_id\": \"0x10de\",\n" |
379 " \"device_id\": [\"0x1023\", \"0x0640\"],\n" | 379 " \"device_id\": [\"0x1023\", \"0x0640\"],\n" |
380 " \"blacklist\": [\n" | 380 " \"blacklist\": [\n" |
381 " \"multisampling\"\n" | 381 " \"multisampling\"\n" |
382 " ]\n" | 382 " ]\n" |
383 " }\n" | 383 " }\n" |
384 " ]\n" | 384 " ]\n" |
385 "}"; | 385 "}"; |
386 scoped_ptr<Version> os_version(Version::GetVersionFromString("10.6.4")); | 386 scoped_ptr<Version> os_version(Version::GetVersionFromString("10.6.4")); |
387 GpuBlacklist blacklist("1.0 unknown"); | 387 GpuBlacklist blacklist("1.0"); |
388 | 388 |
389 EXPECT_TRUE(blacklist.LoadGpuBlacklist(devices_json, GpuBlacklist::kAllOs)); | 389 EXPECT_TRUE(blacklist.LoadGpuBlacklist(devices_json, GpuBlacklist::kAllOs)); |
390 GpuFeatureFlags flags = blacklist.DetermineGpuFeatureFlags( | 390 GpuFeatureFlags flags = blacklist.DetermineGpuFeatureFlags( |
391 GpuBlacklist::kOsMacosx, os_version.get(), gpu_info()); | 391 GpuBlacklist::kOsMacosx, os_version.get(), gpu_info()); |
392 EXPECT_EQ(flags.flags(), | 392 EXPECT_EQ(flags.flags(), |
393 static_cast<uint32>(GpuFeatureFlags::kGpuFeatureMultisampling)); | 393 static_cast<uint32>(GpuFeatureFlags::kGpuFeatureMultisampling)); |
394 flags = blacklist.DetermineGpuFeatureFlags( | 394 flags = blacklist.DetermineGpuFeatureFlags( |
395 GpuBlacklist::kOsWin, os_version.get(), gpu_info()); | 395 GpuBlacklist::kOsWin, os_version.get(), gpu_info()); |
396 EXPECT_EQ(flags.flags(), | 396 EXPECT_EQ(flags.flags(), |
397 static_cast<uint32>(GpuFeatureFlags::kGpuFeatureMultisampling)); | 397 static_cast<uint32>(GpuFeatureFlags::kGpuFeatureMultisampling)); |
(...skipping 14 matching lines...) Expand all Loading... |
412 " \"os\": {\n" | 412 " \"os\": {\n" |
413 " \"type\": \"chromeos\"\n" | 413 " \"type\": \"chromeos\"\n" |
414 " },\n" | 414 " },\n" |
415 " \"blacklist\": [\n" | 415 " \"blacklist\": [\n" |
416 " \"webgl\"\n" | 416 " \"webgl\"\n" |
417 " ]\n" | 417 " ]\n" |
418 " }\n" | 418 " }\n" |
419 " ]\n" | 419 " ]\n" |
420 "}"; | 420 "}"; |
421 scoped_ptr<Version> os_version(Version::GetVersionFromString("10.6.4")); | 421 scoped_ptr<Version> os_version(Version::GetVersionFromString("10.6.4")); |
422 GpuBlacklist blacklist("1.0 unknown"); | 422 GpuBlacklist blacklist("1.0"); |
423 | 423 |
424 EXPECT_TRUE(blacklist.LoadGpuBlacklist(devices_json, GpuBlacklist::kAllOs)); | 424 EXPECT_TRUE(blacklist.LoadGpuBlacklist(devices_json, GpuBlacklist::kAllOs)); |
425 GpuFeatureFlags flags = blacklist.DetermineGpuFeatureFlags( | 425 GpuFeatureFlags flags = blacklist.DetermineGpuFeatureFlags( |
426 GpuBlacklist::kOsChromeOS, os_version.get(), gpu_info()); | 426 GpuBlacklist::kOsChromeOS, os_version.get(), gpu_info()); |
427 EXPECT_EQ(flags.flags(), | 427 EXPECT_EQ(flags.flags(), |
428 static_cast<uint32>(GpuFeatureFlags::kGpuFeatureWebgl)); | 428 static_cast<uint32>(GpuFeatureFlags::kGpuFeatureWebgl)); |
429 flags = blacklist.DetermineGpuFeatureFlags( | 429 flags = blacklist.DetermineGpuFeatureFlags( |
430 GpuBlacklist::kOsLinux, os_version.get(), gpu_info()); | 430 GpuBlacklist::kOsLinux, os_version.get(), gpu_info()); |
431 EXPECT_EQ(flags.flags(), 0u); | 431 EXPECT_EQ(flags.flags(), 0u); |
432 } | 432 } |
(...skipping 11 matching lines...) Expand all Loading... |
444 " \"number\": \"10\"\n" | 444 " \"number\": \"10\"\n" |
445 " },\n" | 445 " },\n" |
446 " \"blacklist\": [\n" | 446 " \"blacklist\": [\n" |
447 " \"webgl\"\n" | 447 " \"webgl\"\n" |
448 " ]\n" | 448 " ]\n" |
449 " }\n" | 449 " }\n" |
450 " ]\n" | 450 " ]\n" |
451 "}"; | 451 "}"; |
452 scoped_ptr<Version> os_version(Version::GetVersionFromString("10.6.4")); | 452 scoped_ptr<Version> os_version(Version::GetVersionFromString("10.6.4")); |
453 | 453 |
454 GpuBlacklist blacklist9("9.0 unknown"); | 454 GpuBlacklist blacklist9("9.0"); |
455 EXPECT_TRUE( | 455 EXPECT_TRUE( |
456 blacklist9.LoadGpuBlacklist(browser_version_json, GpuBlacklist::kAllOs)); | 456 blacklist9.LoadGpuBlacklist(browser_version_json, GpuBlacklist::kAllOs)); |
457 GpuFeatureFlags flags = blacklist9.DetermineGpuFeatureFlags( | 457 GpuFeatureFlags flags = blacklist9.DetermineGpuFeatureFlags( |
458 GpuBlacklist::kOsWin, os_version.get(), gpu_info()); | 458 GpuBlacklist::kOsWin, os_version.get(), gpu_info()); |
459 EXPECT_EQ(flags.flags(), 0u); | 459 EXPECT_EQ(flags.flags(), 0u); |
460 | 460 |
461 GpuBlacklist blacklist10("10.0 unknown"); | 461 GpuBlacklist blacklist10("10.0"); |
462 EXPECT_TRUE( | 462 EXPECT_TRUE( |
463 blacklist10.LoadGpuBlacklist(browser_version_json, GpuBlacklist::kAllOs)); | 463 blacklist10.LoadGpuBlacklist(browser_version_json, GpuBlacklist::kAllOs)); |
464 flags = blacklist10.DetermineGpuFeatureFlags( | 464 flags = blacklist10.DetermineGpuFeatureFlags( |
465 GpuBlacklist::kOsWin, os_version.get(), gpu_info()); | 465 GpuBlacklist::kOsWin, os_version.get(), gpu_info()); |
466 EXPECT_EQ(flags.flags(), | 466 EXPECT_EQ(flags.flags(), |
467 static_cast<uint32>(GpuFeatureFlags::kGpuFeatureWebgl)); | 467 static_cast<uint32>(GpuFeatureFlags::kGpuFeatureWebgl)); |
468 } | 468 } |
469 | 469 |
470 TEST_F(GpuBlacklistTest, MalformedVendor) { | 470 TEST_F(GpuBlacklistTest, MalformedVendor) { |
471 // vendor_id is defined as list instead of string. | 471 // vendor_id is defined as list instead of string. |
472 const std::string malformed_vendor_json = | 472 const std::string malformed_vendor_json = |
473 "{\n" | 473 "{\n" |
474 " \"name\": \"gpu blacklist\",\n" | 474 " \"name\": \"gpu blacklist\",\n" |
475 " \"version\": \"0.1\",\n" | 475 " \"version\": \"0.1\",\n" |
476 " \"entries\": [\n" | 476 " \"entries\": [\n" |
477 " {\n" | 477 " {\n" |
478 " \"id\": 1,\n" | 478 " \"id\": 1,\n" |
479 " \"vendor_id\": \"[0x10de]\",\n" | 479 " \"vendor_id\": \"[0x10de]\",\n" |
480 " \"blacklist\": [\n" | 480 " \"blacklist\": [\n" |
481 " \"accelerated_2d_canvas\"\n" | 481 " \"accelerated_2d_canvas\"\n" |
482 " ]\n" | 482 " ]\n" |
483 " }\n" | 483 " }\n" |
484 " ]\n" | 484 " ]\n" |
485 "}"; | 485 "}"; |
486 GpuBlacklist blacklist("1.0 unknown"); | 486 GpuBlacklist blacklist("1.0"); |
487 | 487 |
488 EXPECT_FALSE( | 488 EXPECT_FALSE( |
489 blacklist.LoadGpuBlacklist(malformed_vendor_json, GpuBlacklist::kAllOs)); | 489 blacklist.LoadGpuBlacklist(malformed_vendor_json, GpuBlacklist::kAllOs)); |
490 } | 490 } |
491 | 491 |
492 TEST_F(GpuBlacklistTest, UnknownField) { | 492 TEST_F(GpuBlacklistTest, UnknownField) { |
493 const std::string unknown_field_json = | 493 const std::string unknown_field_json = |
494 "{\n" | 494 "{\n" |
495 " \"name\": \"gpu blacklist\",\n" | 495 " \"name\": \"gpu blacklist\",\n" |
496 " \"version\": \"0.1\",\n" | 496 " \"version\": \"0.1\",\n" |
497 " \"entries\": [\n" | 497 " \"entries\": [\n" |
498 " {\n" | 498 " {\n" |
499 " \"id\": 1,\n" | 499 " \"id\": 1,\n" |
500 " \"unknown_field\": 0,\n" | 500 " \"unknown_field\": 0,\n" |
501 " \"blacklist\": [\n" | 501 " \"blacklist\": [\n" |
502 " \"accelerated_2d_canvas\"\n" | 502 " \"accelerated_2d_canvas\"\n" |
503 " ]\n" | 503 " ]\n" |
504 " },\n" | 504 " },\n" |
505 " {\n" | 505 " {\n" |
506 " \"id\": 2,\n" | 506 " \"id\": 2,\n" |
507 " \"blacklist\": [\n" | 507 " \"blacklist\": [\n" |
508 " \"webgl\"\n" | 508 " \"webgl\"\n" |
509 " ]\n" | 509 " ]\n" |
510 " }\n" | 510 " }\n" |
511 " ]\n" | 511 " ]\n" |
512 "}"; | 512 "}"; |
513 scoped_ptr<Version> os_version(Version::GetVersionFromString("10.6.4")); | 513 scoped_ptr<Version> os_version(Version::GetVersionFromString("10.6.4")); |
514 GpuBlacklist blacklist("1.0 unknown"); | 514 GpuBlacklist blacklist("1.0"); |
515 | 515 |
516 EXPECT_TRUE( | 516 EXPECT_TRUE( |
517 blacklist.LoadGpuBlacklist(unknown_field_json, GpuBlacklist::kAllOs)); | 517 blacklist.LoadGpuBlacklist(unknown_field_json, GpuBlacklist::kAllOs)); |
518 EXPECT_EQ(1u, blacklist.num_entries()); | 518 EXPECT_EQ(1u, blacklist.num_entries()); |
519 EXPECT_TRUE(blacklist.contains_unknown_fields()); | 519 EXPECT_TRUE(blacklist.contains_unknown_fields()); |
520 GpuFeatureFlags flags = blacklist.DetermineGpuFeatureFlags( | 520 GpuFeatureFlags flags = blacklist.DetermineGpuFeatureFlags( |
521 GpuBlacklist::kOsWin, os_version.get(), gpu_info()); | 521 GpuBlacklist::kOsWin, os_version.get(), gpu_info()); |
522 EXPECT_EQ(flags.flags(), | 522 EXPECT_EQ(flags.flags(), |
523 static_cast<uint32>(GpuFeatureFlags::kGpuFeatureWebgl)); | 523 static_cast<uint32>(GpuFeatureFlags::kGpuFeatureWebgl)); |
524 } | 524 } |
(...skipping 24 matching lines...) Expand all Loading... |
549 " },\n" | 549 " },\n" |
550 " {\n" | 550 " {\n" |
551 " \"id\": 3,\n" | 551 " \"id\": 3,\n" |
552 " \"blacklist\": [\n" | 552 " \"blacklist\": [\n" |
553 " \"webgl\"\n" | 553 " \"webgl\"\n" |
554 " ]\n" | 554 " ]\n" |
555 " }\n" | 555 " }\n" |
556 " ]\n" | 556 " ]\n" |
557 "}"; | 557 "}"; |
558 scoped_ptr<Version> os_version(Version::GetVersionFromString("10.6.4")); | 558 scoped_ptr<Version> os_version(Version::GetVersionFromString("10.6.4")); |
559 GpuBlacklist blacklist("1.0 unknown"); | 559 GpuBlacklist blacklist("1.0"); |
560 | 560 |
561 EXPECT_TRUE(blacklist.LoadGpuBlacklist(unknown_exception_field_json, | 561 EXPECT_TRUE(blacklist.LoadGpuBlacklist(unknown_exception_field_json, |
562 GpuBlacklist::kAllOs)); | 562 GpuBlacklist::kAllOs)); |
563 EXPECT_EQ(1u, blacklist.num_entries()); | 563 EXPECT_EQ(1u, blacklist.num_entries()); |
564 EXPECT_TRUE(blacklist.contains_unknown_fields()); | 564 EXPECT_TRUE(blacklist.contains_unknown_fields()); |
565 GpuFeatureFlags flags = blacklist.DetermineGpuFeatureFlags( | 565 GpuFeatureFlags flags = blacklist.DetermineGpuFeatureFlags( |
566 GpuBlacklist::kOsWin, os_version.get(), gpu_info()); | 566 GpuBlacklist::kOsWin, os_version.get(), gpu_info()); |
567 EXPECT_EQ(flags.flags(), | 567 EXPECT_EQ(flags.flags(), |
568 static_cast<uint32>(GpuFeatureFlags::kGpuFeatureWebgl)); | 568 static_cast<uint32>(GpuFeatureFlags::kGpuFeatureWebgl)); |
569 } | 569 } |
570 | 570 |
571 TEST_F(GpuBlacklistTest, UnknownFeature) { | 571 TEST_F(GpuBlacklistTest, UnknownFeature) { |
572 const std::string unknown_feature_json = | 572 const std::string unknown_feature_json = |
573 "{\n" | 573 "{\n" |
574 " \"name\": \"gpu blacklist\",\n" | 574 " \"name\": \"gpu blacklist\",\n" |
575 " \"version\": \"0.1\",\n" | 575 " \"version\": \"0.1\",\n" |
576 " \"entries\": [\n" | 576 " \"entries\": [\n" |
577 " {\n" | 577 " {\n" |
578 " \"id\": 1,\n" | 578 " \"id\": 1,\n" |
579 " \"blacklist\": [\n" | 579 " \"blacklist\": [\n" |
580 " \"accelerated_something\",\n" | 580 " \"accelerated_something\",\n" |
581 " \"webgl\"\n" | 581 " \"webgl\"\n" |
582 " ]\n" | 582 " ]\n" |
583 " }\n" | 583 " }\n" |
584 " ]\n" | 584 " ]\n" |
585 "}"; | 585 "}"; |
586 scoped_ptr<Version> os_version(Version::GetVersionFromString("10.6.4")); | 586 scoped_ptr<Version> os_version(Version::GetVersionFromString("10.6.4")); |
587 GpuBlacklist blacklist("1.0 unknown"); | 587 GpuBlacklist blacklist("1.0"); |
588 | 588 |
589 EXPECT_TRUE( | 589 EXPECT_TRUE( |
590 blacklist.LoadGpuBlacklist(unknown_feature_json, GpuBlacklist::kAllOs)); | 590 blacklist.LoadGpuBlacklist(unknown_feature_json, GpuBlacklist::kAllOs)); |
591 EXPECT_EQ(1u, blacklist.num_entries()); | 591 EXPECT_EQ(1u, blacklist.num_entries()); |
592 EXPECT_TRUE(blacklist.contains_unknown_fields()); | 592 EXPECT_TRUE(blacklist.contains_unknown_fields()); |
593 GpuFeatureFlags flags = blacklist.DetermineGpuFeatureFlags( | 593 GpuFeatureFlags flags = blacklist.DetermineGpuFeatureFlags( |
594 GpuBlacklist::kOsWin, os_version.get(), gpu_info()); | 594 GpuBlacklist::kOsWin, os_version.get(), gpu_info()); |
595 EXPECT_EQ(flags.flags(), | 595 EXPECT_EQ(flags.flags(), |
596 static_cast<uint32>(GpuFeatureFlags::kGpuFeatureWebgl)); | 596 static_cast<uint32>(GpuFeatureFlags::kGpuFeatureWebgl)); |
597 } | 597 } |
598 | 598 |
599 TEST_F(GpuBlacklistTest, BrowserChannels) { | |
600 const std::string browser_channels_json = | |
601 "{\n" | |
602 " \"name\": \"gpu blacklist\",\n" | |
603 " \"version\": \"0.1\",\n" | |
604 " \"entries\": [\n" | |
605 " {\n" | |
606 " \"id\": 1,\n" | |
607 " \"browser_channels\": [\n" | |
608 " \"canary\"" | |
609 " ],\n" | |
610 " \"blacklist\": [\n" | |
611 " \"webgl\"\n" | |
612 " ]\n" | |
613 " }\n" | |
614 " ]\n" | |
615 "}"; | |
616 scoped_ptr<Version> os_version(Version::GetVersionFromString("10.6.4")); | |
617 | |
618 GpuBlacklist blacklist_canary("1.0 canary"); | |
619 EXPECT_TRUE(blacklist_canary.LoadGpuBlacklist(browser_channels_json, | |
620 GpuBlacklist::kAllOs)); | |
621 GpuFeatureFlags flags_canary = blacklist_canary.DetermineGpuFeatureFlags( | |
622 GpuBlacklist::kOsWin, os_version.get(), gpu_info()); | |
623 EXPECT_EQ(flags_canary.flags(), | |
624 static_cast<uint32>(GpuFeatureFlags::kGpuFeatureWebgl)); | |
625 | |
626 GpuBlacklist blacklist_dev("1.0 dev"); | |
627 EXPECT_TRUE(blacklist_dev.LoadGpuBlacklist(browser_channels_json, | |
628 GpuBlacklist::kAllOs)); | |
629 GpuFeatureFlags flags_dev = blacklist_dev.DetermineGpuFeatureFlags( | |
630 GpuBlacklist::kOsWin, os_version.get(), gpu_info()); | |
631 EXPECT_EQ(flags_dev.flags(), 0u); | |
632 } | |
633 | |
634 TEST_F(GpuBlacklistTest, BrowserChannelsInException) { | |
635 const std::string browser_channels_json = | |
636 "{\n" | |
637 " \"name\": \"gpu blacklist\",\n" | |
638 " \"version\": \"0.1\",\n" | |
639 " \"entries\": [\n" | |
640 " {\n" | |
641 " \"id\": 1,\n" | |
642 " \"exceptions\": [\n" | |
643 " {\n" | |
644 " \"browser_channels\": [\n" | |
645 " \"canary\"" | |
646 " ]\n" | |
647 " }\n" | |
648 " ],\n" | |
649 " \"blacklist\": [\n" | |
650 " \"webgl\"\n" | |
651 " ]\n" | |
652 " }\n" | |
653 " ]\n" | |
654 "}"; | |
655 scoped_ptr<Version> os_version(Version::GetVersionFromString("10.6.4")); | |
656 | |
657 GpuBlacklist blacklist_canary("1.0 canary"); | |
658 EXPECT_TRUE(blacklist_canary.LoadGpuBlacklist(browser_channels_json, | |
659 GpuBlacklist::kAllOs)); | |
660 GpuFeatureFlags flags_canary = blacklist_canary.DetermineGpuFeatureFlags( | |
661 GpuBlacklist::kOsWin, os_version.get(), gpu_info()); | |
662 EXPECT_EQ(flags_canary.flags(), 0u); | |
663 | |
664 GpuBlacklist blacklist_dev("1.0 dev"); | |
665 EXPECT_TRUE(blacklist_dev.LoadGpuBlacklist(browser_channels_json, | |
666 GpuBlacklist::kAllOs)); | |
667 GpuFeatureFlags flags_dev = blacklist_dev.DetermineGpuFeatureFlags( | |
668 GpuBlacklist::kOsWin, os_version.get(), gpu_info()); | |
669 EXPECT_EQ(flags_dev.flags(), | |
670 static_cast<uint32>(GpuFeatureFlags::kGpuFeatureWebgl)); | |
671 } | |
672 | |
673 TEST_F(GpuBlacklistTest, GlVendor) { | 599 TEST_F(GpuBlacklistTest, GlVendor) { |
674 const std::string gl_vendor_json = | 600 const std::string gl_vendor_json = |
675 "{\n" | 601 "{\n" |
676 " \"name\": \"gpu blacklist\",\n" | 602 " \"name\": \"gpu blacklist\",\n" |
677 " \"version\": \"0.1\",\n" | 603 " \"version\": \"0.1\",\n" |
678 " \"entries\": [\n" | 604 " \"entries\": [\n" |
679 " {\n" | 605 " {\n" |
680 " \"id\": 1,\n" | 606 " \"id\": 1,\n" |
681 " \"gl_vendor\": {\n" | 607 " \"gl_vendor\": {\n" |
682 " \"op\": \"beginwith\",\n" | 608 " \"op\": \"beginwith\",\n" |
683 " \"value\": \"NVIDIA\"\n" | 609 " \"value\": \"NVIDIA\"\n" |
684 " },\n" | 610 " },\n" |
685 " \"blacklist\": [\n" | 611 " \"blacklist\": [\n" |
686 " \"webgl\"\n" | 612 " \"webgl\"\n" |
687 " ]\n" | 613 " ]\n" |
688 " }\n" | 614 " }\n" |
689 " ]\n" | 615 " ]\n" |
690 "}"; | 616 "}"; |
691 scoped_ptr<Version> os_version(Version::GetVersionFromString("10.6.4")); | 617 scoped_ptr<Version> os_version(Version::GetVersionFromString("10.6.4")); |
692 | 618 |
693 GpuBlacklist blacklist("1.0 unknown"); | 619 GpuBlacklist blacklist("1.0"); |
694 EXPECT_TRUE( | 620 EXPECT_TRUE( |
695 blacklist.LoadGpuBlacklist(gl_vendor_json, GpuBlacklist::kAllOs)); | 621 blacklist.LoadGpuBlacklist(gl_vendor_json, GpuBlacklist::kAllOs)); |
696 GpuFeatureFlags flags = blacklist.DetermineGpuFeatureFlags( | 622 GpuFeatureFlags flags = blacklist.DetermineGpuFeatureFlags( |
697 GpuBlacklist::kOsWin, os_version.get(), gpu_info()); | 623 GpuBlacklist::kOsWin, os_version.get(), gpu_info()); |
698 EXPECT_EQ(flags.flags(), | 624 EXPECT_EQ(flags.flags(), |
699 static_cast<uint32>(GpuFeatureFlags::kGpuFeatureWebgl)); | 625 static_cast<uint32>(GpuFeatureFlags::kGpuFeatureWebgl)); |
700 } | 626 } |
701 | 627 |
702 TEST_F(GpuBlacklistTest, GlRenderer) { | 628 TEST_F(GpuBlacklistTest, GlRenderer) { |
703 const std::string gl_renderer_json = | 629 const std::string gl_renderer_json = |
704 "{\n" | 630 "{\n" |
705 " \"name\": \"gpu blacklist\",\n" | 631 " \"name\": \"gpu blacklist\",\n" |
706 " \"version\": \"0.1\",\n" | 632 " \"version\": \"0.1\",\n" |
707 " \"entries\": [\n" | 633 " \"entries\": [\n" |
708 " {\n" | 634 " {\n" |
709 " \"id\": 1,\n" | 635 " \"id\": 1,\n" |
710 " \"gl_renderer\": {\n" | 636 " \"gl_renderer\": {\n" |
711 " \"op\": \"contains\",\n" | 637 " \"op\": \"contains\",\n" |
712 " \"value\": \"GeForce\"\n" | 638 " \"value\": \"GeForce\"\n" |
713 " },\n" | 639 " },\n" |
714 " \"blacklist\": [\n" | 640 " \"blacklist\": [\n" |
715 " \"webgl\"\n" | 641 " \"webgl\"\n" |
716 " ]\n" | 642 " ]\n" |
717 " }\n" | 643 " }\n" |
718 " ]\n" | 644 " ]\n" |
719 "}"; | 645 "}"; |
720 scoped_ptr<Version> os_version(Version::GetVersionFromString("10.6.4")); | 646 scoped_ptr<Version> os_version(Version::GetVersionFromString("10.6.4")); |
721 | 647 |
722 GpuBlacklist blacklist("1.0 unknown"); | 648 GpuBlacklist blacklist("1.0"); |
723 EXPECT_TRUE( | 649 EXPECT_TRUE( |
724 blacklist.LoadGpuBlacklist(gl_renderer_json, GpuBlacklist::kAllOs)); | 650 blacklist.LoadGpuBlacklist(gl_renderer_json, GpuBlacklist::kAllOs)); |
725 GpuFeatureFlags flags = blacklist.DetermineGpuFeatureFlags( | 651 GpuFeatureFlags flags = blacklist.DetermineGpuFeatureFlags( |
726 GpuBlacklist::kOsWin, os_version.get(), gpu_info()); | 652 GpuBlacklist::kOsWin, os_version.get(), gpu_info()); |
727 EXPECT_EQ(flags.flags(), | 653 EXPECT_EQ(flags.flags(), |
728 static_cast<uint32>(GpuFeatureFlags::kGpuFeatureWebgl)); | 654 static_cast<uint32>(GpuFeatureFlags::kGpuFeatureWebgl)); |
729 } | 655 } |
730 | 656 |
731 TEST_F(GpuBlacklistTest, DisabledEntry) { | 657 TEST_F(GpuBlacklistTest, DisabledEntry) { |
732 const std::string disabled_json = | 658 const std::string disabled_json = |
733 "{\n" | 659 "{\n" |
734 " \"name\": \"gpu blacklist\",\n" | 660 " \"name\": \"gpu blacklist\",\n" |
735 " \"version\": \"0.1\",\n" | 661 " \"version\": \"0.1\",\n" |
736 " \"entries\": [\n" | 662 " \"entries\": [\n" |
737 " {\n" | 663 " {\n" |
738 " \"id\": 1,\n" | 664 " \"id\": 1,\n" |
739 " \"disabled\": true,\n" | 665 " \"disabled\": true,\n" |
740 " \"blacklist\": [\n" | 666 " \"blacklist\": [\n" |
741 " \"webgl\"\n" | 667 " \"webgl\"\n" |
742 " ]\n" | 668 " ]\n" |
743 " }\n" | 669 " }\n" |
744 " ]\n" | 670 " ]\n" |
745 "}"; | 671 "}"; |
746 scoped_ptr<Version> os_version(Version::GetVersionFromString("10.6.4")); | 672 scoped_ptr<Version> os_version(Version::GetVersionFromString("10.6.4")); |
747 | 673 |
748 GpuBlacklist blacklist("1.0 unknown"); | 674 GpuBlacklist blacklist("1.0"); |
749 EXPECT_TRUE( | 675 EXPECT_TRUE( |
750 blacklist.LoadGpuBlacklist(disabled_json, GpuBlacklist::kAllOs)); | 676 blacklist.LoadGpuBlacklist(disabled_json, GpuBlacklist::kAllOs)); |
751 GpuFeatureFlags flags = blacklist.DetermineGpuFeatureFlags( | 677 GpuFeatureFlags flags = blacklist.DetermineGpuFeatureFlags( |
752 GpuBlacklist::kOsWin, os_version.get(), gpu_info()); | 678 GpuBlacklist::kOsWin, os_version.get(), gpu_info()); |
753 EXPECT_EQ(flags.flags(), 0u); | 679 EXPECT_EQ(flags.flags(), 0u); |
754 std::vector<uint32> flag_entries; | 680 std::vector<uint32> flag_entries; |
755 bool disabled = false; | 681 bool disabled = false; |
756 blacklist.GetGpuFeatureFlagEntries( | 682 blacklist.GetGpuFeatureFlagEntries( |
757 GpuFeatureFlags::kGpuFeatureAll, flag_entries, disabled); | 683 GpuFeatureFlags::kGpuFeatureAll, flag_entries, disabled); |
758 EXPECT_EQ(flag_entries.size(), 0u); | 684 EXPECT_EQ(flag_entries.size(), 0u); |
759 disabled = true; | 685 disabled = true; |
760 blacklist.GetGpuFeatureFlagEntries( | 686 blacklist.GetGpuFeatureFlagEntries( |
761 GpuFeatureFlags::kGpuFeatureAll, flag_entries, disabled); | 687 GpuFeatureFlags::kGpuFeatureAll, flag_entries, disabled); |
762 EXPECT_EQ(flag_entries.size(), 1u); | 688 EXPECT_EQ(flag_entries.size(), 1u); |
763 } | 689 } |
764 | 690 |
OLD | NEW |