diff options
author | kwaky <kwaky@google.com> | 2020-08-20 13:52:48 -0700 |
---|---|---|
committer | Heemin Seog <hseog@google.com> | 2020-08-31 23:39:04 +0000 |
commit | 56c3b76fc4b3f786ac7656646ac8d82e1e8d44f5 (patch) | |
tree | 2c0499c37436da9e3919634dc44a17dce61e77f5 /packages/CarSystemUI/src | |
parent | 51be8f8d5d0ae62e6066b381dd89463cf9f54491 (diff) |
Make SystemUI crash with warning if SystemBarConfigs is incompatible with NotificationPanelViewMediator.
Bug: 162599873
Bug: 165806308
Test: Manual
Change-Id: I855c03d11e31cf722609f2bb0b0cb6c01624b0c0
Merged-In: I855c03d11e31cf722609f2bb0b0cb6c01624b0c0
Diffstat (limited to 'packages/CarSystemUI/src')
-rw-r--r-- | packages/CarSystemUI/src/com/android/systemui/car/navigationbar/SystemBarConfigs.java | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/packages/CarSystemUI/src/com/android/systemui/car/navigationbar/SystemBarConfigs.java b/packages/CarSystemUI/src/com/android/systemui/car/navigationbar/SystemBarConfigs.java index 3527bf93682f..e7d31949eb24 100644 --- a/packages/CarSystemUI/src/com/android/systemui/car/navigationbar/SystemBarConfigs.java +++ b/packages/CarSystemUI/src/com/android/systemui/car/navigationbar/SystemBarConfigs.java @@ -29,6 +29,8 @@ import android.view.WindowManager; import com.android.internal.annotations.VisibleForTesting; import com.android.systemui.R; +import com.android.systemui.car.notification.BottomNotificationPanelViewMediator; +import com.android.systemui.car.notification.TopNotificationPanelViewMediator; import com.android.systemui.dagger.qualifiers.Main; import java.lang.annotation.ElementType; @@ -95,6 +97,7 @@ public class SystemBarConfigs { populateMaps(); readConfigs(); checkEnabledBarsHaveUniqueBarTypes(); + checkSystemBarEnabledForNotificationPanel(); setInsetPaddingsForOverlappingCorners(); sortSystemBarSidesByZOrder(); } @@ -221,6 +224,34 @@ public class SystemBarConfigs { } } + private void checkSystemBarEnabledForNotificationPanel() throws RuntimeException { + + String notificationPanelMediatorName = + mResources.getString(R.string.config_notificationPanelViewMediator); + if (notificationPanelMediatorName == null) { + return; + } + + Class<?> notificationPanelMediatorUsed = null; + try { + notificationPanelMediatorUsed = Class.forName(notificationPanelMediatorName); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } + + if (!mTopNavBarEnabled && notificationPanelMediatorUsed.isAssignableFrom( + TopNotificationPanelViewMediator.class)) { + throw new RuntimeException( + "Top System Bar must be enabled to use " + notificationPanelMediatorName); + } + + if (!mBottomNavBarEnabled && notificationPanelMediatorUsed.isAssignableFrom( + BottomNotificationPanelViewMediator.class)) { + throw new RuntimeException("Bottom System Bar must be enabled to use " + + notificationPanelMediatorName); + } + } + private void setInsetPaddingsForOverlappingCorners() { setInsetPaddingForOverlappingCorner(TOP, LEFT); setInsetPaddingForOverlappingCorner(TOP, RIGHT); @@ -277,7 +308,7 @@ public class SystemBarConfigs { } private static boolean isHorizontalBar(@SystemBarSide int side) { - return side == TOP || side == BOTTOM; + return side == TOP || side == BOTTOM; } private static boolean isVerticalBar(@SystemBarSide int side) { |