Merge "Check Task windowing mode when reporting display features" into tm-dev am: cfe0279f69
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18972307 Change-Id: I0d627b6276108f6801ce36aee60a1820844f879c Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -25,7 +25,10 @@ import static androidx.window.util.ExtensionHelper.transformToWindowSpaceRect;
|
|||||||
|
|
||||||
import android.annotation.Nullable;
|
import android.annotation.Nullable;
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
|
import android.app.ActivityManager;
|
||||||
|
import android.app.ActivityManager.AppTask;
|
||||||
import android.app.Application;
|
import android.app.Application;
|
||||||
|
import android.app.WindowConfiguration;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.graphics.Rect;
|
import android.graphics.Rect;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
@@ -183,7 +186,7 @@ public class WindowLayoutComponentImpl implements WindowLayoutComponent {
|
|||||||
return features;
|
return features;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (activity.isInMultiWindowMode()) {
|
if (isTaskInMultiWindowMode(activity)) {
|
||||||
// It is recommended not to report any display features in multi-window mode, since it
|
// It is recommended not to report any display features in multi-window mode, since it
|
||||||
// won't be possible to synchronize the display feature positions with window movement.
|
// won't be possible to synchronize the display feature positions with window movement.
|
||||||
return features;
|
return features;
|
||||||
@@ -209,6 +212,32 @@ public class WindowLayoutComponentImpl implements WindowLayoutComponent {
|
|||||||
return features;
|
return features;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks whether the task associated with the activity is in multi-window. If task info is not
|
||||||
|
* available it defaults to {@code true}.
|
||||||
|
*/
|
||||||
|
private boolean isTaskInMultiWindowMode(@NonNull Activity activity) {
|
||||||
|
final ActivityManager am = activity.getSystemService(ActivityManager.class);
|
||||||
|
if (am == null) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
final List<AppTask> appTasks = am.getAppTasks();
|
||||||
|
final int taskId = activity.getTaskId();
|
||||||
|
AppTask task = null;
|
||||||
|
for (AppTask t : appTasks) {
|
||||||
|
if (t.getTaskInfo().taskId == taskId) {
|
||||||
|
task = t;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (task == null) {
|
||||||
|
// The task might be removed on the server already.
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return WindowConfiguration.inMultiWindowMode(task.getTaskInfo().getWindowingMode());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns {@link true} if a {@link Rect} has zero width and zero height,
|
* Returns {@link true} if a {@link Rect} has zero width and zero height,
|
||||||
* {@code false} otherwise.
|
* {@code false} otherwise.
|
||||||
|
|||||||
Reference in New Issue
Block a user