summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Louis Chang <louischang@google.com> 2025-03-23 21:20:25 -0700
committer Android (Google) Code Review <android-gerrit@google.com> 2025-03-23 21:20:25 -0700
commit225565e91d552a034d99595950d3228753bc18e1 (patch)
tree6b95e4e970d9a816d3f4391f644af1bc70d1a571
parent93e71566e909835f8c4d2a3878ff292c987858fa (diff)
parent81c0503e64fa2989bc171fdd5f27b8a542d71694 (diff)
Merge "Sets mAdded to true only when the #setView is done successfully" into main
-rw-r--r--core/java/android/view/ViewRootImpl.java16
-rw-r--r--core/java/android/window/flags/windowing_sdk.aconfig11
2 files changed, 24 insertions, 3 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_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
+ }
+}