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 StartKeyboardMonitoring() OVERRIDE;
21424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)  virtual void StopKeyboardMonitoring() OVERRIDE;
22d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  virtual void StartMouseMonitoring() OVERRIDE;
23d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  virtual void StopMouseMonitoring() 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)
39d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)void UserInputMonitorMac::StartKeyboardMonitoring() {}
40d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)
41d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)void UserInputMonitorMac::StopKeyboardMonitoring() {}
42d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)
43424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// TODO(jiayl): add the impl.
44424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)void UserInputMonitorMac::StartMouseMonitoring() { NOTIMPLEMENTED(); }
45424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
46424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// TODO(jiayl): add the impl.
47424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)void UserInputMonitorMac::StopMouseMonitoring() { NOTIMPLEMENTED(); }
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