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

Unified Diff: media/base/user_input_monitor.cc

Issue 22801007: Adds the UserInputMonitor implementation for Mac. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: media/base/user_input_monitor.cc
diff --git a/media/base/user_input_monitor.cc b/media/base/user_input_monitor.cc
index 18b4c8060f64e34437d4e3e9222fde4d18af520a..dc19574a11feb03fc531de15818b6d28e039e290 100644
--- a/media/base/user_input_monitor.cc
+++ b/media/base/user_input_monitor.cc
@@ -18,7 +18,7 @@ scoped_ptr<UserInputMonitor> UserInputMonitor::Create(
UserInputMonitor::~UserInputMonitor() {
DCHECK(!monitoring_mouse_);
- DCHECK(!monitoring_keyboard_);
+ DCHECK(!key_press_counter_references_);
}
void UserInputMonitor::AddMouseListener(MouseEventListener* listener) {
@@ -30,6 +30,7 @@ void UserInputMonitor::AddMouseListener(MouseEventListener* listener) {
DVLOG(2) << "Started mouse monitoring.";
}
}
+
void UserInputMonitor::RemoveMouseListener(MouseEventListener* listener) {
base::AutoLock auto_lock(lock_);
mouse_listeners_.RemoveObserver(listener);
@@ -39,30 +40,43 @@ void UserInputMonitor::RemoveMouseListener(MouseEventListener* listener) {
DVLOG(2) << "Stopped mouse monitoring.";
}
}
-void UserInputMonitor::AddKeyStrokeListener(KeyStrokeListener* listener) {
+
+void UserInputMonitor::EnableKeyPressMonitoring() {
base::AutoLock auto_lock(lock_);
- key_stroke_listeners_.AddObserver(listener);
- if (!monitoring_keyboard_) {
+ key_press_counter_references_++;
DaleCurtis 2013/08/23 02:16:22 style perfers ++var or you can inline it in the if
+ if (key_press_counter_references_ == 1) {
StartKeyboardMonitoring();
- monitoring_keyboard_ = true;
DVLOG(2) << "Started keyboard monitoring.";
}
}
-void UserInputMonitor::RemoveKeyStrokeListener(KeyStrokeListener* listener) {
+
+void UserInputMonitor::DisableKeyPressMonitoring() {
base::AutoLock auto_lock(lock_);
- key_stroke_listeners_.RemoveObserver(listener);
- if (key_stroke_listeners_.size() == 0) {
+ DCHECK(key_press_counter_references_ > 0);
DaleCurtis 2013/08/23 02:16:22 DCHECK_GT
+ key_press_counter_references_--;
DaleCurtis 2013/08/23 02:16:22 prefer --var ditto on inline if you want.
+ if (key_press_counter_references_ == 0) {
StopKeyboardMonitoring();
- monitoring_keyboard_ = false;
+ pressed_keys_.clear();
+ total_key_presses_ = 0;
DVLOG(2) << "Stopped keyboard monitoring.";
}
}
+size_t UserInputMonitor::GetKeyPressCount() const {
+ base::AutoLock auto_lock(lock_);
+ DCHECK(key_press_counter_references_);
+ return total_key_presses_;
+}
+
UserInputMonitor::UserInputMonitor()
- : monitoring_mouse_(false), monitoring_keyboard_(false) {}
+ : monitoring_mouse_(false),
+ key_press_counter_references_(0),
+ total_key_presses_(0) {}
void UserInputMonitor::OnMouseEvent(const SkIPoint& position) {
base::AutoLock auto_lock(lock_);
+ if (!monitoring_mouse_)
+ return;
FOR_EACH_OBSERVER(
MouseEventListener, mouse_listeners_, OnMouseMoved(position));
}
@@ -70,13 +84,15 @@ void UserInputMonitor::OnMouseEvent(const SkIPoint& position) {
void UserInputMonitor::OnKeyboardEvent(ui::EventType event,
ui::KeyboardCode key_code) {
base::AutoLock auto_lock(lock_);
- // Updates the pressed keys and maybe notifies the key_stroke_listeners_.
+ if (!key_press_counter_references_)
+ return;
+ // Updates the pressed keys and the total count of key presses.
if (event == ui::ET_KEY_PRESSED) {
if (pressed_keys_.find(key_code) != pressed_keys_.end())
return;
pressed_keys_.insert(key_code);
- DVLOG(6) << "Key stroke detected.";
- FOR_EACH_OBSERVER(KeyStrokeListener, key_stroke_listeners_, OnKeyStroke());
+ total_key_presses_++;
DaleCurtis 2013/08/23 02:16:22 Prefer ++var.
+ DVLOG(6) << "Key press detected, total count: " << total_key_presses_;
} else {
DCHECK_EQ(ui::ET_KEY_RELEASED, event);
DCHECK(pressed_keys_.find(key_code) != pressed_keys_.end());

Powered by Google App Engine
This is Rietveld 408576698