diff options
| author | 2018-06-18 18:22:14 +0000 | |
|---|---|---|
| committer | 2018-06-18 18:22:14 +0000 | |
| commit | 7b3a0d1b16ded193d0ff3c9683e898a1e2e8b17e (patch) | |
| tree | 66c3e0379f30903f7697c5f4fde993f119c59609 | |
| parent | 879af998939369ff8bcd044f31542119263550cc (diff) | |
| parent | 1dd67cbe81c0290cebe986ed08236e12d72a7587 (diff) | |
Merge "Add delay to notifications before they can be dismissed."
4 files changed, 25 insertions, 5 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java index af88911cfcca..36d624a6329f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java @@ -37,6 +37,7 @@ import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.os.AsyncTask; import android.os.Build; +import android.os.SystemClock; import android.os.Bundle; import android.service.notification.StatusBarNotification; import android.util.ArraySet; @@ -992,6 +993,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); + mEntry.setInitializationTime(SystemClock.elapsedRealtime()); Dependency.get(PluginManager.class).addPluginListener(this, NotificationMenuRowPlugin.class, false /* Allow multiple */); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java index 1a645d19798a..a58752c20973 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java @@ -84,6 +84,7 @@ public class NotificationData { public static final class Entry { private static final long LAUNCH_COOLDOWN = 2000; private static final long REMOTE_INPUT_COOLDOWN = 500; + private static final long INITIALIZATION_DELAY = 400; private static final long NOT_LAUNCHED_YET = -LAUNCH_COOLDOWN; private static final int COLOR_INVALID = 1; public String key; @@ -114,6 +115,9 @@ public class NotificationData { public ArraySet<Integer> mActiveAppOps = new ArraySet<>(3); public CharSequence headsUpStatusBarText; public CharSequence headsUpStatusBarTextPublic; + + private long initializationTime = -1; + /** * Whether or not this row represents a system notification. Note that if this is * {@code null}, that means we were either unable to retrieve the info or have yet to @@ -169,6 +173,11 @@ public class NotificationData { return SystemClock.elapsedRealtime() < lastRemoteInputSent + REMOTE_INPUT_COOLDOWN; } + public boolean hasFinishedInitialization() { + return initializationTime == -1 || + SystemClock.elapsedRealtime() > initializationTime + INITIALIZATION_DELAY; + } + /** * Create the icons for a notification * @param context the context to create the icons with @@ -341,6 +350,12 @@ public class NotificationData { } return false; } + + public void setInitializationTime(long time) { + if (initializationTime == -1) { + initializationTime = time; + } + } } private final ArrayMap<String, Entry> mEntries = new ArrayMap<>(); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java index 50a0af3c36c1..7bed01b8223d 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java @@ -4715,10 +4715,13 @@ public class NotificationStackScrollLayout extends ViewGroup if (currView instanceof ExpandableNotificationRow) { ExpandableNotificationRow row = (ExpandableNotificationRow) currView; - mCurrMenuRow = row.createMenu(); - mCurrMenuRow.setSwipeActionHelper(NotificationSwipeHelper.this); - mCurrMenuRow.setMenuClickListener(NotificationStackScrollLayout.this); - mCurrMenuRow.onTouchEvent(currView, ev, 0 /* velocity */); + + if (row.getEntry().hasFinishedInitialization()) { + mCurrMenuRow = row.createMenu(); + mCurrMenuRow.setSwipeActionHelper(NotificationSwipeHelper.this); + mCurrMenuRow.setMenuClickListener(NotificationStackScrollLayout.this); + mCurrMenuRow.onTouchEvent(currView, ev, 0 /* velocity */); + } } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java index 0d50f5a9eef7..ee006d3e267d 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java @@ -178,7 +178,7 @@ public class StackScrollAlgorithm { return false; } ExpandableNotificationRow row = (ExpandableNotificationRow) v; - if (row.areGutsExposed()) { + if (row.areGutsExposed() || !row.getEntry().hasFinishedInitialization()) { return false; } return row.canViewBeDismissed(); |