Commit 2b32c50d authored by mukai@chromium.org's avatar mukai@chromium.org

Modify the volume visuals:

According to crbug.com/128644
- the mute icon should be in the tray if volume is 0%
- volume slider point has to be 0.0 when muted

BUG=128644
TEST=manually

Review URL: https://chromiumcodereview.appspot.com/10408036

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@138282 0039d316-1c4b-4281-b951-d872f2087c98
parent f9fd26c7
......@@ -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;
......
......@@ -96,6 +96,8 @@ double AudioHandler::GetVolumePercent() {
void AudioHandler::SetVolumePercent(double volume_percent) {
volume_percent = min(max(volume_percent, 0.0), 100.0);
if (IsMuted() && volume_percent > 0.0)
SetMuted(false);
mixer_->SetVolumePercent(volume_percent);
prefs_->SetDouble(prefs::kAudioVolumePercent, volume_percent);
FOR_EACH_OBSERVER(VolumeObserver, volume_observers_, OnVolumeChanged());
......
......@@ -69,9 +69,6 @@ bool VolumeController::HandleVolumeUp(const ui::Accelerator& accelerator) {
void VolumeController::SetVolumePercent(double percent) {
chromeos::AudioHandler* audio_handler = chromeos::AudioHandler::GetInstance();
if (audio_handler->IsMuted()) {
audio_handler->SetMuted(false);
}
audio_handler->SetVolumePercent(percent);
extensions::DispatchVolumeChangedEvent(audio_handler->GetVolumePercent(),
audio_handler->IsMuted());
......
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