Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(351)

Side by Side Diff: chrome/browser/ui/ash/volume_controller_chromeos.cc

Issue 15927004: Fix the audio mute button broken issue. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix nit. Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ash/system/chromeos/audio/tray_audio.cc ('k') | chromeos/audio/cras_audio_handler.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/ash/volume_controller_chromeos.h" 5 #include "chrome/browser/ui/ash/volume_controller_chromeos.h"
6 6
7 #include "ash/ash_switches.h" 7 #include "ash/ash_switches.h"
8 #include "chrome/browser/browser_process.h" 8 #include "chrome/browser/browser_process.h"
9 #include "chrome/browser/chromeos/audio/audio_handler.h" 9 #include "chrome/browser/chromeos/audio/audio_handler.h"
10 #include "chrome/browser/extensions/api/system_private/system_private_api.h" 10 #include "chrome/browser/extensions/api/system_private/system_private_api.h"
11 #include "content/public/browser/user_metrics.h" 11 #include "content/public/browser/user_metrics.h"
12 12
13 using chromeos::CrasAudioHandler;
14
13 namespace { 15 namespace {
14 16
15 // Percent by which the volume should be changed when a volume key is pressed. 17 // Percent by which the volume should be changed when a volume key is pressed.
16 const double kStepPercentage = 4.0; 18 const double kStepPercentage = 4.0;
17 19
18 } // namespace 20 } // namespace
19 21
20 VolumeController::VolumeController() { 22 VolumeController::VolumeController() {
21 if (ash::switches::UseNewAudioHandler()) 23 if (ash::switches::UseNewAudioHandler())
22 chromeos::CrasAudioHandler::Get()->AddAudioObserver(this); 24 CrasAudioHandler::Get()->AddAudioObserver(this);
23 } 25 }
24 26
25 VolumeController::~VolumeController() { 27 VolumeController::~VolumeController() {
26 if (ash::switches::UseNewAudioHandler() && 28 if (ash::switches::UseNewAudioHandler() && CrasAudioHandler::IsInitialized())
27 chromeos::CrasAudioHandler::IsInitialized()) 29 CrasAudioHandler::Get()->RemoveAudioObserver(this);
28 chromeos::CrasAudioHandler::Get()->RemoveAudioObserver(this);
29 } 30 }
30 31
31 bool VolumeController::HandleVolumeMute(const ui::Accelerator& accelerator) { 32 bool VolumeController::HandleVolumeMute(const ui::Accelerator& accelerator) {
32 if (accelerator.key_code() == ui::VKEY_VOLUME_MUTE) 33 if (accelerator.key_code() == ui::VKEY_VOLUME_MUTE)
33 content::RecordAction(content::UserMetricsAction("Accel_VolumeMute_F8")); 34 content::RecordAction(content::UserMetricsAction("Accel_VolumeMute_F8"));
34 35
35 if (ash::switches::UseNewAudioHandler()) { 36 if (ash::switches::UseNewAudioHandler()) {
36 chromeos::CrasAudioHandler::Get()->SetOutputMute(true); 37 CrasAudioHandler::Get()->SetOutputMute(true);
37 return true; 38 return true;
38 } 39 }
39 40
40 chromeos::AudioHandler* audio_handler = chromeos::AudioHandler::GetInstance(); 41 chromeos::AudioHandler* audio_handler = chromeos::AudioHandler::GetInstance();
41 42
42 // Always muting (and not toggling) as per final decision on 43 // Always muting (and not toggling) as per final decision on
43 // http://crosbug.com/3751 44 // http://crosbug.com/3751
44 audio_handler->SetMuted(true); 45 audio_handler->SetMuted(true);
45 46
46 extensions::DispatchVolumeChangedEvent(audio_handler->GetVolumePercent(), 47 extensions::DispatchVolumeChangedEvent(audio_handler->GetVolumePercent(),
47 audio_handler->IsMuted()); 48 audio_handler->IsMuted());
48 return true; 49 return true;
49 } 50 }
50 51
51 bool VolumeController::HandleVolumeDown(const ui::Accelerator& accelerator) { 52 bool VolumeController::HandleVolumeDown(const ui::Accelerator& accelerator) {
52 if (accelerator.key_code() == ui::VKEY_VOLUME_DOWN) 53 if (accelerator.key_code() == ui::VKEY_VOLUME_DOWN)
53 content::RecordAction(content::UserMetricsAction("Accel_VolumeDown_F9")); 54 content::RecordAction(content::UserMetricsAction("Accel_VolumeDown_F9"));
54 55
55 if (ash::switches::UseNewAudioHandler()) { 56 if (ash::switches::UseNewAudioHandler()) {
56 chromeos::CrasAudioHandler* audio_handler = 57 CrasAudioHandler* audio_handler = CrasAudioHandler::Get();
57 chromeos::CrasAudioHandler::Get(); 58
58 if (audio_handler->IsOutputMuted()) 59 if (audio_handler->IsOutputMuted()) {
59 audio_handler->SetOutputVolumePercent(0); 60 audio_handler->SetOutputVolumePercent(0);
60 else 61 } else {
61 audio_handler->AdjustOutputVolumeByPercent(-kStepPercentage); 62 audio_handler->AdjustOutputVolumeByPercent(-kStepPercentage);
63 if (audio_handler->IsOutputVolumeBelowDefaultMuteLvel())
64 audio_handler->SetOutputMute(true);
65 }
62 return true; 66 return true;
63 } 67 }
64 68
65 chromeos::AudioHandler* audio_handler = chromeos::AudioHandler::GetInstance(); 69 chromeos::AudioHandler* audio_handler = chromeos::AudioHandler::GetInstance();
66 if (audio_handler->IsMuted()) 70 if (audio_handler->IsMuted())
67 audio_handler->SetVolumePercent(0.0); 71 audio_handler->SetVolumePercent(0.0);
68 else 72 else
69 audio_handler->AdjustVolumeByPercent(-kStepPercentage); 73 audio_handler->AdjustVolumeByPercent(-kStepPercentage);
70 74
71 extensions::DispatchVolumeChangedEvent(audio_handler->GetVolumePercent(), 75 extensions::DispatchVolumeChangedEvent(audio_handler->GetVolumePercent(),
72 audio_handler->IsMuted()); 76 audio_handler->IsMuted());
73 return true; 77 return true;
74 } 78 }
75 79
76 bool VolumeController::HandleVolumeUp(const ui::Accelerator& accelerator) { 80 bool VolumeController::HandleVolumeUp(const ui::Accelerator& accelerator) {
77 if (accelerator.key_code() == ui::VKEY_VOLUME_UP) 81 if (accelerator.key_code() == ui::VKEY_VOLUME_UP)
78 content::RecordAction(content::UserMetricsAction("Accel_VolumeUp_F10")); 82 content::RecordAction(content::UserMetricsAction("Accel_VolumeUp_F10"));
79 83
80 if (ash::switches::UseNewAudioHandler()) { 84 if (ash::switches::UseNewAudioHandler()) {
81 chromeos::CrasAudioHandler* audio_handler = 85 CrasAudioHandler* audio_handler = CrasAudioHandler::Get();
82 chromeos::CrasAudioHandler::Get(); 86
83 if (audio_handler->IsOutputMuted()) 87 if (audio_handler->IsOutputMuted())
84 audio_handler->SetOutputMute(false); 88 audio_handler->SetOutputMute(false);
85 else 89 audio_handler->AdjustOutputVolumeByPercent(kStepPercentage);
86 audio_handler->AdjustOutputVolumeByPercent(kStepPercentage);
87 return true; 90 return true;
88 } 91 }
89 92
90 chromeos::AudioHandler* audio_handler = chromeos::AudioHandler::GetInstance(); 93 chromeos::AudioHandler* audio_handler = chromeos::AudioHandler::GetInstance();
91 if (audio_handler->IsMuted()) { 94 if (audio_handler->IsMuted()) {
92 audio_handler->SetMuted(false); 95 audio_handler->SetMuted(false);
93 } else { 96 } else {
94 audio_handler->AdjustVolumeByPercent(kStepPercentage); 97 audio_handler->AdjustVolumeByPercent(kStepPercentage);
95 } 98 }
96 99
(...skipping 26 matching lines...) Expand all
123 void VolumeController::SetVolumePercent(double percent) { 126 void VolumeController::SetVolumePercent(double percent) {
124 DCHECK(!ash::switches::UseNewAudioHandler()); 127 DCHECK(!ash::switches::UseNewAudioHandler());
125 chromeos::AudioHandler* audio_handler = chromeos::AudioHandler::GetInstance(); 128 chromeos::AudioHandler* audio_handler = chromeos::AudioHandler::GetInstance();
126 audio_handler->SetVolumePercent(percent); 129 audio_handler->SetVolumePercent(percent);
127 extensions::DispatchVolumeChangedEvent(audio_handler->GetVolumePercent(), 130 extensions::DispatchVolumeChangedEvent(audio_handler->GetVolumePercent(),
128 audio_handler->IsMuted()); 131 audio_handler->IsMuted());
129 } 132 }
130 133
131 void VolumeController::OnOutputVolumeChanged() { 134 void VolumeController::OnOutputVolumeChanged() {
132 DCHECK(ash::switches::UseNewAudioHandler()); 135 DCHECK(ash::switches::UseNewAudioHandler());
133 chromeos::CrasAudioHandler* audio_handler = chromeos::CrasAudioHandler::Get(); 136 CrasAudioHandler* audio_handler = CrasAudioHandler::Get();
134 extensions::DispatchVolumeChangedEvent( 137 extensions::DispatchVolumeChangedEvent(
135 audio_handler->GetOutputVolumePercent(), 138 audio_handler->GetOutputVolumePercent(),
136 audio_handler->IsOutputMuted()); 139 audio_handler->IsOutputMuted());
137 } 140 }
138 141
139 void VolumeController::OnOutputMuteChanged() { 142 void VolumeController::OnOutputMuteChanged() {
140 DCHECK(ash::switches::UseNewAudioHandler()); 143 DCHECK(ash::switches::UseNewAudioHandler());
141 chromeos::CrasAudioHandler* audio_handler = chromeos::CrasAudioHandler::Get(); 144 CrasAudioHandler* audio_handler = CrasAudioHandler::Get();
142 extensions::DispatchVolumeChangedEvent( 145 extensions::DispatchVolumeChangedEvent(
143 audio_handler->GetOutputVolumePercent(), 146 audio_handler->GetOutputVolumePercent(),
144 audio_handler->IsOutputMuted()); 147 audio_handler->IsOutputMuted());
145 } 148 }
OLDNEW
« no previous file with comments | « ash/system/chromeos/audio/tray_audio.cc ('k') | chromeos/audio/cras_audio_handler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698