Updating trunk VERSION from 2139.0 to 2140.0
[chromium-blink-merge.git] / device / bluetooth / bluetooth_discovery_manager_mac.h
blob534646aec36b31b3aeb9eb6e77803642be78ce75
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.
5 #ifndef DEVICE_BLUETOOTH_BLUETOOTH_DISCOVERY_MANAGER_MAC_H_
6 #define DEVICE_BLUETOOTH_BLUETOOTH_DISCOVERY_MANAGER_MAC_H_
8 #include "base/macros.h"
10 @class IOBluetoothDevice;
12 namespace device {
14 // Class used by BluetoothAdapterMac to manage classic and LE device discovery.
15 // For Bluetooth Classic, this class is responsible for keeping device inquiry
16 // running if device discovery is initiated.
17 class BluetoothDiscoveryManagerMac {
18 public:
19 // Interface for being notified of events during a device discovery session.
20 class Observer {
21 public:
22 // Called when |this| manager has found a device through classic device
23 // inquiry in the form of an IOBluetoothDevice.
24 virtual void DeviceFound(IOBluetoothDevice* device) = 0;
26 // Called when device discovery is no longer running, due to either a call
27 // to BluetoothDiscoveryManagerMac::StopDiscovery or an unexpected reason,
28 // such as when a user disables the controller, in which case the value of
29 // |unexpected| will be true.
30 virtual void DiscoveryStopped(bool unexpected) = 0;
33 virtual ~BluetoothDiscoveryManagerMac();
35 // Returns true, if discovery is currently being performed.
36 virtual bool IsDiscovering() const = 0;
38 // Initiates a discovery session. Returns true on success or if discovery
39 // is already running. Returns false on failure.
40 virtual bool StartDiscovery() = 0;
42 // Stops a discovery session. Returns true on success or if discovery is
43 // already not running. Returns false on failure.
44 virtual bool StopDiscovery() = 0;
46 // Creates a discovery manager for Bluetooth Classic device discovery with
47 // observer |observer|. Note that the life-time of |observer| should not
48 // end before that of the returned BluetoothDiscoveryManager, as that may
49 // lead to use after free errors.
50 static BluetoothDiscoveryManagerMac* CreateClassic(Observer* observer);
52 protected:
53 explicit BluetoothDiscoveryManagerMac(Observer* observer);
55 // Observer interested in notifications from us.
56 Observer* observer_;
58 private:
59 DISALLOW_COPY_AND_ASSIGN(BluetoothDiscoveryManagerMac);
62 } // namespace device
64 #endif // DEVICE_BLUETOOTH_BLUETOOTH_DISCOVERY_MANAGER_MAC_H_