diff options
author | 2025-03-23 21:20:25 -0700 | |
---|---|---|
committer | 2025-03-23 21:20:25 -0700 | |
commit | 225565e91d552a034d99595950d3228753bc18e1 (patch) | |
tree | 6b95e4e970d9a816d3f4391f644af1bc70d1a571 | |
parent | 93e71566e909835f8c4d2a3878ff292c987858fa (diff) | |
parent | 81c0503e64fa2989bc171fdd5f27b8a542d71694 (diff) |
Merge "Sets mAdded to true only when the #setView is done successfully" into main
-rw-r--r-- | core/java/android/view/ViewRootImpl.java | 16 | ||||
-rw-r--r-- | core/java/android/window/flags/windowing_sdk.aconfig | 11 |
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 + } +} |