From a78e1f51fe243ac202383b5e33ed2383272f41e6 Mon Sep 17 00:00:00 2001 From: Yohei Yukawa Date: Thu, 1 Jul 2021 21:24:02 -0700 Subject: [PATCH] Switch back to sync IInputMethodManager This logically reverts two recent CLs [1][2] to submit a corresponding logical revert [3] into frameworks/base to address Bug 190486491. [1]: I767069892c713023b064525105ef2b55946b7bb8 8279b8ee5a6cd36cbfbdda084115658ffb5e17d5 [2]: I6733e8b500f5e02d4e14cde4ab7a46f4f716f5d0 fa01bf30ba0affcca01e537c704e0c96ee3e1fbc [3]: If16ac0de536d9089eb04f6e07b1ee47378124658 Bug: 163453493 Bug: 190486491 Test: make RunSettingsRoboTests ROBOTEST_FILTER="WinscopeTraceTest" Change-Id: Idea98bd36935a27d886ca337154112e7dd293080 Merged-In: Idea98bd36935a27d886ca337154112e7dd293080 --- .../development/qstile/DevelopmentTiles.java | 19 +++++----------- .../development/qstile/WinscopeTraceTest.java | 22 ++++++++----------- 2 files changed, 14 insertions(+), 27 deletions(-) diff --git a/src/com/android/settings/development/qstile/DevelopmentTiles.java b/src/com/android/settings/development/qstile/DevelopmentTiles.java index c55d0cb354d..764c83ef64a 100644 --- a/src/com/android/settings/development/qstile/DevelopmentTiles.java +++ b/src/com/android/settings/development/qstile/DevelopmentTiles.java @@ -48,8 +48,6 @@ import android.widget.Toast; import androidx.annotation.VisibleForTesting; import com.android.internal.app.LocalePicker; -import com.android.internal.inputmethod.Completable; -import com.android.internal.inputmethod.ResultCallbacks; import com.android.internal.statusbar.IStatusBarService; import com.android.internal.view.IInputMethodManager; import com.android.settings.R; @@ -262,13 +260,9 @@ public abstract class DevelopmentTiles extends TileService { return false; } - @VisibleForTesting - boolean isImeTraceEnabled() { + private 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); + return mInputMethodManager.isImeTraceEnabled(); } catch (RemoteException e) { Log.e(TAG, "Could not get ime trace status, defaulting to false.", e); } @@ -328,16 +322,13 @@ public abstract class DevelopmentTiles extends TileService { } } - protected void setImeTraceEnabled(boolean isEnabled) { + private void setImeTraceEnabled(boolean isEnabled) { try { - // TODO(b/175742251): Get rid of dependency on IInputMethodManager - final Completable.Void value = Completable.createVoid(); if (isEnabled) { - mInputMethodManager.startImeTrace(ResultCallbacks.of(value)); + mInputMethodManager.startImeTrace(); } else { - mInputMethodManager.stopImeTrace(ResultCallbacks.of(value)); + mInputMethodManager.stopImeTrace(); } - 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 52ba7a7f696..b4dab0d7cbd 100644 --- a/tests/robotests/src/com/android/settings/development/qstile/WinscopeTraceTest.java +++ b/tests/robotests/src/com/android/settings/development/qstile/WinscopeTraceTest.java @@ -24,10 +24,8 @@ import static com.android.settings.development.qstile.DevelopmentTiles.WinscopeT 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; @@ -39,7 +37,6 @@ import android.os.RemoteException; import android.view.IWindowManager; import android.widget.Toast; -import com.android.internal.inputmethod.IBooleanResultCallback; import com.android.internal.view.IInputMethodManager; import com.android.settings.testutils.shadow.ShadowParcel; @@ -71,10 +68,6 @@ public class WinscopeTraceTest { public void setUp() { MockitoAnnotations.initMocks(this); mWinscopeTrace = spy(new DevelopmentTiles.WinscopeTrace()); - // 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); @@ -100,6 +93,7 @@ public class WinscopeTraceTest { public void sfReturnsTraceEnabled_shouldReturnEnabled() throws RemoteException { // Assume Window Trace and Input Method Manager are disabled. doReturn(false).when(mWindowManager).isWindowTraceEnabled(); + doReturn(false).when(mInputMethodManager).isImeTraceEnabled(); ShadowParcel.sReadBoolResult = true; assertThat(mWinscopeTrace.isEnabled()).isTrue(); verify(mSurfaceFlinger) @@ -120,6 +114,7 @@ public class WinscopeTraceTest { public void wmAndSfAndImmReturnTraceDisabled_shouldReturnDisabled() throws RemoteException { ShadowParcel.sReadBoolResult = false; doReturn(false).when(mWindowManager).isWindowTraceEnabled(); + doReturn(false).when(mInputMethodManager).isImeTraceEnabled(); assertThat(mWinscopeTrace.isEnabled()).isFalse(); verify(mSurfaceFlinger) .transact(eq(SURFACE_FLINGER_LAYER_TRACE_STATUS_CODE), any(), any(), @@ -132,7 +127,7 @@ public class WinscopeTraceTest { throws RemoteException { ShadowParcel.sReadBoolResult = false; doReturn(false).when(mWindowManager).isWindowTraceEnabled(); - doReturn(true).when(mWinscopeTrace).isImeTraceEnabled(); + doReturn(true).when(mInputMethodManager).isImeTraceEnabled(); assertThat(mWinscopeTrace.isEnabled()).isTrue(); verify(mSurfaceFlinger) .transact(eq(SURFACE_FLINGER_LAYER_TRACE_STATUS_CODE), any(), any(), @@ -145,7 +140,7 @@ public class WinscopeTraceTest { public void immReturnsTraceEnabled_shouldReturnEnabled() throws RemoteException { // Assume Window Manager and Surface Trace are disabled. ShadowParcel.sReadBoolResult = false; - doReturn(true).when(mWinscopeTrace).isImeTraceEnabled(); + doReturn(true).when(mInputMethodManager).isImeTraceEnabled(); assertThat(mWinscopeTrace.isEnabled()).isTrue(); } @@ -154,6 +149,7 @@ public class WinscopeTraceTest { public void immReturnsTraceDisabled_shouldReturnDisabled() throws RemoteException { // Assume Window Manager and Surface Trace are disabled. ShadowParcel.sReadBoolResult = false; + doReturn(false).when(mInputMethodManager).isImeTraceEnabled(); assertThat(mWinscopeTrace.isEnabled()).isFalse(); } @@ -171,6 +167,7 @@ public class WinscopeTraceTest { public void sfUnavailableAndWmAndImmReturnTraceDisabled_shouldReturnDisabled() throws RemoteException { doReturn(false).when(mWindowManager).isWindowTraceEnabled(); + doReturn(false).when(mInputMethodManager).isImeTraceEnabled(); ReflectionHelpers.setField(mWinscopeTrace, "mSurfaceFlinger", null); assertThat(mWinscopeTrace.isEnabled()).isFalse(); } @@ -185,7 +182,7 @@ public class WinscopeTraceTest { @Test public void setIsEnableTrue_shouldEnableImeTrace() throws RemoteException { mWinscopeTrace.setIsEnabled(true); - verify(mWinscopeTrace).setImeTraceEnabled(eq(true)); + verify(mInputMethodManager).startImeTrace(); verifyNoMoreInteractions(mInputMethodManager); } @@ -213,7 +210,7 @@ public class WinscopeTraceTest { @Config(shadows = ShadowParcel.class) public void setIsEnableFalse_shouldDisableImeTrace() throws RemoteException { mWinscopeTrace.setIsEnabled(false); - verify(mWinscopeTrace).setImeTraceEnabled(eq(false)); + verify(mInputMethodManager).stopImeTrace(); verifyNoMoreInteractions(mInputMethodManager); verify(mToast).show(); } @@ -254,8 +251,7 @@ public class WinscopeTraceTest { @Test public void setIsEnableAndImmThrowsRemoteException_shouldFailGracefully() throws RemoteException { - doThrow(new RemoteException("Unknown")).when(mInputMethodManager) - .isImeTraceEnabled(any(IBooleanResultCallback.Stub.class)); + doThrow(new RemoteException("Unknown")).when(mInputMethodManager).isImeTraceEnabled(); mWinscopeTrace.setIsEnabled(true); }