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

Commit ee7d2728 authored by Michael Mikhail's avatar Michael Mikhail
Browse files

Update TTT controllers to be in CoreStartable.

Moved TTT controllers to be CoreStartable as SysuiComponent#init will be
removed. This makes StartServices take a normal time without the need to
add dagger.lazy to FalsingManager and FalsingCollector.

Bug: 247817628
Test: Checked the time taken in StartServices.
Test: Executed adb commands for sender.
Test: atest MediaTttChipControllerSenderTest
Test: atest MediaTttChipControllerReceiverTest
Test: atest TemporaryViewDisplayControllerTest
Test: atest MediaTttCommandLineHelperTest
Change-Id: I1861a5c1982e0b8d54aba83a7eb5d1bd076a35cb
parent 8de3d142
Loading
Loading
Loading
Loading
+0 −15
Original line number Diff line number Diff line
@@ -27,9 +27,6 @@ import com.android.systemui.dump.DumpManager;
import com.android.systemui.keyguard.KeyguardSliceProvider;
import com.android.systemui.media.muteawait.MediaMuteAwaitConnectionCli;
import com.android.systemui.media.nearby.NearbyMediaDevicesManager;
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.policy.ConfigurationController;
import com.android.systemui.unfold.FoldStateLogger;
@@ -133,9 +130,6 @@ public interface SysUIComponent {
        });
        getNaturalRotationUnfoldProgressProvider().ifPresent(o -> o.init());
        // No init method needed, just needs to be gotten so that it's created.
        getMediaTttChipControllerSender();
        getMediaTttChipControllerReceiver();
        getMediaTttCommandLineHelper();
        getMediaMuteAwaitConnectionCli();
        getNearbyMediaDevicesManager();
        getUnfoldLatencyTracker().init();
@@ -205,15 +199,6 @@ public interface SysUIComponent {
     */
    Optional<NaturalRotationUnfoldProgressProvider> getNaturalRotationUnfoldProgressProvider();

    /** */
    Optional<MediaTttChipControllerSender> getMediaTttChipControllerSender();

    /** */
    Optional<MediaTttChipControllerReceiver> getMediaTttChipControllerReceiver();

    /** */
    Optional<MediaTttCommandLineHelper> getMediaTttCommandLineHelper();

    /** */
    Optional<MediaMuteAwaitConnectionCli> getMediaMuteAwaitConnectionCli();

+25 −0
Original line number Diff line number Diff line
@@ -32,6 +32,9 @@ import com.android.systemui.keyboard.KeyboardUI
import com.android.systemui.keyguard.KeyguardViewMediator
import com.android.systemui.log.SessionTracker
import com.android.systemui.media.RingtonePlayer
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.power.PowerUI
import com.android.systemui.recents.Recents
import com.android.systemui.settings.dagger.MultiUserUtilsModule
@@ -213,4 +216,26 @@ abstract class SystemUICoreStartableModule {
    @IntoMap
    @ClassKey(KeyguardLiftController::class)
    abstract fun bindKeyguardLiftController(sysui: KeyguardLiftController): CoreStartable

    /** Inject into MediaTttChipControllerReceiver. */
    @Binds
    @IntoMap
    @ClassKey(MediaTttChipControllerReceiver::class)
    abstract fun bindMediaTttChipControllerReceiver(
            sysui: MediaTttChipControllerReceiver
    ): CoreStartable

    /** Inject into MediaTttChipControllerSender. */
    @Binds
    @IntoMap
    @ClassKey(MediaTttChipControllerSender::class)
    abstract fun bindMediaTttChipControllerSender(
            sysui: MediaTttChipControllerSender
    ): CoreStartable

    /** Inject into MediaTttCommandLineHelper. */
    @Binds
    @IntoMap
    @ClassKey(MediaTttCommandLineHelper::class)
    abstract fun bindMediaTttCommandLineHelper(sysui: MediaTttCommandLineHelper): CoreStartable
}
+9 −7
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.content.Context
import android.media.MediaRoute2Info
import android.util.Log
import androidx.annotation.VisibleForTesting
import com.android.systemui.CoreStartable
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.media.taptotransfer.receiver.ChipStateReceiver
@@ -39,14 +40,10 @@ import javax.inject.Inject
 */
@SysUISingleton
class MediaTttCommandLineHelper @Inject constructor(
    commandRegistry: CommandRegistry,
    private val commandRegistry: CommandRegistry,
    private val context: Context,
    @Main private val mainExecutor: Executor
) {
    init {
        commandRegistry.registerCommand(SENDER_COMMAND) { SenderCommand() }
        commandRegistry.registerCommand(RECEIVER_COMMAND) { ReceiverCommand() }
    }
) : CoreStartable(context) {

    /** All commands for the sender device. */
    inner class SenderCommand : Command {
@@ -150,6 +147,11 @@ class MediaTttCommandLineHelper @Inject constructor(
                    "<chipState> useAppIcon=[true|false]")
        }
    }

    override fun start() {
        commandRegistry.registerCommand(SENDER_COMMAND) { SenderCommand() }
        commandRegistry.registerCommand(RECEIVER_COMMAND) { ReceiverCommand() }
    }
}

@VisibleForTesting
+5 −5
Original line number Diff line number Diff line
@@ -55,7 +55,7 @@ import javax.inject.Inject
 */
@SysUISingleton
class MediaTttChipControllerReceiver @Inject constructor(
        commandQueue: CommandQueue,
        private val commandQueue: CommandQueue,
        context: Context,
        @MediaTttReceiverLogger logger: MediaTttLogger,
        windowManager: WindowManager,
@@ -101,10 +101,6 @@ class MediaTttChipControllerReceiver @Inject constructor(
        }
    }

    init {
        commandQueue.addCallback(commandQueueCallbacks)
    }

    private fun updateMediaTapToTransferReceiverDisplay(
        @StatusBarManager.MediaTransferReceiverState displayState: Int,
        routeInfo: MediaRoute2Info,
@@ -141,6 +137,10 @@ class MediaTttChipControllerReceiver @Inject constructor(
        )
    }

    override fun start() {
        commandQueue.addCallback(commandQueueCallbacks)
    }

    override fun updateView(newInfo: ChipReceiverInfo, currentView: ViewGroup) {
        val iconInfo = MediaTttUtils.getIconInfoFromPackageName(
            context, newInfo.routeInfo.clientPackageName, logger
+9 −12
Original line number Diff line number Diff line
@@ -48,7 +48,6 @@ import com.android.systemui.temporarydisplay.TemporaryViewDisplayController
import com.android.systemui.temporarydisplay.TemporaryViewInfo
import com.android.systemui.util.concurrency.DelayableExecutor
import com.android.systemui.util.view.ViewUtil
import dagger.Lazy
import javax.inject.Inject

/**
@@ -57,7 +56,7 @@ import javax.inject.Inject
 */
@SysUISingleton
open class MediaTttChipControllerSender @Inject constructor(
        commandQueue: CommandQueue,
        private val commandQueue: CommandQueue,
        context: Context,
        @MediaTttSenderLogger logger: MediaTttLogger,
        windowManager: WindowManager,
@@ -66,10 +65,8 @@ open class MediaTttChipControllerSender @Inject constructor(
        configurationController: ConfigurationController,
        powerManager: PowerManager,
        private val uiEventLogger: MediaTttSenderUiEventLogger,
        // Added Lazy<> to delay the time we create Falsing instances.
        // And overcome performance issue, check [b/247817628] for details.
        private val falsingManager: Lazy<FalsingManager>,
        private val falsingCollector: Lazy<FalsingCollector>,
        private val falsingManager: FalsingManager,
        private val falsingCollector: FalsingCollector,
        private val viewUtil: ViewUtil,
) : TemporaryViewDisplayController<ChipSenderInfo, MediaTttLogger>(
        context,
@@ -102,10 +99,6 @@ open class MediaTttChipControllerSender @Inject constructor(
        }
    }

    init {
        commandQueue.addCallback(commandQueueCallbacks)
    }

    private fun updateMediaTapToTransferSenderDisplay(
        @StatusBarManager.MediaTransferSenderState displayState: Int,
        routeInfo: MediaRoute2Info,
@@ -128,6 +121,10 @@ open class MediaTttChipControllerSender @Inject constructor(
        }
    }

    override fun start() {
        commandQueue.addCallback(commandQueueCallbacks)
    }

    override fun updateView(
        newInfo: ChipSenderInfo,
        currentView: ViewGroup
@@ -138,7 +135,7 @@ open class MediaTttChipControllerSender @Inject constructor(
        parent = currentView.requireViewById(R.id.media_ttt_sender_chip)
        parent.touchHandler = object : Gefingerpoken {
            override fun onTouchEvent(ev: MotionEvent?): Boolean {
                falsingCollector.get().onTouchEvent(ev)
                falsingCollector.onTouchEvent(ev)
                return false
            }
        }
@@ -167,7 +164,7 @@ open class MediaTttChipControllerSender @Inject constructor(
                newInfo.routeInfo,
                newInfo.undoCallback,
                uiEventLogger,
                falsingManager.get(),
                falsingManager,
        )
        undoView.setOnClickListener(undoClickListener)
        undoView.visibility = (undoClickListener != null).visibleIfTrue()
Loading