Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(911)

Unified Diff: third_party/WebKit/Source/modules/media_controls/MediaControlsImplTest.cpp

Issue 2757323002: Prevent Media Controls from hiding when the user is interacting via the keyboard (Closed)
Patch Set: rebase Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/WebKit/Source/modules/media_controls/MediaControlsImpl.cpp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « third_party/WebKit/Source/modules/media_controls/MediaControlsImpl.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698