diff --git a/res/values/strings.xml b/res/values/strings.xml index cfefa55cc45..eba4fa0b29f 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -8732,7 +8732,7 @@ Window Trace - Layer Trace + Surface Trace Work profile settings diff --git a/src/com/android/settings/development/qstile/DevelopmentTiles.java b/src/com/android/settings/development/qstile/DevelopmentTiles.java index fea658869c2..38f95655168 100644 --- a/src/com/android/settings/development/qstile/DevelopmentTiles.java +++ b/src/com/android/settings/development/qstile/DevelopmentTiles.java @@ -16,6 +16,7 @@ package com.android.settings.development.qstile; +import android.content.Context; import android.os.IBinder; import android.os.Parcel; import android.os.RemoteException; @@ -30,6 +31,7 @@ import android.view.IWindowManager; import android.view.ThreadedRenderer; import android.view.View; import android.view.WindowManagerGlobal; +import android.widget.Toast; import com.android.internal.app.LocalePicker; import com.android.settings.wrapper.IWindowManagerWrapper; @@ -145,12 +147,17 @@ public abstract class DevelopmentTiles extends TileService { public static class WindowTrace extends DevelopmentTiles { @VisibleForTesting IWindowManagerWrapper mWindowManager; + @VisibleForTesting + Toast mToast; @Override public void onCreate() { super.onCreate(); mWindowManager = new IWindowManagerWrapper(WindowManagerGlobal .getWindowManagerService()); + Context context = getApplicationContext(); + CharSequence text = "Trace written to /data/misc/wmtrace/wm_trace.pb"; + mToast = Toast.makeText(context, text, Toast.LENGTH_LONG); } @Override @@ -171,6 +178,7 @@ public abstract class DevelopmentTiles extends TileService { mWindowManager.startWindowTrace(); } else { mWindowManager.stopWindowTrace(); + mToast.show(); } } catch (RemoteException e) { Log.e(TAG, "Could not set window trace status." + e.toString()); @@ -188,11 +196,16 @@ public abstract class DevelopmentTiles extends TileService { static final int SURFACE_FLINGER_LAYER_TRACE_STATUS_CODE = 1026; @VisibleForTesting IBinder mSurfaceFlinger; + @VisibleForTesting + Toast mToast; @Override public void onCreate() { super.onCreate(); mSurfaceFlinger = ServiceManager.getService("SurfaceFlinger"); + Context context = getApplicationContext(); + CharSequence text = "Trace written to /data/misc/wmtrace/layers_trace.pb"; + mToast = Toast.makeText(context, text, Toast.LENGTH_LONG); } @Override @@ -230,6 +243,9 @@ public abstract class DevelopmentTiles extends TileService { data.writeInt(isEnabled ? 1 : 0); mSurfaceFlinger.transact(SURFACE_FLINGER_LAYER_TRACE_CONTROL_CODE, data, null, 0 /* flags */); + if (!isEnabled){ + mToast.show(); + } } } catch (RemoteException e) { Log.e(TAG, "Could not set layer tracing." + e.toString()); diff --git a/tests/robotests/src/com/android/settings/development/qstile/LayerTraceTest.java b/tests/robotests/src/com/android/settings/development/qstile/LayerTraceTest.java index 594b96c8e71..0e42759ad28 100644 --- a/tests/robotests/src/com/android/settings/development/qstile/LayerTraceTest.java +++ b/tests/robotests/src/com/android/settings/development/qstile/LayerTraceTest.java @@ -33,6 +33,7 @@ import static org.mockito.Mockito.verifyNoMoreInteractions; import android.os.IBinder; import android.os.RemoteException; +import android.widget.Toast; import com.android.settings.TestConfig; import com.android.settings.testutils.shadow.ShadowParcel; @@ -52,6 +53,8 @@ import org.robolectric.util.ReflectionHelpers; public class LayerTraceTest { @Mock private IBinder mSurfaceFlinger; + @Mock + private Toast mToast; private DevelopmentTiles.LayerTrace mLayerTraceTile; @@ -59,13 +62,14 @@ public class LayerTraceTest { public void setUp() { MockitoAnnotations.initMocks(this); mLayerTraceTile = spy(new DevelopmentTiles.LayerTrace()); - mLayerTraceTile.onCreate(); ReflectionHelpers.setField(mLayerTraceTile, "mSurfaceFlinger", mSurfaceFlinger); + ReflectionHelpers.setField(mLayerTraceTile, "mToast", mToast); } @After public void after() { verifyNoMoreInteractions(mSurfaceFlinger); + verifyNoMoreInteractions(mToast); } @Test @@ -106,12 +110,13 @@ public class LayerTraceTest { @Test @Config(shadows = {ShadowParcel.class}) - public void setIsEnableFalse_shouldDisableLayerTrace() throws RemoteException { + public void setIsEnableFalse_shouldDisableLayerTraceAndShowToast() throws RemoteException { mLayerTraceTile.setIsEnabled(false); assertThat(ShadowParcel.sWriteIntResult).isEqualTo(0); verify(mSurfaceFlinger) .transact(eq(SURFACE_FLINGER_LAYER_TRACE_CONTROL_CODE), any(), isNull(), eq(0 /* flags */)); + verify(mToast).show(); } @Test diff --git a/tests/robotests/src/com/android/settings/development/qstile/WindowTraceTest.java b/tests/robotests/src/com/android/settings/development/qstile/WindowTraceTest.java index 3c4d9baad3b..d8a8084e102 100644 --- a/tests/robotests/src/com/android/settings/development/qstile/WindowTraceTest.java +++ b/tests/robotests/src/com/android/settings/development/qstile/WindowTraceTest.java @@ -25,12 +25,14 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; import android.os.RemoteException; +import android.widget.Toast; import com.android.settings.TestConfig; import com.android.settings.testutils.shadow.ShadowParcel; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.wrapper.IWindowManagerWrapper; +import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -44,6 +46,8 @@ import org.robolectric.util.ReflectionHelpers; public class WindowTraceTest { @Mock private IWindowManagerWrapper mWindowManager; + @Mock + private Toast mToast; private DevelopmentTiles.WindowTrace mWindowTrace; @@ -51,8 +55,13 @@ public class WindowTraceTest { public void setUp() { MockitoAnnotations.initMocks(this); mWindowTrace = spy(new DevelopmentTiles.WindowTrace()); - mWindowTrace.onCreate(); ReflectionHelpers.setField(mWindowTrace, "mWindowManager", mWindowManager); + ReflectionHelpers.setField(mWindowTrace, "mToast", mToast); + } + + @After + public void teardown() { + verifyNoMoreInteractions(mToast); } @Test @@ -83,9 +92,10 @@ public class WindowTraceTest { @Test @Config(shadows = {ShadowParcel.class}) - public void setIsEnableFalse_shouldDisableWindowTrace() throws RemoteException { + public void setIsEnableFalse_shouldDisableWindowTraceAndShowToast() throws RemoteException { mWindowTrace.setIsEnabled(false); verify(mWindowManager).stopWindowTrace(); + verify(mToast).show(); verifyNoMoreInteractions(mWindowManager); }