Index: chrome/browser/extensions/api/bluetooth_low_energy/bluetooth_low_energy_api.h |
diff --git a/chrome/browser/extensions/api/bluetooth_low_energy/bluetooth_low_energy_api.h b/chrome/browser/extensions/api/bluetooth_low_energy/bluetooth_low_energy_api.h |
index a7f4ed5bf7fc6c2fe6298e6ab7f364f82ce6639e..e1028cb53c541ba06f948338392da61d3f1cf2ad 100644 |
--- a/chrome/browser/extensions/api/bluetooth_low_energy/bluetooth_low_energy_api.h |
+++ b/chrome/browser/extensions/api/bluetooth_low_energy/bluetooth_low_energy_api.h |
@@ -5,21 +5,46 @@ |
#ifndef CHROME_BROWSER_EXTENSIONS_API_BLUETOOTH_LOW_ENERGY_BLUETOOTH_LOW_ENERGY_API_H_ |
#define CHROME_BROWSER_EXTENSIONS_API_BLUETOOTH_LOW_ENERGY_BLUETOOTH_LOW_ENERGY_API_H_ |
-#include <memory> |
+#include <string> |
#include "base/macros.h" |
+#include "base/memory/ref_counted.h" |
+#include "chrome/browser/extensions/api/bluetooth_low_energy/bluetooth_api_advertisement.h" |
#include "chrome/browser/extensions/api/bluetooth_low_energy/bluetooth_low_energy_event_router.h" |
-#include "chrome/browser/extensions/browser_context_keyed_service_factories.h" |
+#include "content/public/browser/browser_context.h" |
#include "device/bluetooth/bluetooth_advertisement.h" |
#include "extensions/browser/api/api_resource_manager.h" |
+#include "extensions/browser/browser_context_keyed_api_factory.h" |
#include "extensions/browser/extension_function.h" |
#include "extensions/browser/extension_function_histogram_value.h" |
namespace extensions { |
- |
class BluetoothApiAdvertisement; |
class BluetoothLowEnergyEventRouter; |
+namespace api { |
+namespace bluetooth_low_energy { |
+namespace CreateService { |
+struct Params; |
+} |
+namespace CreateCharacteristic { |
+struct Params; |
+} |
+namespace CreateDescriptor { |
+struct Params; |
+} |
+namespace RegisterService { |
+struct Params; |
+} |
+namespace UnregisterService { |
+struct Params; |
+} |
+namespace SendRequestResponse { |
+struct Params; |
+} |
+} // namespace bluetooth_low_energy |
+} // namespace api |
+ |
// The profile-keyed service that manages the bluetoothLowEnergy extension API. |
class BluetoothLowEnergyAPI : public BrowserContextKeyedAPI { |
public: |
@@ -57,14 +82,19 @@ namespace api { |
// Base class for bluetoothLowEnergy API functions. This class handles some of |
// the common logic involved in all API functions, such as checking for |
// platform support and returning the correct error. |
-class BluetoothLowEnergyExtensionFunction : public AsyncExtensionFunction { |
+// |
+// DEPRECATED: This inherits from AsyncExtensionFunction, which we're trying to |
+// get rid of for various reasons. Please inherit from the |
+// BluetoothLowEnergyExtensionFunction class instead. |
+class BluetoothLowEnergyExtensionFunctionDeprecated |
+ : public AsyncExtensionFunction { |
public: |
- BluetoothLowEnergyExtensionFunction(); |
+ BluetoothLowEnergyExtensionFunctionDeprecated(); |
protected: |
- ~BluetoothLowEnergyExtensionFunction() override; |
+ ~BluetoothLowEnergyExtensionFunctionDeprecated() override; |
- // ExtensionFunction override. |
+ // AsyncExtensionFunction override. |
bool RunAsync() override; |
// Implemented by individual bluetoothLowEnergy extension functions to perform |
@@ -74,19 +104,69 @@ class BluetoothLowEnergyExtensionFunction : public AsyncExtensionFunction { |
virtual bool DoWork() = 0; |
private: |
+ DISALLOW_COPY_AND_ASSIGN(BluetoothLowEnergyExtensionFunctionDeprecated); |
+}; |
+ |
+// Replacement for BluetoothLowEnergyExtensionFunctionDeprecated. Has the same |
+// functionality except that instead of the SendResponse/return combo, we'll |
+// return our response with Respond(). |
+class BluetoothLowEnergyExtensionFunction : public UIThreadExtensionFunction { |
+ public: |
+ BluetoothLowEnergyExtensionFunction(); |
+ |
+ protected: |
+ ~BluetoothLowEnergyExtensionFunction() override; |
+ |
+ // ExtensionFunction override. |
+ ResponseAction Run() override; |
+ |
+ // Implemented by individual bluetoothLowEnergy extension functions to perform |
+ // the body of the function. This invoked asynchonously after Run after |
+ // the BluetoothLowEnergyEventRouter has obtained a handle on the |
+ // BluetoothAdapter. |
+ virtual void DoWork() = 0; |
+ |
+ private: |
DISALLOW_COPY_AND_ASSIGN(BluetoothLowEnergyExtensionFunction); |
}; |
-class BluetoothLowEnergyConnectFunction |
+// Base class for bluetoothLowEnergy API peripheral mode functions. This class |
+// handles some of the common logic involved in all API peripheral mode |
+// functions, such as checking for peripheral permissions and returning the |
+// correct error. |
+template <typename Params> |
+class BLEPeripheralExtensionFunction |
: public BluetoothLowEnergyExtensionFunction { |
public: |
+ BLEPeripheralExtensionFunction(); |
+ |
+ protected: |
+ ~BLEPeripheralExtensionFunction() override; |
+ |
+ // ExtensionFunction override. |
+ ResponseAction Run() override; |
+ |
+// Causes link error on Windows. API will never be on Windows, so #ifdefing. |
+#if !defined(OS_WIN) |
+ std::unique_ptr<Params> params_; |
+#else |
+ Params* params_; |
+#endif |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(BLEPeripheralExtensionFunction); |
+}; |
+ |
+class BluetoothLowEnergyConnectFunction |
+ : public BluetoothLowEnergyExtensionFunctionDeprecated { |
+ public: |
DECLARE_EXTENSION_FUNCTION("bluetoothLowEnergy.connect", |
BLUETOOTHLOWENERGY_CONNECT); |
protected: |
~BluetoothLowEnergyConnectFunction() override {} |
- // BluetoothLowEnergyExtensionFunction override. |
+ // BluetoothLowEnergyExtensionFunctionDeprecated override. |
bool DoWork() override; |
private: |
@@ -97,7 +177,7 @@ class BluetoothLowEnergyConnectFunction |
}; |
class BluetoothLowEnergyDisconnectFunction |
- : public BluetoothLowEnergyExtensionFunction { |
+ : public BluetoothLowEnergyExtensionFunctionDeprecated { |
public: |
DECLARE_EXTENSION_FUNCTION("bluetoothLowEnergy.disconnect", |
BLUETOOTHLOWENERGY_DISCONNECT); |
@@ -105,7 +185,7 @@ class BluetoothLowEnergyDisconnectFunction |
protected: |
~BluetoothLowEnergyDisconnectFunction() override {} |
- // BluetoothLowEnergyExtensionFunction override. |
+ // BluetoothLowEnergyExtensionFunctionDeprecated override. |
bool DoWork() override; |
private: |
@@ -116,7 +196,7 @@ class BluetoothLowEnergyDisconnectFunction |
}; |
class BluetoothLowEnergyGetServiceFunction |
- : public BluetoothLowEnergyExtensionFunction { |
+ : public BluetoothLowEnergyExtensionFunctionDeprecated { |
public: |
DECLARE_EXTENSION_FUNCTION("bluetoothLowEnergy.getService", |
BLUETOOTHLOWENERGY_GETSERVICE); |
@@ -124,12 +204,12 @@ class BluetoothLowEnergyGetServiceFunction |
protected: |
~BluetoothLowEnergyGetServiceFunction() override {} |
- // BluetoothLowEnergyExtensionFunction override. |
+ // BluetoothLowEnergyExtensionFunctionDeprecated override. |
bool DoWork() override; |
}; |
class BluetoothLowEnergyGetServicesFunction |
- : public BluetoothLowEnergyExtensionFunction { |
+ : public BluetoothLowEnergyExtensionFunctionDeprecated { |
public: |
DECLARE_EXTENSION_FUNCTION("bluetoothLowEnergy.getServices", |
BLUETOOTHLOWENERGY_GETSERVICES); |
@@ -137,12 +217,12 @@ class BluetoothLowEnergyGetServicesFunction |
protected: |
~BluetoothLowEnergyGetServicesFunction() override {} |
- // BluetoothLowEnergyExtensionFunction override. |
+ // BluetoothLowEnergyExtensionFunctionDeprecated override. |
bool DoWork() override; |
}; |
class BluetoothLowEnergyGetCharacteristicFunction |
- : public BluetoothLowEnergyExtensionFunction { |
+ : public BluetoothLowEnergyExtensionFunctionDeprecated { |
public: |
DECLARE_EXTENSION_FUNCTION("bluetoothLowEnergy.getCharacteristic", |
BLUETOOTHLOWENERGY_GETCHARACTERISTIC); |
@@ -150,12 +230,12 @@ class BluetoothLowEnergyGetCharacteristicFunction |
protected: |
~BluetoothLowEnergyGetCharacteristicFunction() override {} |
- // BluetoothLowEnergyExtensionFunction override. |
+ // BluetoothLowEnergyExtensionFunctionDeprecated override. |
bool DoWork() override; |
}; |
class BluetoothLowEnergyGetCharacteristicsFunction |
- : public BluetoothLowEnergyExtensionFunction { |
+ : public BluetoothLowEnergyExtensionFunctionDeprecated { |
public: |
DECLARE_EXTENSION_FUNCTION("bluetoothLowEnergy.getCharacteristics", |
BLUETOOTHLOWENERGY_GETCHARACTERISTICS); |
@@ -163,12 +243,12 @@ class BluetoothLowEnergyGetCharacteristicsFunction |
protected: |
~BluetoothLowEnergyGetCharacteristicsFunction() override {} |
- // BluetoothLowEnergyExtensionFunction override. |
+ // BluetoothLowEnergyExtensionFunctionDeprecated override. |
bool DoWork() override; |
}; |
class BluetoothLowEnergyGetIncludedServicesFunction |
- : public BluetoothLowEnergyExtensionFunction { |
+ : public BluetoothLowEnergyExtensionFunctionDeprecated { |
public: |
DECLARE_EXTENSION_FUNCTION("bluetoothLowEnergy.getIncludedServices", |
BLUETOOTHLOWENERGY_GETINCLUDEDSERVICES); |
@@ -176,12 +256,12 @@ class BluetoothLowEnergyGetIncludedServicesFunction |
protected: |
~BluetoothLowEnergyGetIncludedServicesFunction() override {} |
- // BluetoothLowEnergyExtensionFunction override. |
+ // BluetoothLowEnergyExtensionFunctionDeprecated override. |
bool DoWork() override; |
}; |
class BluetoothLowEnergyGetDescriptorFunction |
- : public BluetoothLowEnergyExtensionFunction { |
+ : public BluetoothLowEnergyExtensionFunctionDeprecated { |
public: |
DECLARE_EXTENSION_FUNCTION("bluetoothLowEnergy.getDescriptor", |
BLUETOOTHLOWENERGY_GETDESCRIPTOR); |
@@ -189,12 +269,12 @@ class BluetoothLowEnergyGetDescriptorFunction |
protected: |
~BluetoothLowEnergyGetDescriptorFunction() override {} |
- // BluetoothLowEnergyExtensionFunction override. |
+ // BluetoothLowEnergyExtensionFunctionDeprecated override. |
bool DoWork() override; |
}; |
class BluetoothLowEnergyGetDescriptorsFunction |
- : public BluetoothLowEnergyExtensionFunction { |
+ : public BluetoothLowEnergyExtensionFunctionDeprecated { |
public: |
DECLARE_EXTENSION_FUNCTION("bluetoothLowEnergy.getDescriptors", |
BLUETOOTHLOWENERGY_GETDESCRIPTORS); |
@@ -202,12 +282,12 @@ class BluetoothLowEnergyGetDescriptorsFunction |
protected: |
~BluetoothLowEnergyGetDescriptorsFunction() override {} |
- // BluetoothLowEnergyExtensionFunction override. |
+ // BluetoothLowEnergyExtensionFunctionDeprecated override. |
bool DoWork() override; |
}; |
class BluetoothLowEnergyReadCharacteristicValueFunction |
- : public BluetoothLowEnergyExtensionFunction { |
+ : public BluetoothLowEnergyExtensionFunctionDeprecated { |
public: |
DECLARE_EXTENSION_FUNCTION("bluetoothLowEnergy.readCharacteristicValue", |
BLUETOOTHLOWENERGY_READCHARACTERISTICVALUE); |
@@ -215,7 +295,7 @@ class BluetoothLowEnergyReadCharacteristicValueFunction |
protected: |
~BluetoothLowEnergyReadCharacteristicValueFunction() override {} |
- // BluetoothLowEnergyExtensionFunction override. |
+ // BluetoothLowEnergyExtensionFunctionDeprecated override. |
bool DoWork() override; |
private: |
@@ -229,7 +309,7 @@ class BluetoothLowEnergyReadCharacteristicValueFunction |
}; |
class BluetoothLowEnergyWriteCharacteristicValueFunction |
- : public BluetoothLowEnergyExtensionFunction { |
+ : public BluetoothLowEnergyExtensionFunctionDeprecated { |
public: |
DECLARE_EXTENSION_FUNCTION("bluetoothLowEnergy.writeCharacteristicValue", |
BLUETOOTHLOWENERGY_WRITECHARACTERISTICVALUE); |
@@ -237,7 +317,7 @@ class BluetoothLowEnergyWriteCharacteristicValueFunction |
protected: |
~BluetoothLowEnergyWriteCharacteristicValueFunction() override {} |
- // BluetoothLowEnergyExtensionFunction override. |
+ // BluetoothLowEnergyExtensionFunctionDeprecated override. |
bool DoWork() override; |
private: |
@@ -251,7 +331,7 @@ class BluetoothLowEnergyWriteCharacteristicValueFunction |
}; |
class BluetoothLowEnergyStartCharacteristicNotificationsFunction |
- : public BluetoothLowEnergyExtensionFunction { |
+ : public BluetoothLowEnergyExtensionFunctionDeprecated { |
public: |
DECLARE_EXTENSION_FUNCTION( |
"bluetoothLowEnergy.startCharacteristicNotifications", |
@@ -260,7 +340,7 @@ class BluetoothLowEnergyStartCharacteristicNotificationsFunction |
protected: |
~BluetoothLowEnergyStartCharacteristicNotificationsFunction() override {} |
- // BluetoothLowEnergyExtensionFunction override. |
+ // BluetoothLowEnergyExtensionFunctionDeprecated override. |
bool DoWork() override; |
private: |
@@ -271,7 +351,7 @@ class BluetoothLowEnergyStartCharacteristicNotificationsFunction |
}; |
class BluetoothLowEnergyStopCharacteristicNotificationsFunction |
- : public BluetoothLowEnergyExtensionFunction { |
+ : public BluetoothLowEnergyExtensionFunctionDeprecated { |
public: |
DECLARE_EXTENSION_FUNCTION( |
"bluetoothLowEnergy.stopCharacteristicNotifications", |
@@ -280,7 +360,7 @@ class BluetoothLowEnergyStopCharacteristicNotificationsFunction |
protected: |
~BluetoothLowEnergyStopCharacteristicNotificationsFunction() override {} |
- // BluetoothLowEnergyExtensionFunction override. |
+ // BluetoothLowEnergyExtensionFunctionDeprecated override. |
bool DoWork() override; |
private: |
@@ -291,7 +371,7 @@ class BluetoothLowEnergyStopCharacteristicNotificationsFunction |
}; |
class BluetoothLowEnergyReadDescriptorValueFunction |
- : public BluetoothLowEnergyExtensionFunction { |
+ : public BluetoothLowEnergyExtensionFunctionDeprecated { |
public: |
DECLARE_EXTENSION_FUNCTION("bluetoothLowEnergy.readDescriptorValue", |
BLUETOOTHLOWENERGY_READDESCRIPTORVALUE); |
@@ -299,7 +379,7 @@ class BluetoothLowEnergyReadDescriptorValueFunction |
protected: |
~BluetoothLowEnergyReadDescriptorValueFunction() override {} |
- // BluetoothLowEnergyExtensionFunction override. |
+ // BluetoothLowEnergyExtensionFunctionDeprecated override. |
bool DoWork() override; |
private: |
@@ -313,7 +393,7 @@ class BluetoothLowEnergyReadDescriptorValueFunction |
}; |
class BluetoothLowEnergyWriteDescriptorValueFunction |
- : public BluetoothLowEnergyExtensionFunction { |
+ : public BluetoothLowEnergyExtensionFunctionDeprecated { |
public: |
DECLARE_EXTENSION_FUNCTION("bluetoothLowEnergy.writeDescriptorValue", |
BLUETOOTHLOWENERGY_WRITEDESCRIPTORVALUE); |
@@ -321,7 +401,7 @@ class BluetoothLowEnergyWriteDescriptorValueFunction |
protected: |
~BluetoothLowEnergyWriteDescriptorValueFunction() override {} |
- // BluetoothLowEnergyExtensionFunction override. |
+ // BluetoothLowEnergyExtensionFunctionDeprecated override. |
bool DoWork() override; |
private: |
@@ -335,7 +415,7 @@ class BluetoothLowEnergyWriteDescriptorValueFunction |
}; |
class BluetoothLowEnergyAdvertisementFunction |
- : public BluetoothLowEnergyExtensionFunction { |
+ : public BluetoothLowEnergyExtensionFunctionDeprecated { |
public: |
BluetoothLowEnergyAdvertisementFunction(); |
@@ -367,7 +447,7 @@ class BluetoothLowEnergyRegisterAdvertisementFunction |
protected: |
~BluetoothLowEnergyRegisterAdvertisementFunction() override {} |
- // BluetoothLowEnergyExtensionFunction override. |
+ // BluetoothLowEnergyExtensionFunctionDeprecated override. |
bool DoWork() override; |
private: |
@@ -387,7 +467,7 @@ class BluetoothLowEnergyUnregisterAdvertisementFunction |
protected: |
~BluetoothLowEnergyUnregisterAdvertisementFunction() override {} |
- // BluetoothLowEnergyExtensionFunction override. |
+ // BluetoothLowEnergyExtensionFunctionDeprecated override. |
bool DoWork() override; |
private: |
@@ -399,6 +479,90 @@ class BluetoothLowEnergyUnregisterAdvertisementFunction |
std::string instance_id_; |
}; |
+class BluetoothLowEnergyCreateServiceFunction |
+ : public BLEPeripheralExtensionFunction< |
+ extensions::api::bluetooth_low_energy::CreateService::Params> { |
+ public: |
+ DECLARE_EXTENSION_FUNCTION("bluetoothLowEnergy.createService", |
+ BLUETOOTHLOWENERGY_CREATESERVICE); |
+ |
+ protected: |
+ ~BluetoothLowEnergyCreateServiceFunction() override {} |
+ |
+ // BluetoothLowEnergyPeripheralExtensionFunction override. |
+ void DoWork() override; |
+}; |
+ |
+class BluetoothLowEnergyCreateCharacteristicFunction |
+ : public BLEPeripheralExtensionFunction< |
+ extensions::api::bluetooth_low_energy::CreateCharacteristic::Params> { |
+ public: |
+ DECLARE_EXTENSION_FUNCTION("bluetoothLowEnergy.createCharacteristic", |
+ BLUETOOTHLOWENERGY_CREATECHARACTERISTIC); |
+ |
+ protected: |
+ ~BluetoothLowEnergyCreateCharacteristicFunction() override {} |
+ |
+ // BluetoothLowEnergyPeripheralExtensionFunction override. |
+ void DoWork() override; |
+}; |
+ |
+class BluetoothLowEnergyCreateDescriptorFunction |
+ : public BLEPeripheralExtensionFunction< |
+ extensions::api::bluetooth_low_energy::CreateDescriptor::Params> { |
+ public: |
+ DECLARE_EXTENSION_FUNCTION("bluetoothLowEnergy.createDescriptor", |
+ BLUETOOTHLOWENERGY_CREATEDESCRIPTOR); |
+ |
+ protected: |
+ ~BluetoothLowEnergyCreateDescriptorFunction() override {} |
+ |
+ // BluetoothLowEnergyPeripheralExtensionFunction override. |
+ void DoWork() override; |
+}; |
+ |
+class BluetoothLowEnergyRegisterServiceFunction |
+ : public BLEPeripheralExtensionFunction< |
+ extensions::api::bluetooth_low_energy::RegisterService::Params> { |
+ public: |
+ DECLARE_EXTENSION_FUNCTION("bluetoothLowEnergy.registerService", |
+ BLUETOOTHLOWENERGY_REGISTERSERVICE); |
+ |
+ protected: |
+ ~BluetoothLowEnergyRegisterServiceFunction() override {} |
+ |
+ // BluetoothLowEnergyPeripheralExtensionFunction override. |
+ void DoWork() override; |
+}; |
+ |
+class BluetoothLowEnergyUnregisterServiceFunction |
+ : public BLEPeripheralExtensionFunction< |
+ extensions::api::bluetooth_low_energy::UnregisterService::Params> { |
+ public: |
+ DECLARE_EXTENSION_FUNCTION("bluetoothLowEnergy.unregisterService", |
+ BLUETOOTHLOWENERGY_UNREGISTERSERVICE); |
+ |
+ protected: |
+ ~BluetoothLowEnergyUnregisterServiceFunction() override {} |
+ |
+ // BluetoothLowEnergyPeripheralExtensionFunction override. |
+ void DoWork() override; |
+}; |
+ |
+class BluetoothLowEnergySendRequestResponseFunction |
+ : public BLEPeripheralExtensionFunction< |
+ extensions::api::bluetooth_low_energy::SendRequestResponse::Params> { |
+ public: |
+ DECLARE_EXTENSION_FUNCTION("bluetoothLowEnergy.sendRequestResponse", |
+ BLUETOOTHLOWENERGY_SENDREQUESTRESPONSE); |
+ |
+ protected: |
+ ~BluetoothLowEnergySendRequestResponseFunction() override {} |
+ |
+ // BluetoothLowEnergyPeripheralExtensionFunction override. |
+ void DoWork() override; |
+}; |
+ |
} // namespace api |
} // namespace extensions |