summaryrefslogtreecommitdiff
path: root/core/java/android/inputmethodservice/InputMethodService.java
diff options
context:
space:
mode:
authorIoana Stefan <ioanastefan@google.com>2020-10-27 11:30:38 +0000
committerIoana Stefan <ioanastefan@google.com>2020-11-13 12:29:25 +0000
commit8418bef70abf31d3cbfcfa500b2e694988735557 (patch)
treea531fd7e9ebe3dd4be384e383432b442744b3712 /core/java/android/inputmethodservice/InputMethodService.java
parentab1008480bcc2e400ab90745dee067c5c0b0f050 (diff)
Optimized workflow for IME tracing on InputMethodService side
Optimized the tracing logic for the IMS information. The InputMethodService triggers a tracing dump through the new method triggerServiceDump, exposed by the meTracing interface. This change was done to be able to support custom dumps from clients and custom dumps from InputMethodService. This change only covers the IMS information. The IMMS information will be dumped in next changes. Bug: 154348613 Test: start IME tracing by calling "adb shell ime tracing start" end IME tracing by calling "adb shell ime tracing stop" pull trace using "adb pull /data/misc/wmtrace/ime_trace_service.pb ime_trace_service.pb" Change-Id: Icda0f82d76fb7db5b2bd8d021069b1ff15a4e15b
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);
}
}