Index: third_party/WebKit/Source/modules/media_controls/MediaControlsImpl.cpp |
diff --git a/third_party/WebKit/Source/modules/media_controls/MediaControlsImpl.cpp b/third_party/WebKit/Source/modules/media_controls/MediaControlsImpl.cpp |
index b31c8faab967c0c281f1f35b1a003a6e333a1bea..19fc1ccf5ebb531ed845582d21db0da5f1828722 100644 |
--- a/third_party/WebKit/Source/modules/media_controls/MediaControlsImpl.cpp |
+++ b/third_party/WebKit/Source/modules/media_controls/MediaControlsImpl.cpp |
@@ -112,28 +112,6 @@ bool ShouldShowFullscreenButton(const HTMLMediaElement& media_element) { |
return true; |
} |
-bool ShouldShowCastButton(HTMLMediaElement& media_element) { |
- if (media_element.FastHasAttribute(HTMLNames::disableremoteplaybackAttr)) |
- return false; |
- |
- // Explicitly do not show cast button when the mediaControlsEnabled setting is |
- // false to make sure the overlay does not appear. |
- Document& document = media_element.GetDocument(); |
- if (document.GetSettings() && |
- !document.GetSettings()->GetMediaControlsEnabled()) |
- return false; |
- |
- // The page disabled the button via the attribute. |
- if (media_element.ControlsListInternal()->ShouldHideRemotePlayback()) { |
- UseCounter::Count( |
- media_element.GetDocument(), |
- UseCounter::kHTMLMediaElementControlsListNoRemotePlayback); |
- return false; |
- } |
- |
- return media_element.HasRemoteRoutes(); |
-} |
- |
bool PreferHiddenVolumeControls(const Document& document) { |
return !document.GetSettings() || |
document.GetSettings()->GetPreferHiddenVolumeControls(); |
@@ -494,6 +472,7 @@ void MediaControlsImpl::Show() { |
panel_->SetIsDisplayed(true); |
if (overlay_play_button_) |
overlay_play_button_->UpdateDisplayType(); |
+ RefreshCastButtonVisibility(); |
} |
void MediaControlsImpl::Hide() { |
@@ -630,43 +609,25 @@ void MediaControlsImpl::RefreshCastButtonVisibility() { |
} |
void MediaControlsImpl::RefreshCastButtonVisibilityWithoutUpdate() { |
- if (!ShouldShowCastButton(MediaElement())) { |
- cast_button_->SetIsWanted(false); |
- overlay_cast_button_->SetIsWanted(false); |
- return; |
- } |
- |
- // The reason for the autoplay test is that some pages (e.g. vimeo.com) have |
- // an autoplay background video, which doesn't autoplay on Chrome for Android |
- // (we prevent it) so starts paused. In such cases we don't want to |
- // automatically show the cast button, since it looks strange and is unlikely |
- // to correspond with anything the user wants to do. If a user does want to |
- // cast a paused autoplay video then they can still do so by touching or |
- // clicking on the video, which will cause the cast button to appear. |
- if (!MediaElement().ShouldShowControls() && !MediaElement().Autoplay() && |
- MediaElement().paused()) { |
- // Note that this is a case where we add the overlay cast button |
- // without wanting the panel cast button. We depend on the fact |
- // that computeWhichControlsFit() won't change overlay cast button |
- // visibility in the case where the cast button isn't wanted. |
- // We don't call compute...() here, but it will be called as |
- // non-cast changes (e.g., resize) occur. If the panel button |
- // is shown, however, compute...() will take control of the |
- // overlay cast button if it needs to hide it from the panel. |
- overlay_cast_button_->TryShowOverlay(); |
- cast_button_->SetIsWanted(false); |
- } else if (MediaElement().ShouldShowControls()) { |
- overlay_cast_button_->SetIsWanted(false); |
- cast_button_->SetIsWanted(true); |
+ MediaControlCastButtonElement* try_show_button = cast_button_.Get(); |
+ MediaControlCastButtonElement* hide_button = overlay_cast_button_.Get(); |
+ if (!MediaElement().ShouldShowControls()) { |
+ try_show_button = overlay_cast_button_.Get(); |
+ hide_button = cast_button_.Get(); |
} |
+ hide_button->SetIsWanted(false); |
+ try_show_button->SetIsWanted(try_show_button->ShouldShow()); |
+ if (try_show_button->IsWanted()) |
+ try_show_button->UpdateDisplayType(); |
} |
void MediaControlsImpl::ShowOverlayCastButtonIfNeeded() { |
if (MediaElement().ShouldShowControls() || |
- !ShouldShowCastButton(MediaElement())) |
+ !overlay_cast_button_->ShouldShow()) { |
return; |
+ } |
- overlay_cast_button_->TryShowOverlay(); |
+ overlay_cast_button_->SetIsWanted(true); |
ResetHideMediaControlsTimer(); |
} |
@@ -678,16 +639,6 @@ void MediaControlsImpl::ExitFullscreen() { |
Fullscreen::ExitFullscreen(GetDocument()); |
} |
-void MediaControlsImpl::StartedCasting() { |
- cast_button_->SetIsPlayingRemotely(true); |
- overlay_cast_button_->SetIsPlayingRemotely(true); |
-} |
- |
-void MediaControlsImpl::StoppedCasting() { |
- cast_button_->SetIsPlayingRemotely(false); |
- overlay_cast_button_->SetIsPlayingRemotely(false); |
-} |
- |
void MediaControlsImpl::DefaultEventHandler(Event* event) { |
HTMLDivElement::DefaultEventHandler(event); |