user_input_monitor_mac.cc revision 424c4d7b64af9d0d8fd9624f381f469654d5e3d2
1424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
2424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// found in the LICENSE file.
4424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
5424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)#include "media/base/user_input_monitor.h"
6424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
7424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)#include <ApplicationServices/ApplicationServices.h>
8424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
9424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)namespace media {
10424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)namespace {
11424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
12424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)class UserInputMonitorMac : public UserInputMonitor {
13424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) public:
14424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)  UserInputMonitorMac();
15424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)  virtual ~UserInputMonitorMac();
16424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
17424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)  virtual size_t GetKeyPressCount() const OVERRIDE;
18424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
19424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) private:
20424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)  virtual void StartMouseMonitoring() OVERRIDE;
21424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)  virtual void StopMouseMonitoring() OVERRIDE;
22424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)  virtual void StartKeyboardMonitoring() OVERRIDE;
23424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)  virtual void StopKeyboardMonitoring() OVERRIDE;
24424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
25424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(UserInputMonitorMac);
26424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)};
27424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
28424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)UserInputMonitorMac::UserInputMonitorMac() {}
29424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
30424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)UserInputMonitorMac::~UserInputMonitorMac() {}
31424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
32424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)size_t UserInputMonitorMac::GetKeyPressCount() const {
33424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)  // Use |kCGEventSourceStateHIDSystemState| since we only want to count
34424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)  // hardware generated events.
35424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)  return CGEventSourceCounterForEventType(kCGEventSourceStateHIDSystemState,
36424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)                                          kCGEventKeyDown);
37424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)}
38424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
39424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// TODO(jiayl): add the impl.
40424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)void UserInputMonitorMac::StartMouseMonitoring() { NOTIMPLEMENTED(); }
41424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
42424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// TODO(jiayl): add the impl.
43424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)void UserInputMonitorMac::StopMouseMonitoring() { NOTIMPLEMENTED(); }
44424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
45424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)void UserInputMonitorMac::StartKeyboardMonitoring() {}
46424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
47424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)void UserInputMonitorMac::StopKeyboardMonitoring() {}
48424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
49424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)}  // namespace
50424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
51424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)scoped_ptr<UserInputMonitor> UserInputMonitor::Create(
52424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)    const scoped_refptr<base::SingleThreadTaskRunner>& input_task_runner,
53424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)    const scoped_refptr<base::SingleThreadTaskRunner>& ui_task_runner) {
54424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)  return scoped_ptr<UserInputMonitor>(new UserInputMonitorMac());
55424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)}
56424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
57424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)}  // namespace media
58