diff --git a/packages/SystemUI/res/values-car/dimens.xml b/packages/SystemUI/res/values-car/dimens.xml deleted file mode 100644 index b2e7bd1b881e5..0000000000000 --- a/packages/SystemUI/res/values-car/dimens.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - 74dp - diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java index 2e2422df6cd1f..3fd620b1b509a 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java @@ -19,7 +19,6 @@ package com.android.systemui.statusbar.phone; import static android.app.StatusBarManager.WINDOW_STATE_HIDDEN; import static android.app.StatusBarManager.WINDOW_STATE_SHOWING; import static android.app.StatusBarManager.windowStateToString; -import static android.content.res.Configuration.UI_MODE_TYPE_CAR; import static com.android.systemui.keyguard.WakefulnessLifecycle.WAKEFULNESS_ASLEEP; import static com.android.systemui.keyguard.WakefulnessLifecycle.WAKEFULNESS_AWAKE; @@ -1169,7 +1168,8 @@ public class StatusBar extends SystemUI implements DemoMode, ExtensionFragmentListener.attachExtensonToFragment(container, QS.TAG, R.id.qs_frame, Dependency.get(ExtensionController.class).newExtension(QS.class) .withPlugin(QS.class) - .withUiMode(UI_MODE_TYPE_CAR, () -> new CarQSFragment()) + .withFeature( + PackageManager.FEATURE_AUTOMOTIVE, () -> new CarQSFragment()) .withDefault(() -> new QSFragment()) .build()); final QSTileHost qsh = SystemUIFactory.getInstance().createQSTileHost(mContext, this, diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/ExtensionController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/ExtensionController.java index ede8411f3c9f0..cade5dc46388d 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/ExtensionController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/ExtensionController.java @@ -56,6 +56,7 @@ public interface ExtensionController { ExtensionBuilder withDefault(Supplier def); ExtensionBuilder withCallback(Consumer callback); ExtensionBuilder withUiMode(int mode, Supplier def); + ExtensionBuilder withFeature(String feature, Supplier def); Extension build(); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/ExtensionControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/ExtensionControllerImpl.java index cc10775a83855..6d75cfcb38f30 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/ExtensionControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/ExtensionControllerImpl.java @@ -38,8 +38,9 @@ public class ExtensionControllerImpl implements ExtensionController { public static final int SORT_ORDER_PLUGIN = 0; public static final int SORT_ORDER_TUNER = 1; - public static final int SORT_ORDER_UI_MODE = 2; - public static final int SORT_ORDER_DEFAULT = 3; + public static final int SORT_ORDER_FEATURE = 2; + public static final int SORT_ORDER_UI_MODE = 3; + public static final int SORT_ORDER_DEFAULT = 4; private final Context mDefaultContext; @@ -92,12 +93,20 @@ public class ExtensionControllerImpl implements ExtensionController { return this; } + @Override public ExtensionController.ExtensionBuilder withUiMode(int uiMode, Supplier supplier) { mExtension.addUiMode(uiMode, supplier); return this; } + @Override + public ExtensionController.ExtensionBuilder withFeature(String feature, + Supplier supplier) { + mExtension.addFeature(feature, supplier); + return this; + } + @Override public ExtensionController.ExtensionBuilder withCallback( Consumer callback) { @@ -107,7 +116,7 @@ public class ExtensionControllerImpl implements ExtensionController { @Override public ExtensionController.Extension build() { - // Manually sort, plugins first, tuners second, defaults last. + // Sort items in ascending order Collections.sort(mExtension.mProducers, Comparator.comparingInt(Item::sortOrder)); mExtension.notifyChanged(); return mExtension; @@ -188,6 +197,10 @@ public class ExtensionControllerImpl implements ExtensionController { mProducers.add(new UiModeItem(uiMode, mode)); } + public void addFeature(String feature, Supplier mode) { + mProducers.add(new FeatureItem<>(feature, mode)); + } + private class PluginItem

implements Item, PluginListener

{ private final PluginConverter mConverter; private T mItem; @@ -305,6 +318,32 @@ public class ExtensionControllerImpl implements ExtensionController { } } + private class FeatureItem implements Item { + private final String mFeature; + private final Supplier mSupplier; + + public FeatureItem(String feature, Supplier supplier) { + mSupplier = supplier; + mFeature = feature; + } + + @Override + public T get() { + return mDefaultContext.getPackageManager().hasSystemFeature(mFeature) + ? mSupplier.get() : null; + } + + @Override + public void destroy() { + + } + + @Override + public int sortOrder() { + return SORT_ORDER_FEATURE; + } + } + private class Default implements Item { private final Supplier mSupplier; diff --git a/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeExtensionController.java b/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeExtensionController.java index 586a424cb8160..ab16e3bd163e9 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeExtensionController.java +++ b/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeExtensionController.java @@ -80,6 +80,11 @@ public class FakeExtensionController implements ExtensionController { return null; } + @Override + public ExtensionBuilder withFeature(String feature, Supplier def) { + return null; + } + @Override public Extension build() { return new FakeExtension(mAllocation);