Index: chrome/android/javatests/src/org/chromium/chrome/browser/media/ui/AutoplayMutedNotificationTest.java |
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/media/ui/AutoplayMutedNotificationTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/media/ui/AutoplayMutedNotificationTest.java |
index 716c42b6ca20247c634f41a354c305f407e80bb9..20e77d97b8f5d47b1e78c4428a0d99a4823d56ab 100644 |
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/media/ui/AutoplayMutedNotificationTest.java |
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/media/ui/AutoplayMutedNotificationTest.java |
@@ -8,14 +8,25 @@ import static org.chromium.base.test.util.Restriction.RESTRICTION_TYPE_NON_LOW_E |
import android.content.Context; |
import android.media.AudioManager; |
+import android.support.test.InstrumentationRegistry; |
import android.support.test.filters.SmallTest; |
+import org.junit.After; |
+import org.junit.Assert; |
+import org.junit.Before; |
+import org.junit.Rule; |
+import org.junit.Test; |
+import org.junit.runner.RunWith; |
+ |
+import org.chromium.base.test.util.CommandLineFlags; |
import org.chromium.base.test.util.Restriction; |
import org.chromium.base.test.util.RetryOnFailure; |
import org.chromium.chrome.R; |
import org.chromium.chrome.browser.ChromeActivity; |
+import org.chromium.chrome.browser.ChromeSwitches; |
import org.chromium.chrome.browser.tab.Tab; |
-import org.chromium.chrome.test.ChromeActivityTestCaseBase; |
+import org.chromium.chrome.test.ChromeActivityTestRule; |
+import org.chromium.chrome.test.ChromeJUnit4ClassRunner; |
import org.chromium.content.browser.test.util.DOMUtils; |
import org.chromium.content.browser.test.util.JavaScriptUtils; |
import org.chromium.net.test.EmbeddedTestServer; |
@@ -23,21 +34,25 @@ import org.chromium.net.test.EmbeddedTestServer; |
/** |
* Integration test that checks that autoplay muted doesn't show a notification nor take audio focus |
*/ |
+@RunWith(ChromeJUnit4ClassRunner.class) |
@RetryOnFailure |
-public class AutoplayMutedNotificationTest extends ChromeActivityTestCaseBase<ChromeActivity> { |
+@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE, |
+ ChromeActivityTestRule.DISABLE_NETWORK_PREDICTION_FLAG}) |
+public class AutoplayMutedNotificationTest { |
+ @Rule |
+ public ChromeActivityTestRule<ChromeActivity> mActivityTestRule = |
+ new ChromeActivityTestRule<>(ChromeActivity.class); |
+ |
private static final String TEST_PATH = "/content/test/data/media/session/autoplay-muted.html"; |
private static final String VIDEO_ID = "video"; |
private static final int AUDIO_FOCUS_CHANGE_TIMEOUT = 500; // ms |
private EmbeddedTestServer mTestServer; |
- public AutoplayMutedNotificationTest() { |
- super(ChromeActivity.class); |
- } |
- |
private AudioManager getAudioManager() { |
- return (AudioManager) getActivity().getApplicationContext().getSystemService( |
- Context.AUDIO_SERVICE); |
+ return (AudioManager) mActivityTestRule.getActivity() |
+ .getApplicationContext() |
+ .getSystemService(Context.AUDIO_SERVICE); |
} |
private boolean isMediaNotificationVisible() { |
@@ -60,7 +75,7 @@ public class AutoplayMutedNotificationTest extends ChromeActivityTestCaseBase<Ch |
int result = getAudioManager().requestAudioFocus( |
this, AudioManager.STREAM_MUSIC, focusType); |
if (result != AudioManager.AUDIOFOCUS_REQUEST_GRANTED) { |
- fail("Did not get audio focus"); |
+ Assert.fail("Did not get audio focus"); |
} else { |
mAudioFocusState = focusType; |
} |
@@ -69,33 +84,31 @@ public class AutoplayMutedNotificationTest extends ChromeActivityTestCaseBase<Ch |
private MockAudioFocusChangeListener mAudioFocusChangeListener; |
- @Override |
- protected void setUp() throws Exception { |
- mTestServer = EmbeddedTestServer.createAndStartServer(getInstrumentation().getContext()); |
+ @Before |
+ public void setUp() throws Exception { |
+ mTestServer = EmbeddedTestServer.createAndStartServer( |
+ InstrumentationRegistry.getInstrumentation().getContext()); |
mAudioFocusChangeListener = new MockAudioFocusChangeListener(); |
- super.setUp(); |
+ mActivityTestRule.startMainActivityWithURL(mTestServer.getURL(TEST_PATH)); |
} |
- @Override |
- protected void tearDown() throws Exception { |
+ @After |
+ public void tearDown() throws Exception { |
mTestServer.stopAndDestroyServer(); |
- super.tearDown(); |
- } |
- |
- @Override |
- public void startMainActivity() throws InterruptedException { |
- startMainActivityWithURL(mTestServer.getURL(TEST_PATH)); |
} |
+ @Test |
@SmallTest |
@Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE) |
public void testBasic() throws Exception { |
- Tab tab = getActivity().getActivityTab(); |
+ Tab tab = mActivityTestRule.getActivity().getActivityTab(); |
// Taking audio focus. |
- assertEquals(AudioManager.AUDIOFOCUS_LOSS, mAudioFocusChangeListener.getAudioFocusState()); |
+ Assert.assertEquals( |
+ AudioManager.AUDIOFOCUS_LOSS, mAudioFocusChangeListener.getAudioFocusState()); |
mAudioFocusChangeListener.requestAudioFocus(AudioManager.AUDIOFOCUS_GAIN); |
- assertEquals(AudioManager.AUDIOFOCUS_GAIN, mAudioFocusChangeListener.getAudioFocusState()); |
+ Assert.assertEquals( |
+ AudioManager.AUDIOFOCUS_GAIN, mAudioFocusChangeListener.getAudioFocusState()); |
// The page will autoplay the video. |
DOMUtils.waitForMediaPlay(tab.getWebContents(), VIDEO_ID); |
@@ -104,42 +117,49 @@ public class AutoplayMutedNotificationTest extends ChromeActivityTestCaseBase<Ch |
Thread.sleep(AUDIO_FOCUS_CHANGE_TIMEOUT); |
// Audio focus was not taken and no notification is visible. |
- assertEquals(AudioManager.AUDIOFOCUS_GAIN, mAudioFocusChangeListener.getAudioFocusState()); |
- assertFalse(isMediaNotificationVisible()); |
+ Assert.assertEquals( |
+ AudioManager.AUDIOFOCUS_GAIN, mAudioFocusChangeListener.getAudioFocusState()); |
+ Assert.assertFalse(isMediaNotificationVisible()); |
} |
+ @Test |
@SmallTest |
@Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE) |
public void testDoesNotReactToAudioFocus() throws Exception { |
- Tab tab = getActivity().getActivityTab(); |
+ Tab tab = mActivityTestRule.getActivity().getActivityTab(); |
// The page will autoplay the video. |
DOMUtils.waitForMediaPlay(tab.getWebContents(), VIDEO_ID); |
// Taking audio focus. |
- assertEquals(AudioManager.AUDIOFOCUS_LOSS, mAudioFocusChangeListener.getAudioFocusState()); |
+ Assert.assertEquals( |
+ AudioManager.AUDIOFOCUS_LOSS, mAudioFocusChangeListener.getAudioFocusState()); |
mAudioFocusChangeListener.requestAudioFocus(AudioManager.AUDIOFOCUS_GAIN); |
- assertEquals(AudioManager.AUDIOFOCUS_GAIN, mAudioFocusChangeListener.getAudioFocusState()); |
+ Assert.assertEquals( |
+ AudioManager.AUDIOFOCUS_GAIN, mAudioFocusChangeListener.getAudioFocusState()); |
// Audio focus notification is OS-driven. |
Thread.sleep(AUDIO_FOCUS_CHANGE_TIMEOUT); |
// Video did not pause. |
- assertFalse(DOMUtils.isMediaPaused(tab.getWebContents(), VIDEO_ID)); |
+ Assert.assertFalse(DOMUtils.isMediaPaused(tab.getWebContents(), VIDEO_ID)); |
// Still no notification. |
- assertFalse(isMediaNotificationVisible()); |
+ Assert.assertFalse(isMediaNotificationVisible()); |
} |
+ @Test |
@SmallTest |
@Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE) |
public void testAutoplayMutedThenUnmute() throws Exception { |
- Tab tab = getActivity().getActivityTab(); |
+ Tab tab = mActivityTestRule.getActivity().getActivityTab(); |
// Taking audio focus. |
- assertEquals(AudioManager.AUDIOFOCUS_LOSS, mAudioFocusChangeListener.getAudioFocusState()); |
+ Assert.assertEquals( |
+ AudioManager.AUDIOFOCUS_LOSS, mAudioFocusChangeListener.getAudioFocusState()); |
mAudioFocusChangeListener.requestAudioFocus(AudioManager.AUDIOFOCUS_GAIN); |
- assertEquals(AudioManager.AUDIOFOCUS_GAIN, mAudioFocusChangeListener.getAudioFocusState()); |
+ Assert.assertEquals( |
+ AudioManager.AUDIOFOCUS_GAIN, mAudioFocusChangeListener.getAudioFocusState()); |
// The page will autoplay the video. |
DOMUtils.waitForMediaPlay(tab.getWebContents(), VIDEO_ID); |
@@ -154,16 +174,17 @@ public class AutoplayMutedNotificationTest extends ChromeActivityTestCaseBase<Ch |
// Unmute from script. |
String result = JavaScriptUtils.executeJavaScriptAndWaitForResult( |
tab.getWebContents(), sb.toString()); |
- assertTrue(result.trim().equalsIgnoreCase("false")); |
+ Assert.assertTrue(result.trim().equalsIgnoreCase("false")); |
// Video is paused. |
- assertTrue(DOMUtils.isMediaPaused(tab.getWebContents(), VIDEO_ID)); |
+ Assert.assertTrue(DOMUtils.isMediaPaused(tab.getWebContents(), VIDEO_ID)); |
// Audio focus notification is OS-driven. |
Thread.sleep(AUDIO_FOCUS_CHANGE_TIMEOUT); |
// Audio focus was not taken and no notification is visible. |
- assertEquals(AudioManager.AUDIOFOCUS_GAIN, mAudioFocusChangeListener.getAudioFocusState()); |
- assertFalse(isMediaNotificationVisible()); |
+ Assert.assertEquals( |
+ AudioManager.AUDIOFOCUS_GAIN, mAudioFocusChangeListener.getAudioFocusState()); |
+ Assert.assertFalse(isMediaNotificationVisible()); |
} |
} |