|
24 | 24 | import static org.junit.Assert.assertNull; |
25 | 25 | import static org.junit.Assert.assertSame; |
26 | 26 | import static org.junit.Assert.assertTrue; |
| 27 | +import static org.mockito.ArgumentMatchers.eq; |
| 28 | +import static org.mockito.Mockito.spy; |
| 29 | +import static org.mockito.Mockito.times; |
| 30 | +import static org.mockito.Mockito.verify; |
27 | 31 |
|
28 | 32 | import android.app.ActivityOptions; |
29 | 33 | import android.app.PendingIntent; |
|
33 | 37 | import android.graphics.Bitmap; |
34 | 38 | import android.graphics.drawable.BitmapDrawable; |
35 | 39 | import android.graphics.drawable.Drawable; |
| 40 | +import android.graphics.drawable.Icon; |
| 41 | +import android.net.Uri; |
36 | 42 | import android.os.AsyncTask; |
37 | 43 | import android.os.Binder; |
38 | 44 | import android.os.Looper; |
|
58 | 64 | import java.util.Arrays; |
59 | 65 | import java.util.Map; |
60 | 66 | import java.util.concurrent.CountDownLatch; |
| 67 | +import java.util.function.Consumer; |
61 | 68 |
|
62 | 69 | /** |
63 | 70 | * Tests for RemoteViews. |
@@ -690,4 +697,61 @@ public ActivityOptions createSharedElementActivityOptions( |
690 | 697 | return null; |
691 | 698 | } |
692 | 699 | } |
| 700 | + |
| 701 | + @Test |
| 702 | + public void visitUris() { |
| 703 | + RemoteViews views = new RemoteViews(mPackage, R.layout.remote_views_test); |
| 704 | + |
| 705 | + final Uri imageUri = Uri.parse("content://media/image"); |
| 706 | + final Icon icon1 = Icon.createWithContentUri("content://media/icon1"); |
| 707 | + final Icon icon2 = Icon.createWithContentUri("content://media/icon2"); |
| 708 | + final Icon icon3 = Icon.createWithContentUri("content://media/icon3"); |
| 709 | + final Icon icon4 = Icon.createWithContentUri("content://media/icon4"); |
| 710 | + views.setImageViewUri(R.id.image, imageUri); |
| 711 | + views.setTextViewCompoundDrawables(R.id.text, icon1, icon2, icon3, icon4); |
| 712 | + |
| 713 | + Consumer<Uri> visitor = (Consumer<Uri>) spy(Consumer.class); |
| 714 | + views.visitUris(visitor); |
| 715 | + verify(visitor, times(1)).accept(eq(imageUri)); |
| 716 | + verify(visitor, times(1)).accept(eq(icon1.getUri())); |
| 717 | + verify(visitor, times(1)).accept(eq(icon2.getUri())); |
| 718 | + verify(visitor, times(1)).accept(eq(icon3.getUri())); |
| 719 | + verify(visitor, times(1)).accept(eq(icon4.getUri())); |
| 720 | + } |
| 721 | + |
| 722 | + @Test |
| 723 | + public void visitUris_separateOrientation() { |
| 724 | + final RemoteViews landscape = new RemoteViews(mPackage, R.layout.remote_views_test); |
| 725 | + final Uri imageUriL = Uri.parse("content://landscape/image"); |
| 726 | + final Icon icon1L = Icon.createWithContentUri("content://landscape/icon1"); |
| 727 | + final Icon icon2L = Icon.createWithContentUri("content://landscape/icon2"); |
| 728 | + final Icon icon3L = Icon.createWithContentUri("content://landscape/icon3"); |
| 729 | + final Icon icon4L = Icon.createWithContentUri("content://landscape/icon4"); |
| 730 | + landscape.setImageViewUri(R.id.image, imageUriL); |
| 731 | + landscape.setTextViewCompoundDrawables(R.id.text, icon1L, icon2L, icon3L, icon4L); |
| 732 | + |
| 733 | + final RemoteViews portrait = new RemoteViews(mPackage, 33); |
| 734 | + final Uri imageUriP = Uri.parse("content://portrait/image"); |
| 735 | + final Icon icon1P = Icon.createWithContentUri("content://portrait/icon1"); |
| 736 | + final Icon icon2P = Icon.createWithContentUri("content://portrait/icon2"); |
| 737 | + final Icon icon3P = Icon.createWithContentUri("content://portrait/icon3"); |
| 738 | + final Icon icon4P = Icon.createWithContentUri("content://portrait/icon4"); |
| 739 | + portrait.setImageViewUri(R.id.image, imageUriP); |
| 740 | + portrait.setTextViewCompoundDrawables(R.id.text, icon1P, icon2P, icon3P, icon4P); |
| 741 | + |
| 742 | + RemoteViews views = new RemoteViews(landscape, portrait); |
| 743 | + |
| 744 | + Consumer<Uri> visitor = (Consumer<Uri>) spy(Consumer.class); |
| 745 | + views.visitUris(visitor); |
| 746 | + verify(visitor, times(1)).accept(eq(imageUriL)); |
| 747 | + verify(visitor, times(1)).accept(eq(icon1L.getUri())); |
| 748 | + verify(visitor, times(1)).accept(eq(icon2L.getUri())); |
| 749 | + verify(visitor, times(1)).accept(eq(icon3L.getUri())); |
| 750 | + verify(visitor, times(1)).accept(eq(icon4L.getUri())); |
| 751 | + verify(visitor, times(1)).accept(eq(imageUriP)); |
| 752 | + verify(visitor, times(1)).accept(eq(icon1P.getUri())); |
| 753 | + verify(visitor, times(1)).accept(eq(icon2P.getUri())); |
| 754 | + verify(visitor, times(1)).accept(eq(icon3P.getUri())); |
| 755 | + verify(visitor, times(1)).accept(eq(icon4P.getUri())); |
| 756 | + } |
693 | 757 | } |
0 commit comments