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 EXTENSIONS_BROWSER_API_HID_HID_CONNECTION_RESOURCE_H_
6#define EXTENSIONS_BROWSER_API_HID_HID_CONNECTION_RESOURCE_H_
7
8#include <string>
9
10#include "base/memory/ref_counted.h"
11#include "content/public/browser/browser_thread.h"
12#include "device/hid/hid_connection.h"
13#include "extensions/browser/api/api_resource.h"
14#include "extensions/browser/api/api_resource_manager.h"
15
16namespace device {
17class HidConnection;
18}
19
20namespace extensions {
21
22class HidConnectionResource : public ApiResource {
23 public:
24#if defined(OS_MACOSX)
25  // Migration from FILE thread to UI thread. OS X gets it first.
26  static const content::BrowserThread::ID kThreadId =
27      content::BrowserThread::UI;
28#else
29  // TODO(reillyg): Migrate Linux/CrOS and Windows as well.
30  static const content::BrowserThread::ID kThreadId =
31      content::BrowserThread::FILE;
32#endif
33
34  HidConnectionResource(const std::string& owner_extension_id,
35                        scoped_refptr<device::HidConnection> connection);
36  virtual ~HidConnectionResource();
37
38  scoped_refptr<device::HidConnection> connection() const {
39    return connection_;
40  }
41
42  virtual bool IsPersistent() const OVERRIDE;
43
44  static const char* service_name() { return "HidConnectionResourceManager"; }
45
46 private:
47  scoped_refptr<device::HidConnection> connection_;
48
49  DISALLOW_COPY_AND_ASSIGN(HidConnectionResource);
50};
51
52}  // namespace extensions
53
54#endif  // EXTENSIONS_BROWSER_API_HID_HID_CONNECTION_RESOURCE_H_
55