blob: 52cbea17d4af68d7cc25e7dd1c00fdf83d1fcb36 [file] [log] [blame]
[email protected]14625442012-08-15 12:51:421// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CONTENT_BROWSER_DEVICE_MONITOR_MAC_H_
6#define CONTENT_BROWSER_DEVICE_MONITOR_MAC_H_
7
8#include <IOKit/IOKitLib.h>
9
10#include <vector>
11
12#include "base/basictypes.h"
13#include "base/system_monitor/system_monitor.h"
14
15namespace content {
16
17class DeviceMonitorMac {
18 public:
19 DeviceMonitorMac();
20 ~DeviceMonitorMac();
21
22 private:
23 void RegisterAudioServices();
24 void RegisterVideoServices();
25
26 static void AudioDeviceCallback(void *context, io_iterator_t iterator);
27 static void VideoDeviceCallback(void *context, io_iterator_t iterator);
28
29 // Forward the notifications to system monitor.
30 void NotifyDeviceChanged(base::SystemMonitor::DeviceType type);
31
32 // Helper.
33 void RegisterServices(CFMutableDictionaryRef dictionary,
34 IOServiceMatchingCallback callback);
35
36 IONotificationPortRef notification_port_;
37 std::vector<io_iterator_t*> notification_iterators_;
38
39 DISALLOW_COPY_AND_ASSIGN(DeviceMonitorMac);
40};
41
42} // namespace content
43
44#endif // CONTENT_BROWSER_DEVICE_MONITOR_MAC_H_