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

Side by Side Diff: ui/gfx/image/image_skia_unittest.cc

Issue 2922463002: Replace deprecated base::NonThreadSafe in ui\gfx\image_skia.cc in favor of SequenceChecker. (Closed)
Patch Set: Created 3 years, 6 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
« no previous file with comments | « ui/gfx/image/image_skia.cc ('k') | no next file » | 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 "ui/gfx/image/image_skia.h" 5 #include "ui/gfx/image/image_skia.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after
371 371
372 test::TestOnThread image_on_thread(&image); 372 test::TestOnThread image_on_thread(&image);
373 // an image that was never accessed on this thread can be 373 // an image that was never accessed on this thread can be
374 // read by other thread. 374 // read by other thread.
375 image_on_thread.StartAndJoin(); 375 image_on_thread.StartAndJoin();
376 EXPECT_TRUE(image_on_thread.can_read()); 376 EXPECT_TRUE(image_on_thread.can_read());
377 EXPECT_TRUE(image_on_thread.can_modify()); 377 EXPECT_TRUE(image_on_thread.can_modify());
378 EXPECT_FALSE(image.CanRead()); 378 EXPECT_FALSE(image.CanRead());
379 EXPECT_FALSE(image.CanModify()); 379 EXPECT_FALSE(image.CanModify());
380 380
381 image.DetachStorageFromThread(); 381 image.DetachStorageFromSequence();
382 // An image is accessed by this thread, 382 // An image is accessed by this thread,
383 // so other thread cannot read/modify it. 383 // so other thread cannot read/modify it.
384 image.image_reps(); 384 image.image_reps();
385 test::TestOnThread image_on_thread2(&image); 385 test::TestOnThread image_on_thread2(&image);
386 image_on_thread2.StartAndJoin(); 386 image_on_thread2.StartAndJoin();
387 EXPECT_FALSE(image_on_thread2.can_read()); 387 EXPECT_FALSE(image_on_thread2.can_read());
388 EXPECT_FALSE(image_on_thread2.can_modify()); 388 EXPECT_FALSE(image_on_thread2.can_modify());
389 EXPECT_TRUE(image.CanRead()); 389 EXPECT_TRUE(image.CanRead());
390 EXPECT_TRUE(image.CanModify()); 390 EXPECT_TRUE(image.CanModify());
391 391
392 image.DetachStorageFromThread(); 392 image.DetachStorageFromSequence();
393 std::unique_ptr<ImageSkia> deep_copy(image.DeepCopy()); 393 std::unique_ptr<ImageSkia> deep_copy(image.DeepCopy());
394 EXPECT_FALSE(deep_copy->IsThreadSafe()); 394 EXPECT_FALSE(deep_copy->IsThreadSafe());
395 test::TestOnThread deepcopy_on_thread(deep_copy.get()); 395 test::TestOnThread deepcopy_on_thread(deep_copy.get());
396 deepcopy_on_thread.StartAndJoin(); 396 deepcopy_on_thread.StartAndJoin();
397 EXPECT_TRUE(deepcopy_on_thread.can_read()); 397 EXPECT_TRUE(deepcopy_on_thread.can_read());
398 EXPECT_TRUE(deepcopy_on_thread.can_modify()); 398 EXPECT_TRUE(deepcopy_on_thread.can_modify());
399 EXPECT_FALSE(deep_copy->CanRead()); 399 EXPECT_FALSE(deep_copy->CanRead());
400 EXPECT_FALSE(deep_copy->CanModify()); 400 EXPECT_FALSE(deep_copy->CanModify());
401 401
402 std::unique_ptr<ImageSkia> deep_copy2(image.DeepCopy()); 402 std::unique_ptr<ImageSkia> deep_copy2(image.DeepCopy());
403 EXPECT_EQ(1U, deep_copy2->image_reps().size()); 403 EXPECT_EQ(1U, deep_copy2->image_reps().size());
404 // Access it from current thread so that it can't be 404 // Access it from current thread so that it can't be
405 // accessed from another thread. 405 // accessed from another thread.
406 deep_copy2->image_reps(); 406 deep_copy2->image_reps();
407 EXPECT_FALSE(deep_copy2->IsThreadSafe()); 407 EXPECT_FALSE(deep_copy2->IsThreadSafe());
408 test::TestOnThread deepcopy2_on_thread(deep_copy2.get()); 408 test::TestOnThread deepcopy2_on_thread(deep_copy2.get());
409 deepcopy2_on_thread.StartAndJoin(); 409 deepcopy2_on_thread.StartAndJoin();
410 EXPECT_FALSE(deepcopy2_on_thread.can_read()); 410 EXPECT_FALSE(deepcopy2_on_thread.can_read());
411 EXPECT_FALSE(deepcopy2_on_thread.can_modify()); 411 EXPECT_FALSE(deepcopy2_on_thread.can_modify());
412 EXPECT_TRUE(deep_copy2->CanRead()); 412 EXPECT_TRUE(deep_copy2->CanRead());
413 EXPECT_TRUE(deep_copy2->CanModify()); 413 EXPECT_TRUE(deep_copy2->CanModify());
414 414
415 image.DetachStorageFromThread(); 415 image.DetachStorageFromSequence();
416 image.SetReadOnly(); 416 image.SetReadOnly();
417 // A read-only ImageSkia with no source is thread safe. 417 // A read-only ImageSkia with no source is thread safe.
418 EXPECT_TRUE(image.IsThreadSafe()); 418 EXPECT_TRUE(image.IsThreadSafe());
419 test::TestOnThread readonly_on_thread(&image); 419 test::TestOnThread readonly_on_thread(&image);
420 readonly_on_thread.StartAndJoin(); 420 readonly_on_thread.StartAndJoin();
421 EXPECT_TRUE(readonly_on_thread.can_read()); 421 EXPECT_TRUE(readonly_on_thread.can_read());
422 EXPECT_FALSE(readonly_on_thread.can_modify()); 422 EXPECT_FALSE(readonly_on_thread.can_modify());
423 EXPECT_TRUE(image.CanRead()); 423 EXPECT_TRUE(image.CanRead());
424 EXPECT_FALSE(image.CanModify()); 424 EXPECT_FALSE(image.CanModify());
425 425
426 image.DetachStorageFromThread(); 426 image.DetachStorageFromSequence();
427 image.MakeThreadSafe(); 427 image.MakeThreadSafe();
428 EXPECT_TRUE(image.IsThreadSafe()); 428 EXPECT_TRUE(image.IsThreadSafe());
429 test::TestOnThread threadsafe_on_thread(&image); 429 test::TestOnThread threadsafe_on_thread(&image);
430 threadsafe_on_thread.StartAndJoin(); 430 threadsafe_on_thread.StartAndJoin();
431 EXPECT_TRUE(threadsafe_on_thread.can_read()); 431 EXPECT_TRUE(threadsafe_on_thread.can_read());
432 EXPECT_FALSE(threadsafe_on_thread.can_modify()); 432 EXPECT_FALSE(threadsafe_on_thread.can_modify());
433 EXPECT_TRUE(image.CanRead()); 433 EXPECT_TRUE(image.CanRead());
434 EXPECT_FALSE(image.CanModify()); 434 EXPECT_FALSE(image.CanModify());
435 } 435 }
436 436
437 TEST_F(ImageSkiaTest, SourceOnThreadTest) { 437 TEST_F(ImageSkiaTest, SourceOnThreadTest) {
438 ImageSkia image(new DynamicSource(Size(100, 200)), Size(100, 200)); 438 ImageSkia image(new DynamicSource(Size(100, 200)), Size(100, 200));
439 EXPECT_FALSE(image.IsThreadSafe()); 439 EXPECT_FALSE(image.IsThreadSafe());
440 440
441 test::TestOnThread image_on_thread(&image); 441 test::TestOnThread image_on_thread(&image);
442 image_on_thread.StartAndJoin(); 442 image_on_thread.StartAndJoin();
443 // an image that was never accessed on this thread can be 443 // an image that was never accessed on this thread can be
444 // read by other thread. 444 // read by other thread.
445 EXPECT_TRUE(image_on_thread.can_read()); 445 EXPECT_TRUE(image_on_thread.can_read());
446 EXPECT_TRUE(image_on_thread.can_modify()); 446 EXPECT_TRUE(image_on_thread.can_modify());
447 EXPECT_FALSE(image.CanRead()); 447 EXPECT_FALSE(image.CanRead());
448 EXPECT_FALSE(image.CanModify()); 448 EXPECT_FALSE(image.CanModify());
449 449
450 image.DetachStorageFromThread(); 450 image.DetachStorageFromSequence();
451 // An image is accessed by this thread, 451 // An image is accessed by this thread,
452 // so other thread cannot read/modify it. 452 // so other thread cannot read/modify it.
453 image.image_reps(); 453 image.image_reps();
454 test::TestOnThread image_on_thread2(&image); 454 test::TestOnThread image_on_thread2(&image);
455 image_on_thread2.StartAndJoin(); 455 image_on_thread2.StartAndJoin();
456 EXPECT_FALSE(image_on_thread2.can_read()); 456 EXPECT_FALSE(image_on_thread2.can_read());
457 EXPECT_FALSE(image_on_thread2.can_modify()); 457 EXPECT_FALSE(image_on_thread2.can_modify());
458 EXPECT_TRUE(image.CanRead()); 458 EXPECT_TRUE(image.CanRead());
459 EXPECT_TRUE(image.CanModify()); 459 EXPECT_TRUE(image.CanModify());
460 460
461 image.DetachStorageFromThread(); 461 image.DetachStorageFromSequence();
462 image.SetReadOnly(); 462 image.SetReadOnly();
463 EXPECT_FALSE(image.IsThreadSafe()); 463 EXPECT_FALSE(image.IsThreadSafe());
464 test::TestOnThread readonly_on_thread(&image); 464 test::TestOnThread readonly_on_thread(&image);
465 readonly_on_thread.StartAndJoin(); 465 readonly_on_thread.StartAndJoin();
466 EXPECT_TRUE(readonly_on_thread.can_read()); 466 EXPECT_TRUE(readonly_on_thread.can_read());
467 EXPECT_FALSE(readonly_on_thread.can_modify()); 467 EXPECT_FALSE(readonly_on_thread.can_modify());
468 EXPECT_FALSE(image.CanRead()); 468 EXPECT_FALSE(image.CanRead());
469 EXPECT_FALSE(image.CanModify()); 469 EXPECT_FALSE(image.CanModify());
470 470
471 image.DetachStorageFromThread(); 471 image.DetachStorageFromSequence();
472 image.MakeThreadSafe(); 472 image.MakeThreadSafe();
473 EXPECT_TRUE(image.IsThreadSafe()); 473 EXPECT_TRUE(image.IsThreadSafe());
474 // Check if image reps are generated for supported scale factors. 474 // Check if image reps are generated for supported scale factors.
475 EXPECT_EQ(ImageSkia::GetSupportedScales().size(), 475 EXPECT_EQ(ImageSkia::GetSupportedScales().size(),
476 image.image_reps().size()); 476 image.image_reps().size());
477 test::TestOnThread threadsafe_on_thread(&image); 477 test::TestOnThread threadsafe_on_thread(&image);
478 threadsafe_on_thread.StartAndJoin(); 478 threadsafe_on_thread.StartAndJoin();
479 EXPECT_TRUE(threadsafe_on_thread.can_read()); 479 EXPECT_TRUE(threadsafe_on_thread.can_read());
480 EXPECT_FALSE(threadsafe_on_thread.can_modify()); 480 EXPECT_FALSE(threadsafe_on_thread.can_modify());
481 EXPECT_TRUE(image.CanRead()); 481 EXPECT_TRUE(image.CanRead());
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
623 EXPECT_EQ(1U, image.image_reps().size()); 623 EXPECT_EQ(1U, image.image_reps().size());
624 624
625 const ImageSkiaRep& rep12 = image.GetRepresentation(1.2f); 625 const ImageSkiaRep& rep12 = image.GetRepresentation(1.2f);
626 EXPECT_EQ(1.0f, rep12.scale()); 626 EXPECT_EQ(1.0f, rep12.scale());
627 EXPECT_EQ("100x200", rep12.pixel_size().ToString()); 627 EXPECT_EQ("100x200", rep12.pixel_size().ToString());
628 EXPECT_TRUE(rep12.unscaled()); 628 EXPECT_TRUE(rep12.unscaled());
629 EXPECT_EQ(1U, image.image_reps().size()); 629 EXPECT_EQ(1U, image.image_reps().size());
630 } 630 }
631 631
632 } // namespace gfx 632 } // namespace gfx
OLDNEW
« no previous file with comments | « ui/gfx/image/image_skia.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698