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

Commit d61b5b65 authored by Selim Cinek's avatar Selim Cinek Committed by android-build-merger
Browse files

Merge "Fixed a bug with auto cancelling" into nyc-dev

am: a35d9b3e

* commit 'a35d9b3e':
  Fixed a bug with auto cancelling

Change-Id: I46be6f420c4ad89ffc7cd88f621aed173ba130d1
parents 9e507bd7 a35d9b3e
Loading
Loading
Loading
Loading
+71 −15
Original line number Diff line number Diff line
@@ -956,31 +956,38 @@ public abstract class BaseStatusBar extends SystemUI implements

    protected View bindVetoButtonClickListener(View row, final StatusBarNotification n) {
        View vetoButton = row.findViewById(R.id.veto);
        final String _pkg = n.getPackageName();
        final String _tag = n.getTag();
        final int _id = n.getId();
        final int _userId = n.getUserId();
        vetoButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                // Accessibility feedback
                v.announceForAccessibility(
                        mContext.getString(R.string.accessibility_notification_dismissed));
                performRemoveNotification(n, false /* removeView */);
            }
        });
        vetoButton.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO);
        return vetoButton;
    }

    private void performRemoveNotification(StatusBarNotification n, boolean removeView) {
        final String pkg = n.getPackageName();
        final String tag = n.getTag();
        final int id = n.getId();
        final int userId = n.getUserId();
        try {
                    mBarService.onNotificationClear(_pkg, _tag, _id, _userId);
            mBarService.onNotificationClear(pkg, tag, id, userId);
            if (FORCE_REMOTE_INPUT_HISTORY
                    && mKeysKeptForRemoteInput.contains(n.getKey())) {
                        removeNotification(n.getKey(), null);
                mKeysKeptForRemoteInput.remove(n.getKey());
                removeView = true;
            }
            if (removeView) {
                removeNotification(n.getKey(), null);
            }

        } catch (RemoteException ex) {
            // system process is dead if we're here.
        }
    }
        });
        vetoButton.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO);
        return vetoButton;
    }


    protected void applyColorsAndBackgrounds(StatusBarNotification sbn,
@@ -1826,6 +1833,13 @@ public abstract class BaseStatusBar extends SystemUI implements
        }, afterKeyguardGone);
    }

    public void addPostCollapseAction(Runnable r) {
    }

    public boolean isCollapsing() {
        return false;
    }

    private final class NotificationClicker implements View.OnClickListener {
        public void onClick(final View v) {
            if (!(v instanceof ExpandableNotificationRow)) {
@@ -1875,6 +1889,15 @@ public abstract class BaseStatusBar extends SystemUI implements
                        HeadsUpManager.setIsClickedNotification(row, true);
                        mHeadsUpManager.releaseImmediately(notificationKey);
                    }
                    StatusBarNotification parentToCancel = null;
                    if (shouldAutoCancel(sbn) && mGroupManager.isOnlyChildInGroup(sbn)) {
                        StatusBarNotification summarySbn = mGroupManager.getLogicalGroupSummary(sbn)
                                        .getStatusBarNotification();
                        if (shouldAutoCancel(summarySbn)) {
                            parentToCancel = summarySbn;
                        }
                    }
                    final StatusBarNotification parentToCancelFinal = parentToCancel;
                    new Thread() {
                        @Override
                        public void run() {
@@ -1930,6 +1953,28 @@ public abstract class BaseStatusBar extends SystemUI implements
                            } catch (RemoteException ex) {
                                // system process is dead if we're here.
                            }
                            if (parentToCancelFinal != null) {
                                // We have to post it to the UI thread for synchronization
                                mHandler.post(new Runnable() {
                                    @Override
                                    public void run() {
                                        Runnable removeRunnable = new Runnable() {
                                            @Override
                                            public void run() {
                                                performRemoveNotification(parentToCancelFinal,
                                                        true);
                                            }
                                        };
                                        if (isCollapsing()) {
                                            // To avoid lags we're only performing the remove
                                            // after the shade was collapsed
                                            addPostCollapseAction(removeRunnable);
                                        } else {
                                            removeRunnable.run();
                                        }
                                    }
                                });
                            }
                        }
                    }.start();

@@ -1943,6 +1988,17 @@ public abstract class BaseStatusBar extends SystemUI implements
            }, afterKeyguardGone);
        }

        private boolean shouldAutoCancel(StatusBarNotification sbn) {
            int flags = sbn.getNotification().flags;
            if ((flags & Notification.FLAG_AUTO_CANCEL) != Notification.FLAG_AUTO_CANCEL) {
                return false;
            }
            if ((flags & Notification.FLAG_FOREGROUND_SERVICE) != 0) {
                return false;
            }
            return true;
        }

        public void register(ExpandableNotificationRow row, StatusBarNotification sbn) {
            Notification notification = sbn.getNotification();
            if (notification.contentIntent != null || notification.fullScreenIntent != null) {
+5 −1
Original line number Diff line number Diff line
@@ -215,7 +215,11 @@ public class NotificationGroupManager implements HeadsUpManager.OnHeadsUpChanged

    public boolean isOnlyChildInSuppressedGroup(StatusBarNotification sbn) {
        return isGroupSuppressed(sbn.getGroupKey())
                && !sbn.getNotification().isGroupSummary()
                && isOnlyChildInGroup(sbn);
    }

    public boolean isOnlyChildInGroup(StatusBarNotification sbn) {
        return !sbn.getNotification().isGroupSummary()
                && getTotalNumberOfChildren(sbn) == 1;
    }

+2 −0
Original line number Diff line number Diff line
@@ -3828,10 +3828,12 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
        updateMediaMetaData(true /* metaDataChanged */, true);
    }

    @Override
    public boolean isCollapsing() {
        return mNotificationPanel.isCollapsing();
    }

    @Override
    public void addPostCollapseAction(Runnable r) {
        mPostCollapseRunnables.add(r);
    }