1// Copyright (c) 2012 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_BLUETOOTH_BLUETOOTH_ADAPTER_FACTORY_H_ 6#define DEVICE_BLUETOOTH_BLUETOOTH_ADAPTER_FACTORY_H_ 7 8#include "base/callback.h" 9#include "base/memory/ref_counted.h" 10#include "device/bluetooth/bluetooth_adapter.h" 11 12namespace device { 13 14// A factory class for building a Bluetooth adapter on platforms where Bluetooth 15// is available. 16class BluetoothAdapterFactory { 17 public: 18 typedef base::Callback<void(scoped_refptr<BluetoothAdapter> adapter)> 19 AdapterCallback; 20 21 // Returns true if the Bluetooth adapter is available for the current 22 // platform. 23 static bool IsBluetoothAdapterAvailable(); 24 25 // Returns the shared instance of the default adapter, creating and 26 // initializing it if necessary. |callback| is called with the adapter 27 // instance passed only once the adapter is fully initialized and ready to 28 // use. 29 static void GetAdapter(const AdapterCallback& callback); 30 31 // Sets the shared instance of the default adapter for testing purposes only, 32 // no reference is retained after completion of the call, removing the last 33 // reference will reset the factory. 34 static void SetAdapterForTesting(scoped_refptr<BluetoothAdapter> adapter); 35 36 // Returns true iff the implementation has a (non-NULL) shared instance of the 37 // adapter. Exposed for testing. 38 static bool HasSharedInstanceForTesting(); 39}; 40 41} // namespace device 42 43#endif // DEVICE_BLUETOOTH_BLUETOOTH_ADAPTER_FACTORY_H_ 44