Merge "[Media TTT] Turn the screen on when the chip first displays." into tm-dev am: ba4caf4de1
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17086903 Change-Id: Ie7e97f5ad4b301ab2ce77de537410e6abef7b905
This commit is contained in:
@@ -22,6 +22,8 @@ import android.content.Context
|
|||||||
import android.content.pm.PackageManager
|
import android.content.pm.PackageManager
|
||||||
import android.graphics.PixelFormat
|
import android.graphics.PixelFormat
|
||||||
import android.graphics.drawable.Drawable
|
import android.graphics.drawable.Drawable
|
||||||
|
import android.os.PowerManager
|
||||||
|
import android.os.SystemClock
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import android.view.Gravity
|
import android.view.Gravity
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
@@ -53,6 +55,7 @@ abstract class MediaTttChipControllerCommon<T : ChipInfoCommon>(
|
|||||||
private val viewUtil: ViewUtil,
|
private val viewUtil: ViewUtil,
|
||||||
@Main private val mainExecutor: DelayableExecutor,
|
@Main private val mainExecutor: DelayableExecutor,
|
||||||
private val tapGestureDetector: TapGestureDetector,
|
private val tapGestureDetector: TapGestureDetector,
|
||||||
|
private val powerManager: PowerManager,
|
||||||
@LayoutRes private val chipLayoutRes: Int
|
@LayoutRes private val chipLayoutRes: Int
|
||||||
) {
|
) {
|
||||||
/** The window layout parameters we'll use when attaching the view to a window. */
|
/** The window layout parameters we'll use when attaching the view to a window. */
|
||||||
@@ -95,6 +98,12 @@ abstract class MediaTttChipControllerCommon<T : ChipInfoCommon>(
|
|||||||
if (oldChipView == null) {
|
if (oldChipView == null) {
|
||||||
tapGestureDetector.addOnGestureDetectedCallback(TAG, this::onScreenTapped)
|
tapGestureDetector.addOnGestureDetectedCallback(TAG, this::onScreenTapped)
|
||||||
windowManager.addView(chipView, windowLayoutParams)
|
windowManager.addView(chipView, windowLayoutParams)
|
||||||
|
// Wake the screen so the user will see the chip
|
||||||
|
powerManager.wakeUp(
|
||||||
|
SystemClock.uptimeMillis(),
|
||||||
|
PowerManager.WAKE_REASON_APPLICATION,
|
||||||
|
"com.android.systemui:media_tap_to_transfer_activated"
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cancel and re-set the chip timeout each time we get a new state.
|
// Cancel and re-set the chip timeout each time we get a new state.
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import android.graphics.drawable.Drawable
|
|||||||
import android.graphics.drawable.Icon
|
import android.graphics.drawable.Icon
|
||||||
import android.media.MediaRoute2Info
|
import android.media.MediaRoute2Info
|
||||||
import android.os.Handler
|
import android.os.Handler
|
||||||
|
import android.os.PowerManager
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.view.WindowManager
|
import android.view.WindowManager
|
||||||
@@ -52,6 +53,7 @@ class MediaTttChipControllerReceiver @Inject constructor(
|
|||||||
viewUtil: ViewUtil,
|
viewUtil: ViewUtil,
|
||||||
mainExecutor: DelayableExecutor,
|
mainExecutor: DelayableExecutor,
|
||||||
tapGestureDetector: TapGestureDetector,
|
tapGestureDetector: TapGestureDetector,
|
||||||
|
powerManager: PowerManager,
|
||||||
@Main private val mainHandler: Handler,
|
@Main private val mainHandler: Handler,
|
||||||
private val uiEventLogger: MediaTttReceiverUiEventLogger,
|
private val uiEventLogger: MediaTttReceiverUiEventLogger,
|
||||||
) : MediaTttChipControllerCommon<ChipReceiverInfo>(
|
) : MediaTttChipControllerCommon<ChipReceiverInfo>(
|
||||||
@@ -61,6 +63,7 @@ class MediaTttChipControllerReceiver @Inject constructor(
|
|||||||
viewUtil,
|
viewUtil,
|
||||||
mainExecutor,
|
mainExecutor,
|
||||||
tapGestureDetector,
|
tapGestureDetector,
|
||||||
|
powerManager,
|
||||||
R.layout.media_ttt_chip_receiver
|
R.layout.media_ttt_chip_receiver
|
||||||
) {
|
) {
|
||||||
private val commandQueueCallbacks = object : CommandQueue.Callbacks {
|
private val commandQueueCallbacks = object : CommandQueue.Callbacks {
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ package com.android.systemui.media.taptotransfer.sender
|
|||||||
import android.app.StatusBarManager
|
import android.app.StatusBarManager
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.media.MediaRoute2Info
|
import android.media.MediaRoute2Info
|
||||||
|
import android.os.PowerManager
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
@@ -51,6 +52,7 @@ class MediaTttChipControllerSender @Inject constructor(
|
|||||||
viewUtil: ViewUtil,
|
viewUtil: ViewUtil,
|
||||||
@Main mainExecutor: DelayableExecutor,
|
@Main mainExecutor: DelayableExecutor,
|
||||||
tapGestureDetector: TapGestureDetector,
|
tapGestureDetector: TapGestureDetector,
|
||||||
|
powerManager: PowerManager,
|
||||||
private val uiEventLogger: MediaTttSenderUiEventLogger
|
private val uiEventLogger: MediaTttSenderUiEventLogger
|
||||||
) : MediaTttChipControllerCommon<ChipSenderInfo>(
|
) : MediaTttChipControllerCommon<ChipSenderInfo>(
|
||||||
context,
|
context,
|
||||||
@@ -59,6 +61,7 @@ class MediaTttChipControllerSender @Inject constructor(
|
|||||||
viewUtil,
|
viewUtil,
|
||||||
mainExecutor,
|
mainExecutor,
|
||||||
tapGestureDetector,
|
tapGestureDetector,
|
||||||
|
powerManager,
|
||||||
R.layout.media_ttt_chip
|
R.layout.media_ttt_chip
|
||||||
) {
|
) {
|
||||||
private var currentlyDisplayedChipState: ChipStateSender? = null
|
private var currentlyDisplayedChipState: ChipStateSender? = null
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ import android.content.Context
|
|||||||
import android.content.pm.ApplicationInfo
|
import android.content.pm.ApplicationInfo
|
||||||
import android.content.pm.PackageManager
|
import android.content.pm.PackageManager
|
||||||
import android.graphics.drawable.Drawable
|
import android.graphics.drawable.Drawable
|
||||||
import android.media.MediaRoute2Info
|
import android.os.PowerManager
|
||||||
import android.view.MotionEvent
|
import android.view.MotionEvent
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
@@ -30,7 +30,6 @@ import androidx.test.filters.SmallTest
|
|||||||
import com.android.systemui.R
|
import com.android.systemui.R
|
||||||
import com.android.systemui.SysuiTestCase
|
import com.android.systemui.SysuiTestCase
|
||||||
import com.android.systemui.dagger.qualifiers.Main
|
import com.android.systemui.dagger.qualifiers.Main
|
||||||
import com.android.systemui.media.taptotransfer.receiver.ChipReceiverInfo
|
|
||||||
import com.android.systemui.statusbar.gesture.TapGestureDetector
|
import com.android.systemui.statusbar.gesture.TapGestureDetector
|
||||||
import com.android.systemui.util.concurrency.DelayableExecutor
|
import com.android.systemui.util.concurrency.DelayableExecutor
|
||||||
import com.android.systemui.util.concurrency.FakeExecutor
|
import com.android.systemui.util.concurrency.FakeExecutor
|
||||||
@@ -71,6 +70,8 @@ class MediaTttChipControllerCommonTest : SysuiTestCase() {
|
|||||||
private lateinit var viewUtil: ViewUtil
|
private lateinit var viewUtil: ViewUtil
|
||||||
@Mock
|
@Mock
|
||||||
private lateinit var tapGestureDetector: TapGestureDetector
|
private lateinit var tapGestureDetector: TapGestureDetector
|
||||||
|
@Mock
|
||||||
|
private lateinit var powerManager: PowerManager
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
@@ -88,16 +89,17 @@ class MediaTttChipControllerCommonTest : SysuiTestCase() {
|
|||||||
fakeExecutor = FakeExecutor(fakeClock)
|
fakeExecutor = FakeExecutor(fakeClock)
|
||||||
|
|
||||||
controllerCommon = TestControllerCommon(
|
controllerCommon = TestControllerCommon(
|
||||||
context, logger, windowManager, viewUtil, fakeExecutor, tapGestureDetector
|
context, logger, windowManager, viewUtil, fakeExecutor, tapGestureDetector, powerManager
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun displayChip_chipAddedAndGestureDetectionStarted() {
|
fun displayChip_chipAddedAndGestureDetectionStartedAndScreenOn() {
|
||||||
controllerCommon.displayChip(getState())
|
controllerCommon.displayChip(getState())
|
||||||
|
|
||||||
verify(windowManager).addView(any(), any())
|
verify(windowManager).addView(any(), any())
|
||||||
verify(tapGestureDetector).addOnGestureDetectedCallback(any(), any())
|
verify(tapGestureDetector).addOnGestureDetectedCallback(any(), any())
|
||||||
|
verify(powerManager).wakeUp(any(), any(), any())
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -281,6 +283,7 @@ class MediaTttChipControllerCommonTest : SysuiTestCase() {
|
|||||||
viewUtil: ViewUtil,
|
viewUtil: ViewUtil,
|
||||||
@Main mainExecutor: DelayableExecutor,
|
@Main mainExecutor: DelayableExecutor,
|
||||||
tapGestureDetector: TapGestureDetector,
|
tapGestureDetector: TapGestureDetector,
|
||||||
|
powerManager: PowerManager
|
||||||
) : MediaTttChipControllerCommon<ChipInfo>(
|
) : MediaTttChipControllerCommon<ChipInfo>(
|
||||||
context,
|
context,
|
||||||
logger,
|
logger,
|
||||||
@@ -288,6 +291,7 @@ class MediaTttChipControllerCommonTest : SysuiTestCase() {
|
|||||||
viewUtil,
|
viewUtil,
|
||||||
mainExecutor,
|
mainExecutor,
|
||||||
tapGestureDetector,
|
tapGestureDetector,
|
||||||
|
powerManager,
|
||||||
R.layout.media_ttt_chip
|
R.layout.media_ttt_chip
|
||||||
) {
|
) {
|
||||||
override fun updateChipView(chipInfo: ChipInfo, currentChipView: ViewGroup) {
|
override fun updateChipView(chipInfo: ChipInfo, currentChipView: ViewGroup) {
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import android.content.pm.PackageManager
|
|||||||
import android.graphics.drawable.Drawable
|
import android.graphics.drawable.Drawable
|
||||||
import android.media.MediaRoute2Info
|
import android.media.MediaRoute2Info
|
||||||
import android.os.Handler
|
import android.os.Handler
|
||||||
|
import android.os.PowerManager
|
||||||
import android.testing.AndroidTestingRunner
|
import android.testing.AndroidTestingRunner
|
||||||
import android.testing.TestableLooper
|
import android.testing.TestableLooper
|
||||||
import android.view.View
|
import android.view.View
|
||||||
@@ -64,6 +65,8 @@ class MediaTttChipControllerReceiverTest : SysuiTestCase() {
|
|||||||
@Mock
|
@Mock
|
||||||
private lateinit var logger: MediaTttLogger
|
private lateinit var logger: MediaTttLogger
|
||||||
@Mock
|
@Mock
|
||||||
|
private lateinit var powerManager: PowerManager
|
||||||
|
@Mock
|
||||||
private lateinit var windowManager: WindowManager
|
private lateinit var windowManager: WindowManager
|
||||||
@Mock
|
@Mock
|
||||||
private lateinit var viewUtil: ViewUtil
|
private lateinit var viewUtil: ViewUtil
|
||||||
@@ -97,6 +100,7 @@ class MediaTttChipControllerReceiverTest : SysuiTestCase() {
|
|||||||
viewUtil,
|
viewUtil,
|
||||||
FakeExecutor(FakeSystemClock()),
|
FakeExecutor(FakeSystemClock()),
|
||||||
TapGestureDetector(context),
|
TapGestureDetector(context),
|
||||||
|
powerManager,
|
||||||
Handler.getMain(),
|
Handler.getMain(),
|
||||||
receiverUiEventLogger,
|
receiverUiEventLogger,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import android.content.pm.ApplicationInfo
|
|||||||
import android.content.pm.PackageManager
|
import android.content.pm.PackageManager
|
||||||
import android.graphics.drawable.Drawable
|
import android.graphics.drawable.Drawable
|
||||||
import android.media.MediaRoute2Info
|
import android.media.MediaRoute2Info
|
||||||
|
import android.os.PowerManager
|
||||||
import android.testing.AndroidTestingRunner
|
import android.testing.AndroidTestingRunner
|
||||||
import android.testing.TestableLooper
|
import android.testing.TestableLooper
|
||||||
import android.view.View
|
import android.view.View
|
||||||
@@ -66,6 +67,8 @@ class MediaTttChipControllerSenderTest : SysuiTestCase() {
|
|||||||
@Mock
|
@Mock
|
||||||
private lateinit var logger: MediaTttLogger
|
private lateinit var logger: MediaTttLogger
|
||||||
@Mock
|
@Mock
|
||||||
|
private lateinit var powerManager: PowerManager
|
||||||
|
@Mock
|
||||||
private lateinit var windowManager: WindowManager
|
private lateinit var windowManager: WindowManager
|
||||||
@Mock
|
@Mock
|
||||||
private lateinit var viewUtil: ViewUtil
|
private lateinit var viewUtil: ViewUtil
|
||||||
@@ -103,6 +106,7 @@ class MediaTttChipControllerSenderTest : SysuiTestCase() {
|
|||||||
viewUtil,
|
viewUtil,
|
||||||
fakeExecutor,
|
fakeExecutor,
|
||||||
TapGestureDetector(context),
|
TapGestureDetector(context),
|
||||||
|
powerManager,
|
||||||
senderUiEventLogger
|
senderUiEventLogger
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user