summaryrefslogtreecommitdiff
path: root/core/java/android/inputmethodservice/IInputMethodWrapper.java
diff options
context:
space:
mode:
authorAnmol Gupta <guanmol@google.com>2020-04-30 21:06:56 -0700
committerIoana Stefan <ioanastefan@google.com>2020-10-07 20:27:32 +0200
commit5e68eeac86cc0179e25a1719bb5182ea9405ee78 (patch)
tree4820b04dd36ff97b165c94fb6ccbc20211445f86 /core/java/android/inputmethodservice/IInputMethodWrapper.java
parent48acf101c3289ebf4b468418c9755d608b076ad4 (diff)
Add proto-based InputMethodService and server side dumping for IME
This CL implements a mechanism to dump InputMethodService and IME related server states into a proto file which can later be imported to Winscope to allow easy debugging. The Design Doc for the IME tracing project is: go/ime-tracing Bug: 154348613 Test: start trace by calling "adb shell ime tracing start" end trace by calling "adb shell ime tracing stop" pull trace using "adb pull /data/misc/wmtrace/ime_trace.pb ime_trace.pb" Change-Id: Icbfb8c11e882f29eb45dea9d4c23315c48e9d619
Diffstat (limited to 'core/java/android/inputmethodservice/IInputMethodWrapper.java')
-rw-r--r--core/java/android/inputmethodservice/IInputMethodWrapper.java19
1 files changed, 16 insertions, 3 deletions
diff --git a/core/java/android/inputmethodservice/IInputMethodWrapper.java b/core/java/android/inputmethodservice/IInputMethodWrapper.java
index a298c856a0fb..0512305e71a2 100644
--- a/core/java/android/inputmethodservice/IInputMethodWrapper.java
+++ b/core/java/android/inputmethodservice/IInputMethodWrapper.java
@@ -16,6 +16,8 @@
package android.inputmethodservice;
+import static android.util.imetracing.ImeTracing.PROTO_ARG;
+
import android.annotation.BinderThread;
import android.annotation.MainThread;
import android.annotation.Nullable;
@@ -37,8 +39,8 @@ import android.view.inputmethod.InputMethod;
import android.view.inputmethod.InputMethodSession;
import android.view.inputmethod.InputMethodSubtype;
-import com.android.internal.inputmethod.IInputMethodPrivilegedOperations;
import com.android.internal.inputmethod.CancellationGroup;
+import com.android.internal.inputmethod.IInputMethodPrivilegedOperations;
import com.android.internal.os.HandlerCaller;
import com.android.internal.os.SomeArgs;
import com.android.internal.view.IInlineSuggestionsRequestCallback;
@@ -155,9 +157,20 @@ class IInputMethodWrapper extends IInputMethod.Stub
return;
}
SomeArgs args = (SomeArgs)msg.obj;
+ String[] dumpArgs = (String[]) args.arg3;
+ boolean protoDumpRequested = false;
+ for (String arg : dumpArgs) {
+ if (arg.equals(PROTO_ARG)) {
+ protoDumpRequested = true;
+ break;
+ }
+ }
try {
- target.dump((FileDescriptor)args.arg1,
- (PrintWriter)args.arg2, (String[])args.arg3);
+ if (protoDumpRequested) {
+ target.dumpProtoInternal((FileDescriptor) args.arg1, dumpArgs);
+ } else {
+ target.dump((FileDescriptor) args.arg1, (PrintWriter) args.arg2, dumpArgs);
+ }
} catch (RuntimeException e) {
((PrintWriter)args.arg2).println("Exception: " + e);
}