Use mock window manager for BubbleController in tests

Bubbles are no longer part of the status bar window and
live in their own window now. This resulted in a new
window being created each time setUp step happened in
BubbleControllerTests without ever being removed, resulting
in OOM when running tests :(

This CL fixes it by using a mock window manager in tests.

Test: atest
Fixes: 155805511
Change-Id: Id1940aeb7ee94801fa5669a30a98e2ea9c92126b
This commit is contained in:
Mady Mellor
2020-05-11 15:19:59 -07:00
parent c8d5a68525
commit 59a7b980e5
5 changed files with 17 additions and 33 deletions

View File

@@ -280,31 +280,6 @@ public class BubbleController implements ConfigurationController.ConfigurationLi
}
}
public BubbleController(Context context,
NotificationShadeWindowController notificationShadeWindowController,
StatusBarStateController statusBarStateController,
ShadeController shadeController,
BubbleData data,
ConfigurationController configurationController,
NotificationInterruptStateProvider interruptionStateProvider,
ZenModeController zenModeController,
NotificationLockscreenUserManager notifUserManager,
NotificationGroupManager groupManager,
NotificationEntryManager entryManager,
NotifPipeline notifPipeline,
FeatureFlags featureFlags,
DumpManager dumpManager,
FloatingContentCoordinator floatingContentCoordinator,
BubbleDataRepository dataRepository,
SysUiState sysUiState,
INotificationManager notificationManager) {
this(context, notificationShadeWindowController, statusBarStateController, shadeController,
data, null /* synchronizer */, configurationController, interruptionStateProvider,
zenModeController, notifUserManager, groupManager, entryManager,
notifPipeline, featureFlags, dumpManager, floatingContentCoordinator,
dataRepository, sysUiState, notificationManager);
}
/**
* Injected constructor. See {@link BubbleModule}.
*/
@@ -326,7 +301,8 @@ public class BubbleController implements ConfigurationController.ConfigurationLi
FloatingContentCoordinator floatingContentCoordinator,
BubbleDataRepository dataRepository,
SysUiState sysUiState,
INotificationManager notificationManager) {
INotificationManager notificationManager,
WindowManager windowManager) {
dumpManager.registerDumpable(TAG, this);
mContext = context;
mShadeController = shadeController;
@@ -395,7 +371,7 @@ public class BubbleController implements ConfigurationController.ConfigurationLi
}
mSurfaceSynchronizer = synchronizer;
mWindowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
mWindowManager = windowManager;
mBarService = IStatusBarService.Stub.asInterface(
ServiceManager.getService(Context.STATUS_BAR_SERVICE));

View File

@@ -18,6 +18,7 @@ package com.android.systemui.bubbles.dagger;
import android.app.INotificationManager;
import android.content.Context;
import android.view.WindowManager;
import com.android.systemui.bubbles.BubbleController;
import com.android.systemui.bubbles.BubbleData;
@@ -68,7 +69,8 @@ public interface BubbleModule {
FloatingContentCoordinator floatingContentCoordinator,
BubbleDataRepository bubbleDataRepository,
SysUiState sysUiState,
INotificationManager notifManager) {
INotificationManager notifManager,
WindowManager windowManager) {
return new BubbleController(
context,
notificationShadeWindowController,
@@ -88,6 +90,7 @@ public interface BubbleModule {
floatingContentCoordinator,
bubbleDataRepository,
sysUiState,
notifManager);
notifManager,
windowManager);
}
}

View File

@@ -279,7 +279,8 @@ public class BubbleControllerTest extends SysuiTestCase {
mFloatingContentCoordinator,
mDataRepository,
mSysUiState,
mock(INotificationManager.class));
mock(INotificationManager.class),
mWindowManager);
mBubbleController.setExpandListener(mBubbleExpandListener);
// Get a reference to the BubbleController's entry listener

View File

@@ -254,7 +254,8 @@ public class NewNotifPipelineBubbleControllerTest extends SysuiTestCase {
mFloatingContentCoordinator,
mDataRepository,
mSysUiState,
mock(INotificationManager.class));
mock(INotificationManager.class),
mWindowManager);
mBubbleController.addNotifCallback(mNotifCallback);
mBubbleController.setExpandListener(mBubbleExpandListener);

View File

@@ -18,6 +18,7 @@ package com.android.systemui.bubbles;
import android.app.INotificationManager;
import android.content.Context;
import android.view.WindowManager;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.model.SysUiState;
@@ -57,13 +58,15 @@ public class TestableBubbleController extends BubbleController {
FloatingContentCoordinator floatingContentCoordinator,
BubbleDataRepository dataRepository,
SysUiState sysUiState,
INotificationManager notificationManager) {
INotificationManager notificationManager,
WindowManager windowManager) {
super(context,
notificationShadeWindowController, statusBarStateController, shadeController,
data, Runnable::run, configurationController, interruptionStateProvider,
zenModeController, lockscreenUserManager, groupManager, entryManager,
notifPipeline, featureFlags, dumpManager, floatingContentCoordinator,
dataRepository, sysUiState, notificationManager);
dataRepository, sysUiState, notificationManager,
windowManager);
setInflateSynchronously(true);
}
}