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 |