Commit 948b667a authored by Jazz Xu's avatar Jazz Xu Committed by Commit Bot

CrOS GMC: Hide action buttons when they're not available.

Bug: 1133026
Change-Id: Id4cc583e1eca14b083d2b22c9ee4b25e857d4175
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2437370Reviewed-by: default avatarTommy Steimel <steimel@chromium.org>
Reviewed-by: default avatarTetsui Ohkubo <tetsui@chromium.org>
Commit-Queue: Jazz Xu <jazzhsu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#811560}
parent 82780972
...@@ -202,6 +202,36 @@ TEST_F(UnifiedMediaControlsControllerTest, ActionButtonsTest) { ...@@ -202,6 +202,36 @@ TEST_F(UnifiedMediaControlsControllerTest, ActionButtonsTest) {
EXPECT_EQ(1, media_controller()->resume_count()); EXPECT_EQ(1, media_controller()->resume_count());
} }
TEST_F(UnifiedMediaControlsControllerTest, ActionButtonVisibility) {
SimulateMediaPlaybackStateChanged(
media_session::mojom::MediaPlaybackState::kPlaying);
EnableAction(MediaSessionAction::kPause);
EnableAction(MediaSessionAction::kPlay);
EXPECT_EQ(GetActionButton(MediaSessionAction::kPlay), nullptr);
EXPECT_TRUE(GetActionButton(MediaSessionAction::kPause)->GetVisible());
EXPECT_FALSE(
GetActionButton(MediaSessionAction::kPreviousTrack)->GetVisible());
EXPECT_FALSE(GetActionButton(MediaSessionAction::kNextTrack)->GetVisible());
EnableAction(MediaSessionAction::kPreviousTrack);
EXPECT_TRUE(GetActionButton(MediaSessionAction::kPause)->GetVisible());
EXPECT_TRUE(
GetActionButton(MediaSessionAction::kPreviousTrack)->GetVisible());
EXPECT_FALSE(GetActionButton(MediaSessionAction::kNextTrack)->GetVisible());
EnableAction(MediaSessionAction::kNextTrack);
DisableAction(MediaSessionAction::kPreviousTrack);
EXPECT_TRUE(GetActionButton(MediaSessionAction::kPause)->GetVisible());
EXPECT_FALSE(
GetActionButton(MediaSessionAction::kPreviousTrack)->GetVisible());
EXPECT_TRUE(GetActionButton(MediaSessionAction::kNextTrack)->GetVisible());
SimulateMediaPlaybackStateChanged(
media_session::mojom::MediaPlaybackState::kPaused);
EXPECT_EQ(GetActionButton(MediaSessionAction::kPause), nullptr);
EXPECT_TRUE(GetActionButton(MediaSessionAction::kPlay)->GetVisible());
}
TEST_F(UnifiedMediaControlsControllerTest, MetadataUpdate) { TEST_F(UnifiedMediaControlsControllerTest, MetadataUpdate) {
media_session::MediaMetadata metadata; media_session::MediaMetadata metadata;
metadata.title = base::ASCIIToUTF16("title"); metadata.title = base::ASCIIToUTF16("title");
......
...@@ -105,12 +105,6 @@ void UnifiedMediaControlsView::MediaActionButton::SetAction( ...@@ -105,12 +105,6 @@ void UnifiedMediaControlsView::MediaActionButton::SetAction(
GetVectorIconForMediaAction(action), kMediaButtonIconSize, GetVectorIconForMediaAction(action), kMediaButtonIconSize,
AshColorProvider::Get()->GetContentLayerColor( AshColorProvider::Get()->GetContentLayerColor(
AshColorProvider::ContentLayerType::kIconColorPrimary))); AshColorProvider::ContentLayerType::kIconColorPrimary)));
SetImage(views::Button::STATE_DISABLED,
CreateVectorIcon(
GetVectorIconForMediaAction(action), kMediaButtonIconSize,
AshColorProvider::Get()->GetContentLayerColor(
AshColorProvider::ContentLayerType::kIconColorSecondary)));
} }
UnifiedMediaControlsView::UnifiedMediaControlsView( UnifiedMediaControlsView::UnifiedMediaControlsView(
...@@ -228,12 +222,18 @@ void UnifiedMediaControlsView::SetArtist(const base::string16& artist) { ...@@ -228,12 +222,18 @@ void UnifiedMediaControlsView::SetArtist(const base::string16& artist) {
void UnifiedMediaControlsView::UpdateActionButtonAvailability( void UnifiedMediaControlsView::UpdateActionButtonAvailability(
const base::flat_set<MediaSessionAction>& enabled_actions) { const base::flat_set<MediaSessionAction>& enabled_actions) {
bool should_invalidate = false;
for (views::View* child : button_row_->children()) { for (views::View* child : button_row_->children()) {
views::Button* button = static_cast<views::Button*>(child); views::Button* button = static_cast<views::Button*>(child);
button->SetEnabled( bool should_show = base::Contains(
base::Contains(enabled_actions, enabled_actions, media_message_center::GetActionFromButtonTag(*button));
media_message_center::GetActionFromButtonTag(*button)));
should_invalidate |= should_show != button->GetVisible();
button->SetVisible(should_show);
} }
if (should_invalidate)
button_row_->InvalidateLayout();
} }
SkPath UnifiedMediaControlsView::GetArtworkClipPath() { SkPath UnifiedMediaControlsView::GetArtworkClipPath() {
......
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