Bug 1367295 - remove waitUntilTabMediaStarted().
After bug1364202, we should use checkIfMediaPlayingSuccess(), checkTabMediaPlayingState()
or checkTabAudioPlayingState to check the tab's state, because these methods use
waitForCondition() instead of the EventExpecter.
If the test file is audible, we could use checkIfMediaPlayingSuccess() because
it would check both "media playing" and "audio playing" states.
If the test file is non-audible, we should use checkTabMediaPlayingState() to
ensure the media started playing successfully.
MozReview-Commit-ID: 6kOiglHBwch
--- a/mobile/android/tests/browser/robocop/src/org/mozilla/gecko/tests/MediaPlaybackTest.java
+++ b/mobile/android/tests/browser/robocop/src/org/mozilla/gecko/tests/MediaPlaybackTest.java
@@ -90,29 +90,16 @@ abstract class MediaPlaybackTest extends
return false;
}
}, UI_CHANGED_WAIT_MS);
}
/**
* Use these methods to wait the tab playing related states changed.
*/
- protected final void waitUntilTabMediaStarted(final Tab tab) {
- if (tab.isMediaPlaying()) {
- return;
- }
- // Tab:MediaPlaybackChange would be dispatched when media started or
- // ended, but it won't be dispatched when we pause/resume media via
- // media control.
- Actions.EventExpecter contentEventExpecter =
- mActions.expectGlobalEvent(Actions.EventType.UI, "Tab:MediaPlaybackChange");
- contentEventExpecter.blockForEvent();
- contentEventExpecter.unregisterListener();
- }
-
private final void waitUntilTabAudioPlayingStateChanged(final Tab tab,
final boolean isTabPlaying) {
if (tab.isAudioPlaying() == isTabPlaying) {
return;
}
waitForCondition(new Condition() {
@Override
public boolean isSatisfied() {
--- a/mobile/android/tests/browser/robocop/src/org/mozilla/gecko/tests/testAudioFocus.java
+++ b/mobile/android/tests/browser/robocop/src/org/mozilla/gecko/tests/testAudioFocus.java
@@ -96,17 +96,17 @@ public class testAudioFocus extends Medi
"Should not request audio focus before media starts.");
info("- load URL with looping audio file -");
final String MEDIA_URL = getAbsoluteUrl(mStringHelper.ROBOCOP_MEDIA_PLAYBACK_LOOP_URL);
loadUrlAndWait(MEDIA_URL);
info("- wait until media starts playing -");
final Tab tab = Tabs.getInstance().getSelectedTab();
- waitUntilTabMediaStarted(tab);
+ checkTabMediaPlayingState(tab, true /* playing */);
info("- wait tab becomes audible -");
checkTabAudioPlayingState(tab, true /* audible */);
checkAudioFocusStateAfterChanged(true);
info("- simulate losing audio focus transiently -");
getAudioFocusAgent().changeAudioFocus(AudioManager.AUDIOFOCUS_LOSS_TRANSIENT);
checkTabAudioPlayingState(tab, false /* non-audible */);
@@ -128,17 +128,17 @@ public class testAudioFocus extends Medi
private void testSwitchTab() {
info("- load URL -");
final String MEDIA_URL = getAbsoluteUrl(mStringHelper.ROBOCOP_MEDIA_PLAYBACK_LOOP_URL);
loadUrlAndWait(MEDIA_URL);
info("- wait until media starts playing -");
final Tab tab = Tabs.getInstance().getSelectedTab();
- waitUntilTabMediaStarted(tab);
+ checkTabMediaPlayingState(tab, true /* playing */);
info("- wait tab becomes audible -");
checkTabAudioPlayingState(tab, true /* audible */);
checkAudioFocusStateAfterChanged(true);
info("- switch to the another tab -");
final String BLANK_URL = getAbsoluteUrl(mStringHelper.ROBOCOP_BLANK_PAGE_01_URL);
addTab(BLANK_URL);
@@ -161,17 +161,17 @@ public class testAudioFocus extends Medi
final String MEDIA_URL = getAbsoluteUrl(mStringHelper.ROBOCOP_MEDIA_PLAYBACK_JS_URL);
loadUrlAndWait(MEDIA_URL);
info("- play media -");
getJS().syncCall("play_audio");
info("- wait until media starts playing -");
final Tab tab = Tabs.getInstance().getSelectedTab();
- waitUntilTabMediaStarted(tab);
+ checkTabMediaPlayingState(tab, true /* playing */);
info("- wait tab becomes audible -");
checkTabAudioPlayingState(tab, true /* audible */);
checkAudioFocusStateAfterChanged(true);
info("- change media's volume to 0.0 -");
getJS().syncCall("adjust_audio_volume", 0.0);
checkTabAudioPlayingState(tab, false /* non-audible */);
@@ -212,17 +212,17 @@ public class testAudioFocus extends Medi
final String MEDIA_URL = getAbsoluteUrl(mStringHelper.ROBOCOP_MEDIA_PLAYBACK_JS_URL);
loadUrlAndWait(MEDIA_URL);
info("- play media with silent audio track -");
getJS().syncCall("play_media_with_silent_audio_track");
info("- wait until media starts playing -");
final Tab tab = Tabs.getInstance().getSelectedTab();
- waitUntilTabMediaStarted(tab);
+ checkTabMediaPlayingState(tab, true /* playing */);
info("- tab should be non-audible and should not request audio focus -");
checkTabAudioPlayingState(tab, false /* non-audible */);
checkAudioFocusStateAfterChanged(false);
info("- pause media -");
getJS().syncCall("pause_media_without_audio_track");
--- a/mobile/android/tests/browser/robocop/src/org/mozilla/gecko/tests/testMediaControl.java
+++ b/mobile/android/tests/browser/robocop/src/org/mozilla/gecko/tests/testMediaControl.java
@@ -52,21 +52,17 @@ public class testMediaControl extends Me
testAudioCompetingForMediaWithoutAudioTrack();
}
private void testBasicBehaviors() {
info("- load URL -");
final String MEDIA_URL = getAbsoluteUrl(mStringHelper.ROBOCOP_MEDIA_PLAYBACK_LOOP_URL);
loadUrlAndWait(MEDIA_URL);
- info("- wait until media starts playing -");
- final Tab tab = Tabs.getInstance().getSelectedTab();
- waitUntilTabMediaStarted(tab);
-
- info("- check whether audio starts playing -");
+ info("- check whether media starts playing -");
checkIfMediaPlayingSuccess(true /* playing */);
info("- simulate media control pause -");
notifyMediaControlService(MediaControlService.ACTION_PAUSE);
checkIfMediaPlayingSuccess(false /* paused */);
info("- simulate media control resume -");
notifyMediaControlService(MediaControlService.ACTION_RESUME);
@@ -80,21 +76,17 @@ public class testMediaControl extends Me
closeAllTabs();
}
private void testNavigateOutThePage() {
info("- load URL -");
final String MEDIA_URL = getAbsoluteUrl(mStringHelper.ROBOCOP_MEDIA_PLAYBACK_LOOP_URL);
loadUrlAndWait(MEDIA_URL);
- info("- wait until media starts playing -");
- final Tab tab = Tabs.getInstance().getSelectedTab();
- waitUntilTabMediaStarted(tab);
-
- info("- check whether audio starts playing -");
+ info("- check whether media starts playing -");
checkIfMediaPlayingSuccess(true /* playing */);
info("- navigate out the present page -");
final String BLANK_URL = getAbsoluteUrl(mStringHelper.ROBOCOP_BLANK_PAGE_01_URL);
loadUrlAndWait(BLANK_URL);
checkIfMediaPlayingSuccess(false /* paused */, true /* clear notification */);
info("- close tab -");
@@ -104,21 +96,17 @@ public class testMediaControl extends Me
testAudioFocusChanged();
}
private void testAudioFocusChanged() {
info("- load URL -");
final String MEDIA_URL = getAbsoluteUrl(mStringHelper.ROBOCOP_MEDIA_PLAYBACK_LOOP_URL);
loadUrlAndWait(MEDIA_URL);
- info("- wait until media starts playing -");
- final Tab tab = Tabs.getInstance().getSelectedTab();
- waitUntilTabMediaStarted(tab);
-
- info("- check whether audio starts playing -");
+ info("- check whether media starts playing -");
checkIfMediaPlayingSuccess(true /* playing */);
info("- simulate lose audio focus transiently -");
getAudioFocusAgent().changeAudioFocus(AudioManager.AUDIOFOCUS_LOSS_TRANSIENT);
checkIfMediaPlayingSuccess(false /* paused */);
info("- simulate gain audio focus again -");
getAudioFocusAgent().changeAudioFocus(AudioManager.AUDIOFOCUS_GAIN);
@@ -132,21 +120,18 @@ public class testMediaControl extends Me
closeAllTabs();
}
private void testSwitchTab() {
info("- load URL -");
final String MEDIA_URL = getAbsoluteUrl(mStringHelper.ROBOCOP_MEDIA_PLAYBACK_LOOP_URL);
loadUrlAndWait(MEDIA_URL);
- info("- wait until media starts playing -");
+ info("- check whether media starts playing -");
final Tab tab = Tabs.getInstance().getSelectedTab();
- waitUntilTabMediaStarted(tab);
-
- info("- check whether audio starts playing -");
checkIfMediaPlayingSuccess(true /* playing */);
info("- switch to the another tab -");
final String BLANK_URL = getAbsoluteUrl(mStringHelper.ROBOCOP_BLANK_PAGE_01_URL);
addTab(BLANK_URL);
info("- the media control shouldn't be changed and display the info of audible tab -");
checkMediaNotificationStates(tab, true /* playing */);
@@ -155,24 +140,21 @@ public class testMediaControl extends Me
closeAllTabs();
}
private void testCloseTab() {
info("- load URL -");
final String MEDIA_URL = getAbsoluteUrl(mStringHelper.ROBOCOP_MEDIA_PLAYBACK_LOOP_URL);
loadUrlAndWait(MEDIA_URL);
- info("- wait until media starts playing -");
- final Tab tab = Tabs.getInstance().getSelectedTab();
- waitUntilTabMediaStarted(tab);
-
- info("- check whether audio starts playing -");
+ info("- check whether media starts playing -");
checkIfMediaPlayingSuccess(true /* playing */);
info("- close audible tab -");
+ final Tab tab = Tabs.getInstance().getSelectedTab();
Tabs.getInstance().closeTab(tab);
info("- media control should disappear -");
waitUntilNotificationUIChanged();
checkIfMediaNotificationBeCleared();
info("- close tab -");
closeAllTabs();
@@ -188,19 +170,17 @@ public class testMediaControl extends Me
info("- load URL -");
final String MEDIA_URL = getAbsoluteUrl(mStringHelper.ROBOCOP_MEDIA_PLAYBACK_JS_URL);
loadUrlAndWait(MEDIA_URL);
info("- play media -");
getJS().syncCall("play_audio");
- info("- wait until media starts playing -");
- final Tab tab = Tabs.getInstance().getSelectedTab();
- waitUntilTabMediaStarted(tab);
+ info("- check whether media starts playing -");
checkIfMediaPlayingSuccess(true /* playing */);
info("- simulate media control pause -");
notifyMediaControlService(MediaControlService.ACTION_PAUSE);
checkIfMediaPlayingSuccess(false /* paused */);
info("- resume media from page -");
getJS().syncCall("play_audio");
@@ -230,19 +210,18 @@ public class testMediaControl extends Me
info("- load URL -");
final String MEDIA_URL = getAbsoluteUrl(mStringHelper.ROBOCOP_MEDIA_PLAYBACK_JS_URL);
loadUrlAndWait(MEDIA_URL);
info("- play media -");
getJS().syncCall("play_audio");
- info("- wait until media starts playing -");
+ info("- check whether media starts playing -");
final Tab tab = Tabs.getInstance().getSelectedTab();
- waitUntilTabMediaStarted(tab);
checkIfMediaPlayingSuccess(true /* playing */);
info("- change media's volume to 0.0 -");
getJS().syncCall("adjust_audio_volume", 0.0);
checkMediaNotificationStates(tab, true);
info("- change media's volume to 1.0 -");
getJS().syncCall("adjust_audio_volume", 1.0);
@@ -273,22 +252,21 @@ public class testMediaControl extends Me
info("- load URL -");
final String MEDIA_URL = getAbsoluteUrl(mStringHelper.ROBOCOP_MEDIA_PLAYBACK_JS_URL);
loadUrlAndWait(MEDIA_URL);
info("- play media with silent audio track -");
getJS().syncCall("play_media_with_silent_audio_track");
- info("- wait until media starts playing -");
+ info("- check whether media starts playing -");
final Tab tab = Tabs.getInstance().getSelectedTab();
- waitUntilTabMediaStarted(tab);
+ checkTabMediaPlayingState(tab, true /* playing */);
info("- media control should be displayed -");
- checkTabMediaPlayingState(tab, true);
checkMediaNotificationStatesAfterChanged(tab,
true /* playing */);
info("- pause media with silent audio track -");
getJS().syncCall("pause_media_with_silent_audio_track");
info("- media control should disappear -");
checkMediaNotificationStatesAfterChanged(tab,
@@ -359,33 +337,30 @@ public class testMediaControl extends Me
private void testAudioCompetingForMediaWithSilentAudioTrack() {
info("- create JSBridge -");
createJSBridge();
info("- load URL -");
final String MEDIA_URL = getAbsoluteUrl(mStringHelper.ROBOCOP_MEDIA_PLAYBACK_LOOP_URL);
loadUrlAndWait(MEDIA_URL);
- info("- wait until media starts playing -");
+ info("- check whether media starts playing -");
final Tab audibleTab = Tabs.getInstance().getSelectedTab();
- waitUntilTabMediaStarted(audibleTab);
-
- info("- check whether audio starts playing -");
checkIfMediaPlayingSuccess(true /* playing */);
info("- switch to the another tab -");
final String MEDIA_JS_URL = getAbsoluteUrl(mStringHelper.ROBOCOP_MEDIA_PLAYBACK_JS_URL);
addTab(MEDIA_JS_URL);
info("- play silent media from new tab -");
getJS().syncCall("play_media_with_silent_audio_track");
info("- wait until silent media starts playing -");
Tab silentTab = Tabs.getInstance().getFirstTabForUrl(MEDIA_JS_URL);
- waitUntilTabMediaStarted(silentTab);
+ checkTabMediaPlayingState(silentTab, true /* playing */);
info("- audible tab should be stopped because of audio competing -");
checkTabMediaPlayingState(audibleTab, false);
checkTabAudioPlayingState(audibleTab, false);
info("- should show media control for silent tab -");
checkMediaNotificationStatesAfterChanged(silentTab,
true /* playing */);
@@ -403,21 +378,18 @@ public class testMediaControl extends Me
private void testAudioCompetingForMediaWithoutAudioTrack() {
info("- create JSBridge -");
createJSBridge();
info("- load URL -");
final String MEDIA_URL = getAbsoluteUrl(mStringHelper.ROBOCOP_MEDIA_PLAYBACK_LOOP_URL);
loadUrlAndWait(MEDIA_URL);
- info("- wait until media starts playing -");
+ info("- check whether media starts playing -");
final Tab audibleTab = Tabs.getInstance().getSelectedTab();
- waitUntilTabMediaStarted(audibleTab);
-
- info("- check whether audio starts playing -");
checkIfMediaPlayingSuccess(true /* playing */);
info("- switch to the another tab -");
final String MEDIA_JS_URL = getAbsoluteUrl(mStringHelper.ROBOCOP_MEDIA_PLAYBACK_JS_URL);
addTab(MEDIA_JS_URL);
info("- play silent media from new tab -");
getJS().syncCall("play_media_without_audio_track");