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

Commit a3e60d25 authored by Louis Chang's avatar Louis Chang Committed by Automerger Merge Worker
Browse files

Merge "Sends TaskFragment info before scheduling activity launch" into sc-v2-dev am: 2496d18f

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15897576

Change-Id: I8852bb8755d7cd0cec9ba7c4f8f03c7b010ddd1b
parents 67a94e94 2496d18f
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -841,6 +841,12 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks {

                logIfTransactionTooLarge(r.intent, r.getSavedState());

                if (r.isEmbedded()) {
                    // Sending TaskFragmentInfo to client to ensure the info is updated before
                    // the activity creation.
                    mService.mTaskFragmentOrganizerController.dispatchPendingInfoChangedEvent(
                            r.getOrganizedTaskFragment());
                }

                // Create activity launch transaction.
                final ClientTransaction clientTransaction = ClientTransaction.obtain(
+39 −22
Original line number Diff line number Diff line
@@ -505,11 +505,30 @@ public class TaskFragmentOrganizerController extends ITaskFragmentOrganizerContr
        }
        for (int i = 0, n = mPendingTaskFragmentEvents.size(); i < n; i++) {
            PendingTaskFragmentEvent event = mPendingTaskFragmentEvents.get(i);
            dispatchEvent(event);
        }
        mPendingTaskFragmentEvents.clear();
    }

    void dispatchPendingInfoChangedEvent(TaskFragment taskFragment) {
        PendingTaskFragmentEvent event = getPendingTaskFragmentEvent(taskFragment,
                PendingTaskFragmentEvent.EVENT_INFO_CHANGED);
        if (event == null) {
            return;
        }

        dispatchEvent(event);
        mPendingTaskFragmentEvents.remove(event);
    }

    private void dispatchEvent(PendingTaskFragmentEvent event) {
        final ITaskFragmentOrganizer taskFragmentOrg = event.mTaskFragmentOrg;
        final TaskFragment taskFragment = event.mTaskFragment;
        final TaskFragmentOrganizerState state =
                mTaskFragmentOrganizerState.get(taskFragmentOrg.asBinder());
            if (state == null) continue;
        if (state == null) {
            return;
        }
        switch (event.mEventType) {
            case PendingTaskFragmentEvent.EVENT_APPEARED:
                state.onTaskFragmentAppeared(taskFragmentOrg, taskFragment);
@@ -528,6 +547,4 @@ public class TaskFragmentOrganizerController extends ITaskFragmentOrganizerContr
                        event.mException);
        }
    }
        mPendingTaskFragmentEvents.clear();
    }
}