summaryrefslogtreecommitdiff
path: root/core/java/android/inputmethodservice/InputMethodService.java
diff options
context:
space:
mode:
Diffstat (limited to 'core/java/android/inputmethodservice/InputMethodService.java')
-rw-r--r--core/java/android/inputmethodservice/InputMethodService.java21
1 files changed, 18 insertions, 3 deletions
diff --git a/core/java/android/inputmethodservice/InputMethodService.java b/core/java/android/inputmethodservice/InputMethodService.java
index 44640c44332e..fe8f3d7edae0 100644
--- a/core/java/android/inputmethodservice/InputMethodService.java
+++ b/core/java/android/inputmethodservice/InputMethodService.java
@@ -90,6 +90,7 @@ import android.text.method.MovementMethod;
import android.util.Log;
import android.util.PrintWriterPrinter;
import android.util.Printer;
+import android.util.imetracing.ImeTracing;
import android.util.proto.ProtoOutputStream;
import android.view.Gravity;
import android.view.KeyCharacterMap;
@@ -116,6 +117,7 @@ import android.view.inputmethod.InputBinding;
import android.view.inputmethod.InputConnection;
import android.view.inputmethod.InputContentInfo;
import android.view.inputmethod.InputMethod;
+import android.view.inputmethod.InputMethodEditorTraceProto.InputMethodServiceTraceProto;
import android.view.inputmethod.InputMethodManager;
import android.view.inputmethod.InputMethodSubtype;
import android.widget.FrameLayout;
@@ -708,6 +710,8 @@ public class InputMethodService extends AbstractInputMethodService {
+ " Use requestHideSelf(int) itself");
return;
}
+ ImeTracing.getInstance().triggerServiceDump(
+ "InputMethodService.InputMethodImpl#hideSoftInput", InputMethodService.this);
final boolean wasVisible = isInputViewShown();
Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "IMS.hideSoftInput");
@@ -762,6 +766,8 @@ public class InputMethodService extends AbstractInputMethodService {
Binder.disableTracing();
}
Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "IMS.showSoftInput");
+ ImeTracing.getInstance().triggerServiceDump(
+ "InputMethodService.InputMethodImpl#showSoftInput", InputMethodService.this);
final boolean wasVisible = isInputViewShown();
if (dispatchOnShowInputRequested(flags, false)) {
@@ -2138,6 +2144,8 @@ public class InputMethodService extends AbstractInputMethodService {
return;
}
+ ImeTracing.getInstance().triggerServiceDump("InputMethodService#showWindow", this);
+
mDecorViewWasVisible = mDecorViewVisible;
mInShowWindow = true;
final int previousImeWindowStatus =
@@ -2212,6 +2220,8 @@ public class InputMethodService extends AbstractInputMethodService {
* @param setVisible {@code true} to make it visible, false to hide it.
*/
private void applyVisibilityInInsetsConsumerIfNecessary(boolean setVisible) {
+ ImeTracing.getInstance().triggerServiceDump(
+ "InputMethodService#applyVisibilityInInsetsConsumerIfNecessary", this);
mPrivOps.applyImeVisibility(setVisible
? mCurShowInputToken : mCurHideInputToken, setVisible);
}
@@ -2236,6 +2246,7 @@ public class InputMethodService extends AbstractInputMethodService {
public void hideWindow() {
if (DEBUG) Log.v(TAG, "CALL: hideWindow");
+ ImeTracing.getInstance().triggerServiceDump("InputMethodService#hideWindow", this);
mWindowVisible = false;
finishViews(false /* finishingInput */);
if (mDecorViewVisible) {
@@ -2306,6 +2317,7 @@ public class InputMethodService extends AbstractInputMethodService {
void doFinishInput() {
if (DEBUG) Log.v(TAG, "CALL: doFinishInput");
+ ImeTracing.getInstance().triggerServiceDump("InputMethodService#doFinishInput", this);
finishViews(true /* finishingInput */);
if (mInputStarted) {
mInlineSuggestionSessionController.notifyOnFinishInput();
@@ -2321,6 +2333,7 @@ public class InputMethodService extends AbstractInputMethodService {
if (!restarting) {
doFinishInput();
}
+ ImeTracing.getInstance().triggerServiceDump("InputMethodService#doStartInput", this);
mInputStarted = true;
mStartedInputConnection = ic;
mInputEditorInfo = attribute;
@@ -2479,6 +2492,7 @@ public class InputMethodService extends AbstractInputMethodService {
* @param flags Provides additional operating flags.
*/
public void requestHideSelf(int flags) {
+ ImeTracing.getInstance().triggerServiceDump("InputMethodService#requestHideSelf", this);
mPrivOps.hideMySoftInput(flags);
}
@@ -2491,6 +2505,7 @@ public class InputMethodService extends AbstractInputMethodService {
* @param flags Provides additional operating flags.
*/
public final void requestShowSelf(int flags) {
+ ImeTracing.getInstance().triggerServiceDump("InputMethodService#requestShowSelf", this);
mPrivOps.showMySoftInput(flags);
}
@@ -3310,8 +3325,8 @@ public class InputMethodService extends AbstractInputMethodService {
* @hide
*/
@Override
- final void dumpProtoInternal(FileDescriptor fd, String[] args) {
- final ProtoOutputStream proto = new ProtoOutputStream(fd);
+ public final void dumpProtoInternal(ProtoOutputStream proto) {
+ final long token = proto.start(InputMethodServiceTraceProto.INPUT_METHOD_SERVICE);
mWindow.dumpDebug(proto, SOFT_INPUT_WINDOW);
proto.write(VIEWS_CREATED, mViewsCreated);
proto.write(DECOR_VIEW_VISIBLE, mDecorViewVisible);
@@ -3339,6 +3354,6 @@ public class InputMethodService extends AbstractInputMethodService {
proto.write(STATUS_ICON, mStatusIcon);
mTmpInsets.dumpDebug(proto, LAST_COMPUTED_INSETS);
proto.write(SETTINGS_OBSERVER, Objects.toString(mSettingsObserver));
- proto.flush();
+ proto.end(token);
}
}