Commit 25a46753 authored by François Beaufort's avatar François Beaufort Committed by Commit Bot

[Picture-in-Picture] Hide controls layer when no video.

This CL makes sure we never show play/pause and scrim controls when
there is no video in Picture-in-Picture window.

Bug: 879529
Change-Id: I8d9ee5dcde24e9dc1b3e89af091c3385d338b046
Reviewed-on: https://chromium-review.googlesource.com/1235580
Commit-Queue: François Beaufort <beaufort.francois@gmail.com>
Reviewed-by: default avatarapacible <apacible@chromium.org>
Cr-Commit-Position: refs/heads/master@{#593513}
parent ee8e323e
......@@ -320,9 +320,11 @@ void OverlayWindowViews::UpdateLayerBoundsWithLetterboxing(
}
void OverlayWindowViews::UpdateControlsVisibility(bool is_visible) {
GetControlsScrimLayer()->SetVisible(is_visible);
GetCloseControlsLayer()->SetVisible(is_visible);
GetControlsParentLayer()->SetVisible(is_visible);
GetControlsScrimLayer()->SetVisible(
(playback_state_ == kNoVideo) ? false : is_visible);
GetControlsParentLayer()->SetVisible(
(playback_state_ == kNoVideo) ? false : is_visible);
}
void OverlayWindowViews::UpdateControlsBounds() {
......@@ -509,24 +511,28 @@ void OverlayWindowViews::SetPlaybackState(PlaybackState playback_state) {
// TODO(apacible): have machine state for controls visibility.
bool controls_parent_layer_visible = GetControlsParentLayer()->visible();
switch (playback_state) {
playback_state_ = playback_state;
switch (playback_state_) {
case kPlaying:
play_pause_controls_view_->SetToggled(true);
controls_parent_view_->SetVisible(true);
video_view_->SetVisible(true);
GetControlsParentLayer()->SetVisible(controls_parent_layer_visible);
break;
case kPaused:
play_pause_controls_view_->SetToggled(false);
controls_parent_view_->SetVisible(true);
video_view_->SetVisible(true);
GetControlsParentLayer()->SetVisible(controls_parent_layer_visible);
break;
case kNoVideo:
controls_scrim_view_->SetVisible(false);
controls_parent_view_->SetVisible(false);
video_view_->SetVisible(false);
GetControlsParentLayer()->SetVisible(false);
break;
}
GetControlsParentLayer()->SetVisible(controls_parent_layer_visible);
}
void OverlayWindowViews::SetPictureInPictureCustomControls(
......
......@@ -138,6 +138,10 @@ class OverlayWindowViews : public content::OverlayWindow,
// components has been initialized.
bool has_been_shown_ = false;
// Current playback state on the video in Picture-in-Picture window. It is
// used to show/hide controls.
PlaybackState playback_state_ = kNoVideo;
// The upper and lower bounds of |current_size_|. These are determined by the
// size of the primary display work area when Picture-in-Picture is initiated.
// TODO(apacible): Update these bounds when the display the window is on
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment