Chromium Code Reviews| Index: third_party/WebKit/Source/core/html/shadow/MediaControlsTest.cpp |
| diff --git a/third_party/WebKit/Source/core/html/shadow/MediaControlsTest.cpp b/third_party/WebKit/Source/core/html/shadow/MediaControlsTest.cpp |
| index 9a3f79b4c5b05b14017007db2bdc66c110579636..f5f950c9e95f33a2663a1081e19de50efa5b17a9 100644 |
| --- a/third_party/WebKit/Source/core/html/shadow/MediaControlsTest.cpp |
| +++ b/third_party/WebKit/Source/core/html/shadow/MediaControlsTest.cpp |
| @@ -19,6 +19,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/WebSize.h" |
| #include "public/platform/modules/remoteplayback/WebRemotePlaybackAvailability.h" |
| @@ -121,7 +122,9 @@ enum DownloadActionMetrics { |
| class MediaControlsTest : public ::testing::Test { |
| protected: |
| - virtual void SetUp() { |
| + virtual void SetUp() { initializePage(); } |
| + |
| + void initializePage() { |
| m_pageHolder = DummyPageHolder::create(IntSize(800, 600), nullptr, |
| StubLocalFrameClient::create()); |
| Document& document = this->document(); |
| @@ -135,7 +138,7 @@ class MediaControlsTest : public ::testing::Test { |
| m_pageHolder->frame().settings()->setScriptEnabled(true); |
| } |
| - void simulateRouteAvailabe() { |
| + void simulateRouteAvailable() { |
| m_mediaControls->mediaElement().remoteRouteAvailabilityChanged( |
| WebRemotePlaybackAvailability::DeviceAvailable); |
| } |
| @@ -242,7 +245,7 @@ TEST_F(MediaControlsTest, CastButtonRequiresRoute) { |
| ASSERT_FALSE(isElementVisible(*castButton)); |
| - simulateRouteAvailabe(); |
| + simulateRouteAvailable(); |
| ASSERT_TRUE(isElementVisible(*castButton)); |
| } |
| @@ -256,7 +259,7 @@ TEST_F(MediaControlsTest, CastButtonDisableRemotePlaybackAttr) { |
| ASSERT_NE(nullptr, castButton); |
| ASSERT_FALSE(isElementVisible(*castButton)); |
| - simulateRouteAvailabe(); |
| + simulateRouteAvailable(); |
| ASSERT_TRUE(isElementVisible(*castButton)); |
| mediaControls().mediaElement().setBooleanAttribute( |
| @@ -273,7 +276,7 @@ TEST_F(MediaControlsTest, CastOverlayDefault) { |
| mediaControls(), "-internal-media-controls-overlay-cast-button"); |
| ASSERT_NE(nullptr, castOverlayButton); |
| - simulateRouteAvailabe(); |
| + simulateRouteAvailable(); |
| ASSERT_TRUE(isElementVisible(*castOverlayButton)); |
| } |
| @@ -283,7 +286,7 @@ TEST_F(MediaControlsTest, CastOverlayDisableRemotePlaybackAttr) { |
| ASSERT_NE(nullptr, castOverlayButton); |
| ASSERT_FALSE(isElementVisible(*castOverlayButton)); |
| - simulateRouteAvailabe(); |
| + simulateRouteAvailable(); |
| ASSERT_TRUE(isElementVisible(*castOverlayButton)); |
| mediaControls().mediaElement().setBooleanAttribute( |
| @@ -301,7 +304,7 @@ TEST_F(MediaControlsTest, CastOverlayMediaControlsDisabled) { |
| ASSERT_NE(nullptr, castOverlayButton); |
| EXPECT_FALSE(isElementVisible(*castOverlayButton)); |
| - simulateRouteAvailabe(); |
| + simulateRouteAvailable(); |
| EXPECT_TRUE(isElementVisible(*castOverlayButton)); |
| document().settings()->setMediaControlsEnabled(false); |
| @@ -501,4 +504,46 @@ TEST_F(MediaControlsTest, TimelineImmediatelyUpdatesCurrentTime) { |
| EXPECT_EQ(duration / 2, currentTimeDisplay->currentValue()); |
| } |
| +TEST_F(MediaControlsTest, ControlsRemainVisibleDuringKeyboardInteraction) { |
| + ScopedTestingPlatformSupport<TestingPlatformSupportWithMockScheduler> |
| + m_platform; |
| + m_platform->advanceClockSeconds(1); |
|
johnme
2017/04/06 17:15:28
Can you add a comment explaining why you need to a
steimel
2017/04/07 16:47:16
Done.
|
| + |
| + // Need to reinitialize page since we changed the platform. |
| + initializePage(); |
| + ensureSizing(); |
| + |
| + Element* panel = getElementByShadowPseudoId(mediaControls(), |
|
johnme
2017/04/06 17:15:28
Nit: you can use mediaControls().panelElement() he
steimel
2017/04/07 16:47:17
Done.
|
| + "-webkit-media-controls-panel"); |
| + ASSERT_NE(nullptr, panel); |
| + |
| + 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 |