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)); } }