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

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

Issue 11366237: Add logic to block the use of client 3D APIs (WebGL, Pepper 3D) if context lost notifications are r… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed review feedback from zmo and jam. Created 8 years, 1 month 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
« no previous file with comments | « content/browser/gpu/gpu_data_manager_impl.cc ('k') | content/public/browser/gpu_data_manager.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/memory/scoped_ptr.h"
5 #include "base/message_loop.h" 6 #include "base/message_loop.h"
6 #include "base/run_loop.h" 7 #include "base/run_loop.h"
8 #include "base/time.h"
7 #include "content/browser/gpu/gpu_data_manager_impl.h" 9 #include "content/browser/gpu/gpu_data_manager_impl.h"
8 #include "content/public/browser/gpu_data_manager_observer.h" 10 #include "content/public/browser/gpu_data_manager_observer.h"
9 #include "content/public/common/gpu_info.h" 11 #include "content/public/common/gpu_info.h"
12 #include "googleurl/src/gurl.h"
10 #include "testing/gtest/include/gtest/gtest.h" 13 #include "testing/gtest/include/gtest/gtest.h"
11 14
12 namespace content { 15 namespace content {
13 namespace { 16 namespace {
14 17
15 class TestObserver : public GpuDataManagerObserver { 18 class TestObserver : public GpuDataManagerObserver {
16 public: 19 public:
17 TestObserver() 20 TestObserver()
18 : gpu_info_updated_(false), 21 : gpu_info_updated_(false),
19 video_memory_usage_stats_updated_(false) { 22 video_memory_usage_stats_updated_(false) {
(...skipping 12 matching lines...) Expand all
32 virtual void OnVideoMemoryUsageStatsUpdate( 35 virtual void OnVideoMemoryUsageStatsUpdate(
33 const GPUVideoMemoryUsageStats& stats) OVERRIDE { 36 const GPUVideoMemoryUsageStats& stats) OVERRIDE {
34 video_memory_usage_stats_updated_ = true; 37 video_memory_usage_stats_updated_ = true;
35 } 38 }
36 39
37 private: 40 private:
38 bool gpu_info_updated_; 41 bool gpu_info_updated_;
39 bool video_memory_usage_stats_updated_; 42 bool video_memory_usage_stats_updated_;
40 }; 43 };
41 44
45 static base::Time GetTimeForTesting() {
46 return base::Time::FromDoubleT(1000);
47 }
48
49 static GURL GetDomain1ForTesting() {
50 return GURL("http://foo.com/");
51 }
52
53 static GURL GetDomain2ForTesting() {
54 return GURL("http://bar.com/");
55 }
56
42 } // namespace anonymous 57 } // namespace anonymous
43 58
44 class GpuDataManagerImplTest : public testing::Test { 59 class GpuDataManagerImplTest : public testing::Test {
45 public: 60 public:
46 GpuDataManagerImplTest() { } 61 GpuDataManagerImplTest() { }
47 62
48 virtual ~GpuDataManagerImplTest() { } 63 virtual ~GpuDataManagerImplTest() { }
49 64
50 protected: 65 protected:
66 // scoped_ptr doesn't work with GpuDataManagerImpl because its
67 // destructor is private. GpuDataManagerImplTest is however a friend
68 // so we can make a little helper class here.
69 class ScopedGpuDataManagerImpl {
70 public:
71 ScopedGpuDataManagerImpl() : impl_(new GpuDataManagerImpl()) {}
72 ~ScopedGpuDataManagerImpl() { delete impl_; }
73
74 GpuDataManagerImpl* get() const { return impl_; }
75 GpuDataManagerImpl* operator->() const { return impl_; }
76 // Small violation of C++ style guide to avoid polluting several
77 // tests with get() calls.
78 operator GpuDataManagerImpl*() { return impl_; }
79
80 private:
81 GpuDataManagerImpl* impl_;
82 DISALLOW_COPY_AND_ASSIGN(ScopedGpuDataManagerImpl);
83 };
84
51 void SetUp() { 85 void SetUp() {
52 } 86 }
53 87
54 void TearDown() { 88 void TearDown() {
55 } 89 }
56 90
91 base::Time JustBeforeExpiration(GpuDataManagerImpl* manager);
92 base::Time JustAfterExpiration(GpuDataManagerImpl* manager);
93 void TestBlockingDomainFrom3DAPIs(
94 GpuDataManager::DomainGuilt guilt_level);
95 void TestUnblockingDomainFrom3DAPIs(
96 GpuDataManager::DomainGuilt guilt_level);
97
57 MessageLoop message_loop_; 98 MessageLoop message_loop_;
58 }; 99 };
59 100
60 // We use new method instead of GetInstance() method because we want 101 // We use new method instead of GetInstance() method because we want
61 // each test to be independent of each other. 102 // each test to be independent of each other.
62 103
63 TEST_F(GpuDataManagerImplTest, GpuSideBlacklisting) { 104 TEST_F(GpuDataManagerImplTest, GpuSideBlacklisting) {
64 // If a feature is allowed in preliminary step (browser side), but 105 // If a feature is allowed in preliminary step (browser side), but
65 // disabled when GPU process launches and collects full GPU info, 106 // disabled when GPU process launches and collects full GPU info,
66 // it's too late to let renderer know, so we basically block all GPU 107 // it's too late to let renderer know, so we basically block all GPU
67 // access, to be on the safe side. 108 // access, to be on the safe side.
68 GpuDataManagerImpl* manager = new GpuDataManagerImpl(); 109 ScopedGpuDataManagerImpl manager;
69 ASSERT_TRUE(manager); 110 ASSERT_TRUE(manager.get());
70 EXPECT_EQ(0, manager->GetBlacklistedFeatures()); 111 EXPECT_EQ(0, manager->GetBlacklistedFeatures());
71 EXPECT_TRUE(manager->GpuAccessAllowed()); 112 EXPECT_TRUE(manager->GpuAccessAllowed());
72 113
73 const std::string blacklist_json = 114 const std::string blacklist_json =
74 "{\n" 115 "{\n"
75 " \"name\": \"gpu blacklist\",\n" 116 " \"name\": \"gpu blacklist\",\n"
76 " \"version\": \"0.1\",\n" 117 " \"version\": \"0.1\",\n"
77 " \"entries\": [\n" 118 " \"entries\": [\n"
78 " {\n" 119 " {\n"
79 " \"id\": 1,\n" 120 " \"id\": 1,\n"
(...skipping 21 matching lines...) Expand all
101 142
102 EXPECT_TRUE(manager->GpuAccessAllowed()); 143 EXPECT_TRUE(manager->GpuAccessAllowed());
103 EXPECT_EQ(GPU_FEATURE_TYPE_WEBGL, manager->GetBlacklistedFeatures()); 144 EXPECT_EQ(GPU_FEATURE_TYPE_WEBGL, manager->GetBlacklistedFeatures());
104 145
105 gpu_info.gl_renderer = "NVIDIA GeForce GT 120"; 146 gpu_info.gl_renderer = "NVIDIA GeForce GT 120";
106 manager->UpdateGpuInfo(gpu_info); 147 manager->UpdateGpuInfo(gpu_info);
107 EXPECT_FALSE(manager->GpuAccessAllowed()); 148 EXPECT_FALSE(manager->GpuAccessAllowed());
108 EXPECT_EQ(GPU_FEATURE_TYPE_WEBGL | 149 EXPECT_EQ(GPU_FEATURE_TYPE_WEBGL |
109 GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS, 150 GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS,
110 manager->GetBlacklistedFeatures()); 151 manager->GetBlacklistedFeatures());
111
112 delete manager;
113 } 152 }
114 153
115 TEST_F(GpuDataManagerImplTest, GpuSideExceptions) { 154 TEST_F(GpuDataManagerImplTest, GpuSideExceptions) {
116 GpuDataManagerImpl* manager = new GpuDataManagerImpl(); 155 ScopedGpuDataManagerImpl manager;
117 ASSERT_TRUE(manager); 156 ASSERT_TRUE(manager.get());
118 EXPECT_EQ(0, manager->GetBlacklistedFeatures()); 157 EXPECT_EQ(0, manager->GetBlacklistedFeatures());
119 EXPECT_TRUE(manager->GpuAccessAllowed()); 158 EXPECT_TRUE(manager->GpuAccessAllowed());
120 159
121 const std::string blacklist_json = 160 const std::string blacklist_json =
122 "{\n" 161 "{\n"
123 " \"name\": \"gpu blacklist\",\n" 162 " \"name\": \"gpu blacklist\",\n"
124 " \"version\": \"0.1\",\n" 163 " \"version\": \"0.1\",\n"
125 " \"entries\": [\n" 164 " \"entries\": [\n"
126 " {\n" 165 " {\n"
127 " \"id\": 1,\n" 166 " \"id\": 1,\n"
(...skipping 18 matching lines...) Expand all
146 manager->InitializeForTesting(blacklist_json, gpu_info); 185 manager->InitializeForTesting(blacklist_json, gpu_info);
147 186
148 EXPECT_TRUE(manager->GpuAccessAllowed()); 187 EXPECT_TRUE(manager->GpuAccessAllowed());
149 EXPECT_EQ(0, manager->GetBlacklistedFeatures()); 188 EXPECT_EQ(0, manager->GetBlacklistedFeatures());
150 189
151 // Now assue gpu process launches and full GPU info is collected. 190 // Now assue gpu process launches and full GPU info is collected.
152 gpu_info.gl_renderer = "NVIDIA GeForce GT 120"; 191 gpu_info.gl_renderer = "NVIDIA GeForce GT 120";
153 manager->UpdateGpuInfo(gpu_info); 192 manager->UpdateGpuInfo(gpu_info);
154 EXPECT_TRUE(manager->GpuAccessAllowed()); 193 EXPECT_TRUE(manager->GpuAccessAllowed());
155 EXPECT_EQ(0, manager->GetBlacklistedFeatures()); 194 EXPECT_EQ(0, manager->GetBlacklistedFeatures());
156
157 delete manager;
158 } 195 }
159 196
160 TEST_F(GpuDataManagerImplTest, BlacklistCard) { 197 TEST_F(GpuDataManagerImplTest, BlacklistCard) {
161 GpuDataManagerImpl* manager = new GpuDataManagerImpl(); 198 ScopedGpuDataManagerImpl manager;
162 ASSERT_TRUE(manager); 199 ASSERT_TRUE(manager.get());
163 EXPECT_EQ(0, manager->GetBlacklistedFeatures()); 200 EXPECT_EQ(0, manager->GetBlacklistedFeatures());
164 EXPECT_TRUE(manager->GpuAccessAllowed()); 201 EXPECT_TRUE(manager->GpuAccessAllowed());
165 202
166 manager->BlacklistCard(); 203 manager->BlacklistCard();
167 EXPECT_FALSE(manager->GpuAccessAllowed()); 204 EXPECT_FALSE(manager->GpuAccessAllowed());
168 EXPECT_EQ(GPU_FEATURE_TYPE_ALL, manager->GetBlacklistedFeatures()); 205 EXPECT_EQ(GPU_FEATURE_TYPE_ALL, manager->GetBlacklistedFeatures());
169
170 delete manager;
171 } 206 }
172 207
173 TEST_F(GpuDataManagerImplTest, SoftwareRendering) { 208 TEST_F(GpuDataManagerImplTest, SoftwareRendering) {
174 // Blacklist, then register SwiftShader. 209 // Blacklist, then register SwiftShader.
175 GpuDataManagerImpl* manager = new GpuDataManagerImpl(); 210 ScopedGpuDataManagerImpl manager;
176 ASSERT_TRUE(manager); 211 ASSERT_TRUE(manager.get());
177 EXPECT_EQ(0, manager->GetBlacklistedFeatures()); 212 EXPECT_EQ(0, manager->GetBlacklistedFeatures());
178 EXPECT_TRUE(manager->GpuAccessAllowed()); 213 EXPECT_TRUE(manager->GpuAccessAllowed());
179 EXPECT_FALSE(manager->ShouldUseSoftwareRendering()); 214 EXPECT_FALSE(manager->ShouldUseSoftwareRendering());
180 215
181 manager->BlacklistCard(); 216 manager->BlacklistCard();
182 EXPECT_FALSE(manager->GpuAccessAllowed()); 217 EXPECT_FALSE(manager->GpuAccessAllowed());
183 EXPECT_FALSE(manager->ShouldUseSoftwareRendering()); 218 EXPECT_FALSE(manager->ShouldUseSoftwareRendering());
184 219
185 // If software rendering is enabled, even if we blacklist GPU, 220 // If software rendering is enabled, even if we blacklist GPU,
186 // GPU process is still allowed. 221 // GPU process is still allowed.
187 const FilePath test_path(FILE_PATH_LITERAL("AnyPath")); 222 const FilePath test_path(FILE_PATH_LITERAL("AnyPath"));
188 manager->RegisterSwiftShaderPath(test_path); 223 manager->RegisterSwiftShaderPath(test_path);
189 EXPECT_TRUE(manager->ShouldUseSoftwareRendering()); 224 EXPECT_TRUE(manager->ShouldUseSoftwareRendering());
190 EXPECT_TRUE(manager->GpuAccessAllowed()); 225 EXPECT_TRUE(manager->GpuAccessAllowed());
191 EXPECT_EQ(GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS, 226 EXPECT_EQ(GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS,
192 manager->GetBlacklistedFeatures()); 227 manager->GetBlacklistedFeatures());
193
194 delete manager;
195 } 228 }
196 229
197 TEST_F(GpuDataManagerImplTest, SoftwareRendering2) { 230 TEST_F(GpuDataManagerImplTest, SoftwareRendering2) {
198 // Register SwiftShader, then blacklist. 231 // Register SwiftShader, then blacklist.
199 GpuDataManagerImpl* manager = new GpuDataManagerImpl(); 232 ScopedGpuDataManagerImpl manager;
200 ASSERT_TRUE(manager); 233 ASSERT_TRUE(manager.get());
201 EXPECT_EQ(0, manager->GetBlacklistedFeatures()); 234 EXPECT_EQ(0, manager->GetBlacklistedFeatures());
202 EXPECT_TRUE(manager->GpuAccessAllowed()); 235 EXPECT_TRUE(manager->GpuAccessAllowed());
203 EXPECT_FALSE(manager->ShouldUseSoftwareRendering()); 236 EXPECT_FALSE(manager->ShouldUseSoftwareRendering());
204 237
205 const FilePath test_path(FILE_PATH_LITERAL("AnyPath")); 238 const FilePath test_path(FILE_PATH_LITERAL("AnyPath"));
206 manager->RegisterSwiftShaderPath(test_path); 239 manager->RegisterSwiftShaderPath(test_path);
207 EXPECT_EQ(0, manager->GetBlacklistedFeatures()); 240 EXPECT_EQ(0, manager->GetBlacklistedFeatures());
208 EXPECT_TRUE(manager->GpuAccessAllowed()); 241 EXPECT_TRUE(manager->GpuAccessAllowed());
209 EXPECT_FALSE(manager->ShouldUseSoftwareRendering()); 242 EXPECT_FALSE(manager->ShouldUseSoftwareRendering());
210 243
211 manager->BlacklistCard(); 244 manager->BlacklistCard();
212 EXPECT_TRUE(manager->GpuAccessAllowed()); 245 EXPECT_TRUE(manager->GpuAccessAllowed());
213 EXPECT_TRUE(manager->ShouldUseSoftwareRendering()); 246 EXPECT_TRUE(manager->ShouldUseSoftwareRendering());
214 EXPECT_EQ(GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS, 247 EXPECT_EQ(GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS,
215 manager->GetBlacklistedFeatures()); 248 manager->GetBlacklistedFeatures());
216
217 delete manager;
218 } 249 }
219 250
220 TEST_F(GpuDataManagerImplTest, GpuInfoUpdate) { 251 TEST_F(GpuDataManagerImplTest, GpuInfoUpdate) {
221 GpuDataManagerImpl* manager = new GpuDataManagerImpl(); 252 ScopedGpuDataManagerImpl manager;
222 ASSERT_TRUE(manager); 253 ASSERT_TRUE(manager.get());
223 254
224 TestObserver observer; 255 TestObserver observer;
225 manager->AddObserver(&observer); 256 manager->AddObserver(&observer);
226 257
227 { 258 {
228 base::RunLoop run_loop; 259 base::RunLoop run_loop;
229 run_loop.RunUntilIdle(); 260 run_loop.RunUntilIdle();
230 } 261 }
231 EXPECT_FALSE(observer.gpu_info_updated()); 262 EXPECT_FALSE(observer.gpu_info_updated());
232 263
233 GPUInfo gpu_info; 264 GPUInfo gpu_info;
234 manager->UpdateGpuInfo(gpu_info); 265 manager->UpdateGpuInfo(gpu_info);
235 { 266 {
236 base::RunLoop run_loop; 267 base::RunLoop run_loop;
237 run_loop.RunUntilIdle(); 268 run_loop.RunUntilIdle();
238 } 269 }
239 EXPECT_TRUE(observer.gpu_info_updated()); 270 EXPECT_TRUE(observer.gpu_info_updated());
240
241 delete manager;
242 } 271 }
243 272
244 TEST_F(GpuDataManagerImplTest, NoGpuInfoUpdateWithSoftwareRendering) { 273 TEST_F(GpuDataManagerImplTest, NoGpuInfoUpdateWithSoftwareRendering) {
245 GpuDataManagerImpl* manager = new GpuDataManagerImpl(); 274 ScopedGpuDataManagerImpl manager;
246 ASSERT_TRUE(manager); 275 ASSERT_TRUE(manager.get());
247 276
248 manager->BlacklistCard(); 277 manager->BlacklistCard();
249 const FilePath test_path(FILE_PATH_LITERAL("AnyPath")); 278 const FilePath test_path(FILE_PATH_LITERAL("AnyPath"));
250 manager->RegisterSwiftShaderPath(test_path); 279 manager->RegisterSwiftShaderPath(test_path);
251 EXPECT_TRUE(manager->ShouldUseSoftwareRendering()); 280 EXPECT_TRUE(manager->ShouldUseSoftwareRendering());
252 EXPECT_TRUE(manager->GpuAccessAllowed()); 281 EXPECT_TRUE(manager->GpuAccessAllowed());
253 282
254 { 283 {
255 base::RunLoop run_loop; 284 base::RunLoop run_loop;
256 run_loop.RunUntilIdle(); 285 run_loop.RunUntilIdle();
257 } 286 }
258 287
259 TestObserver observer; 288 TestObserver observer;
260 manager->AddObserver(&observer); 289 manager->AddObserver(&observer);
261 { 290 {
262 base::RunLoop run_loop; 291 base::RunLoop run_loop;
263 run_loop.RunUntilIdle(); 292 run_loop.RunUntilIdle();
264 } 293 }
265 EXPECT_FALSE(observer.gpu_info_updated()); 294 EXPECT_FALSE(observer.gpu_info_updated());
266 295
267 GPUInfo gpu_info; 296 GPUInfo gpu_info;
268 manager->UpdateGpuInfo(gpu_info); 297 manager->UpdateGpuInfo(gpu_info);
269 { 298 {
270 base::RunLoop run_loop; 299 base::RunLoop run_loop;
271 run_loop.RunUntilIdle(); 300 run_loop.RunUntilIdle();
272 } 301 }
273 EXPECT_FALSE(observer.gpu_info_updated()); 302 EXPECT_FALSE(observer.gpu_info_updated());
274
275 delete manager;
276 } 303 }
277 304
278 TEST_F(GpuDataManagerImplTest, GPUVideoMemoryUsageStatsUpdate) { 305 TEST_F(GpuDataManagerImplTest, GPUVideoMemoryUsageStatsUpdate) {
279 GpuDataManagerImpl* manager = new GpuDataManagerImpl(); 306 ScopedGpuDataManagerImpl manager;
280 ASSERT_TRUE(manager); 307 ASSERT_TRUE(manager.get());
281 308
282 TestObserver observer; 309 TestObserver observer;
283 manager->AddObserver(&observer); 310 manager->AddObserver(&observer);
284 311
285 { 312 {
286 base::RunLoop run_loop; 313 base::RunLoop run_loop;
287 run_loop.RunUntilIdle(); 314 run_loop.RunUntilIdle();
288 } 315 }
289 EXPECT_FALSE(observer.video_memory_usage_stats_updated()); 316 EXPECT_FALSE(observer.video_memory_usage_stats_updated());
290 317
291 GPUVideoMemoryUsageStats vram_stats; 318 GPUVideoMemoryUsageStats vram_stats;
292 manager->UpdateVideoMemoryUsageStats(vram_stats); 319 manager->UpdateVideoMemoryUsageStats(vram_stats);
293 { 320 {
294 base::RunLoop run_loop; 321 base::RunLoop run_loop;
295 run_loop.RunUntilIdle(); 322 run_loop.RunUntilIdle();
296 } 323 }
297 EXPECT_TRUE(observer.video_memory_usage_stats_updated()); 324 EXPECT_TRUE(observer.video_memory_usage_stats_updated());
325 }
298 326
299 delete manager; 327 base::Time GpuDataManagerImplTest::JustBeforeExpiration(
328 GpuDataManagerImpl* manager) {
329 return GetTimeForTesting() + base::TimeDelta::FromMilliseconds(
330 manager->GetBlockAllDomainsDurationInMs()) -
331 base::TimeDelta::FromMilliseconds(3);
332 }
333
334 base::Time GpuDataManagerImplTest::JustAfterExpiration(
335 GpuDataManagerImpl* manager) {
336 return GetTimeForTesting() + base::TimeDelta::FromMilliseconds(
337 manager->GetBlockAllDomainsDurationInMs()) +
338 base::TimeDelta::FromMilliseconds(3);
339 }
340
341 void GpuDataManagerImplTest::TestBlockingDomainFrom3DAPIs(
342 GpuDataManager::DomainGuilt guilt_level) {
343 ScopedGpuDataManagerImpl manager;
344 ASSERT_TRUE(manager.get());
345
346 manager->BlockDomainFrom3DAPIsAtTime(GetDomain1ForTesting(),
347 guilt_level,
348 GetTimeForTesting());
349
350 // This domain should be blocked no matter what.
351 EXPECT_EQ(GpuDataManager::DOMAIN_BLOCK_STATUS_BLOCKED,
352 manager->Are3DAPIsBlockedAtTime(GetDomain1ForTesting(),
353 GetTimeForTesting()));
354 EXPECT_EQ(GpuDataManager::DOMAIN_BLOCK_STATUS_BLOCKED,
355 manager->Are3DAPIsBlockedAtTime(GetDomain1ForTesting(),
356 JustBeforeExpiration(manager)));
357 EXPECT_EQ(GpuDataManager::DOMAIN_BLOCK_STATUS_BLOCKED,
358 manager->Are3DAPIsBlockedAtTime(GetDomain1ForTesting(),
359 JustAfterExpiration(manager)));
360 }
361
362 void GpuDataManagerImplTest::TestUnblockingDomainFrom3DAPIs(
363 GpuDataManager::DomainGuilt guilt_level) {
364 ScopedGpuDataManagerImpl manager;
365 ASSERT_TRUE(manager.get());
366
367 manager->BlockDomainFrom3DAPIsAtTime(GetDomain1ForTesting(),
368 guilt_level,
369 GetTimeForTesting());
370
371 // Unblocking the domain should work.
372 manager->UnblockDomainFrom3DAPIs(GetDomain1ForTesting());
373 EXPECT_EQ(GpuDataManager::DOMAIN_BLOCK_STATUS_NOT_BLOCKED,
374 manager->Are3DAPIsBlockedAtTime(GetDomain1ForTesting(),
375 GetTimeForTesting()));
376 EXPECT_EQ(GpuDataManager::DOMAIN_BLOCK_STATUS_NOT_BLOCKED,
377 manager->Are3DAPIsBlockedAtTime(GetDomain1ForTesting(),
378 JustBeforeExpiration(manager)));
379 EXPECT_EQ(GpuDataManager::DOMAIN_BLOCK_STATUS_NOT_BLOCKED,
380 manager->Are3DAPIsBlockedAtTime(GetDomain1ForTesting(),
381 JustAfterExpiration(manager)));
382 }
383
384 TEST_F(GpuDataManagerImplTest, BlockGuiltyDomainFrom3DAPIs) {
385 TestBlockingDomainFrom3DAPIs(GpuDataManager::DOMAIN_GUILT_KNOWN);
386 }
387
388 TEST_F(GpuDataManagerImplTest, BlockDomainOfUnknownGuiltFrom3DAPIs) {
389 TestBlockingDomainFrom3DAPIs(GpuDataManager::DOMAIN_GUILT_UNKNOWN);
390 }
391
392 TEST_F(GpuDataManagerImplTest, BlockAllDomainsFrom3DAPIs) {
393 ScopedGpuDataManagerImpl manager;
394 ASSERT_TRUE(manager.get());
395
396 manager->BlockDomainFrom3DAPIsAtTime(GetDomain1ForTesting(),
397 GpuDataManager::DOMAIN_GUILT_UNKNOWN,
398 GetTimeForTesting());
399
400 // Blocking of other domains should expire.
401 EXPECT_EQ(GpuDataManager::DOMAIN_BLOCK_STATUS_ALL_DOMAINS_BLOCKED,
402 manager->Are3DAPIsBlockedAtTime(GetDomain2ForTesting(),
403 JustBeforeExpiration(manager)));
404 EXPECT_EQ(GpuDataManager::DOMAIN_BLOCK_STATUS_NOT_BLOCKED,
405 manager->Are3DAPIsBlockedAtTime(GetDomain2ForTesting(),
406 JustAfterExpiration(manager)));
407 }
408
409 TEST_F(GpuDataManagerImplTest, UnblockGuiltyDomainFrom3DAPIs) {
410 TestUnblockingDomainFrom3DAPIs(GpuDataManager::DOMAIN_GUILT_KNOWN);
411 }
412
413 TEST_F(GpuDataManagerImplTest, UnblockDomainOfUnknownGuiltFrom3DAPIs) {
414 TestUnblockingDomainFrom3DAPIs(GpuDataManager::DOMAIN_GUILT_UNKNOWN);
415 }
416
417 TEST_F(GpuDataManagerImplTest, UnblockOtherDomainFrom3DAPIs) {
418 ScopedGpuDataManagerImpl manager;
419 ASSERT_TRUE(manager.get());
420
421 manager->BlockDomainFrom3DAPIsAtTime(GetDomain1ForTesting(),
422 GpuDataManager::DOMAIN_GUILT_UNKNOWN,
423 GetTimeForTesting());
424
425 manager->UnblockDomainFrom3DAPIs(GetDomain2ForTesting());
426
427 EXPECT_EQ(GpuDataManager::DOMAIN_BLOCK_STATUS_NOT_BLOCKED,
428 manager->Are3DAPIsBlockedAtTime(GetDomain2ForTesting(),
429 JustBeforeExpiration(manager)));
430
431 // The original domain should still be blocked.
432 EXPECT_EQ(GpuDataManager::DOMAIN_BLOCK_STATUS_BLOCKED,
433 manager->Are3DAPIsBlockedAtTime(GetDomain1ForTesting(),
434 JustBeforeExpiration(manager)));
435 }
436
437 TEST_F(GpuDataManagerImplTest, UnblockThisDomainFrom3DAPIs) {
438 ScopedGpuDataManagerImpl manager;
439 ASSERT_TRUE(manager.get());
440
441 manager->BlockDomainFrom3DAPIsAtTime(GetDomain1ForTesting(),
442 GpuDataManager::DOMAIN_GUILT_UNKNOWN,
443 GetTimeForTesting());
444
445 manager->UnblockDomainFrom3DAPIs(GetDomain1ForTesting());
446
447 // This behavior is debatable. Perhaps the GPU reset caused by
448 // domain 1 should still cause other domains to be blocked.
449 EXPECT_EQ(GpuDataManager::DOMAIN_BLOCK_STATUS_NOT_BLOCKED,
450 manager->Are3DAPIsBlockedAtTime(GetDomain2ForTesting(),
451 JustBeforeExpiration(manager)));
300 } 452 }
301 453
302 } // namespace content 454 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/gpu/gpu_data_manager_impl.cc ('k') | content/public/browser/gpu_data_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698