1// Copyright 2014 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 DEVICE_CORE_DEVICE_CLIENT_H_
6#define DEVICE_CORE_DEVICE_CLIENT_H_
7
8#include "base/macros.h"
9
10namespace device {
11
12class HidService;
13class UsbService;
14
15// Interface used by consumers of //device APIs to get pointers to the service
16// singletons appropriate for a given embedding application. For an example see
17// //chrome/browser/chrome_device_client.h.
18class DeviceClient {
19 public:
20  // Construction sets the single instance.
21  DeviceClient();
22
23  // Destruction clears the single instance.
24  ~DeviceClient();
25
26  // Returns the single instance of |this|.
27  static DeviceClient* Get();
28
29  // Returns the UsbService instance for this embedder.
30  virtual UsbService* GetUsbService();
31
32  // Returns the HidService instance for this embedder.
33  virtual HidService* GetHidService();
34
35 private:
36  DISALLOW_COPY_AND_ASSIGN(DeviceClient);
37};
38
39}  // namespace device
40
41#endif  // DEVICE_CORE_DEVICE_CLIENT_H_
42