Index: ash/system/audio/tray_volume.cc |
diff --git a/ash/system/audio/tray_volume.cc b/ash/system/audio/tray_volume.cc |
index fba2fe871c0c8307da27b1e97d94558d5f3ab7f9..5b9d3a38541c2785474f7b26fc330f31393f64fd 100644 |
--- a/ash/system/audio/tray_volume.cc |
+++ b/ash/system/audio/tray_volume.cc |
@@ -106,7 +106,8 @@ class VolumeView : public views::View, |
ash::Shell::GetInstance()->tray_delegate(); |
slider_ = new views::Slider(this, views::Slider::HORIZONTAL); |
slider_->set_focus_border_color(kFocusBorderColor); |
- slider_->SetValue(delegate->GetVolumeLevel()); |
+ slider_->SetValue( |
+ delegate->IsAudioMuted() ? 0.0 : delegate->GetVolumeLevel()); |
slider_->SetAccessibleName( |
ui::ResourceBundle::GetSharedInstance().GetLocalizedString( |
IDS_ASH_STATUS_TRAY_VOLUME)); |
@@ -148,8 +149,11 @@ class VolumeView : public views::View, |
float value, |
float old_value, |
views::SliderChangeReason reason) OVERRIDE { |
- if (reason == views::VALUE_CHANGED_BY_USER) |
- ash::Shell::GetInstance()->tray_delegate()->SetVolumeLevel(value); |
+ if (reason == views::VALUE_CHANGED_BY_USER) { |
+ ash::SystemTrayDelegate* delegate = |
+ ash::Shell::GetInstance()->tray_delegate(); |
+ delegate->SetVolumeLevel(value); |
+ } |
icon_->Update(); |
} |
@@ -171,7 +175,9 @@ TrayVolume::~TrayVolume() { |
} |
bool TrayVolume::GetInitialVisibility() { |
- return ash::Shell::GetInstance()->tray_delegate()->IsAudioMuted(); |
+ ash::SystemTrayDelegate* delegate = |
+ ash::Shell::GetInstance()->tray_delegate(); |
+ return delegate->GetVolumeLevel() == 0.0 || delegate->IsAudioMuted(); |
} |
views::View* TrayVolume::CreateDefaultView(user::LoginStatus status) { |
@@ -201,6 +207,8 @@ void TrayVolume::OnVolumeChanged(float percent) { |
tray_view()->SetVisible(GetInitialVisibility()); |
if (volume_view_) { |
+ if (ash::Shell::GetInstance()->tray_delegate()->IsAudioMuted()) |
+ percent = 0.0; |
volume_view_->SetVolumeLevel(percent); |
SetDetailedViewCloseDelay(kTrayPopupAutoCloseDelayInSeconds); |
return; |