Index: ash/system/audio/tray_volume.cc |
diff --git a/ash/system/audio/tray_volume.cc b/ash/system/audio/tray_volume.cc |
index 5b9d3a38541c2785474f7b26fc330f31393f64fd..17f121d69b4837b5532f6c4c70335517be726e54 100644 |
--- a/ash/system/audio/tray_volume.cc |
+++ b/ash/system/audio/tray_volume.cc |
@@ -91,6 +91,26 @@ class VolumeButton : public views::ToggleImageButton { |
DISALLOW_COPY_AND_ASSIGN(VolumeButton); |
}; |
+class MuteButton : public ash::internal::TrayBarButtonWithTitle { |
+ public: |
+ explicit MuteButton(views::ButtonListener* listener) |
+ : TrayBarButtonWithTitle(listener, |
+ IDS_ASH_STATUS_TRAY_VOLUME_MUTE, |
+ kTrayBarButtonWidth) { |
+ Update(); |
+ } |
+ virtual ~MuteButton() {} |
+ |
+ void Update() { |
+ ash::SystemTrayDelegate* delegate = |
+ ash::Shell::GetInstance()->tray_delegate(); |
+ UpdateButton(delegate->IsAudioMuted()); |
+ SchedulePaint(); |
+ } |
+ |
+ DISALLOW_COPY_AND_ASSIGN(MuteButton); |
+}; |
+ |
class VolumeView : public views::View, |
public views::ButtonListener, |
public views::SliderListener { |
@@ -102,6 +122,9 @@ class VolumeView : public views::View, |
icon_ = new VolumeButton(this); |
AddChildView(icon_); |
+ mute_ = new MuteButton(this); |
+ AddChildView(mute_); |
+ |
ash::SystemTrayDelegate* delegate = |
ash::Shell::GetInstance()->tray_delegate(); |
slider_ = new views::Slider(this, views::Slider::HORIZONTAL); |
@@ -125,6 +148,7 @@ class VolumeView : public views::View, |
// did not change. In that case, setting the value of the slider won't |
// trigger an update. So explicitly trigger an update. |
icon_->Update(); |
+ mute_->Update(); |
slider_->set_enable_accessibility_events(true); |
} |
@@ -138,7 +162,7 @@ class VolumeView : public views::View, |
// Overridden from views::ButtonListener. |
virtual void ButtonPressed(views::Button* sender, |
const views::Event& event) OVERRIDE { |
- CHECK(sender == icon_); |
+ CHECK(sender == icon_ || sender == mute_); |
ash::SystemTrayDelegate* delegate = |
ash::Shell::GetInstance()->tray_delegate(); |
delegate->SetAudioMuted(!delegate->IsAudioMuted()); |
@@ -158,6 +182,7 @@ class VolumeView : public views::View, |
} |
VolumeButton* icon_; |
+ MuteButton* mute_; |
views::Slider* slider_; |
DISALLOW_COPY_AND_ASSIGN(VolumeView); |