From 67fe0bbc30970e2819978d2dd94e2a42f709497f Mon Sep 17 00:00:00 2001 From: Taran Singh Date: Thu, 19 Sep 2024 22:44:57 +0000 Subject: ZeroJank: Make version-gate flag non-static The flag used for version-gating zerojankProxy should really be non-static so compatChanges check is true to app's targetSdk introduced in [1] [1]: I6b8787a2ada0b4a60e6b448b674d05e172e594a7 Bug: 349701662 Bug: 352594277 Test: atest CtsInputMethodTestCases Flag: compatchange_for_zerojankproxy Change-Id: I5b429d9405984728b57f8665ca486ff4132ac837 --- .../view/inputmethod/InputMethodManager.java | 26 ++++++++++++---------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/core/java/android/view/inputmethod/InputMethodManager.java b/core/java/android/view/inputmethod/InputMethodManager.java index 2f649c21fe08..1e5c6d8177e1 100644 --- a/core/java/android/view/inputmethod/InputMethodManager.java +++ b/core/java/android/view/inputmethod/InputMethodManager.java @@ -464,13 +464,6 @@ public final class InputMethodManager { @EnabledSince(targetSdkVersion = Build.VERSION_CODES.VANILLA_ICE_CREAM) private static final long USE_ASYNC_SHOW_HIDE_METHOD = 352594277L; // This is a bug id. - /** - * Version-gating is guarded by bug-fix flag. - */ - private static final boolean ASYNC_SHOW_HIDE_METHOD_ENABLED = - !Flags.compatchangeForZerojankproxy() - || CompatChanges.isChangeEnabled(USE_ASYNC_SHOW_HIDE_METHOD); - /** * If {@code true}, avoid calling the * {@link com.android.server.inputmethod.InputMethodManagerService InputMethodManagerService} @@ -614,6 +607,15 @@ public final class InputMethodManager { @UnsupportedAppUsage Rect mCursorRect = new Rect(); + /** + * Version-gating is guarded by bug-fix flag. + */ + // Note: this is non-static so that it only gets initialized once CompatChanges has + // access to the correct application context. + private final boolean mAsyncShowHideMethodEnabled = + !Flags.compatchangeForZerojankproxy() + || CompatChanges.isChangeEnabled(USE_ASYNC_SHOW_HIDE_METHOD); + /** Cached value for {@link #isStylusHandwritingAvailable} for userId. */ @GuardedBy("mH") private PropertyInvalidatedCache mStylusHandwritingAvailableCache; @@ -2419,7 +2421,7 @@ public final class InputMethodManager { mCurRootView.getLastClickToolType(), resultReceiver, reason, - ASYNC_SHOW_HIDE_METHOD_ENABLED); + mAsyncShowHideMethodEnabled); } } } @@ -2463,7 +2465,7 @@ public final class InputMethodManager { mCurRootView.getLastClickToolType(), resultReceiver, reason, - ASYNC_SHOW_HIDE_METHOD_ENABLED); + mAsyncShowHideMethodEnabled); } } @@ -2572,7 +2574,7 @@ public final class InputMethodManager { return true; } else { return IInputMethodManagerGlobalInvoker.hideSoftInput(mClient, windowToken, - statsToken, flags, resultReceiver, reason, ASYNC_SHOW_HIDE_METHOD_ENABLED); + statsToken, flags, resultReceiver, reason, mAsyncShowHideMethodEnabled); } } } @@ -2615,7 +2617,7 @@ public final class InputMethodManager { ImeTracker.forLogging().onProgress(statsToken, ImeTracker.PHASE_CLIENT_VIEW_SERVED); return IInputMethodManagerGlobalInvoker.hideSoftInput(mClient, view.getWindowToken(), - statsToken, flags, null, reason, ASYNC_SHOW_HIDE_METHOD_ENABLED); + statsToken, flags, null, reason, mAsyncShowHideMethodEnabled); } } @@ -3392,7 +3394,7 @@ public final class InputMethodManager { servedInputConnection == null ? null : servedInputConnection.asIRemoteAccessibilityInputConnection(), view.getContext().getApplicationInfo().targetSdkVersion, targetUserId, - mImeDispatcher, ASYNC_SHOW_HIDE_METHOD_ENABLED); + mImeDispatcher, mAsyncShowHideMethodEnabled); } else { res = IInputMethodManagerGlobalInvoker.startInputOrWindowGainedFocus( startInputReason, mClient, windowGainingFocus, startInputFlags, -- cgit v1.2.3-59-g8ed1b