Apply ResultCallback to isImeTraceEnabled
With CL[1], the isImeTraceEnabled in InputMethodManager require to use ResultCallback mechanism. Change this API usage in DevelopmentTiles. [1] : I1547b98b2aacf764e33aadc9ab784f2013f58f2f Bug: 163453493 Test: make RunSettingsRoboTests ROBOTEST_FILTER="WinscopeTraceTest" Change-Id: I767069892c713023b064525105ef2b55946b7bb8
This commit is contained in:
@@ -48,6 +48,8 @@ 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;
|
||||
@@ -260,9 +262,12 @@ public abstract class DevelopmentTiles extends TileService {
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean isImeTraceEnabled() {
|
||||
@VisibleForTesting
|
||||
boolean isImeTraceEnabled() {
|
||||
try {
|
||||
return mInputMethodManager.isImeTraceEnabled();
|
||||
final Completable.Boolean value = Completable.createBoolean();
|
||||
mInputMethodManager.isImeTraceEnabled(ResultCallbacks.of(value));
|
||||
return Completable.getResult(value);
|
||||
} catch (RemoteException e) {
|
||||
Log.e(TAG, "Could not get ime trace status, defaulting to false.", e);
|
||||
}
|
||||
|
@@ -37,6 +37,7 @@ 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;
|
||||
|
||||
@@ -68,6 +69,9 @@ 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();
|
||||
ReflectionHelpers.setField(mWinscopeTrace, "mWindowManager", mWindowManager);
|
||||
ReflectionHelpers.setField(mWinscopeTrace, "mInputMethodManager", mInputMethodManager);
|
||||
ReflectionHelpers.setField(mWinscopeTrace, "mSurfaceFlinger", mSurfaceFlinger);
|
||||
@@ -93,7 +97,6 @@ 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)
|
||||
@@ -114,7 +117,6 @@ 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(),
|
||||
@@ -127,7 +129,7 @@ public class WinscopeTraceTest {
|
||||
throws RemoteException {
|
||||
ShadowParcel.sReadBoolResult = false;
|
||||
doReturn(false).when(mWindowManager).isWindowTraceEnabled();
|
||||
doReturn(true).when(mInputMethodManager).isImeTraceEnabled();
|
||||
doReturn(true).when(mWinscopeTrace).isImeTraceEnabled();
|
||||
assertThat(mWinscopeTrace.isEnabled()).isTrue();
|
||||
verify(mSurfaceFlinger)
|
||||
.transact(eq(SURFACE_FLINGER_LAYER_TRACE_STATUS_CODE), any(), any(),
|
||||
@@ -140,7 +142,7 @@ public class WinscopeTraceTest {
|
||||
public void immReturnsTraceEnabled_shouldReturnEnabled() throws RemoteException {
|
||||
// Assume Window Manager and Surface Trace are disabled.
|
||||
ShadowParcel.sReadBoolResult = false;
|
||||
doReturn(true).when(mInputMethodManager).isImeTraceEnabled();
|
||||
doReturn(true).when(mWinscopeTrace).isImeTraceEnabled();
|
||||
assertThat(mWinscopeTrace.isEnabled()).isTrue();
|
||||
}
|
||||
|
||||
@@ -149,7 +151,6 @@ 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();
|
||||
}
|
||||
|
||||
@@ -167,7 +168,6 @@ 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();
|
||||
}
|
||||
@@ -251,7 +251,8 @@ public class WinscopeTraceTest {
|
||||
@Test
|
||||
public void setIsEnableAndImmThrowsRemoteException_shouldFailGracefully()
|
||||
throws RemoteException {
|
||||
doThrow(new RemoteException("Unknown")).when(mInputMethodManager).isImeTraceEnabled();
|
||||
doThrow(new RemoteException("Unknown")).when(mInputMethodManager)
|
||||
.isImeTraceEnabled(any(IBooleanResultCallback.Stub.class));
|
||||
mWinscopeTrace.setIsEnabled(true);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user