summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Cosmin Băieș <cosminbaies@google.com> 2024-10-30 00:19:01 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-10-30 00:19:01 +0000
commit8496b66a305403cc4b663eec26e905ae6eb10f4c (patch)
tree8337fcd3c2cf49d3303dd2c63b2fd48bcf9f316c
parent5f7384fbc5432ebcf7a1daff68729f763c204045 (diff)
parent0d48f6c36170bb11dc6ff3952fafd0f2627a764c (diff)
Merge "Cleanup ENABLE_HIDE_IME_CAPTION_BAR flag" into main
-rw-r--r--core/java/android/inputmethodservice/InputMethodService.java6
-rw-r--r--core/java/android/inputmethodservice/NavigationBarController.java38
-rw-r--r--core/java/android/view/InsetsController.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/navigationbar/views/NavigationBar.java7
-rw-r--r--services/core/java/com/android/server/inputmethod/InputMethodManagerService.java2
-rw-r--r--services/core/java/com/android/server/wm/DisplayPolicy.java13
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/DisplayPolicyTests.java43
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() {