summaryrefslogtreecommitdiff
path: root/core/java/android/inputmethodservice/InputMethodService.java
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2020-11-02 22:35:24 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2020-11-02 22:35:24 +0000
commit9da1385292a43a27ed7b1bb4b722271ed173cabe (patch)
treedebdf132edb04af9825da42933c8c4399dbc5556 /core/java/android/inputmethodservice/InputMethodService.java
parent5e2e1c3ea8d031267bb5333831343337b705957d (diff)
parent72de8ead9e6c7bdfd4c43036eab2ae85132e90a9 (diff)
Merge "Remove preRender input"
Diffstat (limited to 'core/java/android/inputmethodservice/InputMethodService.java')
-rw-r--r--core/java/android/inputmethodservice/InputMethodService.java117
1 files changed, 14 insertions, 103 deletions
diff --git a/core/java/android/inputmethodservice/InputMethodService.java b/core/java/android/inputmethodservice/InputMethodService.java
index d290465816b6..32a8c0af0c01 100644
--- a/core/java/android/inputmethodservice/InputMethodService.java
+++ b/core/java/android/inputmethodservice/InputMethodService.java
@@ -19,7 +19,6 @@ package android.inputmethodservice;
import static android.graphics.Color.TRANSPARENT;
import static android.inputmethodservice.InputMethodServiceProto.CANDIDATES_VIEW_STARTED;
import static android.inputmethodservice.InputMethodServiceProto.CANDIDATES_VISIBILITY;
-import static android.inputmethodservice.InputMethodServiceProto.CAN_PRE_RENDER;
import static android.inputmethodservice.InputMethodServiceProto.CONFIGURATION;
import static android.inputmethodservice.InputMethodServiceProto.DECOR_VIEW_VISIBLE;
import static android.inputmethodservice.InputMethodServiceProto.DECOR_VIEW_WAS_VISIBLE;
@@ -33,7 +32,6 @@ import static android.inputmethodservice.InputMethodServiceProto.INPUT_VIEW_STAR
import static android.inputmethodservice.InputMethodServiceProto.IN_SHOW_WINDOW;
import static android.inputmethodservice.InputMethodServiceProto.IS_FULLSCREEN;
import static android.inputmethodservice.InputMethodServiceProto.IS_INPUT_VIEW_SHOWN;
-import static android.inputmethodservice.InputMethodServiceProto.IS_PRE_RENDERED;
import static android.inputmethodservice.InputMethodServiceProto.InsetsProto.CONTENT_TOP_INSETS;
import static android.inputmethodservice.InputMethodServiceProto.InsetsProto.TOUCHABLE_INSETS;
import static android.inputmethodservice.InputMethodServiceProto.InsetsProto.TOUCHABLE_REGION;
@@ -421,10 +419,6 @@ public class InputMethodService extends AbstractInputMethodService {
boolean mDecorViewVisible;
boolean mDecorViewWasVisible;
boolean mInShowWindow;
- // True if pre-rendering of IME views/window is supported.
- boolean mCanPreRender;
- // If IME is pre-rendered.
- boolean mIsPreRendered;
// IME window visibility.
// Use (mDecorViewVisible && mWindowVisible) to check if IME is visible to the user.
boolean mWindowVisible;
@@ -672,10 +666,8 @@ public class InputMethodService extends AbstractInputMethodService {
@Override
public final void dispatchStartInputWithToken(@Nullable InputConnection inputConnection,
@NonNull EditorInfo editorInfo, boolean restarting,
- @NonNull IBinder startInputToken, boolean shouldPreRenderIme) {
+ @NonNull IBinder startInputToken) {
mPrivOps.reportStartInput(startInputToken);
- mCanPreRender = shouldPreRenderIme;
- if (DEBUG) Log.v(TAG, "Will Pre-render IME: " + mCanPreRender);
if (restarting) {
restartInput(inputConnection, editorInfo);
@@ -712,22 +704,12 @@ public class InputMethodService extends AbstractInputMethodService {
+ " Use requestHideSelf(int) itself");
return;
}
- final boolean wasVisible = mIsPreRendered
- ? mDecorViewVisible && mWindowVisible : isInputViewShown();
+ final boolean wasVisible = isInputViewShown();
applyVisibilityInInsetsConsumerIfNecessary(false /* setVisible */);
- if (mIsPreRendered) {
- if (DEBUG) {
- Log.v(TAG, "Making IME window invisible");
- }
- setImeWindowStatus(IME_ACTIVE | IME_INVISIBLE, mBackDisposition);
- onPreRenderedWindowVisibilityChanged(false /* setVisible */);
- } else {
- mShowInputFlags = 0;
- mShowInputRequested = false;
- doHideWindow();
- }
- final boolean isVisible = mIsPreRendered
- ? mDecorViewVisible && mWindowVisible : isInputViewShown();
+ mShowInputFlags = 0;
+ mShowInputRequested = false;
+ doHideWindow();
+ final boolean isVisible = isInputViewShown();
final boolean visibilityChanged = isVisible != wasVisible;
if (resultReceiver != null) {
resultReceiver.send(visibilityChanged
@@ -766,23 +748,15 @@ public class InputMethodService extends AbstractInputMethodService {
+ " Use requestShowSelf(int) itself");
return;
}
- final boolean wasVisible = mIsPreRendered
- ? mDecorViewVisible && mWindowVisible : isInputViewShown();
+ final boolean wasVisible = isInputViewShown();
if (dispatchOnShowInputRequested(flags, false)) {
- if (mIsPreRendered) {
- if (DEBUG) {
- Log.v(TAG, "Making IME window visible");
- }
- onPreRenderedWindowVisibilityChanged(true /* setVisible */);
- } else {
- showWindow(true);
- }
+
+ showWindow(true);
applyVisibilityInInsetsConsumerIfNecessary(true /* setVisible */);
}
// If user uses hard keyboard, IME button should always be shown.
setImeWindowStatus(mapToImeWindowStatus(), mBackDisposition);
- final boolean isVisible = mIsPreRendered
- ? mDecorViewVisible && mWindowVisible : isInputViewShown();
+ final boolean isVisible = isInputViewShown();
final boolean visibilityChanged = isVisible != wasVisible;
if (resultReceiver != null) {
resultReceiver.send(visibilityChanged
@@ -1798,7 +1772,7 @@ public class InputMethodService extends AbstractInputMethodService {
* applied by {@link #updateInputViewShown()}.
*/
public boolean isInputViewShown() {
- return mCanPreRender ? mWindowVisible : mIsInputViewShown && mDecorViewVisible;
+ return mDecorViewVisible;
}
/**
@@ -2151,10 +2125,9 @@ public class InputMethodService extends AbstractInputMethodService {
mDecorViewWasVisible = mDecorViewVisible;
mInShowWindow = true;
- boolean isPreRenderedAndInvisible = mIsPreRendered && !mWindowVisible;
final int previousImeWindowStatus =
(mDecorViewVisible ? IME_ACTIVE : 0) | (isInputViewShown()
- ? (isPreRenderedAndInvisible ? IME_INVISIBLE : IME_VISIBLE) : 0);
+ ? (!mWindowVisible ? IME_INVISIBLE : IME_VISIBLE) : 0);
startViews(prepareWindow(showInput));
final int nextImeWindowStatus = mapToImeWindowStatus();
if (previousImeWindowStatus != nextImeWindowStatus) {
@@ -2163,14 +2136,7 @@ public class InputMethodService extends AbstractInputMethodService {
// compute visibility
onWindowShown();
- mIsPreRendered = mCanPreRender;
- if (mIsPreRendered) {
- onPreRenderedWindowVisibilityChanged(true /* setVisible */);
- } else {
- // Pre-rendering not supported.
- if (DEBUG) Log.d(TAG, "No pre-rendering supported");
- mWindowVisible = true;
- }
+ mWindowVisible = true;
// request draw for the IME surface.
// When IME is not pre-rendered, this will actually show the IME.
@@ -2178,22 +2144,10 @@ public class InputMethodService extends AbstractInputMethodService {
if (DEBUG) Log.v(TAG, "showWindow: draw decorView!");
mWindow.show();
}
- maybeNotifyPreRendered();
mDecorViewWasVisible = true;
mInShowWindow = false;
}
- /**
- * Notify {@link android.view.ImeInsetsSourceConsumer} if IME has been pre-rendered
- * for current EditorInfo, when pre-rendering is enabled.
- */
- private void maybeNotifyPreRendered() {
- if (!mCanPreRender || !mIsPreRendered) {
- return;
- }
- mPrivOps.reportPreRendered(getCurrentInputEditorInfo());
- }
-
private boolean prepareWindow(boolean showInput) {
boolean doShowInput = false;
@@ -2237,16 +2191,6 @@ public class InputMethodService extends AbstractInputMethodService {
if (doShowInput) startExtractingText(false);
}
- private void onPreRenderedWindowVisibilityChanged(boolean setVisible) {
- mWindowVisible = setVisible;
- mShowInputFlags = setVisible ? mShowInputFlags : 0;
- mShowInputRequested = setVisible;
- mDecorViewVisible = setVisible;
- if (setVisible) {
- onWindowShown();
- }
- }
-
/**
* Applies the IME visibility in {@link android.view.ImeInsetsSourceConsumer}.
*
@@ -2277,7 +2221,6 @@ public class InputMethodService extends AbstractInputMethodService {
public void hideWindow() {
if (DEBUG) Log.v(TAG, "CALL: hideWindow");
- mIsPreRendered = false;
mWindowVisible = false;
finishViews(false /* finishingInput */);
if (mDecorViewVisible) {
@@ -2384,32 +2327,6 @@ public class InputMethodService extends AbstractInputMethodService {
mCandidatesViewStarted = true;
onStartCandidatesView(mInputEditorInfo, restarting);
}
- } else if (mCanPreRender && mInputEditorInfo != null && mStartedInputConnection != null) {
- // Pre-render IME views and window when real EditorInfo is available.
- // pre-render IME window and keep it invisible.
- if (DEBUG) Log.v(TAG, "Pre-Render IME for " + mInputEditorInfo.fieldName);
- if (mInShowWindow) {
- Log.w(TAG, "Re-entrance in to showWindow");
- return;
- }
-
- mDecorViewWasVisible = mDecorViewVisible;
- mInShowWindow = true;
- startViews(prepareWindow(true /* showInput */));
-
- // compute visibility
- mIsPreRendered = true;
- onPreRenderedWindowVisibilityChanged(false /* setVisible */);
-
- // request draw for the IME surface.
- // When IME is not pre-rendered, this will actually show the IME.
- if (DEBUG) Log.v(TAG, "showWindow: draw decorView!");
- mWindow.show();
- maybeNotifyPreRendered();
- mDecorViewWasVisible = true;
- mInShowWindow = false;
- } else {
- mIsPreRendered = false;
}
}
@@ -3309,9 +3226,7 @@ public class InputMethodService extends AbstractInputMethodService {
private int mapToImeWindowStatus() {
return IME_ACTIVE
- | (isInputViewShown()
- ? (mCanPreRender ? (mWindowVisible ? IME_VISIBLE : IME_INVISIBLE)
- : IME_VISIBLE) : 0);
+ | (isInputViewShown() ? IME_VISIBLE : 0);
}
private boolean isAutomotive() {
@@ -3349,8 +3264,6 @@ public class InputMethodService extends AbstractInputMethodService {
p.println(" mShowInputRequested=" + mShowInputRequested
+ " mLastShowInputRequested=" + mLastShowInputRequested
- + " mCanPreRender=" + mCanPreRender
- + " mIsPreRendered=" + mIsPreRendered
+ " mShowInputFlags=0x" + Integer.toHexString(mShowInputFlags));
p.println(" mCandidatesVisibility=" + mCandidatesVisibility
+ " mFullscreenApplied=" + mFullscreenApplied
@@ -3401,8 +3314,6 @@ public class InputMethodService extends AbstractInputMethodService {
}
proto.write(SHOW_INPUT_REQUESTED, mShowInputRequested);
proto.write(LAST_SHOW_INPUT_REQUESTED, mLastShowInputRequested);
- proto.write(CAN_PRE_RENDER, mCanPreRender);
- proto.write(IS_PRE_RENDERED, mIsPreRendered);
proto.write(SHOW_INPUT_FLAGS, mShowInputFlags);
proto.write(CANDIDATES_VISIBILITY, mCandidatesVisibility);
proto.write(FULLSCREEN_APPLIED, mFullscreenApplied);