diff options
Diffstat (limited to 'chromium/media/base/keyboard_event_counter.h')
-rw-r--r-- | chromium/media/base/keyboard_event_counter.h | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/chromium/media/base/keyboard_event_counter.h b/chromium/media/base/keyboard_event_counter.h new file mode 100644 index 00000000000..accb659410e --- /dev/null +++ b/chromium/media/base/keyboard_event_counter.h @@ -0,0 +1,49 @@ +// Copyright 2013 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef MEDIA_BASE_KEYBOARD_EVENT_COUNTER_H_ +#define MEDIA_BASE_KEYBOARD_EVENT_COUNTER_H_ + +#include <set> + +#include "base/synchronization/lock.h" +#include "media/base/media_export.h" +#include "ui/events/event_constants.h" +#include "ui/events/keycodes/keyboard_codes.h" + +namespace media { + +// This class tracks the total number of keypresses based on the OnKeyboardEvent +// calls it receives from the client. +// Multiple key down events for the same key are counted as one keypress until +// the same key is released. +class MEDIA_EXPORT KeyboardEventCounter { + public: + KeyboardEventCounter(); + ~KeyboardEventCounter(); + + // Resets the count to 0. Must be called on the same thread as + // OnKeyboardEvent. + void Reset(); + + // Returns the total number of keypresses since its creation or last Reset() + // call. Can be called on any thread. + size_t GetKeyPressCount() const; + + // The client should call this method on key down or key up events. + // Must be called on a single thread. + void OnKeyboardEvent(ui::EventType event, ui::KeyboardCode key_code); + + private: + // The set of keys currently held down. + std::set<ui::KeyboardCode> pressed_keys_; + + size_t total_key_presses_; + + DISALLOW_COPY_AND_ASSIGN(KeyboardEventCounter); +}; + +} // namespace media + +#endif // MEDIA_BASE_KEYBOARD_EVENT_COUNTER_H_ |