diff options
4 files changed, 64 insertions, 25 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SysUIComponent.java b/packages/SystemUI/src/com/android/systemui/dagger/SysUIComponent.java index 718befadd2b5..029cabb0bc0b 100644 --- a/packages/SystemUI/src/com/android/systemui/dagger/SysUIComponent.java +++ b/packages/SystemUI/src/com/android/systemui/dagger/SysUIComponent.java @@ -31,7 +31,6 @@ import com.android.systemui.media.taptotransfer.MediaTttCommandLineHelper; import com.android.systemui.media.taptotransfer.receiver.MediaTttChipControllerReceiver; import com.android.systemui.media.taptotransfer.sender.MediaTttChipControllerSender; import com.android.systemui.people.PeopleProvider; -import com.android.systemui.statusbar.pipeline.ConnectivityInfoProcessor; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.unfold.FoldStateLogger; import com.android.systemui.unfold.FoldStateLoggingProvider; @@ -131,7 +130,6 @@ public interface SysUIComponent { getMediaTttCommandLineHelper(); getMediaMuteAwaitConnectionCli(); getNearbyMediaDevicesManager(); - getConnectivityInfoProcessor(); getUnfoldLatencyTracker().init(); getFoldStateLoggingProvider().ifPresent(FoldStateLoggingProvider::init); getFoldStateLogger().ifPresent(FoldStateLogger::init); @@ -214,9 +212,6 @@ public interface SysUIComponent { /** */ Optional<NearbyMediaDevicesManager> getNearbyMediaDevicesManager(); - /** */ - Optional<ConnectivityInfoProcessor> getConnectivityInfoProcessor(); - /** * Returns {@link CoreStartable}s that should be started with the application. */ diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/ConnectivityInfoProcessor.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/ConnectivityInfoProcessor.kt index bd6cf9a1d101..a8419145d6ed 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/ConnectivityInfoProcessor.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/ConnectivityInfoProcessor.kt @@ -16,6 +16,8 @@ package com.android.systemui.statusbar.pipeline +import android.content.Context +import com.android.systemui.CoreStartable import com.android.systemui.dagger.SysUISingleton import javax.inject.Inject @@ -27,4 +29,18 @@ import javax.inject.Inject * displayed in the RHS of the status bar. */ @SysUISingleton -class ConnectivityInfoProcessor @Inject constructor() +class ConnectivityInfoProcessor @Inject constructor( + context: Context, + private val statusBarPipelineFlags: StatusBarPipelineFlags, +) : CoreStartable(context) { + override fun start() { + if (statusBarPipelineFlags.isNewPipelineEnabled()) { + init() + } + } + + /** Initializes this processor and everything it depends on. */ + private fun init() { + // TODO(b/238425913): Register all the connectivity callbacks here. + } +} diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/StatusBarPipelineFlags.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/StatusBarPipelineFlags.kt new file mode 100644 index 000000000000..589cdb8182cb --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/StatusBarPipelineFlags.kt @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.statusbar.pipeline + +import com.android.systemui.dagger.SysUISingleton +import com.android.systemui.flags.FeatureFlags +import com.android.systemui.flags.Flags +import javax.inject.Inject + +/** All flagging methods related to the new status bar pipeline (see b/238425913). */ +@SysUISingleton +class StatusBarPipelineFlags @Inject constructor(private val featureFlags: FeatureFlags) { + /** + * Returns true if we should run the new pipeline. + * + * TODO(b/238425913): We may want to split this out into: + * (1) isNewPipelineLoggingEnabled(), where the new pipeline runs and logs its decisions but + * doesn't change the UI at all. + * (2) isNewPipelineEnabled(), where the new pipeline runs and does change the UI (and the old + * pipeline doesn't change the UI). + */ + fun isNewPipelineEnabled(): Boolean = featureFlags.isEnabled(Flags.NEW_STATUS_BAR_PIPELINE) +} diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/dagger/StatusBarPipelineModule.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/dagger/StatusBarPipelineModule.kt index 734bd2d8e5b3..771bb0c11fb6 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/dagger/StatusBarPipelineModule.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/dagger/StatusBarPipelineModule.kt @@ -16,27 +16,18 @@ package com.android.systemui.statusbar.pipeline.dagger -import com.android.systemui.dagger.SysUISingleton -import com.android.systemui.flags.FeatureFlags -import com.android.systemui.flags.Flags +import com.android.systemui.CoreStartable import com.android.systemui.statusbar.pipeline.ConnectivityInfoProcessor -import dagger.Lazy +import dagger.Binds import dagger.Module -import dagger.Provides -import java.util.Optional +import dagger.multibindings.ClassKey +import dagger.multibindings.IntoMap @Module -class StatusBarPipelineModule { - @Provides - @SysUISingleton - fun provideConnectivityInfoProcessor( - featureFlags: FeatureFlags, - processorLazy: Lazy<ConnectivityInfoProcessor> - ): Optional<ConnectivityInfoProcessor> { - return if (featureFlags.isEnabled(Flags.NEW_STATUS_BAR_PIPELINE)) { - Optional.of(processorLazy.get()) - } else { - Optional.empty() - } - } +abstract class StatusBarPipelineModule { + /** Inject into ConnectivityInfoProcessor. */ + @Binds + @IntoMap + @ClassKey(ConnectivityInfoProcessor::class) + abstract fun bindConnectivityInfoProcessor(cip: ConnectivityInfoProcessor): CoreStartable } |