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

Commit 2496d18f authored by Louis Chang's avatar Louis Chang Committed by Android (Google) Code Review
Browse files

Merge "Sends TaskFragment info before scheduling activity launch" into sc-v2-dev

parents 7da91812 2bc0ca24
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();
    }
}