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

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

Issue 2737983002: WebGL feature will only enabled when accelerated (Closed)
Patch Set: Removed change to requirements_info.cc Created 3 years, 9 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
1 // Copyright (c) 2013 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 <stddef.h> 5 #include <stddef.h>
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/macros.h" 8 #include "base/macros.h"
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "base/run_loop.h" 10 #include "base/run_loop.h"
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 // If a feature is allowed in preliminary step (browser side), but 143 // If a feature is allowed in preliminary step (browser side), but
144 // disabled when GPU process launches and collects full GPU info, 144 // disabled when GPU process launches and collects full GPU info,
145 // it's too late to let renderer know, so we basically block all GPU 145 // it's too late to let renderer know, so we basically block all GPU
146 // access, to be on the safe side. 146 // access, to be on the safe side.
147 ScopedGpuDataManagerImplPrivate manager; 147 ScopedGpuDataManagerImplPrivate manager;
148 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount()); 148 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount());
149 std::string reason; 149 std::string reason;
150 EXPECT_TRUE(manager->GpuAccessAllowed(&reason)); 150 EXPECT_TRUE(manager->GpuAccessAllowed(&reason));
151 EXPECT_TRUE(reason.empty()); 151 EXPECT_TRUE(reason.empty());
152 152
153 const std::string blacklist_json = LONG_STRING_CONST( 153 const std::string blacklist_json = LONG_STRING_CONST({
154 { 154 "name" : "gpu blacklist",
155 "name": "gpu blacklist", 155 "version" : "0.1",
156 "version": "0.1", 156 "entries" : [
157 "entries": [ 157 {"id" : 1, "features" : ["accelerated_webgl"]}, {
Zhenyao Mo 2017/03/10 22:01:07 Can we not take the clang-format change here? It l
158 { 158 "id" : 2,
159 "id": 1, 159 "gl_renderer" : ".*GeForce.*",
160 "features": [ 160 "features" : ["accelerated_2d_canvas"]
161 "webgl"
162 ]
163 },
164 {
165 "id": 2,
166 "gl_renderer": ".*GeForce.*",
167 "features": [
168 "accelerated_2d_canvas"
169 ]
170 }
171 ]
172 } 161 }
173 ); 162 ]
163 });
174 164
175 gpu::GPUInfo gpu_info; 165 gpu::GPUInfo gpu_info;
176 gpu_info.gpu.vendor_id = 0x10de; 166 gpu_info.gpu.vendor_id = 0x10de;
177 gpu_info.gpu.device_id = 0x0640; 167 gpu_info.gpu.device_id = 0x0640;
178 manager->InitializeForTesting(blacklist_json, gpu_info); 168 manager->InitializeForTesting(blacklist_json, gpu_info);
179 169
180 EXPECT_TRUE(manager->GpuAccessAllowed(&reason)); 170 EXPECT_TRUE(manager->GpuAccessAllowed(&reason));
181 EXPECT_TRUE(reason.empty()); 171 EXPECT_TRUE(reason.empty());
182 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount()); 172 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount());
183 EXPECT_TRUE(manager->IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_WEBGL)); 173 EXPECT_TRUE(
174 manager->IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_ACCELERATED_WEBGL));
184 175
185 gpu_info.gl_vendor = "NVIDIA"; 176 gpu_info.gl_vendor = "NVIDIA";
186 gpu_info.gl_renderer = "NVIDIA GeForce GT 120"; 177 gpu_info.gl_renderer = "NVIDIA GeForce GT 120";
187 manager->UpdateGpuInfo(gpu_info); 178 manager->UpdateGpuInfo(gpu_info);
188 EXPECT_FALSE(manager->GpuAccessAllowed(&reason)); 179 EXPECT_FALSE(manager->GpuAccessAllowed(&reason));
189 EXPECT_FALSE(reason.empty()); 180 EXPECT_FALSE(reason.empty());
190 EXPECT_EQ(2u, manager->GetBlacklistedFeatureCount()); 181 EXPECT_EQ(2u, manager->GetBlacklistedFeatureCount());
191 EXPECT_TRUE(manager->IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_WEBGL)); 182 EXPECT_TRUE(
183 manager->IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_ACCELERATED_WEBGL));
192 EXPECT_TRUE(manager->IsFeatureBlacklisted( 184 EXPECT_TRUE(manager->IsFeatureBlacklisted(
193 gpu::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS)); 185 gpu::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS));
194 } 186 }
195 187
196 TEST_F(GpuDataManagerImplPrivateTest, GpuSideBlacklistingWebGL) { 188 TEST_F(GpuDataManagerImplPrivateTest, GpuSideBlacklistingWebGL) {
197 // If a feature is allowed in preliminary step (browser side), but 189 // If a feature is allowed in preliminary step (browser side), but
198 // disabled when GPU process launches and collects full GPU info, 190 // disabled when GPU process launches and collects full GPU info,
199 // it's too late to let renderer know, so we basically block all GPU 191 // it's too late to let renderer know, so we basically block all GPU
200 // access, to be on the safe side. 192 // access, to be on the safe side.
201 ScopedGpuDataManagerImplPrivate manager; 193 ScopedGpuDataManagerImplPrivate manager;
202 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount()); 194 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount());
203 std::string reason; 195 std::string reason;
204 EXPECT_TRUE(manager->GpuAccessAllowed(&reason)); 196 EXPECT_TRUE(manager->GpuAccessAllowed(&reason));
205 EXPECT_TRUE(reason.empty()); 197 EXPECT_TRUE(reason.empty());
206 198
207 const std::string blacklist_json = LONG_STRING_CONST( 199 const std::string blacklist_json = LONG_STRING_CONST({
208 { 200 "name" : "gpu blacklist",
209 "name": "gpu blacklist", 201 "version" : "0.1",
210 "version": "0.1", 202 "entries" : [
211 "entries": [ 203 {"id" : 1, "features" : ["accelerated_2d_canvas"]}, {
Zhenyao Mo 2017/03/10 22:01:07 Same here. The formatting doesn't make sense here.
212 { 204 "id" : 2,
213 "id": 1, 205 "gl_renderer" : ".*GeForce.*",
214 "features": [ 206 "features" : [ "accelerated_webgl", "webgl2" ]
215 "accelerated_2d_canvas"
216 ]
217 },
218 {
219 "id": 2,
220 "gl_renderer": ".*GeForce.*",
221 "features": [
222 "webgl",
223 "webgl2"
224 ]
225 }
226 ]
227 } 207 }
228 ); 208 ]
209 });
229 210
230 gpu::GPUInfo gpu_info; 211 gpu::GPUInfo gpu_info;
231 gpu_info.gpu.vendor_id = 0x10de; 212 gpu_info.gpu.vendor_id = 0x10de;
232 gpu_info.gpu.device_id = 0x0640; 213 gpu_info.gpu.device_id = 0x0640;
233 manager->InitializeForTesting(blacklist_json, gpu_info); 214 manager->InitializeForTesting(blacklist_json, gpu_info);
234 215
235 EXPECT_TRUE(manager->GpuAccessAllowed(&reason)); 216 EXPECT_TRUE(manager->GpuAccessAllowed(&reason));
236 EXPECT_TRUE(reason.empty()); 217 EXPECT_TRUE(reason.empty());
237 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount()); 218 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount());
238 EXPECT_TRUE(manager->IsFeatureBlacklisted( 219 EXPECT_TRUE(manager->IsFeatureBlacklisted(
239 gpu::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS)); 220 gpu::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS));
240 221
241 gpu_info.gl_vendor = "NVIDIA"; 222 gpu_info.gl_vendor = "NVIDIA";
242 gpu_info.gl_renderer = "NVIDIA GeForce GT 120"; 223 gpu_info.gl_renderer = "NVIDIA GeForce GT 120";
243 manager->UpdateGpuInfo(gpu_info); 224 manager->UpdateGpuInfo(gpu_info);
244 EXPECT_TRUE(manager->GpuAccessAllowed(&reason)); 225 EXPECT_TRUE(manager->GpuAccessAllowed(&reason));
245 EXPECT_TRUE(reason.empty()); 226 EXPECT_TRUE(reason.empty());
246 EXPECT_EQ(3u, manager->GetBlacklistedFeatureCount()); 227 EXPECT_EQ(3u, manager->GetBlacklistedFeatureCount());
247 EXPECT_TRUE(manager->IsFeatureBlacklisted( 228 EXPECT_TRUE(manager->IsFeatureBlacklisted(
248 gpu::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS)); 229 gpu::GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS));
249 EXPECT_TRUE(manager->IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_WEBGL)); 230 EXPECT_TRUE(
231 manager->IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_ACCELERATED_WEBGL));
250 EXPECT_TRUE(manager->IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_WEBGL2)); 232 EXPECT_TRUE(manager->IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_WEBGL2));
251 } 233 }
252 234
253 TEST_F(GpuDataManagerImplPrivateTest, GpuSideExceptions) { 235 TEST_F(GpuDataManagerImplPrivateTest, GpuSideExceptions) {
254 ScopedGpuDataManagerImplPrivate manager; 236 ScopedGpuDataManagerImplPrivate manager;
255 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount()); 237 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount());
256 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); 238 EXPECT_TRUE(manager->GpuAccessAllowed(NULL));
257 239
258 const std::string blacklist_json = LONG_STRING_CONST( 240 const std::string blacklist_json = LONG_STRING_CONST({
259 { 241 "name" : "gpu blacklist",
260 "name": "gpu blacklist", 242 "version" : "0.1",
261 "version": "0.1", 243 "entries" : [ {
262 "entries": [ 244 "id" : 1,
263 { 245 "exceptions" : [ {"gl_renderer" : ".*GeForce.*"} ],
264 "id": 1, 246 "features" : ["accelerated_webgl"]
265 "exceptions": [ 247 } ]
266 { 248 });
267 "gl_renderer": ".*GeForce.*"
268 }
269 ],
270 "features": [
271 "webgl"
272 ]
273 }
274 ]
275 }
276 );
277 gpu::GPUInfo gpu_info; 249 gpu::GPUInfo gpu_info;
278 gpu_info.gpu.vendor_id = 0x10de; 250 gpu_info.gpu.vendor_id = 0x10de;
279 gpu_info.gpu.device_id = 0x0640; 251 gpu_info.gpu.device_id = 0x0640;
280 manager->InitializeForTesting(blacklist_json, gpu_info); 252 manager->InitializeForTesting(blacklist_json, gpu_info);
281 253
282 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); 254 EXPECT_TRUE(manager->GpuAccessAllowed(NULL));
283 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount()); 255 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount());
284 256
285 // Now assume gpu process launches and full GPU info is collected. 257 // Now assume gpu process launches and full GPU info is collected.
286 gpu_info.gl_renderer = "NVIDIA GeForce GT 120"; 258 gpu_info.gl_renderer = "NVIDIA GeForce GT 120";
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after
548 #if defined(OS_LINUX) 520 #if defined(OS_LINUX)
549 TEST_F(GpuDataManagerImplPrivateTest, SetGLStrings) { 521 TEST_F(GpuDataManagerImplPrivateTest, SetGLStrings) {
550 const char* kGLVendorMesa = "Tungsten Graphics, Inc"; 522 const char* kGLVendorMesa = "Tungsten Graphics, Inc";
551 const char* kGLRendererMesa = "Mesa DRI Intel(R) G41"; 523 const char* kGLRendererMesa = "Mesa DRI Intel(R) G41";
552 const char* kGLVersionMesa801 = "2.1 Mesa 8.0.1-DEVEL"; 524 const char* kGLVersionMesa801 = "2.1 Mesa 8.0.1-DEVEL";
553 525
554 ScopedGpuDataManagerImplPrivate manager; 526 ScopedGpuDataManagerImplPrivate manager;
555 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount()); 527 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount());
556 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); 528 EXPECT_TRUE(manager->GpuAccessAllowed(NULL));
557 529
558 const std::string blacklist_json = LONG_STRING_CONST( 530 const std::string blacklist_json = LONG_STRING_CONST({
559 { 531 "name" : "gpu blacklist",
560 "name": "gpu blacklist", 532 "version" : "0.1",
561 "version": "0.1", 533 "entries" : [ {
562 "entries": [ 534 "id" : 1,
563 { 535 "vendor_id" : "0x8086",
564 "id": 1, 536 "exceptions" : [ {
565 "vendor_id": "0x8086", 537 "device_id" : ["0x0042"],
566 "exceptions": [ 538 "driver_version" : {"op" : ">=", "value" : "8.0.2"}
567 { 539 } ],
568 "device_id": ["0x0042"], 540 "features" : ["accelerated_webgl"]
569 "driver_version": { 541 } ]
570 "op": ">=", 542 });
571 "value": "8.0.2"
572 }
573 }
574 ],
575 "features": [
576 "webgl"
577 ]
578 }
579 ]
580 }
581 );
582 gpu::GPUInfo gpu_info; 543 gpu::GPUInfo gpu_info;
583 gpu_info.gpu.vendor_id = 0x8086; 544 gpu_info.gpu.vendor_id = 0x8086;
584 gpu_info.gpu.device_id = 0x0042; 545 gpu_info.gpu.device_id = 0x0042;
585 manager->InitializeForTesting(blacklist_json, gpu_info); 546 manager->InitializeForTesting(blacklist_json, gpu_info);
586 547
587 // Not enough GPUInfo. 548 // Not enough GPUInfo.
588 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); 549 EXPECT_TRUE(manager->GpuAccessAllowed(NULL));
589 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount()); 550 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount());
590 551
591 // Now assume browser gets GL strings from local state. 552 // Now assume browser gets GL strings from local state.
592 // The entry applies, blacklist more features than from the preliminary step. 553 // The entry applies, blacklist more features than from the preliminary step.
593 // However, GPU process is not blocked because this is all browser side and 554 // However, GPU process is not blocked because this is all browser side and
594 // happens before renderer launching. 555 // happens before renderer launching.
595 manager->SetGLStrings(kGLVendorMesa, kGLRendererMesa, kGLVersionMesa801); 556 manager->SetGLStrings(kGLVendorMesa, kGLRendererMesa, kGLVersionMesa801);
596 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); 557 EXPECT_TRUE(manager->GpuAccessAllowed(NULL));
597 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount()); 558 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount());
598 EXPECT_TRUE(manager->IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_WEBGL)); 559 EXPECT_TRUE(
560 manager->IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_ACCELERATED_WEBGL));
599 } 561 }
600 562
601 TEST_F(GpuDataManagerImplPrivateTest, SetGLStringsNoEffects) { 563 TEST_F(GpuDataManagerImplPrivateTest, SetGLStringsNoEffects) {
602 const char* kGLVendorMesa = "Tungsten Graphics, Inc"; 564 const char* kGLVendorMesa = "Tungsten Graphics, Inc";
603 const char* kGLRendererMesa = "Mesa DRI Intel(R) G41"; 565 const char* kGLRendererMesa = "Mesa DRI Intel(R) G41";
604 const char* kGLVersionMesa801 = "2.1 Mesa 8.0.1-DEVEL"; 566 const char* kGLVersionMesa801 = "2.1 Mesa 8.0.1-DEVEL";
605 const char* kGLVersionMesa802 = "2.1 Mesa 8.0.2-DEVEL"; 567 const char* kGLVersionMesa802 = "2.1 Mesa 8.0.2-DEVEL";
606 568
607 ScopedGpuDataManagerImplPrivate manager; 569 ScopedGpuDataManagerImplPrivate manager;
608 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount()); 570 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount());
609 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); 571 EXPECT_TRUE(manager->GpuAccessAllowed(NULL));
610 572
611 const std::string blacklist_json = LONG_STRING_CONST( 573 const std::string blacklist_json = LONG_STRING_CONST({
612 { 574 "name" : "gpu blacklist",
613 "name": "gpu blacklist", 575 "version" : "0.1",
614 "version": "0.1", 576 "entries" : [ {
615 "entries": [ 577 "id" : 1,
616 { 578 "vendor_id" : "0x8086",
617 "id": 1, 579 "exceptions" : [ {
618 "vendor_id": "0x8086", 580 "device_id" : ["0x0042"],
619 "exceptions": [ 581 "driver_version" : {"op" : ">=", "value" : "8.0.2"}
620 { 582 } ],
621 "device_id": ["0x0042"], 583 "features" : ["accelerated_webgl"]
622 "driver_version": { 584 } ]
623 "op": ">=", 585 });
624 "value": "8.0.2"
625 }
626 }
627 ],
628 "features": [
629 "webgl"
630 ]
631 }
632 ]
633 }
634 );
635 gpu::GPUInfo gpu_info; 586 gpu::GPUInfo gpu_info;
636 gpu_info.gpu.vendor_id = 0x8086; 587 gpu_info.gpu.vendor_id = 0x8086;
637 gpu_info.gpu.device_id = 0x0042; 588 gpu_info.gpu.device_id = 0x0042;
638 gpu_info.gl_vendor = kGLVendorMesa; 589 gpu_info.gl_vendor = kGLVendorMesa;
639 gpu_info.gl_renderer = kGLRendererMesa; 590 gpu_info.gl_renderer = kGLRendererMesa;
640 gpu_info.gl_version = kGLVersionMesa801; 591 gpu_info.gl_version = kGLVersionMesa801;
641 gpu_info.driver_vendor = "Mesa"; 592 gpu_info.driver_vendor = "Mesa";
642 gpu_info.driver_version = "8.0.1"; 593 gpu_info.driver_version = "8.0.1";
643 manager->InitializeForTesting(blacklist_json, gpu_info); 594 manager->InitializeForTesting(blacklist_json, gpu_info);
644 595
645 // Full GPUInfo, the entry applies. 596 // Full GPUInfo, the entry applies.
646 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); 597 EXPECT_TRUE(manager->GpuAccessAllowed(NULL));
647 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount()); 598 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount());
648 EXPECT_TRUE(manager->IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_WEBGL)); 599 EXPECT_TRUE(
600 manager->IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_ACCELERATED_WEBGL));
649 601
650 // Now assume browser gets GL strings from local state. 602 // Now assume browser gets GL strings from local state.
651 // SetGLStrings() has no effects because GPUInfo already got these strings. 603 // SetGLStrings() has no effects because GPUInfo already got these strings.
652 // (Otherwise the entry should not apply.) 604 // (Otherwise the entry should not apply.)
653 manager->SetGLStrings(kGLVendorMesa, kGLRendererMesa, kGLVersionMesa802); 605 manager->SetGLStrings(kGLVendorMesa, kGLRendererMesa, kGLVersionMesa802);
654 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); 606 EXPECT_TRUE(manager->GpuAccessAllowed(NULL));
655 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount()); 607 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount());
656 EXPECT_TRUE(manager->IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_WEBGL)); 608 EXPECT_TRUE(
609 manager->IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_ACCELERATED_WEBGL));
657 } 610 }
658 611
659 TEST_F(GpuDataManagerImplPrivateTest, SetGLStringsDefered) { 612 TEST_F(GpuDataManagerImplPrivateTest, SetGLStringsDefered) {
660 const char* kGLVendorMesa = "Tungsten Graphics, Inc"; 613 const char* kGLVendorMesa = "Tungsten Graphics, Inc";
661 const char* kGLRendererMesa = "Mesa DRI Intel(R) G41"; 614 const char* kGLRendererMesa = "Mesa DRI Intel(R) G41";
662 const char* kGLVersionMesa801 = "2.1 Mesa 8.0.1-DEVEL"; 615 const char* kGLVersionMesa801 = "2.1 Mesa 8.0.1-DEVEL";
663 616
664 ScopedGpuDataManagerImplPrivate manager; 617 ScopedGpuDataManagerImplPrivate manager;
665 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount()); 618 EXPECT_EQ(0u, manager->GetBlacklistedFeatureCount());
666 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); 619 EXPECT_TRUE(manager->GpuAccessAllowed(NULL));
667 620
668 const std::string blacklist_json = LONG_STRING_CONST({ 621 const std::string blacklist_json = LONG_STRING_CONST({
669 "name" : "gpu blacklist", 622 "name" : "gpu blacklist",
670 "version" : "0.1", 623 "version" : "0.1",
671 "entries" : [ { 624 "entries" : [ {
672 "id" : 1, 625 "id" : 1,
673 "vendor_id" : "0x8086", 626 "vendor_id" : "0x8086",
674 "device_id" : ["0x0042"], 627 "device_id" : ["0x0042"],
675 "driver_vendor" : "Mesa", 628 "driver_vendor" : "Mesa",
676 "driver_version" : {"op" : ">=", "value" : "8.0.0"}, 629 "driver_version" : {"op" : ">=", "value" : "8.0.0"},
677 "features" : ["webgl"] 630 "features" : ["accelerated_webgl"]
678 } ] 631 } ]
679 }); 632 });
680 633
681 // Check that it is allowed to call SetGLStrings before Initialize. 634 // Check that it is allowed to call SetGLStrings before Initialize.
682 635
683 // Assume browser gets GL strings from local state. 636 // Assume browser gets GL strings from local state.
684 manager->SetGLStrings(kGLVendorMesa, kGLRendererMesa, kGLVersionMesa801); 637 manager->SetGLStrings(kGLVendorMesa, kGLRendererMesa, kGLVersionMesa801);
685 638
686 gpu::GPUInfo gpu_info; 639 gpu::GPUInfo gpu_info;
687 gpu_info.gpu.vendor_id = 0x8086; 640 gpu_info.gpu.vendor_id = 0x8086;
688 gpu_info.gpu.device_id = 0x0042; 641 gpu_info.gpu.device_id = 0x0042;
689 manager->InitializeForTesting(blacklist_json, gpu_info); 642 manager->InitializeForTesting(blacklist_json, gpu_info);
690 643
691 EXPECT_TRUE(manager->GpuAccessAllowed(NULL)); 644 EXPECT_TRUE(manager->GpuAccessAllowed(NULL));
692 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount()); 645 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount());
693 EXPECT_TRUE(manager->IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_WEBGL)); 646 EXPECT_TRUE(
647 manager->IsFeatureBlacklisted(gpu::GPU_FEATURE_TYPE_ACCELERATED_WEBGL));
694 } 648 }
695 #endif // OS_LINUX 649 #endif // OS_LINUX
696 650
697 TEST_F(GpuDataManagerImplPrivateTest, GpuDriverBugListSingle) { 651 TEST_F(GpuDataManagerImplPrivateTest, GpuDriverBugListSingle) {
698 ScopedGpuDataManagerImplPrivate manager; 652 ScopedGpuDataManagerImplPrivate manager;
699 manager->gpu_driver_bugs_.insert(5); 653 manager->gpu_driver_bugs_.insert(5);
700 654
701 base::CommandLine command_line(0, NULL); 655 base::CommandLine command_line(0, NULL);
702 manager->AppendGpuCommandLine(&command_line, nullptr); 656 manager->AppendGpuCommandLine(&command_line, nullptr);
703 657
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
757 EXPECT_TRUE(reason.empty()); 711 EXPECT_TRUE(reason.empty());
758 #else 712 #else
759 EXPECT_FALSE(manager->GpuAccessAllowed(&reason)); 713 EXPECT_FALSE(manager->GpuAccessAllowed(&reason));
760 EXPECT_FALSE(reason.empty()); 714 EXPECT_FALSE(reason.empty());
761 #endif 715 #endif
762 } 716 }
763 717
764 TEST_F(GpuDataManagerImplPrivateTest, UpdateActiveGpu) { 718 TEST_F(GpuDataManagerImplPrivateTest, UpdateActiveGpu) {
765 ScopedGpuDataManagerImpl manager; 719 ScopedGpuDataManagerImpl manager;
766 720
767 const std::string blacklist_json = LONG_STRING_CONST( 721 const std::string blacklist_json = LONG_STRING_CONST({
768 { 722 "name" : "gpu blacklist",
769 "name": "gpu blacklist", 723 "version" : "0.1",
770 "version": "0.1", 724 "entries" : [ {
771 "entries": [ 725 "id" : 1,
772 { 726 "vendor_id" : "0x8086",
773 "id": 1, 727 "multi_gpu_category" : "active",
774 "vendor_id": "0x8086", 728 "features" : ["accelerated_webgl"]
775 "multi_gpu_category": "active", 729 } ]
776 "features": [ 730 });
777 "webgl"
778 ]
779 }
780 ]
781 }
782 );
783 731
784 // Two GPUs, the secondary Intel GPU is active. 732 // Two GPUs, the secondary Intel GPU is active.
785 gpu::GPUInfo gpu_info; 733 gpu::GPUInfo gpu_info;
786 gpu_info.gpu.vendor_id = 0x10de; 734 gpu_info.gpu.vendor_id = 0x10de;
787 gpu_info.gpu.device_id = 0x0640; 735 gpu_info.gpu.device_id = 0x0640;
788 gpu_info.gpu.active = false; 736 gpu_info.gpu.active = false;
789 gpu::GPUInfo::GPUDevice intel_gpu; 737 gpu::GPUInfo::GPUDevice intel_gpu;
790 intel_gpu.vendor_id = 0x8086; 738 intel_gpu.vendor_id = 0x8086;
791 intel_gpu.device_id = 0x04a1; 739 intel_gpu.device_id = 0x04a1;
792 intel_gpu.active = true; 740 intel_gpu.active = true;
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
832 EXPECT_TRUE(manager->UpdateActiveGpu(0x8086, 0x04a1)); 780 EXPECT_TRUE(manager->UpdateActiveGpu(0x8086, 0x04a1));
833 { 781 {
834 base::RunLoop run_loop; 782 base::RunLoop run_loop;
835 run_loop.RunUntilIdle(); 783 run_loop.RunUntilIdle();
836 } 784 }
837 EXPECT_TRUE(observer.gpu_info_updated()); 785 EXPECT_TRUE(observer.gpu_info_updated());
838 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount()); 786 EXPECT_EQ(1u, manager->GetBlacklistedFeatureCount());
839 } 787 }
840 788
841 } // namespace content 789 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/gpu/gpu_data_manager_impl_private.cc ('k') | content/public/browser/gpu_data_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698