diff options
10 files changed, 62 insertions, 53 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SysUIComponent.java b/packages/SystemUI/src/com/android/systemui/dagger/SysUIComponent.java index 0d06c513d248..c2dffe8bdad0 100644 --- a/packages/SystemUI/src/com/android/systemui/dagger/SysUIComponent.java +++ b/packages/SystemUI/src/com/android/systemui/dagger/SysUIComponent.java @@ -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(); @@ -206,15 +200,6 @@ public interface SysUIComponent { Optional<NaturalRotationUnfoldProgressProvider> getNaturalRotationUnfoldProgressProvider(); /** */ - Optional<MediaTttChipControllerSender> getMediaTttChipControllerSender(); - - /** */ - Optional<MediaTttChipControllerReceiver> getMediaTttChipControllerReceiver(); - - /** */ - Optional<MediaTttCommandLineHelper> getMediaTttCommandLineHelper(); - - /** */ Optional<MediaMuteAwaitConnectionCli> getMediaMuteAwaitConnectionCli(); /** */ diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SystemUICoreStartableModule.kt b/packages/SystemUI/src/com/android/systemui/dagger/SystemUICoreStartableModule.kt index 8bb27a7bc217..55eda0a0cb8a 100644 --- a/packages/SystemUI/src/com/android/systemui/dagger/SystemUICoreStartableModule.kt +++ b/packages/SystemUI/src/com/android/systemui/dagger/SystemUICoreStartableModule.kt @@ -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 } diff --git a/packages/SystemUI/src/com/android/systemui/media/taptotransfer/MediaTttCommandLineHelper.kt b/packages/SystemUI/src/com/android/systemui/media/taptotransfer/MediaTttCommandLineHelper.kt index 00b0ff9b128d..f5caefbf4ced 100644 --- a/packages/SystemUI/src/com/android/systemui/media/taptotransfer/MediaTttCommandLineHelper.kt +++ b/packages/SystemUI/src/com/android/systemui/media/taptotransfer/MediaTttCommandLineHelper.kt @@ -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 { @@ -56,7 +53,7 @@ class MediaTttCommandLineHelper @Inject constructor( val displayState: Int? try { displayState = ChipStateSender.getSenderStateIdFromName(commandName) - } catch (ex: IllegalArgumentException) { + } catch (ex: IllegalArgumentException) { pw.println("Invalid command name $commandName") return } @@ -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 diff --git a/packages/SystemUI/src/com/android/systemui/media/taptotransfer/receiver/MediaTttChipControllerReceiver.kt b/packages/SystemUI/src/com/android/systemui/media/taptotransfer/receiver/MediaTttChipControllerReceiver.kt index 511c4bf6f949..1461293c7a07 100644 --- a/packages/SystemUI/src/com/android/systemui/media/taptotransfer/receiver/MediaTttChipControllerReceiver.kt +++ b/packages/SystemUI/src/com/android/systemui/media/taptotransfer/receiver/MediaTttChipControllerReceiver.kt @@ -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 diff --git a/packages/SystemUI/src/com/android/systemui/media/taptotransfer/sender/MediaTttChipControllerSender.kt b/packages/SystemUI/src/com/android/systemui/media/taptotransfer/sender/MediaTttChipControllerSender.kt index a98158eebfbf..5d631450cb41 100644 --- a/packages/SystemUI/src/com/android/systemui/media/taptotransfer/sender/MediaTttChipControllerSender.kt +++ b/packages/SystemUI/src/com/android/systemui/media/taptotransfer/sender/MediaTttChipControllerSender.kt @@ -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() diff --git a/packages/SystemUI/src/com/android/systemui/temporarydisplay/TemporaryViewDisplayController.kt b/packages/SystemUI/src/com/android/systemui/temporarydisplay/TemporaryViewDisplayController.kt index 93650b0d4102..4450b76a878c 100644 --- a/packages/SystemUI/src/com/android/systemui/temporarydisplay/TemporaryViewDisplayController.kt +++ b/packages/SystemUI/src/com/android/systemui/temporarydisplay/TemporaryViewDisplayController.kt @@ -32,6 +32,7 @@ import android.view.accessibility.AccessibilityManager import android.view.accessibility.AccessibilityManager.FLAG_CONTENT_CONTROLS import android.view.accessibility.AccessibilityManager.FLAG_CONTENT_ICONS import android.view.accessibility.AccessibilityManager.FLAG_CONTENT_TEXT +import com.android.systemui.CoreStartable import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.statusbar.policy.ConfigurationController import com.android.systemui.util.concurrency.DelayableExecutor @@ -61,7 +62,7 @@ abstract class TemporaryViewDisplayController<T : TemporaryViewInfo, U : Tempora @LayoutRes private val viewLayoutRes: Int, private val windowTitle: String, private val wakeReason: String, -) { +) : CoreStartable(context) { /** * Window layout params that will be used as a starting point for the [windowLayoutParams] of * all subclasses. diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/taptotransfer/MediaTttCommandLineHelperTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/taptotransfer/MediaTttCommandLineHelperTest.kt index 2a130535c657..d82819397f08 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/media/taptotransfer/MediaTttCommandLineHelperTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/media/taptotransfer/MediaTttCommandLineHelperTest.kt @@ -64,6 +64,7 @@ class MediaTttCommandLineHelperTest : SysuiTestCase() { context, FakeExecutor(FakeSystemClock()), ) + mediaTttCommandLineHelper.start() } @Test(expected = IllegalStateException::class) diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/taptotransfer/receiver/MediaTttChipControllerReceiverTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/taptotransfer/receiver/MediaTttChipControllerReceiverTest.kt index f7b30919738c..9577274eef8d 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/media/taptotransfer/receiver/MediaTttChipControllerReceiverTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/media/taptotransfer/receiver/MediaTttChipControllerReceiverTest.kt @@ -110,6 +110,7 @@ class MediaTttChipControllerReceiverTest : SysuiTestCase() { receiverUiEventLogger, viewUtil, ) + controllerReceiver.start() val callbackCaptor = ArgumentCaptor.forClass(CommandQueue.Callbacks::class.java) verify(commandQueue).addCallback(callbackCaptor.capture()) diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/taptotransfer/sender/MediaTttChipControllerSenderTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/taptotransfer/sender/MediaTttChipControllerSenderTest.kt index 213b74a6e8a3..3a8a51d42f77 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/media/taptotransfer/sender/MediaTttChipControllerSenderTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/media/taptotransfer/sender/MediaTttChipControllerSenderTest.kt @@ -49,7 +49,6 @@ import com.android.systemui.util.mockito.eq import com.android.systemui.util.time.FakeSystemClock import com.android.systemui.util.view.ViewUtil import com.google.common.truth.Truth.assertThat -import dagger.Lazy import org.junit.Before import org.junit.Test import org.junit.runner.RunWith @@ -84,12 +83,8 @@ class MediaTttChipControllerSenderTest : SysuiTestCase() { @Mock private lateinit var commandQueue: CommandQueue @Mock - private lateinit var lazyFalsingManager: Lazy<FalsingManager> - @Mock private lateinit var falsingManager: FalsingManager @Mock - private lateinit var lazyFalsingCollector: Lazy<FalsingCollector> - @Mock private lateinit var falsingCollector: FalsingCollector @Mock private lateinit var viewUtil: ViewUtil @@ -119,8 +114,6 @@ class MediaTttChipControllerSenderTest : SysuiTestCase() { senderUiEventLogger = MediaTttSenderUiEventLogger(uiEventLoggerFake) whenever(accessibilityManager.getRecommendedTimeoutMillis(any(), any())).thenReturn(TIMEOUT) - whenever(lazyFalsingManager.get()).thenReturn(falsingManager) - whenever(lazyFalsingCollector.get()).thenReturn(falsingCollector) controllerSender = TestMediaTttChipControllerSender( commandQueue, @@ -132,10 +125,11 @@ class MediaTttChipControllerSenderTest : SysuiTestCase() { configurationController, powerManager, senderUiEventLogger, - lazyFalsingManager, - lazyFalsingCollector, + falsingManager, + falsingCollector, viewUtil, ) + controllerSender.start() val callbackCaptor = ArgumentCaptor.forClass(CommandQueue.Callbacks::class.java) verify(commandQueue).addCallback(callbackCaptor.capture()) @@ -441,7 +435,7 @@ class MediaTttChipControllerSenderTest : SysuiTestCase() { @Test fun transferToReceiverSucceeded_withUndoRunnable_falseTap_callbackNotRun() { - whenever(lazyFalsingManager.get().isFalseTap(anyInt())).thenReturn(true) + whenever(falsingManager.isFalseTap(anyInt())).thenReturn(true) var undoCallbackCalled = false val undoCallback = object : IUndoMediaTransferCallback.Stub() { override fun onUndoTriggered() { @@ -457,7 +451,7 @@ class MediaTttChipControllerSenderTest : SysuiTestCase() { @Test fun transferToReceiverSucceeded_withUndoRunnable_realTap_callbackRun() { - whenever(lazyFalsingManager.get().isFalseTap(anyInt())).thenReturn(false) + whenever(falsingManager.isFalseTap(anyInt())).thenReturn(false) var undoCallbackCalled = false val undoCallback = object : IUndoMediaTransferCallback.Stub() { override fun onUndoTriggered() { @@ -839,8 +833,8 @@ class MediaTttChipControllerSenderTest : SysuiTestCase() { configurationController: ConfigurationController, powerManager: PowerManager, uiEventLogger: MediaTttSenderUiEventLogger, - falsingManager: Lazy<FalsingManager>, - falsingCollector: Lazy<FalsingCollector>, + falsingManager: FalsingManager, + falsingCollector: FalsingCollector, viewUtil: ViewUtil, ) : MediaTttChipControllerSender( commandQueue, diff --git a/packages/SystemUI/tests/src/com/android/systemui/temporarydisplay/TemporaryViewDisplayControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/temporarydisplay/TemporaryViewDisplayControllerTest.kt index e1c1b46baf24..c4abedd0eed4 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/temporarydisplay/TemporaryViewDisplayControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/temporarydisplay/TemporaryViewDisplayControllerTest.kt @@ -260,6 +260,9 @@ class TemporaryViewDisplayControllerTest : SysuiTestCase() { var mostRecentViewInfo: ViewInfo? = null override val windowLayoutParams = commonWindowLayoutParams + + override fun start() {} + override fun updateView(newInfo: ViewInfo, currentView: ViewGroup) { mostRecentViewInfo = newInfo } |