| Index: third_party/WebKit/Source/modules/media_controls/MediaControlsImplTest.cpp
|
| diff --git a/third_party/WebKit/Source/modules/media_controls/MediaControlsImplTest.cpp b/third_party/WebKit/Source/modules/media_controls/MediaControlsImplTest.cpp
|
| index 6b640083ab2f3014ceb9eae840628bcbb1b92c52..ef94cfe1fc76934047c609c6c9840306ddefa19e 100644
|
| --- a/third_party/WebKit/Source/modules/media_controls/MediaControlsImplTest.cpp
|
| +++ b/third_party/WebKit/Source/modules/media_controls/MediaControlsImplTest.cpp
|
| @@ -24,6 +24,7 @@
|
| #include "platform/heap/Handle.h"
|
| #include "platform/testing/EmptyWebMediaPlayer.h"
|
| #include "platform/testing/HistogramTester.h"
|
| +#include "platform/testing/TestingPlatformSupport.h"
|
| #include "platform/testing/UnitTestHelpers.h"
|
| #include "public/platform/WebMouseEvent.h"
|
| #include "public/platform/WebScreenInfo.h"
|
| @@ -160,7 +161,9 @@ enum DownloadActionMetrics {
|
|
|
| class MediaControlsImplTest : public ::testing::Test {
|
| protected:
|
| - virtual void SetUp() {
|
| + virtual void SetUp() { initializePage(); }
|
| +
|
| + void initializePage() {
|
| Page::PageClients clients;
|
| fillWithEmptyClients(clients);
|
| clients.chromeClient = new MockChromeClient();
|
| @@ -176,7 +179,7 @@ class MediaControlsImplTest : public ::testing::Test {
|
| m_pageHolder->frame().settings()->setScriptEnabled(true);
|
| }
|
|
|
| - void simulateRouteAvailabe() {
|
| + void simulateRouteAvailable() {
|
| m_mediaControls->mediaElement().remoteRouteAvailabilityChanged(
|
| WebRemotePlaybackAvailability::DeviceAvailable);
|
| }
|
| @@ -321,7 +324,7 @@ TEST_F(MediaControlsImplTest, CastButtonRequiresRoute) {
|
|
|
| ASSERT_FALSE(isElementVisible(*castButton));
|
|
|
| - simulateRouteAvailabe();
|
| + simulateRouteAvailable();
|
| ASSERT_TRUE(isElementVisible(*castButton));
|
| }
|
|
|
| @@ -335,7 +338,7 @@ TEST_F(MediaControlsImplTest, CastButtonDisableRemotePlaybackAttr) {
|
| ASSERT_NE(nullptr, castButton);
|
|
|
| ASSERT_FALSE(isElementVisible(*castButton));
|
| - simulateRouteAvailabe();
|
| + simulateRouteAvailable();
|
| ASSERT_TRUE(isElementVisible(*castButton));
|
|
|
| mediaControls().mediaElement().setBooleanAttribute(
|
| @@ -352,7 +355,7 @@ TEST_F(MediaControlsImplTest, CastOverlayDefault) {
|
| mediaControls(), "-internal-media-controls-overlay-cast-button");
|
| ASSERT_NE(nullptr, castOverlayButton);
|
|
|
| - simulateRouteAvailabe();
|
| + simulateRouteAvailable();
|
| ASSERT_TRUE(isElementVisible(*castOverlayButton));
|
| }
|
|
|
| @@ -362,7 +365,7 @@ TEST_F(MediaControlsImplTest, CastOverlayDisableRemotePlaybackAttr) {
|
| ASSERT_NE(nullptr, castOverlayButton);
|
|
|
| ASSERT_FALSE(isElementVisible(*castOverlayButton));
|
| - simulateRouteAvailabe();
|
| + simulateRouteAvailable();
|
| ASSERT_TRUE(isElementVisible(*castOverlayButton));
|
|
|
| mediaControls().mediaElement().setBooleanAttribute(
|
| @@ -380,7 +383,7 @@ TEST_F(MediaControlsImplTest, CastOverlayMediaControlsDisabled) {
|
| ASSERT_NE(nullptr, castOverlayButton);
|
|
|
| EXPECT_FALSE(isElementVisible(*castOverlayButton));
|
| - simulateRouteAvailabe();
|
| + simulateRouteAvailable();
|
| EXPECT_TRUE(isElementVisible(*castOverlayButton));
|
|
|
| document().settings()->setMediaControlsEnabled(false);
|
| @@ -793,4 +796,46 @@ TEST_F(MediaControlsImplTest, MAYBE_TimelineMetricsDragBackAndForth) {
|
| 9 /* (-4m, -2m] */, 1);
|
| }
|
|
|
| +TEST_F(MediaControlsImplTest, ControlsRemainVisibleDuringKeyboardInteraction) {
|
| + ScopedTestingPlatformSupport<TestingPlatformSupportWithMockScheduler>
|
| + m_platform;
|
| +
|
| + // DocumentParserTiming has DCHECKS to make sure time > 0.0.
|
| + m_platform->advanceClockSeconds(1);
|
| +
|
| + // Need to reinitialize page since we changed the platform.
|
| + initializePage();
|
| + ensureSizing();
|
| +
|
| + Element* panel = mediaControls().panelElement();
|
| +
|
| + mediaControls().mediaElement().setBooleanAttribute(HTMLNames::controlsAttr,
|
| + true);
|
| + mediaControls().mediaElement().setSrc("http://example.com");
|
| + mediaControls().mediaElement().play();
|
| +
|
| + // Controls start out visible.
|
| + EXPECT_TRUE(isElementVisible(*panel));
|
| +
|
| + // Tabbing between controls prevents controls from hiding.
|
| + m_platform->runForPeriodSeconds(2);
|
| + mediaControls().dispatchEvent(Event::create("focusin"));
|
| + m_platform->runForPeriodSeconds(2);
|
| + EXPECT_TRUE(isElementVisible(*panel));
|
| +
|
| + // Seeking on the timeline or volume bar prevents controls from hiding.
|
| + mediaControls().dispatchEvent(Event::create("input"));
|
| + m_platform->runForPeriodSeconds(2);
|
| + EXPECT_TRUE(isElementVisible(*panel));
|
| +
|
| + // Pressing a key prevents controls from hiding.
|
| + mediaControls().panelElement()->dispatchEvent(Event::create("keypress"));
|
| + m_platform->runForPeriodSeconds(2);
|
| + EXPECT_TRUE(isElementVisible(*panel));
|
| +
|
| + // Once user interaction stops, controls can hide.
|
| + m_platform->runForPeriodSeconds(2);
|
| + EXPECT_FALSE(isElementVisible(*panel));
|
| +}
|
| +
|
| } // namespace blink
|
|
|