Loading src/com/android/settings/development/qstile/DevelopmentTiles.java +5 −14 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); } Loading Loading @@ -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()); } Loading tests/robotests/src/com/android/settings/development/qstile/WinscopeTraceTest.java +9 −13 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -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); Loading @@ -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) Loading @@ -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(), Loading @@ -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(), Loading @@ -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(); } Loading @@ -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(); } Loading @@ -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(); } Loading @@ -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); } Loading Loading @@ -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(); } Loading Loading @@ -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); } Loading Loading
src/com/android/settings/development/qstile/DevelopmentTiles.java +5 −14 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); } Loading Loading @@ -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()); } Loading
tests/robotests/src/com/android/settings/development/qstile/WinscopeTraceTest.java +9 −13 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -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); Loading @@ -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) Loading @@ -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(), Loading @@ -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(), Loading @@ -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(); } Loading @@ -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(); } Loading @@ -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(); } Loading @@ -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); } Loading Loading @@ -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(); } Loading Loading @@ -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); } Loading