From d92b11e78f18a718f56356e99e1258bba74a6e11 Mon Sep 17 00:00:00 2001 From: Jerry Chang Date: Tue, 1 Sep 2020 11:52:39 +0800 Subject: [PATCH] Add test to make sure it inits WM Shell controllers properly Removes redundant codes and tests init functions for each controller in WMShell class. Bug: 161116823 Bug: 161118569 Test: atest WMShellTest Change-Id: Ie03c060a5741baed74c0880677c5656a6b1d4c4a --- .../com/android/systemui/wmshell/WMShell.java | 16 ++++--- .../android/systemui/wmshell/WMShellTest.java | 48 ++++++++++++------- 2 files changed, 40 insertions(+), 24 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/wmshell/WMShell.java b/packages/SystemUI/src/com/android/systemui/wmshell/WMShell.java index e1e18a22af51b..27af5f91c9e47 100644 --- a/packages/SystemUI/src/com/android/systemui/wmshell/WMShell.java +++ b/packages/SystemUI/src/com/android/systemui/wmshell/WMShell.java @@ -21,6 +21,7 @@ import static com.android.systemui.shared.system.WindowManagerWrapper.WINDOWING_ import android.app.ActivityManager; import android.content.Context; +import com.android.internal.annotations.VisibleForTesting; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.keyguard.KeyguardUpdateMonitorCallback; import com.android.systemui.SystemUI; @@ -48,11 +49,11 @@ import javax.inject.Inject; * Proxy in SysUiScope to delegate events to controllers in WM Shell library. */ @SysUISingleton -public final class WMShell extends SystemUI implements ProtoTraceable, - CommandQueue.Callbacks { +public final class WMShell extends SystemUI implements ProtoTraceable { private final CommandQueue mCommandQueue; private final DisplayImeController mDisplayImeController; private final KeyguardUpdateMonitor mKeyguardUpdateMonitor; + private final ActivityManagerWrapper mActivityManagerWrapper; private final Optional mPipOptional; private final Optional mSplitScreenOptional; private final ProtoTracer mProtoTracer; @@ -60,6 +61,7 @@ public final class WMShell extends SystemUI implements ProtoTraceable pipOptional, Optional splitScreenOptional, @@ -67,6 +69,7 @@ public final class WMShell extends SystemUI implements ProtoTraceable mPipOptional; - @Mock Optional mSplitScreenOptional; - @Mock PipController mPipController; + @Mock Pip mPip; + @Mock SplitScreen mSplitScreen; @Mock ProtoTracer mProtoTracer; @Before - public void setUp() throws Exception { - mInstrumentation = InstrumentationRegistry.getInstrumentation(); + public void setUp() { MockitoAnnotations.initMocks(this); mWMShell = new WMShell(mContext, mCommandQueue, mKeyguardUpdateMonitor, - mDisplayImeController, mPipOptional, mSplitScreenOptional, mProtoTracer); - mWMShell.start(); - when(mPipOptional.get()).thenReturn(mPipController); + mActivityManagerWrapper, mDisplayImeController, Optional.of(mPip), + Optional.of(mSplitScreen), mProtoTracer); } @Test - public void testWMShellRegisterCommandQueue() { - verify(mCommandQueue, times(1)).addCallback(mWMShell); + public void start_startsMonitorDisplays() { + mWMShell.start(); + + verify(mDisplayImeController).startMonitorDisplays(); + } + + @Test + public void initPip_registersCommandQueueCallback() { + mWMShell.initPip(mPip); + + verify(mCommandQueue).addCallback(any(CommandQueue.Callbacks.class)); + } + + @Test + public void initSplitScreen_registersCallbacks() { + mWMShell.initSplitScreen(mSplitScreen); + + verify(mKeyguardUpdateMonitor).registerCallback(any(KeyguardUpdateMonitorCallback.class)); + verify(mActivityManagerWrapper).registerTaskStackListener( + any(TaskStackChangeListener.class)); } }