// Copyright 2020 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef DEVICE_BLUETOOTH_ADVERTISEMENT_H_ #define DEVICE_BLUETOOTH_ADVERTISEMENT_H_ #include "base/memory/ref_counted.h" #include "device/bluetooth/bluetooth_advertisement.h" #include "device/bluetooth/public/mojom/adapter.mojom.h" namespace bluetooth { // Implementation of Mojo Advertisement in // device/bluetooth/public/mojom/adapter.mojom. // Uses the platform abstraction of //device/bluetooth. // An instance of this class is constructed by Adapter and strongly bound to its // MessagePipe. When the instance is destroyed, the underlying // BluetoothAdvertisement is destroyed. class Advertisement : public mojom::Advertisement { public: explicit Advertisement( scoped_refptr bluetooth_advertisement); ~Advertisement() override; Advertisement(const Advertisement&) = delete; Advertisement& operator=(const Advertisement&) = delete; // mojom::Advertisement: void Unregister(UnregisterCallback callback) override; private: void OnUnregister(UnregisterCallback callback); void OnUnregisterError(UnregisterCallback callback, device::BluetoothAdvertisement::ErrorCode error_code); scoped_refptr bluetooth_advertisement_; base::WeakPtrFactory weak_ptr_factory_{this}; }; } // namespace bluetooth #endif // DEVICE_BLUETOOTH_ADVERTISEMENT_H_