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_BLUETOOTH_BLUETOOTH_PRIVATE_API_H_ 6 #define EXTENSIONS_BROWSER_API_BLUETOOTH_BLUETOOTH_PRIVATE_API_H_ 7 8 #include "base/callback_forward.h" 9 #include "extensions/browser/api/bluetooth/bluetooth_extension_function.h" 10 #include "extensions/browser/browser_context_keyed_api_factory.h" 11 #include "extensions/browser/event_router.h" 12 13 namespace device { 14 class BluetoothAdapter; 15 } 16 17 namespace extensions { 18 19 class BluetoothApiPairingDelegate; 20 21 // The profile-keyed service that manages the bluetoothPrivate extension API. 22 class BluetoothPrivateAPI : public BrowserContextKeyedAPI, 23 public EventRouter::Observer { 24 public: 25 static BrowserContextKeyedAPIFactory<BluetoothPrivateAPI>* 26 GetFactoryInstance(); 27 28 explicit BluetoothPrivateAPI(content::BrowserContext* context); 29 virtual ~BluetoothPrivateAPI(); 30 31 // KeyedService implementation. 32 virtual void Shutdown() OVERRIDE; 33 34 // EventRouter::Observer implementation. 35 virtual void OnListenerAdded(const EventListenerInfo& details) OVERRIDE; 36 virtual void OnListenerRemoved(const EventListenerInfo& details) OVERRIDE; 37 38 // BrowserContextKeyedAPI implementation. service_name()39 static const char* service_name() { return "BluetoothPrivateAPI"; } 40 static const bool kServiceRedirectedInIncognito = true; 41 static const bool kServiceIsNULLWhileTesting = true; 42 43 private: 44 friend class BrowserContextKeyedAPIFactory<BluetoothPrivateAPI>; 45 46 content::BrowserContext* browser_context_; 47 }; 48 49 namespace core_api { 50 51 class BluetoothPrivateSetAdapterStateFunction 52 : public BluetoothExtensionFunction { 53 public: 54 DECLARE_EXTENSION_FUNCTION("bluetoothPrivate.setAdapterState", 55 BLUETOOTHPRIVATE_SETADAPTERSTATE) 56 BluetoothPrivateSetAdapterStateFunction(); 57 58 private: 59 virtual ~BluetoothPrivateSetAdapterStateFunction(); 60 61 base::Closure CreatePropertySetCallback(const std::string& property_name); 62 base::Closure CreatePropertyErrorCallback(const std::string& property_name); 63 void OnAdapterPropertySet(const std::string& property); 64 void OnAdapterPropertyError(const std::string& property); 65 void SendError(); 66 67 // BluetoothExtensionFunction overrides: 68 virtual bool DoWork(scoped_refptr<device::BluetoothAdapter> adapter) OVERRIDE; 69 70 // Set of expected adapter properties to be changed. 71 std::set<std::string> pending_properties_; 72 73 // Set of adapter properties that were not set successfully. 74 std::set<std::string> failed_properties_; 75 76 DISALLOW_COPY_AND_ASSIGN(BluetoothPrivateSetAdapterStateFunction); 77 }; 78 79 class BluetoothPrivateSetPairingResponseFunction 80 : public BluetoothExtensionFunction { 81 public: 82 DECLARE_EXTENSION_FUNCTION("bluetoothPrivate.setPairingResponse", 83 BLUETOOTHPRIVATE_SETPAIRINGRESPONSE) 84 BluetoothPrivateSetPairingResponseFunction(); 85 // BluetoothExtensionFunction overrides: 86 virtual bool DoWork(scoped_refptr<device::BluetoothAdapter> adapter) OVERRIDE; 87 88 private: 89 virtual ~BluetoothPrivateSetPairingResponseFunction(); 90 DISALLOW_COPY_AND_ASSIGN(BluetoothPrivateSetPairingResponseFunction); 91 }; 92 93 } // namespace core_api 94 95 } // namespace extensions 96 97 #endif // EXTENSIONS_BROWSER_API_BLUETOOTH_BLUETOOTH_PRIVATE_API_H_ 98