Merge "Block activity launching if DWPC does not allow" into tm-dev

This commit is contained in:
TreeHugger Robot
2022-03-23 03:23:20 +00:00
committed by Android (Google) Code Review

View File

@@ -135,6 +135,7 @@ import com.android.server.wm.LaunchParamsController.LaunchParams;
import java.io.PrintWriter;
import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Date;
/**
@@ -2010,6 +2011,27 @@ class ActivityStarter {
return START_PERMISSION_DENIED;
}
// Do not start the activity if target display's DWPC does not allow it.
// We can't return fatal error code here because it will crash the caller of
// startActivity() if they don't catch the exception. We don't expect 3P apps to make
// changes.
if (mPreferredTaskDisplayArea != null) {
final DisplayContent displayContent = mRootWindowContainer.getDisplayContentOrCreate(
mPreferredTaskDisplayArea.getDisplayId());
if (displayContent != null && displayContent.mDwpcHelper.hasController()) {
final ArrayList<ActivityInfo> activities = new ArrayList<>();
activities.add(r.info);
final int targetWindowingMode = (targetTask != null)
? targetTask.getWindowingMode() : displayContent.getWindowingMode();
if (!displayContent.mDwpcHelper
.canContainActivities(activities, targetWindowingMode)) {
Slog.w(TAG, "Abort to launch " + r.info.getComponentName()
+ " on display area " + mPreferredTaskDisplayArea);
return START_ABORTED;
}
}
}
return START_SUCCESS;
}