Bug 1367295 - remove waitUntilTabMediaStarted(). draft
authorAlastor Wu <alwu@mozilla.com>
Wed, 24 May 2017 14:11:38 +0800
changeset 583514 f4469e51b57938718164b9fd06277a495430bb44
parent 579118 41958333867b0f537271dbd4cb4ba9e8a67a85a8
child 630083 c9e2b13f1dfe115f1a36448c6cb6df303398234a
push id60420
push useralwu@mozilla.com
push dateWed, 24 May 2017 06:11:51 +0000
bugs1367295, 1364202
milestone55.0a1
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
mobile/android/tests/browser/robocop/src/org/mozilla/gecko/tests/MediaPlaybackTest.java
mobile/android/tests/browser/robocop/src/org/mozilla/gecko/tests/testAudioFocus.java
mobile/android/tests/browser/robocop/src/org/mozilla/gecko/tests/testMediaControl.java
--- 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");