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

Commit e9ac470f authored by Kevin Han's avatar Kevin Han
Browse files

Move row check to requestPipeline instead of start

When aborting the state happens before the row check, it is possible to
abort the row inflation task since we use entry.abortTask() as the
underlying abortStage implementation. This CL moves the check to
requestPipeline before the abortStage call.

Bug: 153295369
Test: Call phone. See notification at top
Change-Id: Ic48c2051f3d3aa655496b19530e7e055708afe14
parent b145e470
Loading
Loading
Loading
Loading
+5 −6
Original line number Diff line number Diff line
@@ -151,9 +151,12 @@ public final class NotifBindPipeline {
     * the real work once rather than repeatedly start and cancel it.
     */
    private void requestPipelineRun(NotificationEntry entry) {
        mLogger.logRequestPipelineRun(entry.getKey());

        final BindEntry bindEntry = getBindEntry(entry);
        if (bindEntry.row == null) {
            // Row is not managed yet but may be soon. Stop for now.
            return;
        }
        mLogger.logRequestPipelineRun(entry.getKey());

        // Abort any existing pipeline run
        mStage.abortStage(entry, bindEntry.row);
@@ -177,10 +180,6 @@ public final class NotifBindPipeline {

        final BindEntry bindEntry = mBindEntries.get(entry);
        final ExpandableNotificationRow row = bindEntry.row;
        if (row == null) {
            // Row is not managed yet but may be soon. Stop for now.
            return;
        }

        mStage.executeStage(entry, row, (en) -> onPipelineComplete(en));
    }