Merge "Ensure package context used by System UI has a valid userId." into sc-qpr1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
e7f5a37501
@@ -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) {
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user