From 8c4326541ac25f042df916041557259fe4627a12 Mon Sep 17 00:00:00 2001 From: Steve Elliott Date: Tue, 2 May 2023 09:25:35 -0400 Subject: [PATCH] Don't mutate shared AppInfo instance in RtlContext In RtlEnabledContext, we force-enable RtL support, since our notification templates are known to support Rtl, even if the app doesn't necessarily. We do this by updating a flag on the ApplicationInfo returned by Context#getApplicationInfo(). Because updating this flag is a mutation, other callers to Context#getApplicationInfo() after RtlEnabledContext#getApplicationInfo() has been called will see that RTL support is enabled, even if it's not true, and even if they are not using RtlEnabledContext. The solution is to copy the ApplicationInfo object returned from the wrapped Context inside of RtlEnabledContext, so that we can mutate the copy without affecting the shared ApplicationInfo. Test: atest SystemUITests Bug: 193213399 Change-Id: Ic2dd0479d60dc9c27cc448685ec83588037a69c7 --- .../statusbar/notification/row/NotificationContentInflater.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java index 4522e41daf917..b4bfded58e4b5 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java @@ -966,7 +966,7 @@ public class NotificationContentInflater implements NotificationRowContentBinder @Override public ApplicationInfo getApplicationInfo() { - ApplicationInfo applicationInfo = super.getApplicationInfo(); + ApplicationInfo applicationInfo = new ApplicationInfo(super.getApplicationInfo()); applicationInfo.flags |= ApplicationInfo.FLAG_SUPPORTS_RTL; return applicationInfo; }