summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIoana Alexandru <aioana@google.com>2023-05-23 16:26:41 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-06-14 00:37:52 +0000
commite6bdf8e9cb29c287de0f6949e503a31d00df6488 (patch)
tree9a8b00493888848b28aab0a9fc64ef613ade85ed
parent06882dc7db67801fe13aec6e420d5baf1da8d250 (diff)
downloadbase-e6bdf8e9cb29c287de0f6949e503a31d00df6488.tar.gz
Check URIs in sized remote views.
Bug: 277741109 Test: atest RemoteViewsTest (cherry picked from commit ae0d45137b0f8ea49a085bbce4d39f901685c4a5) (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:902f020bc81e5b584d5cb0276568b888a728fc4a) Merged-In: Iceb33606da3a49b9638ab21aeae17a168c1b411a Change-Id: Iceb33606da3a49b9638ab21aeae17a168c1b411a
-rw-r--r--core/java/android/widget/RemoteViews.java5
-rw-r--r--core/tests/coretests/src/android/widget/RemoteViewsTest.java40
2 files changed, 45 insertions, 0 deletions
diff --git a/core/java/android/widget/RemoteViews.java b/core/java/android/widget/RemoteViews.java
index 0b85cbe1cd52..adcb04f946cc 100644
--- a/core/java/android/widget/RemoteViews.java
+++ b/core/java/android/widget/RemoteViews.java
@@ -726,6 +726,11 @@ public class RemoteViews implements Parcelable, Filter {
mActions.get(i).visitUris(visitor);
}
}
+ if (mSizedRemoteViews != null) {
+ for (int i = 0; i < mSizedRemoteViews.size(); i++) {
+ mSizedRemoteViews.get(i).visitUris(visitor);
+ }
+ }
if (mLandscape != null) {
mLandscape.visitUris(visitor);
}
diff --git a/core/tests/coretests/src/android/widget/RemoteViewsTest.java b/core/tests/coretests/src/android/widget/RemoteViewsTest.java
index 350b7fc2926f..e0cccf2f5200 100644
--- a/core/tests/coretests/src/android/widget/RemoteViewsTest.java
+++ b/core/tests/coretests/src/android/widget/RemoteViewsTest.java
@@ -63,6 +63,7 @@ import org.junit.runner.RunWith;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
+import java.util.HashMap;
import java.util.concurrent.CountDownLatch;
import java.util.function.Consumer;
@@ -778,4 +779,43 @@ public class RemoteViewsTest {
verify(visitor, times(1)).accept(eq(icon3P.getUri()));
verify(visitor, times(1)).accept(eq(icon4P.getUri()));
}
+
+ @Test
+ public void visitUris_sizedViews() {
+ final RemoteViews large = new RemoteViews(mPackage, R.layout.remote_views_test);
+ final Uri imageUriL = Uri.parse("content://large/image");
+ final Icon icon1L = Icon.createWithContentUri("content://large/icon1");
+ final Icon icon2L = Icon.createWithContentUri("content://large/icon2");
+ final Icon icon3L = Icon.createWithContentUri("content://large/icon3");
+ final Icon icon4L = Icon.createWithContentUri("content://large/icon4");
+ large.setImageViewUri(R.id.image, imageUriL);
+ large.setTextViewCompoundDrawables(R.id.text, icon1L, icon2L, icon3L, icon4L);
+
+ final RemoteViews small = new RemoteViews(mPackage, 33);
+ final Uri imageUriS = Uri.parse("content://small/image");
+ final Icon icon1S = Icon.createWithContentUri("content://small/icon1");
+ final Icon icon2S = Icon.createWithContentUri("content://small/icon2");
+ final Icon icon3S = Icon.createWithContentUri("content://small/icon3");
+ final Icon icon4S = Icon.createWithContentUri("content://small/icon4");
+ small.setImageViewUri(R.id.image, imageUriS);
+ small.setTextViewCompoundDrawables(R.id.text, icon1S, icon2S, icon3S, icon4S);
+
+ HashMap<SizeF, RemoteViews> sizedViews = new HashMap<>();
+ sizedViews.put(new SizeF(300, 300), large);
+ sizedViews.put(new SizeF(100, 100), small);
+ RemoteViews views = new RemoteViews(sizedViews);
+
+ Consumer<Uri> visitor = (Consumer<Uri>) spy(Consumer.class);
+ views.visitUris(visitor);
+ verify(visitor, times(1)).accept(eq(imageUriL));
+ verify(visitor, times(1)).accept(eq(icon1L.getUri()));
+ verify(visitor, times(1)).accept(eq(icon2L.getUri()));
+ verify(visitor, times(1)).accept(eq(icon3L.getUri()));
+ verify(visitor, times(1)).accept(eq(icon4L.getUri()));
+ verify(visitor, times(1)).accept(eq(imageUriS));
+ verify(visitor, times(1)).accept(eq(icon1S.getUri()));
+ verify(visitor, times(1)).accept(eq(icon2S.getUri()));
+ verify(visitor, times(1)).accept(eq(icon3S.getUri()));
+ verify(visitor, times(1)).accept(eq(icon4S.getUri()));
+ }
}