Commit 6d8c81c8 authored by Tommy Steimel's avatar Tommy Steimel Committed by Commit Bot

Only show mute icon on tab when sound is playing

This CL adds a check to WasRecentlyAudible before adding a mute icon to
a tab to avoid always showing a mute icon when a tab is muted. This also
adds the fade animation to the (mute icon)->(no icon) transition. Since
adding the fade animation breaks a TabTest unit test (which worked under
the assumption that each of its transitions was instantaneous), this CL
also manually stops fade animations in that test.

Bug: 785406
Change-Id: I0d7fd732b605f634f9df59b736dd7f19c382a09e
Reviewed-on: https://chromium-review.googlesource.com/889178Reviewed-by: default avatarYuri Wiitala <miu@chromium.org>
Commit-Queue: Tommy Steimel <steimel@chromium.org>
Cr-Commit-Position: refs/heads/master@{#532652}
parent f719bcba
...@@ -170,10 +170,11 @@ TabAlertState GetTabAlertStateForContents(content::WebContents* contents) { ...@@ -170,10 +170,11 @@ TabAlertState GetTabAlertStateForContents(content::WebContents* contents) {
if (usb_tab_helper && usb_tab_helper->IsDeviceConnected()) if (usb_tab_helper && usb_tab_helper->IsDeviceConnected())
return TabAlertState::USB_CONNECTED; return TabAlertState::USB_CONNECTED;
if (contents->IsAudioMuted()) if (contents->WasRecentlyAudible()) {
return TabAlertState::AUDIO_MUTING; if (contents->IsAudioMuted())
if (contents->WasRecentlyAudible()) return TabAlertState::AUDIO_MUTING;
return TabAlertState::AUDIO_PLAYING; return TabAlertState::AUDIO_PLAYING;
}
return TabAlertState::NONE; return TabAlertState::NONE;
} }
......
...@@ -93,9 +93,7 @@ void AlertIndicatorButton::TransitionToAlertState(TabAlertState next_state) { ...@@ -93,9 +93,7 @@ void AlertIndicatorButton::TransitionToAlertState(TabAlertState next_state) {
if ((alert_state_ == TabAlertState::AUDIO_PLAYING && if ((alert_state_ == TabAlertState::AUDIO_PLAYING &&
next_state == TabAlertState::AUDIO_MUTING) || next_state == TabAlertState::AUDIO_MUTING) ||
(alert_state_ == TabAlertState::AUDIO_MUTING && (alert_state_ == TabAlertState::AUDIO_MUTING &&
next_state == TabAlertState::AUDIO_PLAYING) || next_state == TabAlertState::AUDIO_PLAYING)) {
(alert_state_ == TabAlertState::AUDIO_MUTING &&
next_state == TabAlertState::NONE)) {
// Instant user feedback: No fade animation. // Instant user feedback: No fade animation.
showing_alert_state_ = next_state; showing_alert_state_ = next_state;
fade_animation_.reset(); fade_animation_.reset();
......
...@@ -85,6 +85,7 @@ class AlertIndicatorButton : public views::ImageButton, ...@@ -85,6 +85,7 @@ class AlertIndicatorButton : public views::ImageButton,
private: private:
friend class AlertIndicatorButtonTest; friend class AlertIndicatorButtonTest;
friend class TabTest;
class FadeAnimationDelegate; class FadeAnimationDelegate;
// Returns the tab (parent view) of this AlertIndicatorButton. // Returns the tab (parent view) of this AlertIndicatorButton.
......
...@@ -233,6 +233,15 @@ class TabTest : public views::ViewsTestBase { ...@@ -233,6 +233,15 @@ class TabTest : public views::ViewsTestBase {
} }
} }
static void StopFadeAnimationIfNecessary(const Tab& tab) {
// Stop the fade animation directly instead of waiting an unknown number of
// seconds.
if (gfx::Animation* fade_animation =
tab.alert_indicator_button_->fade_animation_.get()) {
fade_animation->Stop();
}
}
protected: protected:
void InitWidget(Widget* widget) { void InitWidget(Widget* widget) {
Widget::InitParams params(CreateParams(Widget::InitParams::TYPE_WINDOW)); Widget::InitParams params(CreateParams(Widget::InitParams::TYPE_WINDOW));
...@@ -314,6 +323,7 @@ TEST_F(TabTest, LayoutAndVisibilityOfElements) { ...@@ -314,6 +323,7 @@ TEST_F(TabTest, LayoutAndVisibilityOfElements) {
controller.set_active_tab(is_active_tab); controller.set_active_tab(is_active_tab);
data.alert_state = alert_state; data.alert_state = alert_state;
tab.SetData(data); tab.SetData(data);
StopFadeAnimationIfNecessary(tab);
// Test layout for every width from standard to minimum. // Test layout for every width from standard to minimum.
gfx::Rect bounds(gfx::Point(0, 0), Tab::GetStandardSize()); gfx::Rect bounds(gfx::Point(0, 0), Tab::GetStandardSize());
......
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