blob: 7746681d3574c2b99602a57c08969fd13e23385b [file] [log] [blame]
// 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<device::BluetoothAdvertisement> 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<device::BluetoothAdvertisement> bluetooth_advertisement_;
base::WeakPtrFactory<Advertisement> weak_ptr_factory_{this};
};
} // namespace bluetooth
#endif // DEVICE_BLUETOOTH_ADVERTISEMENT_H_