summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/view/ViewRootImpl.java16
-rw-r--r--core/java/android/window/flags/windowing_frontend.aconfig11
-rw-r--r--core/java/android/window/flags/windowing_sdk.aconfig11
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimationController.java3
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt1
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/transition/FocusTransitionObserver.java19
-rw-r--r--packages/SettingsLib/Metadata/Android.bp3
-rw-r--r--packages/SettingsLib/Metadata/proguard.pgcfg8
-rw-r--r--services/core/java/com/android/server/wm/WindowContainer.java4
9 files changed, 71 insertions, 5 deletions
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index c275ed3a3b06..b1676dde3b70 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -138,6 +138,7 @@ import static com.android.window.flags.Flags.enableWindowContextResourcesUpdateO
import static com.android.window.flags.Flags.predictiveBackSwipeEdgeNoneApi;
import static com.android.window.flags.Flags.reduceChangedExclusionRectsMsgs;
import static com.android.window.flags.Flags.setScPropertiesInClient;
+import static com.android.window.flags.Flags.fixViewRootCallTrace;
import android.Manifest;
import android.accessibilityservice.AccessibilityService;
@@ -1590,7 +1591,9 @@ public final class ViewRootImpl implements ViewParent,
mAttachInfo.mPanelParentWindowToken
= panelParentView.getApplicationWindowToken();
}
- mAdded = true;
+ if (!fixViewRootCallTrace()) {
+ mAdded = true;
+ }
int res; /* = WindowManagerImpl.ADD_OKAY; */
// Schedule the first layout -before- adding to the window
@@ -1641,7 +1644,9 @@ public final class ViewRootImpl implements ViewParent,
mTmpFrames.compatScale = compatScale[0];
mInvCompatScale = 1f / compatScale[0];
} catch (RemoteException | RuntimeException e) {
- mAdded = false;
+ if (!fixViewRootCallTrace()) {
+ mAdded = false;
+ }
mView = null;
mAttachInfo.mRootView = null;
mFallbackEventHandler.setView(null);
@@ -1672,7 +1677,9 @@ public final class ViewRootImpl implements ViewParent,
if (DEBUG_LAYOUT) Log.v(mTag, "Added window " + mWindow);
if (res < WindowManagerGlobal.ADD_OKAY) {
mAttachInfo.mRootView = null;
- mAdded = false;
+ if (!fixViewRootCallTrace()) {
+ mAdded = false;
+ }
mFallbackEventHandler.setView(null);
unscheduleTraversals();
setAccessibilityFocus(null, null);
@@ -1781,6 +1788,9 @@ public final class ViewRootImpl implements ViewParent,
mFirstInputStage = nativePreImeStage;
mFirstPostImeInputStage = earlyPostImeStage;
mPendingInputEventQueueLengthCounterName = "aq:pending:" + counterSuffix;
+ if (fixViewRootCallTrace()) {
+ mAdded = true;
+ }
if (!mRemoved || !mAppVisible) {
AnimationHandler.requestAnimatorsEnabled(mAppVisible, this);
diff --git a/core/java/android/window/flags/windowing_frontend.aconfig b/core/java/android/window/flags/windowing_frontend.aconfig
index 59dd32258d8c..99f9929e1071 100644
--- a/core/java/android/window/flags/windowing_frontend.aconfig
+++ b/core/java/android/window/flags/windowing_frontend.aconfig
@@ -388,6 +388,17 @@ flag {
}
flag {
+ name: "remove_depart_target_from_motion"
+ namespace: "windowing_frontend"
+ description: "Remove DepartingAnimationTarget from BackMotionEvent"
+ bug: "395035430"
+ is_fixed_read_only: true
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+}
+
+flag {
name: "predictive_back_default_enable_sdk_36"
namespace: "systemui"
description: "Enable Predictive Back by default with targetSdk>=36"
diff --git a/core/java/android/window/flags/windowing_sdk.aconfig b/core/java/android/window/flags/windowing_sdk.aconfig
index 8808707961a6..f162b1f40d8e 100644
--- a/core/java/android/window/flags/windowing_sdk.aconfig
+++ b/core/java/android/window/flags/windowing_sdk.aconfig
@@ -174,3 +174,14 @@ flag {
purpose: PURPOSE_BUGFIX
}
}
+
+flag {
+ namespace: "windowing_sdk"
+ name: "fix_view_root_call_trace"
+ description: "Do not set mAdded=true unless #setView finished successfully"
+ bug: "385705687"
+ is_fixed_read_only: true
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimationController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimationController.java
index 746632f67725..f91154c7a362 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimationController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/back/BackAnimationController.java
@@ -1050,7 +1050,8 @@ public class BackAnimationController implements RemoteCallable<BackAnimationCont
() -> mShellExecutor.execute(this::onBackAnimationFinished));
if (mApps.length >= 1) {
- BackMotionEvent startEvent = mCurrentTracker.createStartEvent(mApps[0]);
+ BackMotionEvent startEvent = mCurrentTracker.createStartEvent(
+ Flags.removeDepartTargetFromMotion() ? null : mApps[0]);
dispatchOnBackStarted(mActiveCallback, startEvent);
if (startEvent.getSwipeEdge() == EDGE_NONE) {
// TODO(b/373544911): onBackStarted is dispatched here so that
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt
index 2d6253b642be..8b1d3fa65ac6 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt
@@ -3628,6 +3628,7 @@ class DesktopTasksController(
pw.println("${prefix}DesktopTasksController")
DesktopModeStatus.dump(pw, innerPrefix, context)
userRepositories.dump(pw, innerPrefix)
+ focusTransitionObserver.dump(pw, innerPrefix)
}
/** The interface for calls from outside the shell, within the host process. */
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/FocusTransitionObserver.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/FocusTransitionObserver.java
index f0f1ad05008b..b91fb048dc09 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/FocusTransitionObserver.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/FocusTransitionObserver.java
@@ -31,6 +31,7 @@ import android.annotation.NonNull;
import android.app.ActivityManager.RunningTaskInfo;
import android.os.RemoteException;
import android.util.ArraySet;
+import android.util.IndentingPrintWriter;
import android.util.Slog;
import android.util.SparseArray;
import android.window.TransitionInfo;
@@ -38,6 +39,7 @@ import android.window.TransitionInfo;
import com.android.wm.shell.shared.FocusTransitionListener;
import com.android.wm.shell.shared.IFocusTransitionListener;
+import java.io.PrintWriter;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -237,4 +239,21 @@ public class FocusTransitionObserver {
}
return task.displayId == mFocusedDisplayId && isFocusedOnDisplay(task);
}
+
+ /** Dumps focused display and tasks. */
+ public void dump(PrintWriter originalWriter, String prefix) {
+ final IndentingPrintWriter writer =
+ new IndentingPrintWriter(originalWriter, " ", prefix);
+ writer.println("FocusTransitionObserver:");
+ writer.increaseIndent();
+ writer.printf("currentFocusedDisplayId=%d\n", mFocusedDisplayId);
+ writer.println("currentFocusedTaskOnDisplay:");
+ writer.increaseIndent();
+ for (int i = 0; i < mFocusedTaskOnDisplay.size(); i++) {
+ writer.printf("Display #%d: taskId=%d topActivity=%s\n",
+ mFocusedTaskOnDisplay.keyAt(i),
+ mFocusedTaskOnDisplay.valueAt(i).taskId,
+ mFocusedTaskOnDisplay.valueAt(i).topActivity);
+ }
+ }
}
diff --git a/packages/SettingsLib/Metadata/Android.bp b/packages/SettingsLib/Metadata/Android.bp
index 564c3985264d..8701d3d8daae 100644
--- a/packages/SettingsLib/Metadata/Android.bp
+++ b/packages/SettingsLib/Metadata/Android.bp
@@ -19,4 +19,7 @@ android_library {
"androidx.fragment_fragment",
],
kotlincflags: ["-Xjvm-default=all"],
+ optimize: {
+ proguard_flags_files: ["proguard.pgcfg"],
+ },
}
diff --git a/packages/SettingsLib/Metadata/proguard.pgcfg b/packages/SettingsLib/Metadata/proguard.pgcfg
new file mode 100644
index 000000000000..3a137732a229
--- /dev/null
+++ b/packages/SettingsLib/Metadata/proguard.pgcfg
@@ -0,0 +1,8 @@
+# Preserve names for IPC codec to support unmarshalling Parcelable
+-keepnames class com.android.settingslib.metadata.PreferenceCoordinate {
+ public static final ** CREATOR;
+}
+
+-keepnames class com.android.settingslib.metadata.PreferenceScreenCoordinate {
+ public static final ** CREATOR;
+}
diff --git a/services/core/java/com/android/server/wm/WindowContainer.java b/services/core/java/com/android/server/wm/WindowContainer.java
index b1422c20e516..247a51d9fcb3 100644
--- a/services/core/java/com/android/server/wm/WindowContainer.java
+++ b/services/core/java/com/android/server/wm/WindowContainer.java
@@ -3203,7 +3203,9 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
mLocalInsetsSources.valueAt(i).dump(childPrefix, pw);
}
}
- pw.println(prefix + mSafeRegionBounds + " SafeRegionBounds");
+ if (mSafeRegionBounds != null) {
+ pw.println(prefix + "mSafeRegionBounds=" + mSafeRegionBounds);
+ }
}
final void updateSurfacePositionNonOrganized() {