// Copyright 2014 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 DEVICE_HID_HID_SERVICE_MAC_H_ #define DEVICE_HID_HID_SERVICE_MAC_H_ #include #include #include #include "base/mac/foundation_util.h" #include "base/memory/ref_counted.h" #include "device/hid/hid_service.h" namespace base { class MessageLoopProxy; } namespace device { class HidConnection; class HidServiceMac : public HidService { public: HidServiceMac(); virtual scoped_refptr Connect(const HidDeviceId& device_id) OVERRIDE; private: virtual ~HidServiceMac(); void StartWatchingDevices(); void StopWatchingDevices(); // Device changing callbacks. static void AddDeviceCallback(void* context, IOReturn result, void* sender, IOHIDDeviceRef hid_device); static void RemoveDeviceCallback(void* context, IOReturn result, void* sender, IOHIDDeviceRef hid_device); void Enumerate(); void PlatformAddDevice(IOHIDDeviceRef hid_device); void PlatformRemoveDevice(IOHIDDeviceRef hid_device); // Platform HID Manager base::ScopedCFTypeRef hid_manager_; // The message loop for the thread on which this service was created. scoped_refptr message_loop_; DISALLOW_COPY_AND_ASSIGN(HidServiceMac); }; } // namespace device #endif // DEVICE_HID_HID_SERVICE_MAC_H_