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