Merge "Revert "Allow hiding the IME navigation bar"" into udc-qpr-dev

This commit is contained in:
Richard MacGregor
2023-08-16 20:23:20 +00:00
committed by Android (Google) Code Review
8 changed files with 7 additions and 120 deletions

View File

@@ -576,12 +576,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 = false;
LayoutInflater mInflater;
TypedArray mThemeAttrs;
@UnsupportedAppUsage

View File

@@ -16,8 +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;
import android.animation.ValueAnimator;
@@ -232,16 +230,6 @@ 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.INVISIBLE);
}
return view.onApplyWindowInsets(insets);
});
}
}
private void uninstallNavigationBarFrameIfNecessary() {
@@ -252,9 +240,6 @@ final class NavigationBarController {
if (parent instanceof ViewGroup) {
((ViewGroup) parent).removeView(mNavigationBarFrame);
}
if (ENABLE_HIDE_IME_CAPTION_BAR) {
mNavigationBarFrame.setOnApplyWindowInsetsListener(null);
}
mNavigationBarFrame = null;
}
@@ -429,9 +414,7 @@ final class NavigationBarController {
decor.bringChildToFront(mNavigationBarFrame);
}
}
if (!ENABLE_HIDE_IME_CAPTION_BAR) {
mNavigationBarFrame.setVisibility(View.VISIBLE);
}
mNavigationBarFrame.setVisibility(View.VISIBLE);
}
}
@@ -452,11 +435,6 @@ final class NavigationBarController {
mShouldShowImeSwitcherWhenImeIsShown;
mShouldShowImeSwitcherWhenImeIsShown = shouldShowImeSwitcherWhenImeIsShown;
if (ENABLE_HIDE_IME_CAPTION_BAR) {
mService.mWindow.getWindow().getDecorView().getWindowInsetsController()
.setImeCaptionBarInsetsHeight(getImeCaptionBarHeight());
}
if (imeDrawsImeNavBar) {
installNavigationBarFrameIfNecessary();
if (mNavigationBarFrame == null) {
@@ -550,16 +528,6 @@ final class NavigationBarController {
return drawLegacyNavigationBarBackground;
}
/**
* Returns the height of the IME caption bar if this should be shown, or {@code 0} instead.
*/
private int getImeCaptionBarHeight() {
return mImeDrawsImeNavBar
? mService.getResources().getDimensionPixelSize(
com.android.internal.R.dimen.navigation_bar_frame_height)
: 0;
}
@Override
public String toDebugString() {
return "{mImeDrawsImeNavBar=" + mImeDrawsImeNavBar

View File

@@ -16,12 +16,10 @@
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;
import static android.view.InsetsSource.ID_IME;
import static android.view.InsetsSource.ID_IME_CAPTION_BAR;
import static android.view.ViewRootImpl.CAPTION_ON_SHELL;
import static android.view.WindowInsets.Type.FIRST;
import static android.view.WindowInsets.Type.LAST;
@@ -42,7 +40,6 @@ import android.app.ActivityThread;
import android.content.Context;
import android.content.res.CompatibilityInfo;
import android.graphics.Insets;
import android.graphics.Point;
import android.graphics.Rect;
import android.os.CancellationSignal;
import android.os.Handler;
@@ -655,7 +652,6 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation
private int mLastWindowingMode;
private boolean mStartingAnimation;
private int mCaptionInsetsHeight = 0;
private int mImeCaptionBarInsetsHeight = 0;
private boolean mAnimationsDisabled;
private boolean mCompatSysUiVisibilityStaled;
@@ -697,9 +693,6 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation
if (!CAPTION_ON_SHELL && source1.getType() == captionBar()) {
return;
}
if (source1.getId() == ID_IME_CAPTION_BAR) {
return;
}
// Don't change the indexes of the sources while traversing. Remove it later.
mPendingRemoveIndexes.add(index1);
@@ -830,9 +823,6 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation
if (mFrame.equals(frame)) {
return;
}
if (mImeCaptionBarInsetsHeight != 0) {
setImeCaptionBarInsetsHeight(mImeCaptionBarInsetsHeight);
}
mHost.notifyInsetsChanged();
mFrame.set(frame);
}
@@ -1017,12 +1007,6 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation
// Ensure to update all existing source consumers
for (int i = mSourceConsumers.size() - 1; i >= 0; i--) {
final InsetsSourceConsumer consumer = mSourceConsumers.valueAt(i);
if (consumer.getId() == ID_IME_CAPTION_BAR) {
// The inset control for the IME caption bar will never be dispatched
// by the server.
continue;
}
final InsetsSourceControl control = mTmpControlArray.get(consumer.getId());
if (control != null) {
controllableTypes |= control.getType();
@@ -1515,8 +1499,7 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation
continue;
}
final InsetsSourceControl control = consumer.getControl();
if (control != null
&& (control.getLeash() != null || control.getId() == ID_IME_CAPTION_BAR)) {
if (control != null && control.getLeash() != null) {
controls.put(control.getId(), new InsetsSourceControl(control));
typesReady |= consumer.getType();
}
@@ -1901,35 +1884,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
|| (source != null && !newFrame.equals(source.getFrame()))) {
mImeCaptionBarInsetsHeight = height;
if (mImeCaptionBarInsetsHeight != 0) {
mState.getOrCreateSource(ID_IME_CAPTION_BAR, captionBar())
.setFrame(newFrame);
getSourceConsumer(ID_IME_CAPTION_BAR, captionBar()).setControl(
new InsetsSourceControl(ID_IME_CAPTION_BAR, captionBar(),
null /* leash */, false /* initialVisible */,
new Point(), Insets.NONE),
new int[1], new int[1]);
} else {
mState.removeSource(ID_IME_CAPTION_BAR);
InsetsSourceConsumer sourceConsumer = mSourceConsumers.get(ID_IME_CAPTION_BAR);
if (sourceConsumer != null) {
sourceConsumer.setControl(null, new int[1], new int[1]);
}
}
mHost.notifyInsetsChanged();
}
}
@Override
public void setSystemBarsBehavior(@Behavior int behavior) {
mHost.setSystemBarsBehavior(behavior);

View File

@@ -20,7 +20,6 @@ import static android.view.InsetsSourceProto.FRAME;
import static android.view.InsetsSourceProto.TYPE;
import static android.view.InsetsSourceProto.VISIBLE;
import static android.view.InsetsSourceProto.VISIBLE_FRAME;
import static android.view.WindowInsets.Type.captionBar;
import static android.view.WindowInsets.Type.ime;
import android.annotation.IntDef;
@@ -48,9 +47,6 @@ public class InsetsSource implements Parcelable {
/** The insets source ID of IME */
public static final int ID_IME = createId(null, 0, ime());
/** The insets source ID of the IME caption bar ("fake" IME navigation bar). */
static final int ID_IME_CAPTION_BAR =
InsetsSource.createId(null /* owner */, 1 /* index */, captionBar());
/**
* Controls whether this source suppresses the scrim. If the scrim is ignored, the system won't
@@ -219,9 +215,7 @@ public class InsetsSource implements Parcelable {
// During drag-move and drag-resizing, the caption insets position may not get updated
// before the app frame get updated. To layout the app content correctly during drag events,
// we always return the insets with the corresponding height covering the top.
// However, with the "fake" IME navigation bar treated as a caption bar, we skip this case
// to set the actual insets towards the bottom of the screen.
if (getType() == WindowInsets.Type.captionBar() && getId() != ID_IME_CAPTION_BAR) {
if (getType() == WindowInsets.Type.captionBar()) {
return Insets.of(0, frame.height(), 0, 0);
}
// Checks for whether there is shared edge with insets for 0-width/height window.

View File

@@ -44,7 +44,6 @@ public class PendingInsetsController implements WindowInsetsController {
private ArrayList<OnControllableInsetsChangedListener> mControllableInsetsChangedListeners
= new ArrayList<>();
private int mCaptionInsetsHeight = 0;
private int mImeCaptionBarInsetsHeight = 0;
private WindowInsetsAnimationControlListener mLoggingListener;
private @InsetsType int mRequestedVisibleTypes = WindowInsets.Type.defaultVisible();
@@ -91,11 +90,6 @@ public class PendingInsetsController implements WindowInsetsController {
mCaptionInsetsHeight = height;
}
@Override
public void setImeCaptionBarInsetsHeight(int height) {
mImeCaptionBarInsetsHeight = height;
}
@Override
public void setSystemBarsBehavior(int behavior) {
if (mReplayedInsetsController != null) {
@@ -174,9 +168,6 @@ public class PendingInsetsController implements WindowInsetsController {
if (mCaptionInsetsHeight != 0) {
controller.setCaptionInsetsHeight(mCaptionInsetsHeight);
}
if (mImeCaptionBarInsetsHeight != 0) {
controller.setImeCaptionBarInsetsHeight(mImeCaptionBarInsetsHeight);
}
if (mAnimationsDisabled) {
controller.setAnimationsDisabled(true);
}

View File

@@ -249,15 +249,6 @@ public interface WindowInsetsController {
*/
void setCaptionInsetsHeight(int height);
/**
* Sets the insets height for the IME caption bar, which corresponds to the
* "fake" IME navigation bar.
*
* @param height the insets height of the IME caption bar.
* @hide
*/
void setImeCaptionBarInsetsHeight(int height);
/**
* Controls the behavior of system bars.
*

View File

@@ -25,7 +25,6 @@ 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;
@@ -1715,12 +1714,10 @@ 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)
});
}
new InsetsFrameProvider(mInsetsSourceOwner, 0, WindowInsets.Type.navigationBars())
.setInsetsSizeOverrides(new InsetsFrameProvider.InsetsSizeOverride[] {
new InsetsFrameProvider.InsetsSizeOverride(
TYPE_INPUT_METHOD, null)});
if (insetsHeight != -1 && !mEdgeBackGestureHandler.isButtonForcedVisible()) {
navBarProvider.setInsetsSize(Insets.of(0, 0, 0, insetsHeight));
}

View File

@@ -6132,8 +6132,6 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub
mVisibilityStateComputer.dump(pw);
p.println(" mInFullscreenMode=" + mInFullscreenMode);
p.println(" mSystemReady=" + mSystemReady + " mInteractive=" + mIsInteractive);
p.println(" ENABLE_HIDE_IME_CAPTION_BAR="
+ InputMethodService.ENABLE_HIDE_IME_CAPTION_BAR);
p.println(" mSettingsObserver=" + mSettingsObserver);
p.println(" mStylusIds=" + (mStylusIds != null
? Arrays.toString(mStylusIds.toArray()) : ""));