1// Copyright 2013 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// This class is used to detect device change and notify base::SystemMonitor
6// on Linux.
7
8#ifndef CONTENT_BROWSER_DEVICE_MONITOR_UDEV_H_
9#define CONTENT_BROWSER_DEVICE_MONITOR_UDEV_H_
10
11#include "base/basictypes.h"
12#include "base/memory/scoped_ptr.h"
13#include "base/message_loop/message_loop.h"
14
15extern "C" {
16struct udev_device;
17}
18
19namespace content {
20
21class UdevLinux;
22
23class DeviceMonitorLinux : public base::MessageLoop::DestructionObserver {
24 public:
25  DeviceMonitorLinux();
26  virtual ~DeviceMonitorLinux();
27
28 private:
29  // This object is deleted on the UI thread after the IO thread has been
30  // destroyed. Need to know when IO thread is being destroyed so that
31  // we can delete udev_.
32  virtual void WillDestroyCurrentMessageLoop() OVERRIDE;
33
34  void Initialize();
35  void OnDevicesChanged(udev_device* device);
36
37  scoped_ptr<UdevLinux> udev_;
38
39  DISALLOW_COPY_AND_ASSIGN(DeviceMonitorLinux);
40};
41
42}  // namespace content
43
44#endif  // CONTENT_BROWSER_DEVICE_MONITOR_UDEV_H_
45