Index: chrome/browser/chromeos/system_key_event_listener.cc |
=================================================================== |
--- chrome/browser/chromeos/system_key_event_listener.cc (revision 118753) |
+++ chrome/browser/chromeos/system_key_event_listener.cc (working copy) |
@@ -9,6 +9,7 @@ |
#include <X11/XF86keysym.h> |
#include <X11/XKBlib.h> |
+#include "base/command_line.h" |
#include "chrome/browser/accessibility/accessibility_events.h" |
#include "chrome/browser/chromeos/audio/audio_handler.h" |
#include "chrome/browser/chromeos/dbus/dbus_thread_manager.h" |
@@ -18,6 +19,7 @@ |
#include "chrome/browser/chromeos/input_method/xkeyboard.h" |
#include "chrome/browser/chromeos/ui/brightness_bubble.h" |
#include "chrome/browser/chromeos/ui/volume_bubble.h" |
+#include "chrome/common/chrome_switches.h" |
#include "content/public/browser/user_metrics.h" |
#include "third_party/cros_system_api/window_manager/chromeos_wm_ipc_enums.h" |
#include "ui/base/x/x11_util.h" |
@@ -50,6 +52,11 @@ |
static SystemKeyEventListener* g_system_key_event_listener = NULL; |
+bool ShowVolumeStatus() { |
+ return CommandLine::ForCurrentProcess()-> |
+ HasSwitch(switches::kShowVolumeStatus); |
+} |
+ |
} // namespace |
// static |
@@ -76,6 +83,7 @@ |
SystemKeyEventListener::SystemKeyEventListener() |
: stopped_(false), |
+ show_status_area_volume_(ShowVolumeStatus()), |
num_lock_mask_(input_method::XKeyboard::GetNumLockMask()), |
xkb_event_base_(0) { |
input_method::XKeyboard::GetLockedModifiers( |
@@ -165,6 +173,17 @@ |
caps_lock_observers_.RemoveObserver(observer); |
} |
+void SystemKeyEventListener::AddStatusAreaVolumeObserver( |
+ StatusAreaVolumeObserver* observer) { |
+ status_area_volume_observers_.AddObserver(observer); |
+ ShowStatusAreaVolume(show_status_area_volume_); |
xiyuan
2012/01/25 04:43:12
I don't think this should be here.
Could we do so
achuithb
2012/01/25 10:46:06
Done.
|
+} |
+ |
+void SystemKeyEventListener::RemoveStatusAreaVolumeObserver( |
+ StatusAreaVolumeObserver* observer) { |
+ status_area_volume_observers_.RemoveObserver(observer); |
+} |
+ |
#if defined(TOOLKIT_USES_GTK) |
// static |
GdkFilterReturn SystemKeyEventListener::GdkEventFilter(GdkXEvent* gxevent, |
@@ -210,6 +229,9 @@ |
} |
void SystemKeyEventListener::OnVolumeMute() { |
+ if (show_status_area_volume_) |
+ return; |
xiyuan
2012/01/25 04:43:12
Would those system volume keys still work after th
achuithb
2012/01/25 10:46:06
The keys would no longer work. The idea is that th
Daniel Erat
2012/01/25 15:58:51
What's the motivation for making the keys not cont
|
+ |
AudioHandler* audio_handler = GetAudioHandler(); |
if (!audio_handler) |
return; |
@@ -226,6 +248,9 @@ |
} |
void SystemKeyEventListener::OnVolumeDown() { |
+ if (show_status_area_volume_) |
+ return; |
+ |
AudioHandler* audio_handler = GetAudioHandler(); |
if (!audio_handler) |
return; |
@@ -243,6 +268,9 @@ |
} |
void SystemKeyEventListener::OnVolumeUp() { |
+ if (show_status_area_volume_) |
+ return; |
+ |
AudioHandler* audio_handler = GetAudioHandler(); |
if (!audio_handler) |
return; |
@@ -263,10 +291,18 @@ |
} |
void SystemKeyEventListener::OnCapsLock(bool enabled) { |
- FOR_EACH_OBSERVER( |
- CapsLockObserver, caps_lock_observers_, OnCapsLockChange(enabled)); |
+ FOR_EACH_OBSERVER(CapsLockObserver, |
+ caps_lock_observers_, |
+ OnCapsLockChange(enabled)); |
} |
+void SystemKeyEventListener::ShowStatusAreaVolume(bool show) { |
+ show_status_area_volume_ = show; |
+ FOR_EACH_OBSERVER(StatusAreaVolumeObserver, |
+ status_area_volume_observers_, |
+ ShowStatusAreaVolume(show)); |
+} |
+ |
void SystemKeyEventListener::ShowVolumeBubble() { |
AudioHandler* audio_handler = GetAudioHandler(); |
if (audio_handler) { |