Merge "Switch back to sync IInputMethodManager" into sc-dev

This commit is contained in:
TreeHugger Robot
2021-07-02 15:22:21 +00:00
committed by Android (Google) Code Review
2 changed files with 14 additions and 27 deletions

View File

@@ -48,8 +48,6 @@ import android.widget.Toast;
import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
import com.android.internal.app.LocalePicker; 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.statusbar.IStatusBarService;
import com.android.internal.view.IInputMethodManager; import com.android.internal.view.IInputMethodManager;
import com.android.settings.R; import com.android.settings.R;
@@ -262,13 +260,9 @@ public abstract class DevelopmentTiles extends TileService {
return false; return false;
} }
@VisibleForTesting private boolean isImeTraceEnabled() {
boolean isImeTraceEnabled() {
try { try {
// TODO(b/175742251): Get rid of dependency on IInputMethodManager return mInputMethodManager.isImeTraceEnabled();
final Completable.Boolean value = Completable.createBoolean();
mInputMethodManager.isImeTraceEnabled(ResultCallbacks.of(value));
return Completable.getResult(value);
} catch (RemoteException e) { } catch (RemoteException e) {
Log.e(TAG, "Could not get ime trace status, defaulting to false.", 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 { try {
// TODO(b/175742251): Get rid of dependency on IInputMethodManager
final Completable.Void value = Completable.createVoid();
if (isEnabled) { if (isEnabled) {
mInputMethodManager.startImeTrace(ResultCallbacks.of(value)); mInputMethodManager.startImeTrace();
} else { } else {
mInputMethodManager.stopImeTrace(ResultCallbacks.of(value)); mInputMethodManager.stopImeTrace();
} }
Completable.getResult(value);
} catch (RemoteException e) { } catch (RemoteException e) {
Log.e(TAG, "Could not set ime trace status." + e.toString()); Log.e(TAG, "Could not set ime trace status." + e.toString());
} }

View File

@@ -24,10 +24,8 @@ import static com.android.settings.development.qstile.DevelopmentTiles.WinscopeT
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.ArgumentMatchers.isNull; import static org.mockito.ArgumentMatchers.isNull;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.spy; import static org.mockito.Mockito.spy;
@@ -39,7 +37,6 @@ import android.os.RemoteException;
import android.view.IWindowManager; import android.view.IWindowManager;
import android.widget.Toast; import android.widget.Toast;
import com.android.internal.inputmethod.IBooleanResultCallback;
import com.android.internal.view.IInputMethodManager; import com.android.internal.view.IInputMethodManager;
import com.android.settings.testutils.shadow.ShadowParcel; import com.android.settings.testutils.shadow.ShadowParcel;
@@ -71,10 +68,6 @@ public class WinscopeTraceTest {
public void setUp() { public void setUp() {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
mWinscopeTrace = spy(new DevelopmentTiles.WinscopeTrace()); 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, "mWindowManager", mWindowManager);
ReflectionHelpers.setField(mWinscopeTrace, "mInputMethodManager", mInputMethodManager); ReflectionHelpers.setField(mWinscopeTrace, "mInputMethodManager", mInputMethodManager);
ReflectionHelpers.setField(mWinscopeTrace, "mSurfaceFlinger", mSurfaceFlinger); ReflectionHelpers.setField(mWinscopeTrace, "mSurfaceFlinger", mSurfaceFlinger);
@@ -100,6 +93,7 @@ public class WinscopeTraceTest {
public void sfReturnsTraceEnabled_shouldReturnEnabled() throws RemoteException { public void sfReturnsTraceEnabled_shouldReturnEnabled() throws RemoteException {
// Assume Window Trace and Input Method Manager are disabled. // Assume Window Trace and Input Method Manager are disabled.
doReturn(false).when(mWindowManager).isWindowTraceEnabled(); doReturn(false).when(mWindowManager).isWindowTraceEnabled();
doReturn(false).when(mInputMethodManager).isImeTraceEnabled();
ShadowParcel.sReadBoolResult = true; ShadowParcel.sReadBoolResult = true;
assertThat(mWinscopeTrace.isEnabled()).isTrue(); assertThat(mWinscopeTrace.isEnabled()).isTrue();
verify(mSurfaceFlinger) verify(mSurfaceFlinger)
@@ -120,6 +114,7 @@ public class WinscopeTraceTest {
public void wmAndSfAndImmReturnTraceDisabled_shouldReturnDisabled() throws RemoteException { public void wmAndSfAndImmReturnTraceDisabled_shouldReturnDisabled() throws RemoteException {
ShadowParcel.sReadBoolResult = false; ShadowParcel.sReadBoolResult = false;
doReturn(false).when(mWindowManager).isWindowTraceEnabled(); doReturn(false).when(mWindowManager).isWindowTraceEnabled();
doReturn(false).when(mInputMethodManager).isImeTraceEnabled();
assertThat(mWinscopeTrace.isEnabled()).isFalse(); assertThat(mWinscopeTrace.isEnabled()).isFalse();
verify(mSurfaceFlinger) verify(mSurfaceFlinger)
.transact(eq(SURFACE_FLINGER_LAYER_TRACE_STATUS_CODE), any(), any(), .transact(eq(SURFACE_FLINGER_LAYER_TRACE_STATUS_CODE), any(), any(),
@@ -132,7 +127,7 @@ public class WinscopeTraceTest {
throws RemoteException { throws RemoteException {
ShadowParcel.sReadBoolResult = false; ShadowParcel.sReadBoolResult = false;
doReturn(false).when(mWindowManager).isWindowTraceEnabled(); doReturn(false).when(mWindowManager).isWindowTraceEnabled();
doReturn(true).when(mWinscopeTrace).isImeTraceEnabled(); doReturn(true).when(mInputMethodManager).isImeTraceEnabled();
assertThat(mWinscopeTrace.isEnabled()).isTrue(); assertThat(mWinscopeTrace.isEnabled()).isTrue();
verify(mSurfaceFlinger) verify(mSurfaceFlinger)
.transact(eq(SURFACE_FLINGER_LAYER_TRACE_STATUS_CODE), any(), any(), .transact(eq(SURFACE_FLINGER_LAYER_TRACE_STATUS_CODE), any(), any(),
@@ -145,7 +140,7 @@ public class WinscopeTraceTest {
public void immReturnsTraceEnabled_shouldReturnEnabled() throws RemoteException { public void immReturnsTraceEnabled_shouldReturnEnabled() throws RemoteException {
// Assume Window Manager and Surface Trace are disabled. // Assume Window Manager and Surface Trace are disabled.
ShadowParcel.sReadBoolResult = false; ShadowParcel.sReadBoolResult = false;
doReturn(true).when(mWinscopeTrace).isImeTraceEnabled(); doReturn(true).when(mInputMethodManager).isImeTraceEnabled();
assertThat(mWinscopeTrace.isEnabled()).isTrue(); assertThat(mWinscopeTrace.isEnabled()).isTrue();
} }
@@ -154,6 +149,7 @@ public class WinscopeTraceTest {
public void immReturnsTraceDisabled_shouldReturnDisabled() throws RemoteException { public void immReturnsTraceDisabled_shouldReturnDisabled() throws RemoteException {
// Assume Window Manager and Surface Trace are disabled. // Assume Window Manager and Surface Trace are disabled.
ShadowParcel.sReadBoolResult = false; ShadowParcel.sReadBoolResult = false;
doReturn(false).when(mInputMethodManager).isImeTraceEnabled();
assertThat(mWinscopeTrace.isEnabled()).isFalse(); assertThat(mWinscopeTrace.isEnabled()).isFalse();
} }
@@ -171,6 +167,7 @@ public class WinscopeTraceTest {
public void sfUnavailableAndWmAndImmReturnTraceDisabled_shouldReturnDisabled() public void sfUnavailableAndWmAndImmReturnTraceDisabled_shouldReturnDisabled()
throws RemoteException { throws RemoteException {
doReturn(false).when(mWindowManager).isWindowTraceEnabled(); doReturn(false).when(mWindowManager).isWindowTraceEnabled();
doReturn(false).when(mInputMethodManager).isImeTraceEnabled();
ReflectionHelpers.setField(mWinscopeTrace, "mSurfaceFlinger", null); ReflectionHelpers.setField(mWinscopeTrace, "mSurfaceFlinger", null);
assertThat(mWinscopeTrace.isEnabled()).isFalse(); assertThat(mWinscopeTrace.isEnabled()).isFalse();
} }
@@ -185,7 +182,7 @@ public class WinscopeTraceTest {
@Test @Test
public void setIsEnableTrue_shouldEnableImeTrace() throws RemoteException { public void setIsEnableTrue_shouldEnableImeTrace() throws RemoteException {
mWinscopeTrace.setIsEnabled(true); mWinscopeTrace.setIsEnabled(true);
verify(mWinscopeTrace).setImeTraceEnabled(eq(true)); verify(mInputMethodManager).startImeTrace();
verifyNoMoreInteractions(mInputMethodManager); verifyNoMoreInteractions(mInputMethodManager);
} }
@@ -213,7 +210,7 @@ public class WinscopeTraceTest {
@Config(shadows = ShadowParcel.class) @Config(shadows = ShadowParcel.class)
public void setIsEnableFalse_shouldDisableImeTrace() throws RemoteException { public void setIsEnableFalse_shouldDisableImeTrace() throws RemoteException {
mWinscopeTrace.setIsEnabled(false); mWinscopeTrace.setIsEnabled(false);
verify(mWinscopeTrace).setImeTraceEnabled(eq(false)); verify(mInputMethodManager).stopImeTrace();
verifyNoMoreInteractions(mInputMethodManager); verifyNoMoreInteractions(mInputMethodManager);
verify(mToast).show(); verify(mToast).show();
} }
@@ -254,8 +251,7 @@ public class WinscopeTraceTest {
@Test @Test
public void setIsEnableAndImmThrowsRemoteException_shouldFailGracefully() public void setIsEnableAndImmThrowsRemoteException_shouldFailGracefully()
throws RemoteException { throws RemoteException {
doThrow(new RemoteException("Unknown")).when(mInputMethodManager) doThrow(new RemoteException("Unknown")).when(mInputMethodManager).isImeTraceEnabled();
.isImeTraceEnabled(any(IBooleanResultCallback.Stub.class));
mWinscopeTrace.setIsEnabled(true); mWinscopeTrace.setIsEnabled(true);
} }