Merge "Ensure package context used by System UI has a valid userId." into sc-qpr1-dev

This commit is contained in:
TreeHugger Robot
2021-09-14 20:29:02 +00:00
committed by Android (Google) Code Review
2 changed files with 19 additions and 1 deletions

View File

@@ -436,7 +436,7 @@ public class StatusBarNotification implements Parcelable {
try {
ApplicationInfo ai = context.getPackageManager()
.getApplicationInfoAsUser(pkg, PackageManager.MATCH_UNINSTALLED_PACKAGES,
getUserId());
getNormalizedUserId());
mContext = context.createApplicationContext(ai,
Context.CONTEXT_RESTRICTED);
} catch (PackageManager.NameNotFoundException e) {

View File

@@ -17,6 +17,8 @@
package android.service.notification;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertNotNull;
import static junit.framework.Assert.assertNotSame;
import static junit.framework.Assert.assertNull;
import static org.junit.Assert.assertFalse;
@@ -51,6 +53,7 @@ public class StatusBarNotificationTest {
private final Context mMockContext = mock(Context.class);
@Mock
private Context mRealContext;
private PackageManager mPm;
private static final String PKG = "com.example.o";
@@ -75,6 +78,8 @@ public class StatusBarNotificationTest {
InstrumentationRegistry.getContext().getResources());
when(mMockContext.getPackageManager()).thenReturn(mPm);
when(mMockContext.getApplicationInfo()).thenReturn(new ApplicationInfo());
mRealContext = InstrumentationRegistry.getContext();
}
@Test
@@ -199,6 +204,19 @@ public class StatusBarNotificationTest {
}
@Test
public void testGetPackageContext_worksWithUserAll() {
String pkg = "com.android.systemui";
int uid = 1000;
Notification notification = getNotificationBuilder(GROUP_ID_1, CHANNEL_ID).build();
StatusBarNotification sbn = new StatusBarNotification(
pkg, pkg, ID, TAG, uid, uid, notification, UserHandle.ALL, null, UID);
Context resultContext = sbn.getPackageContext(mRealContext);
assertNotNull(resultContext);
assertNotSame(mRealContext, resultContext);
assertEquals(pkg, resultContext.getPackageName());
}
private StatusBarNotification getNotification(String pkg, String group, String channelId) {
return getNotification(pkg, getNotificationBuilder(group, channelId));
}