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

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

Merge "Sends TaskFragment info before scheduling activity launch" into...

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

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

Change-Id: I0a622e6aa86c63685927df122ac4852fc230093a
parents a658db41 a3e60d25
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();
    }
}