Merge "Switch back to sync IInputMethodManager" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
d5f9f65390
@@ -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());
|
||||||
}
|
}
|
||||||
|
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user