DO NOT MERGE - Merge build QP1A.190711.020 into stage-aosp-master

Bug: 139893257
Change-Id: I89559c14cbc17c47f9b43754ec44904b19c73dd3
This commit is contained in:
Xin Li
2019-08-26 18:30:47 +00:00
3 changed files with 79 additions and 3 deletions

View File

@@ -50,6 +50,7 @@ import android.view.InputDevice;
import android.view.KeyCharacterMap;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.SurfaceControl;
import android.view.ViewConfiguration;
import android.view.Window;
import android.view.WindowManagerGlobal;
@@ -528,6 +529,12 @@ public class Instrumentation {
} while (mWaitingActivities.contains(aw));
waitForEnterAnimationComplete(aw.activity);
// Apply an empty transaction to ensure SF has a chance to update before
// the Activity is ready (b/138263890).
try (SurfaceControl.Transaction t = new SurfaceControl.Transaction()) {
t.apply(true);
}
return aw.activity;
}
}

View File

@@ -422,7 +422,14 @@ public class NotificationData {
}
}
Collections.sort(mSortedAndFiltered, mRankingComparator);
if (mSortedAndFiltered.size() == 1) {
// HACK: We need the comparator to run on all children in order to set the
// isHighPriority field. If there is only one child, then the comparison won't be run,
// so we have to trigger it manually. Get rid of this code as soon as possible.
mRankingComparator.compare(mSortedAndFiltered.get(0), mSortedAndFiltered.get(0));
} else {
Collections.sort(mSortedAndFiltered, mRankingComparator);
}
}
public void dump(PrintWriter pw, String indent) {

View File

@@ -23,6 +23,7 @@ import static android.app.Notification.CATEGORY_CALL;
import static android.app.Notification.CATEGORY_EVENT;
import static android.app.Notification.CATEGORY_MESSAGE;
import static android.app.Notification.CATEGORY_REMINDER;
import static android.app.NotificationManager.IMPORTANCE_DEFAULT;
import static android.app.NotificationManager.IMPORTANCE_LOW;
import static android.app.NotificationManager.IMPORTANCE_MIN;
@@ -62,6 +63,8 @@ import android.testing.TestableLooper;
import android.testing.TestableLooper.RunWithLooper;
import android.util.ArraySet;
import androidx.test.filters.SmallTest;
import com.android.systemui.Dependency;
import com.android.systemui.ForegroundServiceController;
import com.android.systemui.InitController;
@@ -84,8 +87,6 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import androidx.test.filters.SmallTest;
@SmallTest
@RunWith(AndroidTestingRunner.class)
@RunWithLooper
@@ -113,6 +114,7 @@ public class NotificationDataTest extends SysuiTestCase {
MockitoAnnotations.initMocks(this);
when(mMockStatusBarNotification.getUid()).thenReturn(UID_NORMAL);
when(mMockStatusBarNotification.cloneLight()).thenReturn(mMockStatusBarNotification);
when(mMockStatusBarNotification.getKey()).thenReturn("mock_key");
when(mMockPackageManager.checkUidPermission(
eq(Manifest.permission.NOTIFICATION_DURING_SETUP),
@@ -231,6 +233,7 @@ public class NotificationDataTest extends SysuiTestCase {
Notification n = mMockStatusBarNotification.getNotification();
n.flags = Notification.FLAG_FOREGROUND_SERVICE;
NotificationEntry entry = new NotificationEntry(mMockStatusBarNotification);
entry.setRow(mRow);
mNotificationData.add(entry);
Bundle override = new Bundle();
override.putInt(OVERRIDE_VIS_EFFECTS, 255);
@@ -249,6 +252,7 @@ public class NotificationDataTest extends SysuiTestCase {
n = nb.build();
when(mMockStatusBarNotification.getNotification()).thenReturn(n);
NotificationEntry entry = new NotificationEntry(mMockStatusBarNotification);
entry.setRow(mRow);
mNotificationData.add(entry);
Bundle override = new Bundle();
override.putInt(OVERRIDE_VIS_EFFECTS, 255);
@@ -262,6 +266,7 @@ public class NotificationDataTest extends SysuiTestCase {
public void testIsExemptFromDndVisualSuppression_system() {
initStatusBarNotification(false);
NotificationEntry entry = new NotificationEntry(mMockStatusBarNotification);
entry.setRow(mRow);
entry.mIsSystemNotification = true;
mNotificationData.add(entry);
Bundle override = new Bundle();
@@ -276,6 +281,7 @@ public class NotificationDataTest extends SysuiTestCase {
public void testIsNotExemptFromDndVisualSuppression_hiddenCategories() {
initStatusBarNotification(false);
NotificationEntry entry = new NotificationEntry(mMockStatusBarNotification);
entry.setRow(mRow);
entry.mIsSystemNotification = true;
Bundle override = new Bundle();
override.putInt(OVERRIDE_VIS_EFFECTS, NotificationManager.Policy.SUPPRESSED_EFFECT_AMBIENT);
@@ -528,6 +534,62 @@ public class NotificationDataTest extends SysuiTestCase {
assertEquals(-1, mNotificationData.mRankingComparator.compare(a, b));
}
@Test
public void testSort_properlySetsIsTopBucket() {
Notification notification = new Notification.Builder(mContext, "test")
.build();
StatusBarNotification sbn = new StatusBarNotification(
"pkg",
"pkg",
0,
"tag",
0,
0,
notification,
mContext.getUser(),
"",
0);
Bundle override = new Bundle();
override.putInt(OVERRIDE_IMPORTANCE, IMPORTANCE_DEFAULT);
mNotificationData.rankingOverrides.put(sbn.getKey(), override);
NotificationEntry entry = new NotificationEntry(sbn);
entry.setRow(mRow);
mNotificationData.add(entry);
assertTrue(entry.isTopBucket());
}
@Test
public void testSort_properlySetsIsNotTopBucket() {
Notification notification = new Notification.Builder(mContext, "test")
.build();
StatusBarNotification sbn = new StatusBarNotification(
"pkg",
"pkg",
0,
"tag",
0,
0,
notification,
mContext.getUser(),
"",
0);
Bundle override = new Bundle();
override.putInt(OVERRIDE_IMPORTANCE, IMPORTANCE_LOW);
mNotificationData.rankingOverrides.put(sbn.getKey(), override);
NotificationEntry entry = new NotificationEntry(sbn);
entry.setRow(mRow);
mNotificationData.add(entry);
assertFalse(entry.isTopBucket());
}
private void initStatusBarNotification(boolean allowDuringSetup) {
Bundle bundle = new Bundle();
bundle.putBoolean(Notification.EXTRA_ALLOW_DURING_SETUP, allowDuringSetup);