Chromium Code Reviews| Index: content/public/android/javatests/src/org/chromium/content/browser/MediaSessionTest.java |
| diff --git a/content/public/android/javatests/src/org/chromium/content/browser/MediaSessionTest.java b/content/public/android/javatests/src/org/chromium/content/browser/MediaSessionTest.java |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..f0d225e29703adcb223e919782cbbf7ef5e37ed8 |
| --- /dev/null |
| +++ b/content/public/android/javatests/src/org/chromium/content/browser/MediaSessionTest.java |
| @@ -0,0 +1,369 @@ |
| +// Copyright 2015 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +package org.chromium.content.browser; |
| + |
| +import android.content.Context; |
| +import android.media.AudioManager; |
| +import android.test.suitebuilder.annotation.MediumTest; |
| +import android.test.suitebuilder.annotation.SmallTest; |
| + |
| +import org.chromium.base.test.util.CommandLineFlags; |
| +import org.chromium.base.test.util.Feature; |
| +import org.chromium.content.browser.test.util.Criteria; |
| +import org.chromium.content.browser.test.util.CriteriaHelper; |
| +import org.chromium.content.browser.test.util.DOMUtils; |
| +import org.chromium.content.common.ContentSwitches; |
| +import org.chromium.content_shell_apk.ContentShellTestBase; |
| + |
| +/** |
| + * Tests for MediaSession. |
| + */ |
| +@CommandLineFlags.Add(ContentSwitches.DISABLE_GESTURE_REQUIREMENT_FOR_MEDIA_PLAYBACK) |
| +public class MediaSessionTest extends ContentShellTestBase { |
| + private static final String MEDIA_SESSION_TEST_URL = |
| + "content/test/data/android/media/media-session.html"; |
| + private static final String SHORT_AUDIO = "short-audio"; |
| + private static final String LONG_AUDIO = "long-audio"; |
| + private static final String SHORT_VIDEO = "short-video"; |
| + private static final String LONG_VIDEO = "long-video"; |
| + |
| + private AudioManager getAudioManager() { |
| + return (AudioManager) getActivity().getApplicationContext().getSystemService( |
| + Context.AUDIO_SERVICE); |
| + } |
| + |
| + private class MockAudioFocusChangeListener implements AudioManager.OnAudioFocusChangeListener { |
| + @Override |
| + public void onAudioFocusChange(int focusChange) { |
| + mAudioFocusState = focusChange; |
| + } |
| + |
| + public int getAudioFocusState() { |
| + return mAudioFocusState; |
| + } |
| + |
| + public void requestAudioFocus(int focusType) throws Exception { |
| + int result = getAudioManager().requestAudioFocus( |
| + this, AudioManager.STREAM_MUSIC, focusType); |
| + if (result != AudioManager.AUDIOFOCUS_REQUEST_GRANTED) { |
| + throw new Exception("Did not get audio focus!"); |
|
Ted C
2015/05/27 00:59:09
I would just do:
fail("Did not get audio focus")
mlamouri (slow - plz ping)
2015/05/28 16:20:40
Done.
|
| + } else { |
| + mAudioFocusState = focusType; |
| + } |
| + } |
| + |
| + public void abandonAudioFocus() { |
| + getAudioManager().abandonAudioFocus(this); |
| + mAudioFocusState = AudioManager.AUDIOFOCUS_LOSS; |
| + } |
| + |
| + public boolean waitForFocusStateChange(final int focusType) throws InterruptedException { |
| + return CriteriaHelper.pollForCriteria(new Criteria() { |
| + @Override |
| + public boolean isSatisfied() { |
| + return getAudioFocusState() == focusType; |
| + } |
| + }); |
| + } |
| + |
| + int mAudioFocusState = AudioManager.AUDIOFOCUS_LOSS; |
|
Ted C
2015/05/27 00:59:08
this should go to the top of this inner class
mlamouri (slow - plz ping)
2015/05/28 16:20:40
Done.
|
| + } |
| + |
| + private MockAudioFocusChangeListener mAudioFocusChangeListener; |
| + |
| + @Override |
| + public void setUp() throws Exception { |
| + super.setUp(); |
| + |
| + try { |
| + startActivityWithTestUrl(MEDIA_SESSION_TEST_URL); |
| + } catch (Throwable t) { |
| + fail("Couldn't load test page"); |
| + } |
| + |
| + mAudioFocusChangeListener = new MockAudioFocusChangeListener(); |
| + } |
| + |
| + @Override |
| + public void tearDown() throws Exception { |
| + mAudioFocusChangeListener.abandonAudioFocus(); |
| + |
| + super.tearDown(); |
| + } |
| + |
| + @SmallTest |
| + @Feature({"MediaSession"}) |
| + public void testDontStopEachOther() throws Exception { |
| + assertTrue(DOMUtils.isMediaPaused(getWebContents(), LONG_AUDIO)); |
| + DOMUtils.playMedia(getWebContents(), LONG_AUDIO); |
| + assertTrue(DOMUtils.waitForMediaPlay(getWebContents(), LONG_AUDIO)); |
| + |
| + assertTrue(DOMUtils.isMediaPaused(getWebContents(), LONG_VIDEO)); |
| + DOMUtils.playMedia(getWebContents(), LONG_VIDEO); |
| + assertTrue(DOMUtils.waitForMediaPlay(getWebContents(), LONG_VIDEO)); |
| + |
| + assertTrue(DOMUtils.isMediaPaused(getWebContents(), SHORT_VIDEO)); |
| + DOMUtils.playMedia(getWebContents(), SHORT_VIDEO); |
| + assertTrue(DOMUtils.waitForMediaPlay(getWebContents(), SHORT_VIDEO)); |
| + |
| + assertTrue(DOMUtils.isMediaPaused(getWebContents(), SHORT_AUDIO)); |
| + DOMUtils.playMedia(getWebContents(), SHORT_AUDIO); |
| + assertTrue(DOMUtils.waitForMediaPlay(getWebContents(), SHORT_AUDIO)); |
| + |
| + assertFalse(DOMUtils.isMediaPaused(getWebContents(), SHORT_AUDIO)); |
|
Ted C
2015/05/27 00:59:09
how short are these short audio and video clips?
mlamouri (slow - plz ping)
2015/05/28 16:20:40
The long ones are 6 seconds long. The short ones a
|
| + assertFalse(DOMUtils.isMediaPaused(getWebContents(), LONG_AUDIO)); |
| + assertFalse(DOMUtils.isMediaPaused(getWebContents(), SHORT_VIDEO)); |
| + assertFalse(DOMUtils.isMediaPaused(getWebContents(), LONG_VIDEO)); |
| + } |
| + |
| + @MediumTest |
| + @Feature({"MediaSession"}) |
| + public void testShortAudioIsTransient() throws Exception { |
| + assertEquals(AudioManager.AUDIOFOCUS_LOSS, mAudioFocusChangeListener.getAudioFocusState()); |
| + mAudioFocusChangeListener.requestAudioFocus(AudioManager.AUDIOFOCUS_GAIN); |
| + assertEquals(AudioManager.AUDIOFOCUS_GAIN, mAudioFocusChangeListener.getAudioFocusState()); |
| + |
| + DOMUtils.playMedia(getWebContents(), SHORT_AUDIO); |
| + assertTrue(DOMUtils.waitForMediaPlay(getWebContents(), SHORT_AUDIO)); |
| + |
| + assertTrue(mAudioFocusChangeListener.waitForFocusStateChange( |
| + AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK)); |
| + assertTrue(mAudioFocusChangeListener.waitForFocusStateChange(AudioManager.AUDIOFOCUS_GAIN)); |
|
Ted C
2015/05/27 00:59:08
how long does this transition take from DUCK to GA
mlamouri (slow - plz ping)
2015/05/28 16:20:40
2 second. WDYT? I could have a VERY_SHORT_AUDIO th
Ted C
2015/05/28 20:46:45
If it's easy, go ahead and add a short one to make
mlamouri (slow - plz ping)
2015/05/29 11:14:13
Done.
|
| + } |
| + |
| + @MediumTest |
| + @Feature({"MediaSession"}) |
| + public void testShortVideoIsTransient() throws Exception { |
| + assertEquals(AudioManager.AUDIOFOCUS_LOSS, mAudioFocusChangeListener.getAudioFocusState()); |
| + mAudioFocusChangeListener.requestAudioFocus(AudioManager.AUDIOFOCUS_GAIN); |
| + assertEquals(AudioManager.AUDIOFOCUS_GAIN, mAudioFocusChangeListener.getAudioFocusState()); |
| + |
| + DOMUtils.playMedia(getWebContents(), SHORT_VIDEO); |
| + assertTrue(DOMUtils.waitForMediaPlay(getWebContents(), SHORT_VIDEO)); |
| + |
| + assertTrue(mAudioFocusChangeListener.waitForFocusStateChange( |
| + AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK)); |
| + assertTrue(mAudioFocusChangeListener.waitForFocusStateChange(AudioManager.AUDIOFOCUS_GAIN)); |
| + } |
| + |
| + @SmallTest |
| + @Feature({"MediaSession"}) |
| + public void testAudioGainFocus() throws Exception { |
| + assertEquals(AudioManager.AUDIOFOCUS_LOSS, mAudioFocusChangeListener.getAudioFocusState()); |
| + mAudioFocusChangeListener.requestAudioFocus(AudioManager.AUDIOFOCUS_GAIN); |
| + assertEquals(AudioManager.AUDIOFOCUS_GAIN, mAudioFocusChangeListener.getAudioFocusState()); |
| + |
| + DOMUtils.playMedia(getWebContents(), LONG_AUDIO); |
| + assertTrue(DOMUtils.waitForMediaPlay(getWebContents(), LONG_AUDIO)); |
| + |
| + assertTrue(mAudioFocusChangeListener.waitForFocusStateChange(AudioManager.AUDIOFOCUS_LOSS)); |
|
Ted C
2015/05/27 00:59:08
this is ensuring that the mock audio focus loses f
mlamouri (slow - plz ping)
2015/05/28 16:20:40
Correct.
|
| + } |
| + |
| + @SmallTest |
| + @Feature({"MediaSession"}) |
| + public void testVideoGainFocus() throws Exception { |
| + assertEquals(AudioManager.AUDIOFOCUS_LOSS, mAudioFocusChangeListener.getAudioFocusState()); |
| + mAudioFocusChangeListener.requestAudioFocus(AudioManager.AUDIOFOCUS_GAIN); |
| + assertEquals(AudioManager.AUDIOFOCUS_GAIN, mAudioFocusChangeListener.getAudioFocusState()); |
| + |
| + DOMUtils.playMedia(getWebContents(), LONG_VIDEO); |
| + assertTrue(DOMUtils.waitForMediaPlay(getWebContents(), LONG_VIDEO)); |
| + |
| + assertTrue(mAudioFocusChangeListener.waitForFocusStateChange(AudioManager.AUDIOFOCUS_LOSS)); |
| + } |
| + |
| + @SmallTest |
| + @Feature({"MediaSession"}) |
| + public void testLongAudioAfterShortGainsFocus() throws Exception { |
| + assertEquals(AudioManager.AUDIOFOCUS_LOSS, mAudioFocusChangeListener.getAudioFocusState()); |
| + mAudioFocusChangeListener.requestAudioFocus(AudioManager.AUDIOFOCUS_GAIN); |
| + assertEquals(AudioManager.AUDIOFOCUS_GAIN, mAudioFocusChangeListener.getAudioFocusState()); |
| + |
| + DOMUtils.playMedia(getWebContents(), SHORT_AUDIO); |
| + assertTrue(DOMUtils.waitForMediaPlay(getWebContents(), SHORT_AUDIO)); |
| + assertTrue(mAudioFocusChangeListener.waitForFocusStateChange( |
| + AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK)); |
| + |
| + DOMUtils.playMedia(getWebContents(), LONG_AUDIO); |
| + assertTrue(DOMUtils.waitForMediaPlay(getWebContents(), LONG_AUDIO)); |
| + assertTrue(mAudioFocusChangeListener.waitForFocusStateChange(AudioManager.AUDIOFOCUS_LOSS)); |
| + } |
| + |
| + @SmallTest |
| + @Feature({"MediaSession"}) |
| + public void testLongVideoAfterShortGainsFocus() throws Exception { |
| + assertEquals(AudioManager.AUDIOFOCUS_LOSS, mAudioFocusChangeListener.getAudioFocusState()); |
| + mAudioFocusChangeListener.requestAudioFocus(AudioManager.AUDIOFOCUS_GAIN); |
| + assertEquals(AudioManager.AUDIOFOCUS_GAIN, mAudioFocusChangeListener.getAudioFocusState()); |
| + |
| + DOMUtils.playMedia(getWebContents(), SHORT_VIDEO); |
| + assertTrue(DOMUtils.waitForMediaPlay(getWebContents(), SHORT_VIDEO)); |
| + assertTrue(mAudioFocusChangeListener.waitForFocusStateChange( |
| + AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK)); |
| + |
| + DOMUtils.playMedia(getWebContents(), LONG_VIDEO); |
| + assertTrue(DOMUtils.waitForMediaPlay(getWebContents(), LONG_VIDEO)); |
| + assertTrue(mAudioFocusChangeListener.waitForFocusStateChange(AudioManager.AUDIOFOCUS_LOSS)); |
| + } |
| + |
| + @SmallTest |
| + @Feature({"MediaSession"}) |
| + public void testShortAudioStopsIfLostFocus() throws Exception { |
| + assertEquals(AudioManager.AUDIOFOCUS_LOSS, mAudioFocusChangeListener.getAudioFocusState()); |
| + mAudioFocusChangeListener.requestAudioFocus(AudioManager.AUDIOFOCUS_GAIN); |
| + assertEquals(AudioManager.AUDIOFOCUS_GAIN, mAudioFocusChangeListener.getAudioFocusState()); |
| + |
| + DOMUtils.playMedia(getWebContents(), SHORT_AUDIO); |
| + assertTrue(DOMUtils.waitForMediaPlay(getWebContents(), SHORT_AUDIO)); |
| + |
| + // Wait for the media to be really playing. |
|
Ted C
2015/05/27 00:59:09
why this comment and not in the ones above that do
mlamouri (slow - plz ping)
2015/05/28 16:20:40
Because here we don't really care about the value.
|
| + assertTrue(mAudioFocusChangeListener.waitForFocusStateChange( |
| + AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK)); |
| + |
| + mAudioFocusChangeListener.requestAudioFocus(AudioManager.AUDIOFOCUS_GAIN); |
| + assertEquals(AudioManager.AUDIOFOCUS_GAIN, mAudioFocusChangeListener.getAudioFocusState()); |
| + |
| + assertTrue(DOMUtils.waitForMediaPause(getWebContents(), SHORT_AUDIO)); |
| + } |
| + |
| + @SmallTest |
| + @Feature({"MediaSession"}) |
| + public void testShortVideoStopsIfLostFocus() throws Exception { |
| + assertEquals(AudioManager.AUDIOFOCUS_LOSS, mAudioFocusChangeListener.getAudioFocusState()); |
| + mAudioFocusChangeListener.requestAudioFocus(AudioManager.AUDIOFOCUS_GAIN); |
| + assertEquals(AudioManager.AUDIOFOCUS_GAIN, mAudioFocusChangeListener.getAudioFocusState()); |
| + |
| + DOMUtils.playMedia(getWebContents(), SHORT_VIDEO); |
| + assertTrue(DOMUtils.waitForMediaPlay(getWebContents(), SHORT_VIDEO)); |
| + |
| + // Wait for the media to be really playing. |
| + assertTrue(mAudioFocusChangeListener.waitForFocusStateChange( |
| + AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK)); |
| + |
| + mAudioFocusChangeListener.requestAudioFocus(AudioManager.AUDIOFOCUS_GAIN); |
| + assertEquals(AudioManager.AUDIOFOCUS_GAIN, mAudioFocusChangeListener.getAudioFocusState()); |
| + |
| + assertTrue(DOMUtils.waitForMediaPause(getWebContents(), SHORT_VIDEO)); |
| + } |
| + |
| + @MediumTest |
| + @Feature({"MediaSession"}) |
| + public void testAudioStopsIfLostFocus() throws Exception { |
| + assertEquals(AudioManager.AUDIOFOCUS_LOSS, mAudioFocusChangeListener.getAudioFocusState()); |
| + mAudioFocusChangeListener.requestAudioFocus(AudioManager.AUDIOFOCUS_GAIN); |
| + assertEquals(AudioManager.AUDIOFOCUS_GAIN, mAudioFocusChangeListener.getAudioFocusState()); |
| + |
| + DOMUtils.playMedia(getWebContents(), LONG_AUDIO); |
| + assertTrue(DOMUtils.waitForMediaPlay(getWebContents(), LONG_AUDIO)); |
| + |
| + // Wait for the media to be really playing. |
| + assertTrue(mAudioFocusChangeListener.waitForFocusStateChange(AudioManager.AUDIOFOCUS_LOSS)); |
| + |
| + mAudioFocusChangeListener.requestAudioFocus(AudioManager.AUDIOFOCUS_GAIN); |
| + assertEquals(AudioManager.AUDIOFOCUS_GAIN, mAudioFocusChangeListener.getAudioFocusState()); |
| + |
| + assertTrue(DOMUtils.waitForMediaPause(getWebContents(), LONG_AUDIO)); |
| + } |
| + |
| + @SmallTest |
| + @Feature({"MediaSession"}) |
| + public void testVideoStopsIfLostFocus() throws Exception { |
| + assertEquals(AudioManager.AUDIOFOCUS_LOSS, mAudioFocusChangeListener.getAudioFocusState()); |
| + mAudioFocusChangeListener.requestAudioFocus(AudioManager.AUDIOFOCUS_GAIN); |
| + assertEquals(AudioManager.AUDIOFOCUS_GAIN, mAudioFocusChangeListener.getAudioFocusState()); |
| + |
| + DOMUtils.playMedia(getWebContents(), LONG_VIDEO); |
| + assertTrue(DOMUtils.waitForMediaPlay(getWebContents(), LONG_VIDEO)); |
| + |
| + // Wait for the media to be really playing. |
| + assertTrue(mAudioFocusChangeListener.waitForFocusStateChange(AudioManager.AUDIOFOCUS_LOSS)); |
| + |
| + mAudioFocusChangeListener.requestAudioFocus(AudioManager.AUDIOFOCUS_GAIN); |
| + assertEquals(AudioManager.AUDIOFOCUS_GAIN, mAudioFocusChangeListener.getAudioFocusState()); |
| + |
| + assertTrue(DOMUtils.waitForMediaPause(getWebContents(), LONG_VIDEO)); |
| + } |
| + |
| + @SmallTest |
| + @Feature({"MediaSession"}) |
| + public void testMediaDontDuck() throws Exception { |
| + assertEquals(AudioManager.AUDIOFOCUS_LOSS, mAudioFocusChangeListener.getAudioFocusState()); |
| + mAudioFocusChangeListener.requestAudioFocus(AudioManager.AUDIOFOCUS_GAIN); |
| + assertEquals(AudioManager.AUDIOFOCUS_GAIN, mAudioFocusChangeListener.getAudioFocusState()); |
| + |
| + DOMUtils.playMedia(getWebContents(), LONG_AUDIO); |
| + assertTrue(DOMUtils.waitForMediaPlay(getWebContents(), LONG_AUDIO)); |
| + DOMUtils.playMedia(getWebContents(), LONG_VIDEO); |
| + assertTrue(DOMUtils.waitForMediaPlay(getWebContents(), LONG_VIDEO)); |
| + |
| + // Wait for the media to be really playing. |
| + assertTrue(mAudioFocusChangeListener.waitForFocusStateChange(AudioManager.AUDIOFOCUS_LOSS)); |
| + |
| + mAudioFocusChangeListener.requestAudioFocus( |
| + AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK); |
| + assertEquals(AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK, |
| + mAudioFocusChangeListener.getAudioFocusState()); |
| + |
| + assertTrue(DOMUtils.waitForMediaPause(getWebContents(), LONG_AUDIO)); |
| + assertTrue(DOMUtils.waitForMediaPause(getWebContents(), LONG_VIDEO)); |
| + } |
| + |
| + @MediumTest |
| + @Feature({"MediaSession"}) |
| + public void testMediaResumeAfterTransientMayDuckFocusLoss() throws Exception { |
| + assertEquals(AudioManager.AUDIOFOCUS_LOSS, mAudioFocusChangeListener.getAudioFocusState()); |
| + mAudioFocusChangeListener.requestAudioFocus(AudioManager.AUDIOFOCUS_GAIN); |
| + assertEquals(AudioManager.AUDIOFOCUS_GAIN, mAudioFocusChangeListener.getAudioFocusState()); |
| + |
| + DOMUtils.playMedia(getWebContents(), LONG_AUDIO); |
| + assertTrue(DOMUtils.waitForMediaPlay(getWebContents(), LONG_AUDIO)); |
| + DOMUtils.playMedia(getWebContents(), LONG_VIDEO); |
| + assertTrue(DOMUtils.waitForMediaPlay(getWebContents(), LONG_VIDEO)); |
| + |
| + // Wait for the media to be really playing. |
| + assertTrue(mAudioFocusChangeListener.waitForFocusStateChange(AudioManager.AUDIOFOCUS_LOSS)); |
| + |
| + mAudioFocusChangeListener.requestAudioFocus( |
| + AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK); |
| + assertEquals(AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK, |
| + mAudioFocusChangeListener.getAudioFocusState()); |
| + |
| + assertTrue(DOMUtils.waitForMediaPause(getWebContents(), LONG_AUDIO)); |
| + assertTrue(DOMUtils.waitForMediaPause(getWebContents(), LONG_VIDEO)); |
| + |
| + mAudioFocusChangeListener.abandonAudioFocus(); |
| + |
| + assertTrue(DOMUtils.waitForMediaPlay(getWebContents(), LONG_AUDIO)); |
| + assertTrue(DOMUtils.waitForMediaPlay(getWebContents(), LONG_VIDEO)); |
| + } |
| + |
| + @MediumTest |
| + @Feature({"MediaSession"}) |
| + public void testMediaResumeAfterTransientFocusLoss() throws Exception { |
| + assertEquals(AudioManager.AUDIOFOCUS_LOSS, mAudioFocusChangeListener.getAudioFocusState()); |
| + mAudioFocusChangeListener.requestAudioFocus(AudioManager.AUDIOFOCUS_GAIN); |
| + assertEquals(AudioManager.AUDIOFOCUS_GAIN, mAudioFocusChangeListener.getAudioFocusState()); |
| + |
| + DOMUtils.playMedia(getWebContents(), LONG_AUDIO); |
| + assertTrue(DOMUtils.waitForMediaPlay(getWebContents(), LONG_AUDIO)); |
| + DOMUtils.playMedia(getWebContents(), LONG_VIDEO); |
| + assertTrue(DOMUtils.waitForMediaPlay(getWebContents(), LONG_VIDEO)); |
| + |
| + // Wait for the media to be really playing. |
| + assertTrue(mAudioFocusChangeListener.waitForFocusStateChange(AudioManager.AUDIOFOCUS_LOSS)); |
| + |
| + mAudioFocusChangeListener.requestAudioFocus(AudioManager.AUDIOFOCUS_GAIN_TRANSIENT); |
| + assertEquals(AudioManager.AUDIOFOCUS_GAIN_TRANSIENT, |
| + mAudioFocusChangeListener.getAudioFocusState()); |
| + |
| + assertTrue(DOMUtils.waitForMediaPause(getWebContents(), LONG_AUDIO)); |
| + assertTrue(DOMUtils.waitForMediaPause(getWebContents(), LONG_VIDEO)); |
| + |
| + mAudioFocusChangeListener.abandonAudioFocus(); |
| + |
| + assertTrue(DOMUtils.waitForMediaPlay(getWebContents(), LONG_AUDIO)); |
| + assertTrue(DOMUtils.waitForMediaPlay(getWebContents(), LONG_VIDEO)); |
| + } |
| +} |