Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d8913d7e authored by Mady Mellor's avatar Mady Mellor Committed by Android (Google) Code Review
Browse files

Merge "Drop the 'initial' of suppressInitialNotification API" into qt-dev

parents d81cd262 8a1f0253
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -5481,7 +5481,8 @@ package android.app {
    method @DimenRes public int getDesiredHeightResId();
    method @NonNull public android.graphics.drawable.Icon getIcon();
    method @NonNull public android.app.PendingIntent getIntent();
    method public boolean getSuppressInitialNotification();
    method @Deprecated public boolean getSuppressInitialNotification();
    method public boolean getSuppressNotification();
    method public void writeToParcel(android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.app.Notification.BubbleMetadata> CREATOR;
  }
@@ -5495,7 +5496,8 @@ package android.app {
    method @NonNull public android.app.Notification.BubbleMetadata.Builder setDesiredHeightResId(@DimenRes int);
    method @NonNull public android.app.Notification.BubbleMetadata.Builder setIcon(@NonNull android.graphics.drawable.Icon);
    method @NonNull public android.app.Notification.BubbleMetadata.Builder setIntent(@NonNull android.app.PendingIntent);
    method @NonNull public android.app.Notification.BubbleMetadata.Builder setSuppressInitialNotification(boolean);
    method @Deprecated @NonNull public android.app.Notification.BubbleMetadata.Builder setSuppressInitialNotification(boolean);
    method @NonNull public android.app.Notification.BubbleMetadata.Builder setSuppressNotification(boolean);
  }
  public static class Notification.Builder {
+39 −8
Original line number Diff line number Diff line
@@ -8557,16 +8557,16 @@ public class Notification implements Parcelable
        private static final int FLAG_AUTO_EXPAND_BUBBLE = 0x00000001;

        /**
         * If set and the app creating the bubble is in the foreground, the bubble will be posted
         * <b>without</b> the associated notification in the notification shade. Subsequent update
         * notifications to this bubble will post a notification in the shade.
         * If set and the app posting the bubble is in the foreground, the bubble will
         * be posted <b>without</b> the associated notification in the notification shade.
         *
         * <p>If the app creating the bubble is not in the foreground this flag has no effect.</p>
         * <p>If the app posting the bubble is not in the foreground this flag has no effect.</p>
         *
         * <p>Generally this flag should only be set if the user has performed an action to request
         * or create a bubble.</p>
         * or create a bubble, or if the user has seen the content in the notification and the
         * notification is no longer relevant.</p>
         */
        private static final int FLAG_SUPPRESS_INITIAL_NOTIFICATION = 0x00000002;
        private static final int FLAG_SUPPRESS_NOTIFICATION = 0x00000002;

        private BubbleMetadata(PendingIntent expandIntent, PendingIntent deleteIntent,
                Icon icon, int height, @DimenRes int heightResId) {
@@ -8645,9 +8645,20 @@ public class Notification implements Parcelable
         * @return whether this bubble should suppress the initial notification when it is posted.
         *
         * @see BubbleMetadata.Builder#setSuppressInitialNotification(boolean)
         * @deprecated TO BE REMOVED, use {@link #getSuppressNotification()} instead.
         */
        @Deprecated
        public boolean getSuppressInitialNotification() {
            return (mFlags & FLAG_SUPPRESS_INITIAL_NOTIFICATION) != 0;
            return (mFlags & FLAG_SUPPRESS_NOTIFICATION) != 0;
        }

        /**
         * @return whether this bubble should suppress the notification when it is posted.
         *
         * @see BubbleMetadata.Builder#setSuppressInitialNotification(boolean)
         */
        public boolean getSuppressNotification() {
            return (mFlags & FLAG_SUPPRESS_NOTIFICATION) != 0;
        }

        public static final @android.annotation.NonNull Parcelable.Creator<BubbleMetadata> CREATOR =
@@ -8806,11 +8817,31 @@ public class Notification implements Parcelable
             *
             * <p>Generally this flag should only be set if the user has performed an action to
             * request or create a bubble.</p>
             *
             * @deprecated TO BE REMOVED, use {@link #setSuppressNotification(boolean)} instead.
             */
            @Deprecated
            @NonNull
            public BubbleMetadata.Builder setSuppressInitialNotification(
                    boolean shouldSupressNotif) {
                setFlag(FLAG_SUPPRESS_INITIAL_NOTIFICATION, shouldSupressNotif);
                setFlag(FLAG_SUPPRESS_NOTIFICATION, shouldSupressNotif);
                return this;
            }

            /**
             * If set and the app posting the bubble is in the foreground, the bubble will be
             * posted <b>without</b> the associated notification in the notification shade.
             *
             * <p>If the app posting the bubble is not in the foreground this flag has no effect.
             * </p>
             *
             * <p>Generally this flag should only be set if the user has performed an action to
             * request or create a bubble, or if the user has seen the content in the notification
             * and the notification is no longer relevant.</p>
             */
            @NonNull
            public BubbleMetadata.Builder setSuppressNotification(boolean shouldSupressNotif) {
                setFlag(FLAG_SUPPRESS_NOTIFICATION, shouldSupressNotif);
                return this;
            }

+10 −6
Original line number Diff line number Diff line
@@ -397,11 +397,8 @@ public class BubbleController implements BubbleExpandedView.OnBubbleBlockedListe
                return;
            }
            if (shouldAutoBubbleForFlags(mContext, entry) || shouldBubble(entry)) {
                // TODO: handle group summaries
                boolean suppressNotification = entry.getBubbleMetadata() != null
                        && entry.getBubbleMetadata().getSuppressInitialNotification()
                        && isForegroundApp(entry.notification.getPackageName());
                entry.setShowInShadeWhenBubble(!suppressNotification);
                // TODO: handle group summaries?
                updateShowInShadeForSuppressNotification(entry);
            }
        }

@@ -422,7 +419,7 @@ public class BubbleController implements BubbleExpandedView.OnBubbleBlockedListe
            }
            if (mNotificationInterruptionStateProvider.shouldBubbleUp(entry)
                    && alertAgain(entry, entry.notification.getNotification())) {
                entry.setShowInShadeWhenBubble(true);
                updateShowInShadeForSuppressNotification(entry);
                entry.setBubbleDismissed(false); // updates come back as bubbles even if dismissed
                updateBubble(entry);
                mStackView.updateDotVisibility(entry.key);
@@ -589,6 +586,13 @@ public class BubbleController implements BubbleExpandedView.OnBubbleBlockedListe
                && isForegroundApp(entry.notification.getPackageName());
    }

    private void updateShowInShadeForSuppressNotification(NotificationEntry entry) {
        boolean suppressNotification = entry.getBubbleMetadata() != null
                && entry.getBubbleMetadata().getSuppressNotification()
                && isForegroundApp(entry.notification.getPackageName());
        entry.setShowInShadeWhenBubble(!suppressNotification);
    }

    /**
     * Return true if the applications with the package name is running in foreground.
     *