diff --git a/src/com/android/settings/development/qstile/DevelopmentTiles.java b/src/com/android/settings/development/qstile/DevelopmentTiles.java
index 203a688..16084c0 100644
--- a/src/com/android/settings/development/qstile/DevelopmentTiles.java
+++ b/src/com/android/settings/development/qstile/DevelopmentTiles.java
@@ -265,6 +265,7 @@
         @VisibleForTesting
         boolean isImeTraceEnabled() {
             try {
+                // TODO(b/175742251): Get rid of dependency on IInputMethodManager
                 final Completable.Boolean value = Completable.createBoolean();
                 mInputMethodManager.isImeTraceEnabled(ResultCallbacks.of(value));
                 return Completable.getResult(value);
@@ -327,13 +328,16 @@
             }
         }
 
-        private void setImeTraceEnabled(boolean isEnabled) {
+        protected void setImeTraceEnabled(boolean isEnabled) {
             try {
+                // TODO(b/175742251): Get rid of dependency on IInputMethodManager
+                final Completable.Void value = Completable.createVoid();
                 if (isEnabled) {
-                    mInputMethodManager.startImeTrace();
+                    mInputMethodManager.startImeTrace(ResultCallbacks.of(value));
                 } else {
-                    mInputMethodManager.stopImeTrace();
+                    mInputMethodManager.stopImeTrace(ResultCallbacks.of(value));
                 }
+                Completable.getResult(value);
             } catch (RemoteException e) {
                 Log.e(TAG, "Could not set ime trace status." + e.toString());
             }
diff --git a/tests/robotests/src/com/android/settings/development/qstile/WinscopeTraceTest.java b/tests/robotests/src/com/android/settings/development/qstile/WinscopeTraceTest.java
index 88e2886..52ba7a7 100644
--- a/tests/robotests/src/com/android/settings/development/qstile/WinscopeTraceTest.java
+++ b/tests/robotests/src/com/android/settings/development/qstile/WinscopeTraceTest.java
@@ -24,8 +24,10 @@
 import static com.google.common.truth.Truth.assertThat;
 
 import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.ArgumentMatchers.isNull;
+import static org.mockito.Mockito.doNothing;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.doThrow;
 import static org.mockito.Mockito.spy;
@@ -72,6 +74,7 @@
         // default ImeTraceEnabled value, prevent tests from actually calling into IMM and
         // await the result forever.
         doReturn(false).when(mWinscopeTrace).isImeTraceEnabled();
+        doNothing().when(mWinscopeTrace).setImeTraceEnabled(anyBoolean());
         ReflectionHelpers.setField(mWinscopeTrace, "mWindowManager", mWindowManager);
         ReflectionHelpers.setField(mWinscopeTrace, "mInputMethodManager", mInputMethodManager);
         ReflectionHelpers.setField(mWinscopeTrace, "mSurfaceFlinger", mSurfaceFlinger);
@@ -182,7 +185,7 @@
     @Test
     public void setIsEnableTrue_shouldEnableImeTrace() throws RemoteException {
         mWinscopeTrace.setIsEnabled(true);
-        verify(mInputMethodManager).startImeTrace();
+        verify(mWinscopeTrace).setImeTraceEnabled(eq(true));
         verifyNoMoreInteractions(mInputMethodManager);
     }
 
@@ -210,7 +213,7 @@
     @Config(shadows = ShadowParcel.class)
     public void setIsEnableFalse_shouldDisableImeTrace() throws RemoteException {
         mWinscopeTrace.setIsEnabled(false);
-        verify(mInputMethodManager).stopImeTrace();
+        verify(mWinscopeTrace).setImeTraceEnabled(eq(false));
         verifyNoMoreInteractions(mInputMethodManager);
         verify(mToast).show();
     }
