diff --git a/android/app/tests/unit/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerStateMachineTest.java b/android/app/tests/unit/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerStateMachineTest.java index efa0b1a67a559721c7a196994b354f4f22371bf5..50bc492db4549a3bcbf579694388096e4b976708 100644 --- a/android/app/tests/unit/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerStateMachineTest.java +++ b/android/app/tests/unit/src/com/android/bluetooth/avrcpcontroller/AvrcpControllerStateMachineTest.java @@ -793,6 +793,7 @@ public class AvrcpControllerStateMachineTest { AvrcpControllerStateMachine.MESSAGE_PROCESS_GET_FOLDER_ITEMS_OUT_OF_RANGE); TestUtils.waitForLooperToFinishScheduledTask(mAvrcpStateMachine.getHandler().getLooper()); clearInvocations(mAvrcpControllerService); + clearInvocations(mNativeInterface); // Send an available players have changed event mAvrcpStateMachine.sendMessage( @@ -829,11 +830,11 @@ public class AvrcpControllerStateMachineTest { // Verify we request metadata, playback state and now playing list assertNowPlayingList(new ArrayList<AvrcpItem>()); - verify(mNativeInterface, timeout(ASYNC_CALL_TIMEOUT_MILLIS).times(2)) + verify(mNativeInterface, timeout(ASYNC_CALL_TIMEOUT_MILLIS).times(1)) .getNowPlayingList(eq(mTestAddress), eq(0), eq(19)); - verify(mNativeInterface, timeout(ASYNC_CALL_TIMEOUT_MILLIS).times(2)) + verify(mNativeInterface, timeout(ASYNC_CALL_TIMEOUT_MILLIS).times(1)) .getCurrentMetadata(eq(mTestAddress)); - verify(mNativeInterface, timeout(ASYNC_CALL_TIMEOUT_MILLIS).times(2)) + verify(mNativeInterface, timeout(ASYNC_CALL_TIMEOUT_MILLIS).times(1)) .getPlaybackState(eq(mTestAddress)); } @@ -926,6 +927,7 @@ public class AvrcpControllerStateMachineTest { nowPlayingList.add(makeNowPlayingItem(2, "Song 2")); setNowPlayingList(nowPlayingList); clearInvocations(mAvrcpControllerService); + clearInvocations(mNativeInterface); //Change players and verify that BT attempts to update the results mAvrcpStateMachine.sendMessage( @@ -941,7 +943,7 @@ public class AvrcpControllerStateMachineTest { assertNowPlayingList(new ArrayList<AvrcpItem>()); // Verify that a player change to a player with Now Playing support causes a refresh. - verify(mNativeInterface, timeout(ASYNC_CALL_TIMEOUT_MILLIS).times(2)) + verify(mNativeInterface, timeout(ASYNC_CALL_TIMEOUT_MILLIS).times(1)) .getNowPlayingList(eq(mTestAddress), eq(0), eq(19)); // Verify we request metadata and playback state @@ -1043,6 +1045,7 @@ public class AvrcpControllerStateMachineTest { AvrcpControllerStateMachine.MESSAGE_PROCESS_GET_FOLDER_ITEMS_OUT_OF_RANGE); TestUtils.waitForLooperToFinishScheduledTask(mAvrcpStateMachine.getHandler().getLooper()); clearInvocations(mAvrcpControllerService); + clearInvocations(mNativeInterface); // Send an addressed player changed to the same player ID mAvrcpStateMachine.sendMessage( @@ -1051,11 +1054,11 @@ public class AvrcpControllerStateMachineTest { // Verify we make no assumptions about the player ID and still fetch metadata, play status // and now playing list (since player 1 supports it) - verify(mNativeInterface, timeout(ASYNC_CALL_TIMEOUT_MILLIS).times(3)) + verify(mNativeInterface, timeout(ASYNC_CALL_TIMEOUT_MILLIS).times(1)) .getNowPlayingList(eq(mTestAddress), eq(0), eq(19)); - verify(mNativeInterface, timeout(ASYNC_CALL_TIMEOUT_MILLIS).times(3)) + verify(mNativeInterface, timeout(ASYNC_CALL_TIMEOUT_MILLIS).times(1)) .getCurrentMetadata(eq(mTestAddress)); - verify(mNativeInterface, timeout(ASYNC_CALL_TIMEOUT_MILLIS).times(3)) + verify(mNativeInterface, timeout(ASYNC_CALL_TIMEOUT_MILLIS).times(1)) .getPlaybackState(eq(mTestAddress)); } @@ -1394,13 +1397,14 @@ public class AvrcpControllerStateMachineTest { TestUtils.waitForLooperToFinishScheduledTask(mAvrcpStateMachine.getHandler().getLooper()); Assert.assertFalse(mAvrcpStateMachine.isActive()); clearInvocations(mAvrcpControllerService); + clearInvocations(mNativeInterface); // Now that we're inactive, receive a playback status of playing setPlaybackState(PlaybackStateCompat.STATE_PLAYING); // Verify we send a pause, never request audio focus, and the playback state on // BluetoothMediaBrowserService never updates. - verify(mNativeInterface, timeout(ASYNC_CALL_TIMEOUT_MILLIS).times(2)) + verify(mNativeInterface, timeout(ASYNC_CALL_TIMEOUT_MILLIS).times(1)) .sendPassThroughCommand( eq(mTestAddress), eq(AvrcpControllerService.PASS_THRU_CMD_ID_PAUSE), @@ -1422,6 +1426,7 @@ public class AvrcpControllerStateMachineTest { TestUtils.waitForLooperToFinishScheduledTask(mAvrcpStateMachine.getHandler().getLooper()); Assert.assertFalse(mAvrcpStateMachine.isActive()); clearInvocations(mAvrcpControllerService); + clearInvocations(mNativeInterface); // Now that we're inactive, receive a play position change setPlaybackPosition(1, 10); @@ -1595,6 +1600,7 @@ public class AvrcpControllerStateMachineTest { public void testOnAudioFocusGainFromTransientLossWhilePlaying_playSent() { testOnAudioFocusTransientLossWhilePlaying_pauseSent(); clearInvocations(mAvrcpControllerService); + clearInvocations(mNativeInterface); setPlaybackState(PlaybackStateCompat.STATE_PAUSED); sendAudioFocusUpdate(AudioManager.AUDIOFOCUS_GAIN); @@ -1618,6 +1624,7 @@ public class AvrcpControllerStateMachineTest { public void testOnAudioFocusGainFromTransientLossWhilePlayingWithPause_playNotSent() { testOnAudioFocusTransientLossWhilePlaying_pauseSent(); clearInvocations(mAvrcpControllerService); + clearInvocations(mNativeInterface); setPlaybackState(PlaybackStateCompat.STATE_PAUSED); TestUtils.waitForLooperToBeIdle(mAvrcpStateMachine.getHandler().getLooper()); @@ -1629,7 +1636,7 @@ public class AvrcpControllerStateMachineTest { eq(mTestAddress), eq(AvrcpControllerService.PASS_THRU_CMD_ID_PAUSE), eq(KEY_DOWN)); - verify(mNativeInterface, timeout(ASYNC_CALL_TIMEOUT_MILLIS).times(2)) + verify(mNativeInterface, timeout(ASYNC_CALL_TIMEOUT_MILLIS).times(1)) .sendPassThroughCommand( eq(mTestAddress), eq(AvrcpControllerService.PASS_THRU_CMD_ID_PAUSE), @@ -1658,6 +1665,7 @@ public class AvrcpControllerStateMachineTest { public void testOnAudioFocusGainFromTransientLossWithStop_playNotSent() { testOnAudioFocusTransientLossWhilePlaying_pauseSent(); clearInvocations(mAvrcpControllerService); + clearInvocations(mNativeInterface); setPlaybackState(PlaybackStateCompat.STATE_PAUSED); TestUtils.waitForLooperToBeIdle(mAvrcpStateMachine.getHandler().getLooper()); @@ -1698,6 +1706,7 @@ public class AvrcpControllerStateMachineTest { public void testOnAudioFocusGainFromTransientLossWhilePaused_playNotSent() { testOnAudioFocusTransientLossWhilePaused_pauseNotSent(); clearInvocations(mAvrcpControllerService); + clearInvocations(mNativeInterface); sendAudioFocusUpdate(AudioManager.AUDIOFOCUS_GAIN); TestUtils.waitForLooperToBeIdle(mAvrcpStateMachine.getHandler().getLooper()); @@ -1973,6 +1982,7 @@ public class AvrcpControllerStateMachineTest { nowPlayingList.add(makeNowPlayingItem(1, "Song 1")); setNowPlayingList(nowPlayingList); clearInvocations(mAvrcpControllerService); + clearInvocations(mNativeInterface); // Invalidate the contents by doing a new fetch BrowseTree.BrowseNode nowPlaying = mAvrcpStateMachine.findNode("NOW_PLAYING"); @@ -1980,7 +1990,7 @@ public class AvrcpControllerStateMachineTest { TestUtils.waitForLooperToFinishScheduledTask(mAvrcpStateMachine.getHandler().getLooper()); // Request for new contents should be sent - verify(mNativeInterface, times(2)).getNowPlayingList(eq(mTestAddress), eq(0), eq(19)); + verify(mNativeInterface, times(1)).getNowPlayingList(eq(mTestAddress), eq(0), eq(19)); Assert.assertFalse(nowPlaying.isCached()); // Send timeout on our own instead of waiting 10 seconds @@ -2009,9 +2019,11 @@ public class AvrcpControllerStateMachineTest { setUpConnectedState(true, true); sendAudioFocusUpdate(AudioManager.AUDIOFOCUS_GAIN); clearInvocations(mAvrcpControllerService); + clearInvocations(mNativeInterface); mAvrcpStateMachine.requestContents(null); TestUtils.waitForLooperToFinishScheduledTask(mAvrcpStateMachine.getHandler().getLooper()); verifyNoMoreInteractions(mAvrcpControllerService); + verifyNoMoreInteractions(mNativeInterface); } /** @@ -2024,10 +2036,12 @@ public class AvrcpControllerStateMachineTest { setUpConnectedState(true, false); sendAudioFocusUpdate(AudioManager.AUDIOFOCUS_GAIN); clearInvocations(mAvrcpControllerService); + clearInvocations(mNativeInterface); BrowseTree.BrowseNode deviceRoot = mAvrcpStateMachine.findNode(rootName); mAvrcpStateMachine.requestContents(deviceRoot); TestUtils.waitForLooperToFinishScheduledTask(mAvrcpStateMachine.getHandler().getLooper()); verifyNoMoreInteractions(mAvrcpControllerService); + verifyNoMoreInteractions(mNativeInterface); } /** @@ -2040,6 +2054,7 @@ public class AvrcpControllerStateMachineTest { setUpConnectedState(true, false); sendAudioFocusUpdate(AudioManager.AUDIOFOCUS_GAIN); clearInvocations(mAvrcpControllerService); + clearInvocations(mNativeInterface); BrowseTree.BrowseNode deviceRoot = mAvrcpStateMachine.findNode(rootName); mAvrcpStateMachine.requestContents(deviceRoot); // issues a player list fetch