Merge "Sends TaskFragment info before scheduling activity launch" into sc-v2-dev am: 2496d18f31
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15897576 Change-Id: I8852bb8755d7cd0cec9ba7c4f8f03c7b010ddd1b
This commit is contained in:
@@ -841,6 +841,12 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks {
|
|||||||
|
|
||||||
logIfTransactionTooLarge(r.intent, r.getSavedState());
|
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.
|
// Create activity launch transaction.
|
||||||
final ClientTransaction clientTransaction = ClientTransaction.obtain(
|
final ClientTransaction clientTransaction = ClientTransaction.obtain(
|
||||||
|
|||||||
@@ -505,29 +505,46 @@ public class TaskFragmentOrganizerController extends ITaskFragmentOrganizerContr
|
|||||||
}
|
}
|
||||||
for (int i = 0, n = mPendingTaskFragmentEvents.size(); i < n; i++) {
|
for (int i = 0, n = mPendingTaskFragmentEvents.size(); i < n; i++) {
|
||||||
PendingTaskFragmentEvent event = mPendingTaskFragmentEvents.get(i);
|
PendingTaskFragmentEvent event = mPendingTaskFragmentEvents.get(i);
|
||||||
final ITaskFragmentOrganizer taskFragmentOrg = event.mTaskFragmentOrg;
|
dispatchEvent(event);
|
||||||
final TaskFragment taskFragment = event.mTaskFragment;
|
|
||||||
final TaskFragmentOrganizerState state =
|
|
||||||
mTaskFragmentOrganizerState.get(taskFragmentOrg.asBinder());
|
|
||||||
if (state == null) continue;
|
|
||||||
switch (event.mEventType) {
|
|
||||||
case PendingTaskFragmentEvent.EVENT_APPEARED:
|
|
||||||
state.onTaskFragmentAppeared(taskFragmentOrg, taskFragment);
|
|
||||||
break;
|
|
||||||
case PendingTaskFragmentEvent.EVENT_VANISHED:
|
|
||||||
state.onTaskFragmentVanished(taskFragmentOrg, taskFragment);
|
|
||||||
break;
|
|
||||||
case PendingTaskFragmentEvent.EVENT_INFO_CHANGED:
|
|
||||||
state.onTaskFragmentInfoChanged(taskFragmentOrg, taskFragment);
|
|
||||||
break;
|
|
||||||
case PendingTaskFragmentEvent.EVENT_PARENT_INFO_CHANGED:
|
|
||||||
state.onTaskFragmentParentInfoChanged(taskFragmentOrg, taskFragment);
|
|
||||||
break;
|
|
||||||
case PendingTaskFragmentEvent.EVENT_ERROR:
|
|
||||||
state.onTaskFragmentError(taskFragmentOrg, event.mErrorCallback,
|
|
||||||
event.mException);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
mPendingTaskFragmentEvents.clear();
|
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) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
switch (event.mEventType) {
|
||||||
|
case PendingTaskFragmentEvent.EVENT_APPEARED:
|
||||||
|
state.onTaskFragmentAppeared(taskFragmentOrg, taskFragment);
|
||||||
|
break;
|
||||||
|
case PendingTaskFragmentEvent.EVENT_VANISHED:
|
||||||
|
state.onTaskFragmentVanished(taskFragmentOrg, taskFragment);
|
||||||
|
break;
|
||||||
|
case PendingTaskFragmentEvent.EVENT_INFO_CHANGED:
|
||||||
|
state.onTaskFragmentInfoChanged(taskFragmentOrg, taskFragment);
|
||||||
|
break;
|
||||||
|
case PendingTaskFragmentEvent.EVENT_PARENT_INFO_CHANGED:
|
||||||
|
state.onTaskFragmentParentInfoChanged(taskFragmentOrg, taskFragment);
|
||||||
|
break;
|
||||||
|
case PendingTaskFragmentEvent.EVENT_ERROR:
|
||||||
|
state.onTaskFragmentError(taskFragmentOrg, event.mErrorCallback,
|
||||||
|
event.mException);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user