DO NOT MERGE Fix subclass/superclass check for NotificationPanelViewMediator.
Bug: 165806308 Test: Manual + Unit Tests Passing Change-Id: I8f443762f1b487ab9d3fe4f6f84b0aa86e3d0c8a
This commit is contained in:
@@ -239,14 +239,14 @@ public class SystemBarConfigs {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
if (!mTopNavBarEnabled && notificationPanelMediatorUsed.isAssignableFrom(
|
||||
TopNotificationPanelViewMediator.class)) {
|
||||
if (!mTopNavBarEnabled && TopNotificationPanelViewMediator.class.isAssignableFrom(
|
||||
notificationPanelMediatorUsed)) {
|
||||
throw new RuntimeException(
|
||||
"Top System Bar must be enabled to use " + notificationPanelMediatorName);
|
||||
}
|
||||
|
||||
if (!mBottomNavBarEnabled && notificationPanelMediatorUsed.isAssignableFrom(
|
||||
BottomNotificationPanelViewMediator.class)) {
|
||||
if (!mBottomNavBarEnabled && BottomNotificationPanelViewMediator.class.isAssignableFrom(
|
||||
notificationPanelMediatorUsed)) {
|
||||
throw new RuntimeException("Bottom System Bar must be enabled to use "
|
||||
+ notificationPanelMediatorName);
|
||||
}
|
||||
|
||||
@@ -31,7 +31,14 @@ import androidx.test.filters.SmallTest;
|
||||
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.SysuiTestCase;
|
||||
import com.android.systemui.broadcast.BroadcastDispatcher;
|
||||
import com.android.systemui.car.CarDeviceProvisionedController;
|
||||
import com.android.systemui.car.CarSystemUiTest;
|
||||
import com.android.systemui.car.notification.NotificationPanelViewController;
|
||||
import com.android.systemui.car.notification.NotificationPanelViewMediator;
|
||||
import com.android.systemui.car.notification.PowerManagerHelper;
|
||||
import com.android.systemui.car.notification.TopNotificationPanelViewMediator;
|
||||
import com.android.systemui.statusbar.policy.ConfigurationController;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
@@ -92,6 +99,33 @@ public class SystemBarConfigsTest extends SysuiTestCase {
|
||||
mSystemBarConfigs = new SystemBarConfigs(mResources);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onInit_topNotifPanelViewMediatorUsed_topBarEnabled_doesNotThrowException() {
|
||||
when(mResources.getBoolean(R.bool.config_enableTopNavigationBar)).thenReturn(true);
|
||||
when(mResources.getString(R.string.config_notificationPanelViewMediator)).thenReturn(
|
||||
TestTopNotificationPanelViewMediator.class.getName());
|
||||
|
||||
mSystemBarConfigs = new SystemBarConfigs(mResources);
|
||||
}
|
||||
|
||||
@Test(expected = RuntimeException.class)
|
||||
public void onInit_topNotifPanelViewMediatorUsed_topBarNotEnabled_throwsRuntimeException() {
|
||||
when(mResources.getBoolean(R.bool.config_enableTopNavigationBar)).thenReturn(false);
|
||||
when(mResources.getString(R.string.config_notificationPanelViewMediator)).thenReturn(
|
||||
TestTopNotificationPanelViewMediator.class.getName());
|
||||
|
||||
mSystemBarConfigs = new SystemBarConfigs(mResources);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onInit_notificationPanelViewMediatorUsed_topBarNotEnabled_doesNotThrowException() {
|
||||
when(mResources.getBoolean(R.bool.config_enableTopNavigationBar)).thenReturn(false);
|
||||
when(mResources.getString(R.string.config_notificationPanelViewMediator)).thenReturn(
|
||||
NotificationPanelViewMediator.class.getName());
|
||||
|
||||
mSystemBarConfigs = new SystemBarConfigs(mResources);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getTopSystemBarLayoutParams_topBarEnabled_returnsTopSystemBarLayoutParams() {
|
||||
mSystemBarConfigs = new SystemBarConfigs(mResources);
|
||||
@@ -159,4 +193,20 @@ public class SystemBarConfigsTest extends SysuiTestCase {
|
||||
when(mResources.getInteger(R.integer.config_leftSystemBarZOrder)).thenReturn(2);
|
||||
when(mResources.getInteger(R.integer.config_rightSystemBarZOrder)).thenReturn(3);
|
||||
}
|
||||
|
||||
// Intentionally using a subclass of TopNotificationPanelViewMediator for testing purposes to
|
||||
// ensure that OEM's will be able to implement and use their own NotificationPanelViewMediator.
|
||||
private class TestTopNotificationPanelViewMediator extends
|
||||
TopNotificationPanelViewMediator {
|
||||
TestTopNotificationPanelViewMediator(
|
||||
CarNavigationBarController carNavigationBarController,
|
||||
NotificationPanelViewController notificationPanelViewController,
|
||||
PowerManagerHelper powerManagerHelper,
|
||||
BroadcastDispatcher broadcastDispatcher,
|
||||
CarDeviceProvisionedController carDeviceProvisionedController,
|
||||
ConfigurationController configurationController) {
|
||||
super(carNavigationBarController, notificationPanelViewController, powerManagerHelper,
|
||||
broadcastDispatcher, carDeviceProvisionedController, configurationController);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user