Implement nacl_irt_memory for non-sfi mode.
[chromium-blink-merge.git] / device / bluetooth / bluetooth_profile_chromeos.h
blobc13951e168a30831c0a9b3bf9f7924854b01f6e8
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.
5 #ifndef DEVICE_BLUETOOTH_BLUETOOTH_PROFILE_CHROMEOS_H_
6 #define DEVICE_BLUETOOTH_BLUETOOTH_PROFILE_CHROMEOS_H_
8 #include <string>
10 #include "base/basictypes.h"
11 #include "base/callback.h"
12 #include "base/memory/scoped_ptr.h"
13 #include "base/memory/weak_ptr.h"
14 #include "chromeos/chromeos_export.h"
15 #include "chromeos/dbus/bluetooth_profile_service_provider.h"
16 #include "dbus/object_path.h"
17 #include "device/bluetooth/bluetooth_profile.h"
19 namespace dbus {
21 class FileDescriptor;
23 } // namespace dbus
25 namespace device {
27 class BluetoothAdapter;
29 } // namespace device
31 namespace chromeos {
33 // The BluetoothProfileChromeOS class implements BluetoothProfile for the
34 // Chrome OS platform.
35 class CHROMEOS_EXPORT BluetoothProfileChromeOS
36 : public device::BluetoothProfile,
37 private BluetoothProfileServiceProvider::Delegate {
38 public:
39 // BluetoothProfile override.
40 virtual void Unregister() OVERRIDE;
41 virtual void SetConnectionCallback(
42 const ConnectionCallback& callback) OVERRIDE;
44 // Return the UUID of the profile.
45 const std::string& uuid() const { return uuid_; }
47 private:
48 friend class BluetoothProfile;
50 BluetoothProfileChromeOS();
51 virtual ~BluetoothProfileChromeOS();
53 // Called by BluetoothProfile::Register to initialize the profile object
54 // asynchronously. |uuid|, |options| and |callback| are the arguments to
55 // BluetoothProfile::Register.
56 void Init(const std::string& uuid,
57 const device::BluetoothProfile::Options& options,
58 const ProfileCallback& callback);
60 // BluetoothProfileServiceProvider::Delegate override.
61 virtual void Release() OVERRIDE;
62 virtual void NewConnection(
63 const dbus::ObjectPath& device_path,
64 scoped_ptr<dbus::FileDescriptor> fd,
65 const BluetoothProfileServiceProvider::Delegate::Options& options,
66 const ConfirmationCallback& callback) OVERRIDE;
67 virtual void RequestDisconnection(
68 const dbus::ObjectPath& device_path,
69 const ConfirmationCallback& callback) OVERRIDE;
70 virtual void Cancel() OVERRIDE;
72 // Called by dbus:: on completion of the D-Bus method call to register the
73 // profile object.
74 void OnRegisterProfile(const ProfileCallback& callback);
75 void OnRegisterProfileError(const ProfileCallback& callback,
76 const std::string& error_name,
77 const std::string& error_message);
79 // Called by dbus:: on completion of the D-Bus method call to unregister
80 // the profile object.
81 void OnUnregisterProfile();
82 void OnUnregisterProfileError(const std::string& error_name,
83 const std::string& error_message);
85 // Method run once the file descriptor has been validated in order to get
86 // the default adapter, and method run once the default adapter has been
87 // obtained in order to get the device object to be passed to the connection
88 // callback.
90 // The |fd| argument is moved compared to the NewConnection() call since it
91 // becomes the result of a PostTaskAndReplyWithResult() call.
92 void GetAdapter(
93 const dbus::ObjectPath& device_path,
94 const BluetoothProfileServiceProvider::Delegate::Options& options,
95 const ConfirmationCallback& callback,
96 scoped_ptr<dbus::FileDescriptor> fd);
97 void OnGetAdapter(
98 const dbus::ObjectPath& device_path,
99 const BluetoothProfileServiceProvider::Delegate::Options& options,
100 const ConfirmationCallback& callback,
101 scoped_ptr<dbus::FileDescriptor> fd,
102 scoped_refptr<device::BluetoothAdapter>);
104 // UUID of the profile passed during initialization.
105 std::string uuid_;
107 // Object path of the local profile D-Bus object.
108 dbus::ObjectPath object_path_;
110 // Local profile D-Bus object used for receiving profile delegate methods
111 // from BlueZ.
112 scoped_ptr<BluetoothProfileServiceProvider> profile_;
114 // Callback used on both outgoing and incoming connections to pass the
115 // connected socket to profile object owner.
116 ConnectionCallback connection_callback_;
118 // Note: This should remain the last member so it'll be destroyed and
119 // invalidate its weak pointers before any other members are destroyed.
120 base::WeakPtrFactory<BluetoothProfileChromeOS> weak_ptr_factory_;
122 DISALLOW_COPY_AND_ASSIGN(BluetoothProfileChromeOS);
125 } // namespace chromeos
127 #endif // DEVICE_BLUETOOTH_BLUETOOTH_PROFILE_CHROMEOS_H_