summaryrefslogtreecommitdiffstats
path: root/chrome/browser/ui/ash/volume_controller_chromeos.cc
diff options
context:
space:
mode:
authorjennyz@chromium.org <jennyz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-26 02:26:12 +0000
committerjennyz@chromium.org <jennyz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-26 02:26:12 +0000
commitcd5c280ae002a723ee6bd8a6ef0103af0ac9c77d (patch)
treef5ef236b81018fdd41cdcd14598ed13bbba5d957 /chrome/browser/ui/ash/volume_controller_chromeos.cc
parent313aa5d635ee33b659948ffa95a3e4914e165db6 (diff)
downloadchromium_src-cd5c280ae002a723ee6bd8a6ef0103af0ac9c77d.zip
chromium_src-cd5c280ae002a723ee6bd8a6ef0103af0ac9c77d.tar.gz
chromium_src-cd5c280ae002a723ee6bd8a6ef0103af0ac9c77d.tar.bz2
Fix several audio issues:
1. Audio button on ash tray UI does not work when user toggles it. 2. On ash tray bubble, if audio is muted, when user moves slider, audio is not unmuted. 3. Change CrasAudioHandler to update audio state, preference and notify observers for audio state change when user call CrasAudioHandler APIs to change the audio state, not when the dbus signals are received. 4. Move the code for adjusting unmute output volume to minimum unmute level out of SetOutputMute, and it is up to user to decide if they can call AdjustOutputVolumeToAudibleLevel to adjust the volume. 5. This also make the volume bubble shows up each time user presses mute, volume up, volume down button even if there is no audio state changes. BUG=242549,242964 TBR=jamescook@chromium.org Review URL: https://chromiumcodereview.appspot.com/15927004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@202334 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/ui/ash/volume_controller_chromeos.cc')
-rw-r--r--chrome/browser/ui/ash/volume_controller_chromeos.cc33
1 files changed, 18 insertions, 15 deletions
diff --git a/chrome/browser/ui/ash/volume_controller_chromeos.cc b/chrome/browser/ui/ash/volume_controller_chromeos.cc
index 2540a44..db93e82 100644
--- a/chrome/browser/ui/ash/volume_controller_chromeos.cc
+++ b/chrome/browser/ui/ash/volume_controller_chromeos.cc
@@ -10,6 +10,8 @@
#include "chrome/browser/extensions/api/system_private/system_private_api.h"
#include "content/public/browser/user_metrics.h"
+using chromeos::CrasAudioHandler;
+
namespace {
// Percent by which the volume should be changed when a volume key is pressed.
@@ -19,13 +21,12 @@ const double kStepPercentage = 4.0;
VolumeController::VolumeController() {
if (ash::switches::UseNewAudioHandler())
- chromeos::CrasAudioHandler::Get()->AddAudioObserver(this);
+ CrasAudioHandler::Get()->AddAudioObserver(this);
}
VolumeController::~VolumeController() {
- if (ash::switches::UseNewAudioHandler() &&
- chromeos::CrasAudioHandler::IsInitialized())
- chromeos::CrasAudioHandler::Get()->RemoveAudioObserver(this);
+ if (ash::switches::UseNewAudioHandler() && CrasAudioHandler::IsInitialized())
+ CrasAudioHandler::Get()->RemoveAudioObserver(this);
}
bool VolumeController::HandleVolumeMute(const ui::Accelerator& accelerator) {
@@ -33,7 +34,7 @@ bool VolumeController::HandleVolumeMute(const ui::Accelerator& accelerator) {
content::RecordAction(content::UserMetricsAction("Accel_VolumeMute_F8"));
if (ash::switches::UseNewAudioHandler()) {
- chromeos::CrasAudioHandler::Get()->SetOutputMute(true);
+ CrasAudioHandler::Get()->SetOutputMute(true);
return true;
}
@@ -53,12 +54,15 @@ bool VolumeController::HandleVolumeDown(const ui::Accelerator& accelerator) {
content::RecordAction(content::UserMetricsAction("Accel_VolumeDown_F9"));
if (ash::switches::UseNewAudioHandler()) {
- chromeos::CrasAudioHandler* audio_handler =
- chromeos::CrasAudioHandler::Get();
- if (audio_handler->IsOutputMuted())
+ CrasAudioHandler* audio_handler = CrasAudioHandler::Get();
+
+ if (audio_handler->IsOutputMuted()) {
audio_handler->SetOutputVolumePercent(0);
- else
+ } else {
audio_handler->AdjustOutputVolumeByPercent(-kStepPercentage);
+ if (audio_handler->IsOutputVolumeBelowDefaultMuteLvel())
+ audio_handler->SetOutputMute(true);
+ }
return true;
}
@@ -78,12 +82,11 @@ bool VolumeController::HandleVolumeUp(const ui::Accelerator& accelerator) {
content::RecordAction(content::UserMetricsAction("Accel_VolumeUp_F10"));
if (ash::switches::UseNewAudioHandler()) {
- chromeos::CrasAudioHandler* audio_handler =
- chromeos::CrasAudioHandler::Get();
+ CrasAudioHandler* audio_handler = CrasAudioHandler::Get();
+
if (audio_handler->IsOutputMuted())
audio_handler->SetOutputMute(false);
- else
- audio_handler->AdjustOutputVolumeByPercent(kStepPercentage);
+ audio_handler->AdjustOutputVolumeByPercent(kStepPercentage);
return true;
}
@@ -130,7 +133,7 @@ void VolumeController::SetVolumePercent(double percent) {
void VolumeController::OnOutputVolumeChanged() {
DCHECK(ash::switches::UseNewAudioHandler());
- chromeos::CrasAudioHandler* audio_handler = chromeos::CrasAudioHandler::Get();
+ CrasAudioHandler* audio_handler = CrasAudioHandler::Get();
extensions::DispatchVolumeChangedEvent(
audio_handler->GetOutputVolumePercent(),
audio_handler->IsOutputMuted());
@@ -138,7 +141,7 @@ void VolumeController::OnOutputVolumeChanged() {
void VolumeController::OnOutputMuteChanged() {
DCHECK(ash::switches::UseNewAudioHandler());
- chromeos::CrasAudioHandler* audio_handler = chromeos::CrasAudioHandler::Get();
+ CrasAudioHandler* audio_handler = CrasAudioHandler::Get();
extensions::DispatchVolumeChangedEvent(
audio_handler->GetOutputVolumePercent(),
audio_handler->IsOutputMuted());