Merge "Revert "Allow hiding the IME navigation bar"" into udc-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
b6a5436ae4
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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.
|
||||
*
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
@@ -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()) : ""));
|
||||
|
||||
Reference in New Issue
Block a user