Merge "Fixes activity didn't receive windowing mode change while exitPip"

This commit is contained in:
TreeHugger Robot
2020-08-24 02:32:32 +00:00
committed by Android (Google) Code Review
2 changed files with 12 additions and 5 deletions

View File

@@ -5656,6 +5656,11 @@ public final class ActivityThread extends ClientTransactionHandler {
throw new IllegalArgumentException("Activity token not set. Is the activity attached?");
}
// WindowConfiguration differences aren't considered as public, check it separately.
// multi-window / pip mode changes, if any, should be sent before the configuration
// change callback, see also PinnedStackTests#testConfigurationChangeOrderDuringTransition
handleWindowingModeChangeIfNeeded(activity, newConfig);
final boolean movedToDifferentDisplay = isDifferentDisplay(activity, displayId);
boolean shouldReportChange = false;
if (activity.mCurrentConfig == null) {
@@ -5708,11 +5713,6 @@ public final class ActivityThread extends ClientTransactionHandler {
}
if (shouldReportChange) {
// multi-window / pip mode changes, if any, should be sent before the configuration
// change callback, see also
// PinnedStackTests#testConfigurationChangeOrderDuringTransition
handleWindowingModeChangeIfNeeded(activity, newConfig);
activity.mCalled = false;
activity.onConfigurationChanged(configToReport);
if (!activity.mCalled) {

View File

@@ -3569,6 +3569,13 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
}
void reportResized() {
// If the activity is scheduled to relaunch, skip sending the resized to ViewRootImpl now
// since it will be destroyed anyway. This also prevents the client from receiving
// windowing mode change before it is destroyed.
if (mActivityRecord != null && mActivityRecord.isRelaunching()) {
return;
}
if (Trace.isTagEnabled(TRACE_TAG_WINDOW_MANAGER)) {
Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "wm.reportResized_" + getWindowTag());
}