Merge "[Media TTT] Allow additional transitions from the SUCCEEDED/FAILED states." into tm-qpr-dev am: 1cdcd02fba
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/21158908 Change-Id: Ib5b12ecfe714bbb6349d6760d38d05d3dc6a39db Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -136,9 +136,9 @@ enum class ChipStateSender(
|
|||||||
),
|
),
|
||||||
) {
|
) {
|
||||||
override fun isValidNextState(nextState: ChipStateSender): Boolean {
|
override fun isValidNextState(nextState: ChipStateSender): Boolean {
|
||||||
return nextState == FAR_FROM_RECEIVER ||
|
// Since _SUCCEEDED is the end of a transfer sequence, we should be able to move to any
|
||||||
nextState == ALMOST_CLOSE_TO_START_CAST ||
|
// state that represents the beginning of a new sequence.
|
||||||
nextState == TRANSFER_TO_THIS_DEVICE_TRIGGERED
|
return stateIsStartOfSequence(nextState)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -158,9 +158,9 @@ enum class ChipStateSender(
|
|||||||
),
|
),
|
||||||
) {
|
) {
|
||||||
override fun isValidNextState(nextState: ChipStateSender): Boolean {
|
override fun isValidNextState(nextState: ChipStateSender): Boolean {
|
||||||
return nextState == FAR_FROM_RECEIVER ||
|
// Since _SUCCEEDED is the end of a transfer sequence, we should be able to move to any
|
||||||
nextState == ALMOST_CLOSE_TO_END_CAST ||
|
// state that represents the beginning of a new sequence.
|
||||||
nextState == TRANSFER_TO_RECEIVER_TRIGGERED
|
return stateIsStartOfSequence(nextState)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -173,9 +173,9 @@ enum class ChipStateSender(
|
|||||||
endItem = SenderEndItem.Error,
|
endItem = SenderEndItem.Error,
|
||||||
) {
|
) {
|
||||||
override fun isValidNextState(nextState: ChipStateSender): Boolean {
|
override fun isValidNextState(nextState: ChipStateSender): Boolean {
|
||||||
return nextState == FAR_FROM_RECEIVER ||
|
// Since _FAILED is the end of a transfer sequence, we should be able to move to any
|
||||||
nextState == ALMOST_CLOSE_TO_START_CAST ||
|
// state that represents the beginning of a new sequence.
|
||||||
nextState == TRANSFER_TO_THIS_DEVICE_TRIGGERED
|
return stateIsStartOfSequence(nextState)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -188,9 +188,9 @@ enum class ChipStateSender(
|
|||||||
endItem = SenderEndItem.Error,
|
endItem = SenderEndItem.Error,
|
||||||
) {
|
) {
|
||||||
override fun isValidNextState(nextState: ChipStateSender): Boolean {
|
override fun isValidNextState(nextState: ChipStateSender): Boolean {
|
||||||
return nextState == FAR_FROM_RECEIVER ||
|
// Since _FAILED is the end of a transfer sequence, we should be able to move to any
|
||||||
nextState == ALMOST_CLOSE_TO_END_CAST ||
|
// state that represents the beginning of a new sequence.
|
||||||
nextState == TRANSFER_TO_RECEIVER_TRIGGERED
|
return stateIsStartOfSequence(nextState)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -210,9 +210,9 @@ enum class ChipStateSender(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun isValidNextState(nextState: ChipStateSender): Boolean {
|
override fun isValidNextState(nextState: ChipStateSender): Boolean {
|
||||||
return nextState == FAR_FROM_RECEIVER ||
|
// When far away, we can go to any state that represents the start of a transfer
|
||||||
nextState.transferStatus == TransferStatus.NOT_STARTED ||
|
// sequence.
|
||||||
nextState.transferStatus == TransferStatus.IN_PROGRESS
|
return stateIsStartOfSequence(nextState)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -227,6 +227,20 @@ enum class ChipStateSender(
|
|||||||
return Text.Loaded(context.getString(stringResId!!, otherDeviceName))
|
return Text.Loaded(context.getString(stringResId!!, otherDeviceName))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if moving from this state to [nextState] is a valid transition.
|
||||||
|
*
|
||||||
|
* In general, we expect a media transfer go to through a sequence of states:
|
||||||
|
* For push-to-receiver:
|
||||||
|
* - ALMOST_CLOSE_TO_START_CAST => TRANSFER_TO_RECEIVER_TRIGGERED =>
|
||||||
|
* TRANSFER_TO_RECEIVER_(SUCCEEDED|FAILED)
|
||||||
|
* - ALMOST_CLOSE_TO_END_CAST => TRANSFER_TO_THIS_DEVICE_TRIGGERED =>
|
||||||
|
* TRANSFER_TO_THIS_DEVICE_(SUCCEEDED|FAILED)
|
||||||
|
*
|
||||||
|
* This method should validate that the states go through approximately that sequence.
|
||||||
|
*
|
||||||
|
* See b/221265848 for more details.
|
||||||
|
*/
|
||||||
abstract fun isValidNextState(nextState: ChipStateSender): Boolean
|
abstract fun isValidNextState(nextState: ChipStateSender): Boolean
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
@@ -276,6 +290,18 @@ enum class ChipStateSender(
|
|||||||
|
|
||||||
return currentState.isValidNextState(desiredState)
|
return currentState.isValidNextState(desiredState)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if [state] represents a state at the beginning of a sequence and false
|
||||||
|
* otherwise.
|
||||||
|
*/
|
||||||
|
private fun stateIsStartOfSequence(state: ChipStateSender): Boolean {
|
||||||
|
return state == FAR_FROM_RECEIVER ||
|
||||||
|
state.transferStatus == TransferStatus.NOT_STARTED ||
|
||||||
|
// It's possible to skip the NOT_STARTED phase and go immediately into the
|
||||||
|
// IN_PROGRESS phase.
|
||||||
|
state.transferStatus == TransferStatus.IN_PROGRESS
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -624,7 +624,7 @@ class MediaTttSenderCoordinatorTest : SysuiTestCase() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun commandQueueCallback_receiverSucceededThenReceiverTriggered_invalidTransitionLogged() {
|
fun commandQueueCallback_receiverSucceededThenThisDeviceSucceeded_invalidTransitionLogged() {
|
||||||
displayReceiverTriggered()
|
displayReceiverTriggered()
|
||||||
commandQueueCallback.updateMediaTapToTransferSenderDisplay(
|
commandQueueCallback.updateMediaTapToTransferSenderDisplay(
|
||||||
StatusBarManager.MEDIA_TRANSFER_SENDER_STATE_TRANSFER_TO_RECEIVER_SUCCEEDED,
|
StatusBarManager.MEDIA_TRANSFER_SENDER_STATE_TRANSFER_TO_RECEIVER_SUCCEEDED,
|
||||||
@@ -634,7 +634,7 @@ class MediaTttSenderCoordinatorTest : SysuiTestCase() {
|
|||||||
reset(windowManager)
|
reset(windowManager)
|
||||||
|
|
||||||
commandQueueCallback.updateMediaTapToTransferSenderDisplay(
|
commandQueueCallback.updateMediaTapToTransferSenderDisplay(
|
||||||
StatusBarManager.MEDIA_TRANSFER_SENDER_STATE_TRANSFER_TO_RECEIVER_TRIGGERED,
|
StatusBarManager.MEDIA_TRANSFER_SENDER_STATE_TRANSFER_TO_THIS_DEVICE_SUCCEEDED,
|
||||||
routeInfo,
|
routeInfo,
|
||||||
null
|
null
|
||||||
)
|
)
|
||||||
@@ -644,7 +644,7 @@ class MediaTttSenderCoordinatorTest : SysuiTestCase() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun commandQueueCallback_thisDeviceSucceededThenThisDeviceTriggered_invalidTransitionLogged() {
|
fun commandQueueCallback_thisDeviceSucceededThenReceiverSucceeded_invalidTransitionLogged() {
|
||||||
displayThisDeviceTriggered()
|
displayThisDeviceTriggered()
|
||||||
commandQueueCallback.updateMediaTapToTransferSenderDisplay(
|
commandQueueCallback.updateMediaTapToTransferSenderDisplay(
|
||||||
StatusBarManager.MEDIA_TRANSFER_SENDER_STATE_TRANSFER_TO_THIS_DEVICE_SUCCEEDED,
|
StatusBarManager.MEDIA_TRANSFER_SENDER_STATE_TRANSFER_TO_THIS_DEVICE_SUCCEEDED,
|
||||||
@@ -654,7 +654,7 @@ class MediaTttSenderCoordinatorTest : SysuiTestCase() {
|
|||||||
reset(windowManager)
|
reset(windowManager)
|
||||||
|
|
||||||
commandQueueCallback.updateMediaTapToTransferSenderDisplay(
|
commandQueueCallback.updateMediaTapToTransferSenderDisplay(
|
||||||
StatusBarManager.MEDIA_TRANSFER_SENDER_STATE_TRANSFER_TO_THIS_DEVICE_TRIGGERED,
|
StatusBarManager.MEDIA_TRANSFER_SENDER_STATE_TRANSFER_TO_RECEIVER_SUCCEEDED,
|
||||||
routeInfo,
|
routeInfo,
|
||||||
null
|
null
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user