Commit 80ad7955 authored by Evan Stade's avatar Evan Stade Committed by Commit Bot

Add regression test for Media Session notification update bug.

Bug: 1106641
Change-Id: I87570647e8b163f991c963eaa732a90b47c00bd4
Fixed: 1108038
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2336017Reviewed-by: default avatarMounir Lamouri <mlamouri@chromium.org>
Reviewed-by: default avatarDavid Trainor <dtrainor@chromium.org>
Commit-Queue: David Trainor <dtrainor@chromium.org>
Auto-Submit: Evan Stade <estade@chromium.org>
Cr-Commit-Position: refs/heads/master@{#795356}
parent 6944687c
......@@ -1017,6 +1017,7 @@ android_library("chrome_test_java") {
"//components/browser_ui/android/bottomsheet:java",
"//components/browser_ui/android/bottomsheet/test:java",
"//components/browser_ui/display_cutout/android:java",
"//components/browser_ui/media/android:java",
"//components/browser_ui/modaldialog/android:java",
"//components/browser_ui/modaldialog/android:javatests",
"//components/browser_ui/notifications/android:java",
......
......@@ -256,7 +256,7 @@ chrome_test_java_sources = [
"javatests/src/org/chromium/chrome/browser/login/ChromeHttpAuthHandlerTest.java",
"javatests/src/org/chromium/chrome/browser/media/MediaLauncherActivityTest.java",
"javatests/src/org/chromium/chrome/browser/media/ui/AutoplayMutedNotificationTest.java",
"javatests/src/org/chromium/chrome/browser/media/ui/PauseOnHeadsetUnplugTest.java",
"javatests/src/org/chromium/chrome/browser/media/ui/MediaSessionTest.java",
"javatests/src/org/chromium/chrome/browser/media/ui/PictureInPictureControllerTest.java",
"javatests/src/org/chromium/chrome/browser/metrics/BackgroundMetricsTest.java",
"javatests/src/org/chromium/chrome/browser/metrics/MainIntentBehaviorMetricsIntegrationTest.java",
......
......@@ -8,6 +8,7 @@ import android.content.Intent;
import android.media.AudioManager;
import android.support.test.InstrumentationRegistry;
import androidx.test.filters.MediumTest;
import androidx.test.filters.SmallTest;
import org.junit.After;
......@@ -22,11 +23,19 @@ import org.chromium.base.test.util.FlakyTest;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.flags.ChromeSwitches;
import org.chromium.chrome.browser.ntp.NewTabPage;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.test.ChromeActivityTestRule;
import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
import org.chromium.chrome.test.util.NewTabPageTestUtils;
import org.chromium.chrome.test.util.browser.TabLoadObserver;
import org.chromium.components.browser_ui.media.MediaNotificationController;
import org.chromium.components.embedder_support.util.UrlConstants;
import org.chromium.components.url_formatter.SchemeDisplay;
import org.chromium.components.url_formatter.UrlFormatter;
import org.chromium.content_public.browser.test.util.CriteriaHelper;
import org.chromium.content_public.browser.test.util.DOMUtils;
import org.chromium.content_public.browser.test.util.TestThreadUtils;
import org.chromium.media.MediaSwitches;
import org.chromium.net.test.EmbeddedTestServer;
......@@ -38,13 +47,12 @@ import java.util.concurrent.TimeoutException;
@RunWith(ChromeJUnit4ClassRunner.class)
@CommandLineFlags.Add({MediaSwitches.AUTOPLAY_NO_GESTURE_REQUIRED_POLICY,
ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE})
public class PauseOnHeadsetUnplugTest {
public class MediaSessionTest {
@Rule
public ChromeActivityTestRule<ChromeActivity> mActivityTestRule =
new ChromeActivityTestRule<>(ChromeActivity.class);
private static final String TEST_PATH =
"/content/test/data/media/session/media-session.html";
private static final String TEST_PATH = "/content/test/data/media/session/media-session.html";
private static final String VIDEO_ID = "long-video";
private EmbeddedTestServer mTestServer;
......@@ -52,7 +60,8 @@ public class PauseOnHeadsetUnplugTest {
@Test
@SmallTest
@FlakyTest
public void testPause() throws IllegalArgumentException, TimeoutException {
public void testPauseOnHeadsetUnplug() throws IllegalArgumentException, TimeoutException {
mActivityTestRule.startMainActivityWithURL(mTestServer.getURL(TEST_PATH));
Tab tab = mActivityTestRule.getActivity().getActivityTab();
Assert.assertTrue(DOMUtils.isMediaPaused(tab.getWebContents(), VIDEO_ID));
......@@ -64,10 +73,42 @@ public class PauseOnHeadsetUnplugTest {
DOMUtils.waitForMediaPauseBeforeEnd(tab.getWebContents(), VIDEO_ID);
}
/**
* Regression test for crbug.com/1108038.
*
* Makes sure the notification info is updated after a navigation from a native page to a site
* with media.
*/
@Test
@MediumTest
public void mediaSessionUrlUpdatedAfterNativePageNavigation() throws Exception {
mActivityTestRule.startMainActivityWithURL("about:blank");
Tab tab = mActivityTestRule.getActivity().getActivityTab();
mActivityTestRule.loadUrl(UrlConstants.NTP_URL);
NewTabPageTestUtils.waitForNtpLoaded(tab);
Assert.assertTrue(tab.getNativePage() instanceof NewTabPage);
String videoPageUrl = mTestServer.getURL(TEST_PATH);
new TabLoadObserver(tab).fullyLoadUrl(videoPageUrl);
DOMUtils.playMedia(tab.getWebContents(), VIDEO_ID);
DOMUtils.waitForMediaPlay(tab.getWebContents(), VIDEO_ID);
waitForNotificationReady();
TestThreadUtils.runOnUiThreadBlocking(() -> {
MediaNotificationController controller =
MediaNotificationManager.getController(R.id.media_playback_notification);
Assert.assertEquals(UrlFormatter.formatUrlForSecurityDisplay(
videoPageUrl, SchemeDisplay.OMIT_HTTP_AND_HTTPS),
controller.mMediaNotificationInfo.origin);
});
}
@Before
public void setUp() {
mTestServer = EmbeddedTestServer.createAndStartServer(InstrumentationRegistry.getContext());
mActivityTestRule.startMainActivityWithURL(mTestServer.getURL(TEST_PATH));
}
@After
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment