diff options
| author | 2024-10-30 00:19:01 +0000 | |
|---|---|---|
| committer | 2024-10-30 00:19:01 +0000 | |
| commit | 8496b66a305403cc4b663eec26e905ae6eb10f4c (patch) | |
| tree | 8337fcd3c2cf49d3303dd2c63b2fd48bcf9f316c | |
| parent | 5f7384fbc5432ebcf7a1daff68729f763c204045 (diff) | |
| parent | 0d48f6c36170bb11dc6ff3952fafd0f2627a764c (diff) | |
Merge "Cleanup ENABLE_HIDE_IME_CAPTION_BAR flag" into main
7 files changed, 17 insertions, 96 deletions
diff --git a/core/java/android/inputmethodservice/InputMethodService.java b/core/java/android/inputmethodservice/InputMethodService.java index 49e23584cf4f..8c3f0ef08039 100644 --- a/core/java/android/inputmethodservice/InputMethodService.java +++ b/core/java/android/inputmethodservice/InputMethodService.java @@ -603,12 +603,6 @@ public class InputMethodService extends AbstractInputMethodService { @EnabledSince(targetSdkVersion = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final long DISALLOW_INPUT_METHOD_INTERFACE_OVERRIDE = 148086656L; - /** - * Enable the logic to allow hiding the IME caption bar ("fake" IME navigation bar). - * @hide - */ - public static final boolean ENABLE_HIDE_IME_CAPTION_BAR = true; - LayoutInflater mInflater; TypedArray mThemeAttrs; @UnsupportedAppUsage diff --git a/core/java/android/inputmethodservice/NavigationBarController.java b/core/java/android/inputmethodservice/NavigationBarController.java index 3ce67b0e0ec1..b08454dd7f8f 100644 --- a/core/java/android/inputmethodservice/NavigationBarController.java +++ b/core/java/android/inputmethodservice/NavigationBarController.java @@ -16,7 +16,6 @@ package android.inputmethodservice; -import static android.inputmethodservice.InputMethodService.ENABLE_HIDE_IME_CAPTION_BAR; import static android.view.WindowInsets.Type.captionBar; import static android.view.WindowInsetsController.APPEARANCE_LIGHT_NAVIGATION_BARS; @@ -260,15 +259,15 @@ final class NavigationBarController { setIconTintInternal(calculateTargetDarkIntensity(mAppearance, mDrawLegacyNavigationBarBackground)); - if (ENABLE_HIDE_IME_CAPTION_BAR) { - mNavigationBarFrame.setOnApplyWindowInsetsListener((view, insets) -> { - if (mNavigationBarFrame != null) { - boolean visible = insets.isVisible(captionBar()); - mNavigationBarFrame.setVisibility(visible ? View.VISIBLE : View.GONE); - } - return view.onApplyWindowInsets(insets); - }); - } + mNavigationBarFrame.setOnApplyWindowInsetsListener((view, insets) -> { + if (mNavigationBarFrame != null) { + // The IME window receives IME-specific captionBar insets, representing the + // IME navigation bar. + boolean visible = insets.isVisible(captionBar()); + mNavigationBarFrame.setVisibility(visible ? View.VISIBLE : View.GONE); + } + return view.onApplyWindowInsets(insets); + }); } private void uninstallNavigationBarFrameIfNecessary() { @@ -279,9 +278,7 @@ final class NavigationBarController { if (parent instanceof ViewGroup) { ((ViewGroup) parent).removeView(mNavigationBarFrame); } - if (ENABLE_HIDE_IME_CAPTION_BAR) { - mNavigationBarFrame.setOnApplyWindowInsetsListener(null); - } + mNavigationBarFrame.setOnApplyWindowInsetsListener(null); mNavigationBarFrame = null; } @@ -474,9 +471,6 @@ final class NavigationBarController { decor.bringChildToFront(mNavigationBarFrame); } } - if (!ENABLE_HIDE_IME_CAPTION_BAR) { - mNavigationBarFrame.setVisibility(View.VISIBLE); - } } } @@ -497,10 +491,8 @@ final class NavigationBarController { mShouldShowImeSwitcherWhenImeIsShown; mShouldShowImeSwitcherWhenImeIsShown = shouldShowImeSwitcherWhenImeIsShown; - if (ENABLE_HIDE_IME_CAPTION_BAR) { - mService.mWindow.getWindow().getDecorView().getWindowInsetsController() - .setImeCaptionBarInsetsHeight(getImeCaptionBarHeight()); - } + mService.mWindow.getWindow().getDecorView().getWindowInsetsController() + .setImeCaptionBarInsetsHeight(getImeCaptionBarHeight(imeDrawsImeNavBar)); if (imeDrawsImeNavBar) { installNavigationBarFrameIfNecessary(); @@ -608,9 +600,11 @@ final class NavigationBarController { /** * Returns the height of the IME caption bar if this should be shown, or {@code 0} instead. + * + * @param imeDrawsImeNavBar whether the IME should show the IME navigation bar. */ - private int getImeCaptionBarHeight() { - return mImeDrawsImeNavBar + private int getImeCaptionBarHeight(boolean imeDrawsImeNavBar) { + return imeDrawsImeNavBar ? mService.getResources().getDimensionPixelSize( com.android.internal.R.dimen.navigation_bar_frame_height) : 0; diff --git a/core/java/android/view/InsetsController.java b/core/java/android/view/InsetsController.java index 35d791156ea3..25d2246424de 100644 --- a/core/java/android/view/InsetsController.java +++ b/core/java/android/view/InsetsController.java @@ -16,7 +16,6 @@ package android.view; -import static android.inputmethodservice.InputMethodService.ENABLE_HIDE_IME_CAPTION_BAR; import static android.os.Trace.TRACE_TAG_VIEW; import static android.view.InsetsControllerProto.CONTROL; import static android.view.InsetsControllerProto.STATE; @@ -2148,9 +2147,6 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation @Override public void setImeCaptionBarInsetsHeight(int height) { - if (!ENABLE_HIDE_IME_CAPTION_BAR) { - return; - } Rect newFrame = new Rect(mFrame.left, mFrame.bottom - height, mFrame.right, mFrame.bottom); InsetsSource source = mState.peekSource(ID_IME_CAPTION_BAR); if (mImeCaptionBarInsetsHeight != height diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/views/NavigationBar.java b/packages/SystemUI/src/com/android/systemui/navigationbar/views/NavigationBar.java index c70a5234dfca..96c0cac53908 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/views/NavigationBar.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/views/NavigationBar.java @@ -25,12 +25,10 @@ import static android.app.StatusBarManager.WindowType; import static android.app.StatusBarManager.WindowVisibleState; import static android.app.StatusBarManager.windowStateToString; import static android.app.WindowConfiguration.ROTATION_UNDEFINED; -import static android.inputmethodservice.InputMethodService.ENABLE_HIDE_IME_CAPTION_BAR; import static android.view.InsetsSource.FLAG_SUPPRESS_SCRIM; import static android.view.WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE; import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS; import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_NO_MOVE_ANIMATION; -import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD; import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_3BUTTON; import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL; @@ -1836,11 +1834,6 @@ public class NavigationBar extends ViewController<NavigationBarView> implements private InsetsFrameProvider[] getInsetsFrameProvider(int insetsHeight, Context userContext) { final InsetsFrameProvider navBarProvider = new InsetsFrameProvider(mInsetsSourceOwner, 0, WindowInsets.Type.navigationBars()); - if (!ENABLE_HIDE_IME_CAPTION_BAR) { - navBarProvider.setInsetsSizeOverrides(new InsetsFrameProvider.InsetsSizeOverride[] { - new InsetsFrameProvider.InsetsSizeOverride(TYPE_INPUT_METHOD, null) - }); - } if (insetsHeight != -1 && !mEdgeBackGestureHandler.isButtonForcedVisible()) { navBarProvider.setInsetsSize(Insets.of(0, 0, 0, insetsHeight)); } diff --git a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java index 131b9ba419a9..15d76a27490e 100644 --- a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java +++ b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java @@ -6078,8 +6078,6 @@ public final class InputMethodManagerService implements IInputMethodManagerImpl. p.println(" mSystemReady=" + mSystemReady); p.println(" mInteractive=" + mIsInteractive); p.println(" mConcurrentMultiUserModeEnabled=" + mConcurrentMultiUserModeEnabled); - p.println(" ENABLE_HIDE_IME_CAPTION_BAR=" - + InputMethodService.ENABLE_HIDE_IME_CAPTION_BAR); final int currentImeUserId; synchronized (ImfLock.class) { currentImeUserId = mCurrentImeUserId; diff --git a/services/core/java/com/android/server/wm/DisplayPolicy.java b/services/core/java/com/android/server/wm/DisplayPolicy.java index 5b2fecd584b0..c7d57fe89972 100644 --- a/services/core/java/com/android/server/wm/DisplayPolicy.java +++ b/services/core/java/com/android/server/wm/DisplayPolicy.java @@ -17,7 +17,6 @@ package com.android.server.wm; import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; -import static android.inputmethodservice.InputMethodService.ENABLE_HIDE_IME_CAPTION_BAR; import static android.view.Display.TYPE_INTERNAL; import static android.view.InsetsFrameProvider.SOURCE_ARBITRARY_RECTANGLE; import static android.view.InsetsFrameProvider.SOURCE_CONTAINER_BOUNDS; @@ -1248,17 +1247,7 @@ public class DisplayPolicy { throw new IllegalArgumentException("IME insets must be provided by a window."); } - if (!ENABLE_HIDE_IME_CAPTION_BAR && mNavigationBar != null && mHasBottomNavigationBar) { - // In gesture navigation, nav bar frame is larger than frame to calculate insets. - // IME should not provide frame which is smaller than the nav bar frame. Otherwise, - // nav bar might be overlapped with the content of the client when IME is shown. - sTmpRect.set(inOutFrame); - sTmpRect.intersectUnchecked(mNavigationBar.getFrame()); - inOutFrame.inset(windowState.mGivenContentInsets); - inOutFrame.union(sTmpRect); - } else { - inOutFrame.inset(windowState.mGivenContentInsets); - } + inOutFrame.inset(windowState.mGivenContentInsets); return 0; }; } diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayPolicyTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayPolicyTests.java index eb8bc9125034..27d46fc4e39e 100644 --- a/services/tests/wmtests/src/com/android/server/wm/DisplayPolicyTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/DisplayPolicyTests.java @@ -16,10 +16,8 @@ package com.android.server.wm; -import static android.inputmethodservice.InputMethodService.ENABLE_HIDE_IME_CAPTION_BAR; import static android.view.DisplayCutout.NO_CUTOUT; import static android.view.InsetsSource.ID_IME; -import static android.view.RoundedCorners.NO_ROUNDED_CORNERS; import static android.view.Surface.ROTATION_0; import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; @@ -57,14 +55,11 @@ import android.graphics.PixelFormat; import android.graphics.Rect; import android.platform.test.annotations.Presubmit; import android.view.DisplayInfo; -import android.view.DisplayShape; import android.view.InsetsFrameProvider; import android.view.InsetsSource; import android.view.InsetsState; -import android.view.PrivacyIndicatorBounds; import android.view.Surface; import android.view.WindowInsets; -import android.view.WindowInsets.Side; import android.view.WindowManager; import androidx.test.filters.SmallTest; @@ -495,44 +490,6 @@ public class DisplayPolicyTests extends WindowTestsBase { di.logicalHeight).mNonDecorInsets.bottom); } - @SetupWindows(addWindows = { W_NAVIGATION_BAR, W_INPUT_METHOD }) - @Test - public void testImeMinimalSourceFrame() { - Assume.assumeFalse("Behavior no longer needed with ENABLE_HIDE_IME_CAPTION_BAR", - ENABLE_HIDE_IME_CAPTION_BAR); - - final DisplayPolicy displayPolicy = mDisplayContent.getDisplayPolicy(); - final DisplayInfo displayInfo = mDisplayContent.getDisplayInfo(); - - WindowManager.LayoutParams attrs = mNavBarWindow.mAttrs; - displayPolicy.addWindowLw(mNavBarWindow, attrs); - mNavBarWindow.setRequestedSize(attrs.width, attrs.height); - mNavBarWindow.getControllableInsetProvider().setServerVisible(true); - final InsetsState state = mDisplayContent.getInsetsStateController().getRawInsetsState(); - mImeWindow.mAboveInsetsState.set(state); - mDisplayContent.mDisplayFrames = new DisplayFrames( - state, displayInfo, NO_CUTOUT, NO_ROUNDED_CORNERS, new PrivacyIndicatorBounds(), - DisplayShape.NONE); - - mDisplayContent.setInputMethodWindowLocked(mImeWindow); - mImeWindow.mAttrs.setFitInsetsSides(Side.all() & ~Side.BOTTOM); - mImeWindow.mGivenContentInsets.set(0, displayInfo.logicalHeight, 0, 0); - mImeWindow.getControllableInsetProvider().setServerVisible(true); - - displayPolicy.layoutWindowLw(mNavBarWindow, null, mDisplayContent.mDisplayFrames); - displayPolicy.layoutWindowLw(mImeWindow, null, mDisplayContent.mDisplayFrames); - - final InsetsSource imeSource = state.peekSource(ID_IME); - final InsetsSource navBarSource = state.peekSource( - mNavBarWindow.getControllableInsetProvider().getSource().getId()); - - assertNotNull(imeSource); - assertNotNull(navBarSource); - assertFalse(imeSource.getFrame().isEmpty()); - assertFalse(navBarSource.getFrame().isEmpty()); - assertTrue(imeSource.getFrame().contains(navBarSource.getFrame())); - } - @SetupWindows(addWindows = W_INPUT_METHOD) @Test public void testImeInsetsGivenContentFrame() { |