Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d5f9f653 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

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

parents 88e914e7 a78e1f51
Loading
Loading
Loading
Loading
+5 −14
Original line number Diff line number Diff line
@@ -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());
            }
+9 −13
Original line number Diff line number Diff line
@@ -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);
    }