Loading src/com/android/settings/development/qstile/DevelopmentTiles.java +8 −18 Original line number Diff line number Diff line Loading @@ -48,8 +48,8 @@ import android.widget.Toast; import androidx.annotation.VisibleForTesting; import com.android.internal.app.LocalePicker; import com.android.internal.inputmethod.ImeTracing; import com.android.internal.statusbar.IStatusBarService; import com.android.internal.view.IInputMethodManager; import com.android.settings.R; import com.android.settings.development.WirelessDebuggingPreferenceController; import com.android.settings.overlay.FeatureFactory; Loading Loading @@ -198,7 +198,7 @@ public abstract class DevelopmentTiles extends TileService { static final int SURFACE_FLINGER_LAYER_TRACE_STATUS_CODE = 1026; private IBinder mSurfaceFlinger; private IWindowManager mWindowManager; private IInputMethodManager mInputMethodManager; private ImeTracing mImeTracing; private Toast mToast; @Override Loading @@ -206,8 +206,7 @@ public abstract class DevelopmentTiles extends TileService { super.onCreate(); mWindowManager = WindowManagerGlobal.getWindowManagerService(); mSurfaceFlinger = ServiceManager.getService("SurfaceFlinger"); mInputMethodManager = IInputMethodManager.Stub.asInterface( ServiceManager.getService("input_method")); mImeTracing = ImeTracing.getInstance(); Context context = getApplicationContext(); CharSequence text = "Trace files written to /data/misc/wmtrace"; mToast = Toast.makeText(context, text, Toast.LENGTH_LONG); Loading Loading @@ -261,12 +260,7 @@ public abstract class DevelopmentTiles extends TileService { } private boolean isImeTraceEnabled() { try { return mInputMethodManager.isImeTraceEnabled(); } catch (RemoteException e) { Log.e(TAG, "Could not get ime trace status, defaulting to false.", e); } return false; return mImeTracing.isEnabled(); } @Override Loading Loading @@ -323,14 +317,10 @@ public abstract class DevelopmentTiles extends TileService { } private void setImeTraceEnabled(boolean isEnabled) { try { if (isEnabled) { mInputMethodManager.startImeTrace(); mImeTracing.startImeTrace(); } else { mInputMethodManager.stopImeTrace(); } } catch (RemoteException e) { Log.e(TAG, "Could not set ime trace status." + e.toString()); mImeTracing.stopImeTrace(); } } Loading tests/robotests/src/com/android/settings/development/qstile/WinscopeTraceTest.java +13 −24 Original line number Diff line number Diff line Loading @@ -37,7 +37,7 @@ import android.os.RemoteException; import android.view.IWindowManager; import android.widget.Toast; import com.android.internal.view.IInputMethodManager; import com.android.internal.inputmethod.ImeTracing; import com.android.settings.testutils.shadow.ShadowParcel; import org.junit.After; Loading @@ -56,7 +56,7 @@ public class WinscopeTraceTest { @Mock private IWindowManager mWindowManager; @Mock private IInputMethodManager mInputMethodManager; private ImeTracing mImeTracing; @Mock private IBinder mSurfaceFlinger; @Mock Loading @@ -69,7 +69,7 @@ public class WinscopeTraceTest { MockitoAnnotations.initMocks(this); mWinscopeTrace = spy(new DevelopmentTiles.WinscopeTrace()); ReflectionHelpers.setField(mWinscopeTrace, "mWindowManager", mWindowManager); ReflectionHelpers.setField(mWinscopeTrace, "mInputMethodManager", mInputMethodManager); ReflectionHelpers.setField(mWinscopeTrace, "mImeTracing", mImeTracing); ReflectionHelpers.setField(mWinscopeTrace, "mSurfaceFlinger", mSurfaceFlinger); ReflectionHelpers.setField(mWinscopeTrace, "mToast", mToast); } Loading @@ -93,7 +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(); doReturn(false).when(mImeTracing).isEnabled(); ShadowParcel.sReadBoolResult = true; assertThat(mWinscopeTrace.isEnabled()).isTrue(); verify(mSurfaceFlinger) Loading @@ -114,7 +114,7 @@ public class WinscopeTraceTest { public void wmAndSfAndImmReturnTraceDisabled_shouldReturnDisabled() throws RemoteException { ShadowParcel.sReadBoolResult = false; doReturn(false).when(mWindowManager).isWindowTraceEnabled(); doReturn(false).when(mInputMethodManager).isImeTraceEnabled(); doReturn(false).when(mImeTracing).isEnabled(); assertThat(mWinscopeTrace.isEnabled()).isFalse(); verify(mSurfaceFlinger) .transact(eq(SURFACE_FLINGER_LAYER_TRACE_STATUS_CODE), any(), any(), Loading @@ -127,7 +127,7 @@ public class WinscopeTraceTest { throws RemoteException { ShadowParcel.sReadBoolResult = false; doReturn(false).when(mWindowManager).isWindowTraceEnabled(); doReturn(true).when(mInputMethodManager).isImeTraceEnabled(); doReturn(true).when(mImeTracing).isEnabled(); assertThat(mWinscopeTrace.isEnabled()).isTrue(); verify(mSurfaceFlinger) .transact(eq(SURFACE_FLINGER_LAYER_TRACE_STATUS_CODE), any(), any(), Loading @@ -140,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(mInputMethodManager).isImeTraceEnabled(); doReturn(true).when(mImeTracing).isEnabled(); assertThat(mWinscopeTrace.isEnabled()).isTrue(); } Loading @@ -149,7 +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(); doReturn(false).when(mImeTracing).isEnabled(); assertThat(mWinscopeTrace.isEnabled()).isFalse(); } Loading @@ -167,7 +167,7 @@ public class WinscopeTraceTest { public void sfUnavailableAndWmAndImmReturnTraceDisabled_shouldReturnDisabled() throws RemoteException { doReturn(false).when(mWindowManager).isWindowTraceEnabled(); doReturn(false).when(mInputMethodManager).isImeTraceEnabled(); doReturn(false).when(mImeTracing).isEnabled(); ReflectionHelpers.setField(mWinscopeTrace, "mSurfaceFlinger", null); assertThat(mWinscopeTrace.isEnabled()).isFalse(); } Loading @@ -182,8 +182,8 @@ public class WinscopeTraceTest { @Test public void setIsEnableTrue_shouldEnableImeTrace() throws RemoteException { mWinscopeTrace.setIsEnabled(true); verify(mInputMethodManager).startImeTrace(); verifyNoMoreInteractions(mInputMethodManager); verify(mImeTracing).startImeTrace(); verifyNoMoreInteractions(mImeTracing); } @Test Loading @@ -210,8 +210,8 @@ public class WinscopeTraceTest { @Config(shadows = ShadowParcel.class) public void setIsEnableFalse_shouldDisableImeTrace() throws RemoteException { mWinscopeTrace.setIsEnabled(false); verify(mInputMethodManager).stopImeTrace(); verifyNoMoreInteractions(mInputMethodManager); verify(mImeTracing).stopImeTrace(); verifyNoMoreInteractions(mImeTracing); verify(mToast).show(); } Loading Loading @@ -244,17 +244,6 @@ public class WinscopeTraceTest { mWinscopeTrace.setIsEnabled(true); } /** * Verify when input method manager call throws a remote exception, it is handled without * re-throwing the exception. */ @Test public void setIsEnableAndImmThrowsRemoteException_shouldFailGracefully() throws RemoteException { doThrow(new RemoteException("Unknown")).when(mInputMethodManager).isImeTraceEnabled(); mWinscopeTrace.setIsEnabled(true); } /** * Verify is surface flinger is not available not calls are made to it. */ Loading Loading
src/com/android/settings/development/qstile/DevelopmentTiles.java +8 −18 Original line number Diff line number Diff line Loading @@ -48,8 +48,8 @@ import android.widget.Toast; import androidx.annotation.VisibleForTesting; import com.android.internal.app.LocalePicker; import com.android.internal.inputmethod.ImeTracing; import com.android.internal.statusbar.IStatusBarService; import com.android.internal.view.IInputMethodManager; import com.android.settings.R; import com.android.settings.development.WirelessDebuggingPreferenceController; import com.android.settings.overlay.FeatureFactory; Loading Loading @@ -198,7 +198,7 @@ public abstract class DevelopmentTiles extends TileService { static final int SURFACE_FLINGER_LAYER_TRACE_STATUS_CODE = 1026; private IBinder mSurfaceFlinger; private IWindowManager mWindowManager; private IInputMethodManager mInputMethodManager; private ImeTracing mImeTracing; private Toast mToast; @Override Loading @@ -206,8 +206,7 @@ public abstract class DevelopmentTiles extends TileService { super.onCreate(); mWindowManager = WindowManagerGlobal.getWindowManagerService(); mSurfaceFlinger = ServiceManager.getService("SurfaceFlinger"); mInputMethodManager = IInputMethodManager.Stub.asInterface( ServiceManager.getService("input_method")); mImeTracing = ImeTracing.getInstance(); Context context = getApplicationContext(); CharSequence text = "Trace files written to /data/misc/wmtrace"; mToast = Toast.makeText(context, text, Toast.LENGTH_LONG); Loading Loading @@ -261,12 +260,7 @@ public abstract class DevelopmentTiles extends TileService { } private boolean isImeTraceEnabled() { try { return mInputMethodManager.isImeTraceEnabled(); } catch (RemoteException e) { Log.e(TAG, "Could not get ime trace status, defaulting to false.", e); } return false; return mImeTracing.isEnabled(); } @Override Loading Loading @@ -323,14 +317,10 @@ public abstract class DevelopmentTiles extends TileService { } private void setImeTraceEnabled(boolean isEnabled) { try { if (isEnabled) { mInputMethodManager.startImeTrace(); mImeTracing.startImeTrace(); } else { mInputMethodManager.stopImeTrace(); } } catch (RemoteException e) { Log.e(TAG, "Could not set ime trace status." + e.toString()); mImeTracing.stopImeTrace(); } } Loading
tests/robotests/src/com/android/settings/development/qstile/WinscopeTraceTest.java +13 −24 Original line number Diff line number Diff line Loading @@ -37,7 +37,7 @@ import android.os.RemoteException; import android.view.IWindowManager; import android.widget.Toast; import com.android.internal.view.IInputMethodManager; import com.android.internal.inputmethod.ImeTracing; import com.android.settings.testutils.shadow.ShadowParcel; import org.junit.After; Loading @@ -56,7 +56,7 @@ public class WinscopeTraceTest { @Mock private IWindowManager mWindowManager; @Mock private IInputMethodManager mInputMethodManager; private ImeTracing mImeTracing; @Mock private IBinder mSurfaceFlinger; @Mock Loading @@ -69,7 +69,7 @@ public class WinscopeTraceTest { MockitoAnnotations.initMocks(this); mWinscopeTrace = spy(new DevelopmentTiles.WinscopeTrace()); ReflectionHelpers.setField(mWinscopeTrace, "mWindowManager", mWindowManager); ReflectionHelpers.setField(mWinscopeTrace, "mInputMethodManager", mInputMethodManager); ReflectionHelpers.setField(mWinscopeTrace, "mImeTracing", mImeTracing); ReflectionHelpers.setField(mWinscopeTrace, "mSurfaceFlinger", mSurfaceFlinger); ReflectionHelpers.setField(mWinscopeTrace, "mToast", mToast); } Loading @@ -93,7 +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(); doReturn(false).when(mImeTracing).isEnabled(); ShadowParcel.sReadBoolResult = true; assertThat(mWinscopeTrace.isEnabled()).isTrue(); verify(mSurfaceFlinger) Loading @@ -114,7 +114,7 @@ public class WinscopeTraceTest { public void wmAndSfAndImmReturnTraceDisabled_shouldReturnDisabled() throws RemoteException { ShadowParcel.sReadBoolResult = false; doReturn(false).when(mWindowManager).isWindowTraceEnabled(); doReturn(false).when(mInputMethodManager).isImeTraceEnabled(); doReturn(false).when(mImeTracing).isEnabled(); assertThat(mWinscopeTrace.isEnabled()).isFalse(); verify(mSurfaceFlinger) .transact(eq(SURFACE_FLINGER_LAYER_TRACE_STATUS_CODE), any(), any(), Loading @@ -127,7 +127,7 @@ public class WinscopeTraceTest { throws RemoteException { ShadowParcel.sReadBoolResult = false; doReturn(false).when(mWindowManager).isWindowTraceEnabled(); doReturn(true).when(mInputMethodManager).isImeTraceEnabled(); doReturn(true).when(mImeTracing).isEnabled(); assertThat(mWinscopeTrace.isEnabled()).isTrue(); verify(mSurfaceFlinger) .transact(eq(SURFACE_FLINGER_LAYER_TRACE_STATUS_CODE), any(), any(), Loading @@ -140,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(mInputMethodManager).isImeTraceEnabled(); doReturn(true).when(mImeTracing).isEnabled(); assertThat(mWinscopeTrace.isEnabled()).isTrue(); } Loading @@ -149,7 +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(); doReturn(false).when(mImeTracing).isEnabled(); assertThat(mWinscopeTrace.isEnabled()).isFalse(); } Loading @@ -167,7 +167,7 @@ public class WinscopeTraceTest { public void sfUnavailableAndWmAndImmReturnTraceDisabled_shouldReturnDisabled() throws RemoteException { doReturn(false).when(mWindowManager).isWindowTraceEnabled(); doReturn(false).when(mInputMethodManager).isImeTraceEnabled(); doReturn(false).when(mImeTracing).isEnabled(); ReflectionHelpers.setField(mWinscopeTrace, "mSurfaceFlinger", null); assertThat(mWinscopeTrace.isEnabled()).isFalse(); } Loading @@ -182,8 +182,8 @@ public class WinscopeTraceTest { @Test public void setIsEnableTrue_shouldEnableImeTrace() throws RemoteException { mWinscopeTrace.setIsEnabled(true); verify(mInputMethodManager).startImeTrace(); verifyNoMoreInteractions(mInputMethodManager); verify(mImeTracing).startImeTrace(); verifyNoMoreInteractions(mImeTracing); } @Test Loading @@ -210,8 +210,8 @@ public class WinscopeTraceTest { @Config(shadows = ShadowParcel.class) public void setIsEnableFalse_shouldDisableImeTrace() throws RemoteException { mWinscopeTrace.setIsEnabled(false); verify(mInputMethodManager).stopImeTrace(); verifyNoMoreInteractions(mInputMethodManager); verify(mImeTracing).stopImeTrace(); verifyNoMoreInteractions(mImeTracing); verify(mToast).show(); } Loading Loading @@ -244,17 +244,6 @@ public class WinscopeTraceTest { mWinscopeTrace.setIsEnabled(true); } /** * Verify when input method manager call throws a remote exception, it is handled without * re-throwing the exception. */ @Test public void setIsEnableAndImmThrowsRemoteException_shouldFailGracefully() throws RemoteException { doThrow(new RemoteException("Unknown")).when(mInputMethodManager).isImeTraceEnabled(); mWinscopeTrace.setIsEnabled(true); } /** * Verify is surface flinger is not available not calls are made to it. */ Loading