Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9fed7420 authored by Youngjun Kwak's avatar Youngjun Kwak Committed by Android (Google) Code Review
Browse files

Merge "Fix subclass/superclass check for NotificationPanelViewMediator."

parents b3bd7b45 e77c1a0f
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -305,14 +305,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);
        }
+50 −2
Original line number Diff line number Diff line
@@ -33,7 +33,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;
@@ -55,8 +62,6 @@ public class SystemBarConfigsTest extends SysuiTestCase {
    private SystemBarConfigs mSystemBarConfigs;
    @Mock
    private Resources mResources;
    @Mock
    private CarNavigationBarView mCarNavigationBarView;

    @Before
    public void setUp() {
@@ -108,6 +113,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);
@@ -239,4 +271,20 @@ public class SystemBarConfigsTest extends SysuiTestCase {
        when(mResources.getBoolean(R.bool.config_hideRightSystemBarForKeyboard)).thenReturn(
                false);
    }

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