| 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());
|
| }
|
| }
|
|
|